@idosgames/mcp 0.1.27 → 0.1.28
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/package.json +1 -1
- package/registry/host.json +1 -1
- package/registry/index.json +32 -32
- package/registry/modules/ai.json +1 -1
- package/registry/modules/board-game.json +1 -1
- package/registry/modules/boosts.json +1 -1
- package/registry/modules/character.json +1 -1
- package/registry/modules/chat.json +1 -1
- package/registry/modules/collections.json +1 -1
- package/registry/modules/coop-events.json +1 -1
- package/registry/modules/craft.json +1 -1
- package/registry/modules/deals.json +1 -1
- package/registry/modules/events.json +1 -1
- package/registry/modules/friends.json +1 -1
- package/registry/modules/idle-rpg.json +1 -1
- package/registry/modules/inventory.json +1 -1
- package/registry/modules/invite.json +1 -1
- package/registry/modules/leaderboard.json +1 -1
- package/registry/modules/lootboxes.json +1 -1
- package/registry/modules/mailbox.json +1 -1
- package/registry/modules/marketplace.json +1 -1
- package/registry/modules/mini-game.json +1 -1
- package/registry/modules/multiplayer.json +1 -1
- package/registry/modules/premium.json +1 -1
- package/registry/modules/profile.json +1 -1
- package/registry/modules/pvp.json +1 -1
- package/registry/modules/quests.json +1 -1
- package/registry/modules/rewards.json +1 -1
- package/registry/modules/season.json +1 -1
- package/registry/modules/store.json +1 -1
- package/registry/modules/tutorials.json +1 -1
- package/registry/modules/voxelcraft.json +1 -1
- package/registry/modules/workshop.json +1 -1
- package/registry/skills/idosgames-getting-started.json +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@idosgames/mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.28",
|
|
4
4
|
"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.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
package/registry/host.json
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
"path": "package.json",
|
|
26
|
-
"content": "{\n \"name\": \"@idosgames/base-template\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"description\": \"The base every AI Coder project starts from: sign-in and the lobby (src/base/) on the host shell. The systems (shop, heroes, leaderboards…) and the games are modules plugged in via src/modules.ts.\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\",\n \"typecheck\": \"tsc --noEmit -p tsconfig.json\"\n },\n \"//\": \"Versions are pinned exactly: this is a seed for AI Coder projects, which build offline against a dependency allowlist baked at these versions (see scripts/pack-builder.mjs). Modules bring their own engine deps (three/phaser) when added.\",\n \"dependencies\": {\n \"@idosgames/app-shell\": \"0.12.0\",\n \"@idosgames/core\": \"0.21.
|
|
26
|
+
"content": "{\n \"name\": \"@idosgames/base-template\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"type\": \"module\",\n \"description\": \"The base every AI Coder project starts from: sign-in and the lobby (src/base/) on the host shell. The systems (shop, heroes, leaderboards…) and the games are modules plugged in via src/modules.ts.\",\n \"scripts\": {\n \"dev\": \"vite\",\n \"build\": \"vite build\",\n \"preview\": \"vite preview\",\n \"typecheck\": \"tsc --noEmit -p tsconfig.json\"\n },\n \"//\": \"Versions are pinned exactly: this is a seed for AI Coder projects, which build offline against a dependency allowlist baked at these versions (see scripts/pack-builder.mjs). Modules bring their own engine deps (three/phaser) when added.\",\n \"dependencies\": {\n \"@idosgames/app-shell\": \"0.12.0\",\n \"@idosgames/core\": \"0.21.2\",\n \"@idosgames/module-sdk\": \"0.10.0\",\n \"@idosgames/react\": \"0.4.4\",\n \"@idosgames/wallet\": \"0.6.2\",\n \"@reown/appkit\": \"1.8.23\",\n \"@reown/appkit-adapter-wagmi\": \"1.8.23\",\n \"@tanstack/react-query\": \"5.101.2\",\n \"react\": \"19.2.7\",\n \"react-dom\": \"19.2.7\",\n \"wagmi\": \"3.7.2\"\n },\n \"devDependencies\": {\n \"@types/react\": \"19.2.17\",\n \"@types/react-dom\": \"19.2.3\",\n \"@vitejs/plugin-react\": \"6.0.4\",\n \"typescript\": \"5.9.3\",\n \"vite\": \"8.1.5\"\n }\n}\n"
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
"path": "public/sw.js",
|
package/registry/index.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedFromCommit": "
|
|
2
|
+
"generatedFromCommit": "785a4577dbda0aa6d355f2b43e62e9f6a3537471",
|
|
3
3
|
"runtimePackages": {
|
|
4
|
-
"@idosgames/core": "0.21.
|
|
4
|
+
"@idosgames/core": "0.21.2",
|
|
5
5
|
"@idosgames/wallet": "0.6.2",
|
|
6
6
|
"@idosgames/module-sdk": "0.10.0",
|
|
7
7
|
"@idosgames/react": "0.4.4",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
},
|
|
46
46
|
"version": "0.1.1",
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@idosgames/core": "0.21.
|
|
48
|
+
"@idosgames/core": "0.21.2",
|
|
49
49
|
"@idosgames/module-sdk": "0.10.0",
|
|
50
50
|
"@idosgames/react": "0.4.4",
|
|
51
51
|
"react": "19.2.7"
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
},
|
|
83
83
|
"version": "0.1.1",
|
|
84
84
|
"dependencies": {
|
|
85
|
-
"@idosgames/core": "0.21.
|
|
85
|
+
"@idosgames/core": "0.21.2",
|
|
86
86
|
"@idosgames/module-sdk": "0.10.0",
|
|
87
87
|
"@idosgames/react": "0.4.4",
|
|
88
88
|
"react": "19.2.7"
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
]
|
|
141
141
|
},
|
|
142
142
|
"dependencies": {
|
|
143
|
-
"@idosgames/core": "0.21.
|
|
143
|
+
"@idosgames/core": "0.21.2",
|
|
144
144
|
"@idosgames/module-sdk": "0.10.0",
|
|
145
145
|
"@idosgames/react": "0.4.4",
|
|
146
146
|
"react": "19.2.7"
|
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
},
|
|
178
178
|
"version": "0.1.0",
|
|
179
179
|
"dependencies": {
|
|
180
|
-
"@idosgames/core": "0.21.
|
|
180
|
+
"@idosgames/core": "0.21.2",
|
|
181
181
|
"@idosgames/module-sdk": "0.10.0",
|
|
182
182
|
"@idosgames/react": "0.4.4",
|
|
183
183
|
"react": "19.2.7"
|
|
@@ -214,7 +214,7 @@
|
|
|
214
214
|
},
|
|
215
215
|
"version": "0.1.0",
|
|
216
216
|
"dependencies": {
|
|
217
|
-
"@idosgames/core": "0.21.
|
|
217
|
+
"@idosgames/core": "0.21.2",
|
|
218
218
|
"@idosgames/module-sdk": "0.10.0",
|
|
219
219
|
"@idosgames/react": "0.4.4",
|
|
220
220
|
"react": "19.2.7"
|
|
@@ -250,7 +250,7 @@
|
|
|
250
250
|
},
|
|
251
251
|
"version": "0.1.0",
|
|
252
252
|
"dependencies": {
|
|
253
|
-
"@idosgames/core": "0.21.
|
|
253
|
+
"@idosgames/core": "0.21.2",
|
|
254
254
|
"@idosgames/module-sdk": "0.10.0",
|
|
255
255
|
"@idosgames/react": "0.4.4",
|
|
256
256
|
"react": "19.2.7"
|
|
@@ -291,7 +291,7 @@
|
|
|
291
291
|
},
|
|
292
292
|
"version": "0.1.1",
|
|
293
293
|
"dependencies": {
|
|
294
|
-
"@idosgames/core": "0.21.
|
|
294
|
+
"@idosgames/core": "0.21.2",
|
|
295
295
|
"@idosgames/module-sdk": "0.10.0",
|
|
296
296
|
"@idosgames/react": "0.4.4",
|
|
297
297
|
"react": "19.2.7"
|
|
@@ -327,7 +327,7 @@
|
|
|
327
327
|
},
|
|
328
328
|
"version": "0.1.1",
|
|
329
329
|
"dependencies": {
|
|
330
|
-
"@idosgames/core": "0.21.
|
|
330
|
+
"@idosgames/core": "0.21.2",
|
|
331
331
|
"@idosgames/module-sdk": "0.10.0",
|
|
332
332
|
"@idosgames/react": "0.4.4",
|
|
333
333
|
"react": "19.2.7"
|
|
@@ -366,7 +366,7 @@
|
|
|
366
366
|
},
|
|
367
367
|
"version": "0.1.0",
|
|
368
368
|
"dependencies": {
|
|
369
|
-
"@idosgames/core": "0.21.
|
|
369
|
+
"@idosgames/core": "0.21.2",
|
|
370
370
|
"@idosgames/module-sdk": "0.10.0",
|
|
371
371
|
"@idosgames/react": "0.4.4",
|
|
372
372
|
"react": "19.2.7"
|
|
@@ -405,7 +405,7 @@
|
|
|
405
405
|
},
|
|
406
406
|
"version": "0.1.1",
|
|
407
407
|
"dependencies": {
|
|
408
|
-
"@idosgames/core": "0.21.
|
|
408
|
+
"@idosgames/core": "0.21.2",
|
|
409
409
|
"@idosgames/module-sdk": "0.10.0",
|
|
410
410
|
"@idosgames/react": "0.4.4",
|
|
411
411
|
"react": "19.2.7"
|
|
@@ -445,7 +445,7 @@
|
|
|
445
445
|
},
|
|
446
446
|
"version": "0.1.1",
|
|
447
447
|
"dependencies": {
|
|
448
|
-
"@idosgames/core": "0.21.
|
|
448
|
+
"@idosgames/core": "0.21.2",
|
|
449
449
|
"@idosgames/module-sdk": "0.10.0",
|
|
450
450
|
"@idosgames/react": "0.4.4",
|
|
451
451
|
"react": "19.2.7"
|
|
@@ -486,7 +486,7 @@
|
|
|
486
486
|
},
|
|
487
487
|
"version": "0.1.1",
|
|
488
488
|
"dependencies": {
|
|
489
|
-
"@idosgames/core": "0.21.
|
|
489
|
+
"@idosgames/core": "0.21.2",
|
|
490
490
|
"@idosgames/module-sdk": "0.10.0",
|
|
491
491
|
"@idosgames/react": "0.4.4",
|
|
492
492
|
"react": "19.2.7"
|
|
@@ -525,7 +525,7 @@
|
|
|
525
525
|
},
|
|
526
526
|
"version": "0.1.1",
|
|
527
527
|
"dependencies": {
|
|
528
|
-
"@idosgames/core": "0.21.
|
|
528
|
+
"@idosgames/core": "0.21.2",
|
|
529
529
|
"@idosgames/module-sdk": "0.10.0",
|
|
530
530
|
"@idosgames/react": "0.4.4",
|
|
531
531
|
"react": "19.2.7"
|
|
@@ -567,7 +567,7 @@
|
|
|
567
567
|
},
|
|
568
568
|
"version": "0.1.1",
|
|
569
569
|
"dependencies": {
|
|
570
|
-
"@idosgames/core": "0.21.
|
|
570
|
+
"@idosgames/core": "0.21.2",
|
|
571
571
|
"@idosgames/module-sdk": "0.10.0",
|
|
572
572
|
"@idosgames/react": "0.4.4",
|
|
573
573
|
"react": "19.2.7"
|
|
@@ -604,7 +604,7 @@
|
|
|
604
604
|
},
|
|
605
605
|
"version": "0.1.1",
|
|
606
606
|
"dependencies": {
|
|
607
|
-
"@idosgames/core": "0.21.
|
|
607
|
+
"@idosgames/core": "0.21.2",
|
|
608
608
|
"@idosgames/module-sdk": "0.10.0",
|
|
609
609
|
"@idosgames/react": "0.4.4",
|
|
610
610
|
"react": "19.2.7"
|
|
@@ -645,7 +645,7 @@
|
|
|
645
645
|
},
|
|
646
646
|
"version": "0.1.1",
|
|
647
647
|
"dependencies": {
|
|
648
|
-
"@idosgames/core": "0.21.
|
|
648
|
+
"@idosgames/core": "0.21.2",
|
|
649
649
|
"@idosgames/module-sdk": "0.10.0",
|
|
650
650
|
"@idosgames/react": "0.4.4",
|
|
651
651
|
"react": "19.2.7"
|
|
@@ -685,7 +685,7 @@
|
|
|
685
685
|
},
|
|
686
686
|
"version": "0.1.1",
|
|
687
687
|
"dependencies": {
|
|
688
|
-
"@idosgames/core": "0.21.
|
|
688
|
+
"@idosgames/core": "0.21.2",
|
|
689
689
|
"@idosgames/module-sdk": "0.10.0",
|
|
690
690
|
"@idosgames/react": "0.4.4",
|
|
691
691
|
"react": "19.2.7"
|
|
@@ -725,7 +725,7 @@
|
|
|
725
725
|
},
|
|
726
726
|
"version": "0.1.1",
|
|
727
727
|
"dependencies": {
|
|
728
|
-
"@idosgames/core": "0.21.
|
|
728
|
+
"@idosgames/core": "0.21.2",
|
|
729
729
|
"@idosgames/module-sdk": "0.10.0",
|
|
730
730
|
"@idosgames/react": "0.4.4",
|
|
731
731
|
"react": "19.2.7"
|
|
@@ -765,7 +765,7 @@
|
|
|
765
765
|
},
|
|
766
766
|
"version": "0.1.1",
|
|
767
767
|
"dependencies": {
|
|
768
|
-
"@idosgames/core": "0.21.
|
|
768
|
+
"@idosgames/core": "0.21.2",
|
|
769
769
|
"@idosgames/module-sdk": "0.10.0",
|
|
770
770
|
"@idosgames/react": "0.4.4",
|
|
771
771
|
"react": "19.2.7"
|
|
@@ -806,7 +806,7 @@
|
|
|
806
806
|
},
|
|
807
807
|
"version": "0.1.0",
|
|
808
808
|
"dependencies": {
|
|
809
|
-
"@idosgames/core": "0.21.
|
|
809
|
+
"@idosgames/core": "0.21.2",
|
|
810
810
|
"@idosgames/module-sdk": "0.10.0",
|
|
811
811
|
"@idosgames/react": "0.4.4",
|
|
812
812
|
"react": "19.2.7"
|
|
@@ -844,7 +844,7 @@
|
|
|
844
844
|
},
|
|
845
845
|
"version": "0.1.0",
|
|
846
846
|
"dependencies": {
|
|
847
|
-
"@idosgames/core": "0.21.
|
|
847
|
+
"@idosgames/core": "0.21.2",
|
|
848
848
|
"@idosgames/module-sdk": "0.10.0",
|
|
849
849
|
"@idosgames/react": "0.4.4",
|
|
850
850
|
"react": "19.2.7"
|
|
@@ -884,7 +884,7 @@
|
|
|
884
884
|
},
|
|
885
885
|
"version": "0.1.1",
|
|
886
886
|
"dependencies": {
|
|
887
|
-
"@idosgames/core": "0.21.
|
|
887
|
+
"@idosgames/core": "0.21.2",
|
|
888
888
|
"@idosgames/module-sdk": "0.10.0",
|
|
889
889
|
"@idosgames/react": "0.4.4",
|
|
890
890
|
"react": "19.2.7"
|
|
@@ -923,7 +923,7 @@
|
|
|
923
923
|
},
|
|
924
924
|
"version": "0.1.3",
|
|
925
925
|
"dependencies": {
|
|
926
|
-
"@idosgames/core": "0.21.
|
|
926
|
+
"@idosgames/core": "0.21.2",
|
|
927
927
|
"@idosgames/module-sdk": "0.10.0",
|
|
928
928
|
"@idosgames/react": "0.4.4",
|
|
929
929
|
"react": "19.2.7"
|
|
@@ -960,7 +960,7 @@
|
|
|
960
960
|
},
|
|
961
961
|
"version": "0.1.1",
|
|
962
962
|
"dependencies": {
|
|
963
|
-
"@idosgames/core": "0.21.
|
|
963
|
+
"@idosgames/core": "0.21.2",
|
|
964
964
|
"@idosgames/module-sdk": "0.10.0",
|
|
965
965
|
"@idosgames/react": "0.4.4",
|
|
966
966
|
"react": "19.2.7"
|
|
@@ -1004,7 +1004,7 @@
|
|
|
1004
1004
|
},
|
|
1005
1005
|
"version": "0.1.2",
|
|
1006
1006
|
"dependencies": {
|
|
1007
|
-
"@idosgames/core": "0.21.
|
|
1007
|
+
"@idosgames/core": "0.21.2",
|
|
1008
1008
|
"@idosgames/module-sdk": "0.10.0",
|
|
1009
1009
|
"@idosgames/react": "0.4.4",
|
|
1010
1010
|
"react": "19.2.7"
|
|
@@ -1039,7 +1039,7 @@
|
|
|
1039
1039
|
},
|
|
1040
1040
|
"version": "0.1.1",
|
|
1041
1041
|
"dependencies": {
|
|
1042
|
-
"@idosgames/core": "0.21.
|
|
1042
|
+
"@idosgames/core": "0.21.2",
|
|
1043
1043
|
"@idosgames/module-sdk": "0.10.0",
|
|
1044
1044
|
"@idosgames/react": "0.4.4",
|
|
1045
1045
|
"react": "19.2.7"
|
|
@@ -1089,7 +1089,7 @@
|
|
|
1089
1089
|
]
|
|
1090
1090
|
},
|
|
1091
1091
|
"dependencies": {
|
|
1092
|
-
"@idosgames/core": "0.21.
|
|
1092
|
+
"@idosgames/core": "0.21.2",
|
|
1093
1093
|
"@idosgames/module-sdk": "0.10.0",
|
|
1094
1094
|
"@idosgames/react": "0.4.4",
|
|
1095
1095
|
"@idosgames/wallet": "0.6.2",
|
|
@@ -1171,7 +1171,7 @@
|
|
|
1171
1171
|
]
|
|
1172
1172
|
},
|
|
1173
1173
|
"dependencies": {
|
|
1174
|
-
"@idosgames/core": "0.21.
|
|
1174
|
+
"@idosgames/core": "0.21.2",
|
|
1175
1175
|
"@idosgames/module-sdk": "0.10.0",
|
|
1176
1176
|
"@idosgames/react": "0.4.4",
|
|
1177
1177
|
"phaser": "4.2.1",
|
|
@@ -1246,7 +1246,7 @@
|
|
|
1246
1246
|
},
|
|
1247
1247
|
"version": "0.4.1",
|
|
1248
1248
|
"dependencies": {
|
|
1249
|
-
"@idosgames/core": "0.21.
|
|
1249
|
+
"@idosgames/core": "0.21.2",
|
|
1250
1250
|
"@idosgames/module-sdk": "0.10.0",
|
|
1251
1251
|
"three": "0.185.1"
|
|
1252
1252
|
},
|
|
@@ -1280,7 +1280,7 @@
|
|
|
1280
1280
|
},
|
|
1281
1281
|
"version": "0.1.1",
|
|
1282
1282
|
"dependencies": {
|
|
1283
|
-
"@idosgames/core": "0.21.
|
|
1283
|
+
"@idosgames/core": "0.21.2",
|
|
1284
1284
|
"@idosgames/module-sdk": "0.10.0",
|
|
1285
1285
|
"@idosgames/react": "0.4.4",
|
|
1286
1286
|
"react": "19.2.7"
|
package/registry/modules/ai.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "idosgames-getting-started",
|
|
3
3
|
"description": "Start a new game or app on the iDosGames composable-module architecture: scaffold the base (sign-in + the lobby on the host shell) and plug in modules — the systems (shop, heroes, leaderboards…) and the games (board-game, idle-rpg, voxelcraft, mini-game, …). Use this whenever a developer wants to CREATE an iDosGames project from scratch, add an iDosGames game module to a project, or asks how @idosgames/app-shell, @idosgames/module-sdk, the host shell, mountHost, or src/modules.ts fit together. Pairs with idosgames-module-contract (writing a module) and idosgames-compose-modules (merging several) and idosgames-project-structure (where code goes as the project grows). If pulling modules over MCP, use the @idosgames/mcp tools get_host_scaffold / get_module / get_manifest.",
|
|
4
|
-
"content": "---\nname: idosgames-getting-started\ndescription: >-\n Start a new game or app on the iDosGames composable-module architecture: scaffold the base (sign-in\n + the lobby on the host shell) and plug in modules — the systems (shop, heroes, leaderboards…) and\n the games (board-game, idle-rpg, voxelcraft, mini-game, …). Use this whenever\n a developer wants to CREATE an iDosGames project from scratch, add an iDosGames game module to a\n project, or asks how @idosgames/app-shell, @idosgames/module-sdk, the host shell, mountHost, or\n src/modules.ts fit together. Pairs with idosgames-module-contract (writing a module) and\n idosgames-compose-modules (merging several) and idosgames-project-structure (where code goes as\n the project grows). If pulling modules over MCP, use the @idosgames/mcp\n tools get_host_scaffold / get_module / get_manifest.\n---\n\n# Getting started (iDosGames composable modules)\n\nAn iDosGames project is **one host shell + N feature modules**. The host owns everything that exists\nonce — the SDK client, login, the React root, the screen, a module registry, and a Mode Router that\nswitches between modules. A module is a library (a game or app) that plugs into the host; it never\ncreates the client, logs in, or owns the root.\n\n## Runtime packages (npm)\n\n- `@idosgames/core` — the SDK client (`createIDosGamesClient`): auth, currency, store, characters,\n blockchain, ~28 services. See the per-service skills (currency-system, store-system, …). Its\n **central cache** `client.cache` decides every read: the login brings the title config (by version)\n and the player's state (by each container's `Rev`) in ONE call; afterwards read state through\n `client.cache.ensureState([...containers])`, definitions through `getDefinitions()` (served from the\n config cache), server views through their service (cached by policy) — never re-fetch on start-up.\n The server views the game reads ride on that same login call (`ClientState.Views`): the client\n option `loginViews` — `\"auto\"` (default, what the game read last time), `\"all\"`, `\"none\"` or a list.\n- `@idosgames/module-sdk` — the module contract types (`Module`, `ModuleContext`, `EngineScene`,\n `UiPanel`). See idosgames-module-contract.\n- `@idosgames/react` — shared React glue (`IDosGamesProvider`, `useIDosGamesClient`, `useUserState`,\n `StatusProvider`, `createControllerContext`).\n- `@idosgames/app-shell` — the host runtime (`mountHost`, the Mode Router, the module registry).\n- `@idosgames/wallet` — optional wallet bridge (EVM/Solana) for on-chain deposits/withdrawals.\n\nInstall the exact versions from `get_manifest` (MCP) or the registry `index.json` `runtimePackages`.\n\n## Project shape\n\n```\nIDOS.md # the project guide every agent reads first (short, evergreen)\nAGENTS.md, CLAUDE.md # pointers to IDOS.md for external tools\ndocs/feature-history/ # one file per game system + README.md index (the project's memory)\nindex.html # mounts #app\nsrc/main.tsx # creates ONE client and calls mountHost({container, client, modules})\nsrc/modules.ts # the registry: export const modules: Module[] = [ … ] — imports + array only\nsrc/modules/{id}/ # each module's source + its module.meta.json (from get_module)\n```\n\nPlatform-created projects also carry `idos.modules.lock.json` (which modules came from the catalog,\nwith file fingerprints) — it is platform-owned; don't edit it. Where new code goes as the game grows,\nand how the project documents itself, is **idosgames-project-structure**.\n\n`src/main.tsx` (host-owned) is the only place that creates the client — but it does **not** sign in.\n`mountHost` owns sign-in: it replays a previous session (`autoLogin`) and renders the login screen\nwhen there is nothing to replay. Calling a `login*` method here skips that screen for good, taking\n\"switch account\" and wallet sign-in with it:\n\n```ts\nconst client = createIDosGamesClient({ titleID, buildKey, throttleMs: 0 });\n// Do NOT log in here — the host does it.\nmountHost({\n container: app,\n client,\n modules, // from ./modules\n renderLogin, // optional: your own screen; omitted = a plain guest-only default\n});\n```\n\nWhether a returning player is signed back in silently is the login screen's business, not the\nhost's: it calls `client.auth.setRememberSession(remember)` before a `login*` method. See the\nauthentication skill.\n\n`src/modules.ts` registers what the project composes:\n\n```ts\nimport type { Module } from \"@idosgames/module-sdk\";\nimport { boardGameModule } from \"./modules/board-game\";\nexport const modules: Module[] = [boardGameModule];\n```\n\n## Steps to scaffold\n\n1. **Base** — write the host scaffold to the project root (`get_host_scaffold`, or copy\n `templates/base`): sign-in and the lobby in `src/base/`, `src/app.config.ts` (start in the lobby or\n a game), an empty `src/modules.ts` → an empty lobby.\n2. **Bind the Title** — open `src/idos.title.ts` and set `IDOS_TITLE_ID` to the game's canonical\n Title id (and `IDOS_BUILD_KEY` if the title enforces one). This file is the project's single\n centralized identity — it is the highest-priority source and the only channel a packaged mobile\n build, iframe embed, or shared link has. On platform-created projects the platform generates it;\n on a manually scaffolded project **you fill it yourself**. Do NOT bind the title via `.env.local`\n (`VITE_IDOS_TITLE_ID`) — that is a local-dev fallback for the raw template only, and it does not\n travel with the code.\n3. **Pick modules** — `list_modules` / `search`, then `get_module {id}` for each. Write its files\n into `src/modules/{id}/`. The base's systems are the modules with `inBase: true` (profile,\n inventory, invite, friends, quests, mailbox); add the game(s) with the modules each game `uses`, and any\n other system (shop, VIP, leaderboards…) only when the app needs it.\n4. **Register** — for each module add `import { {camelCase(id)}Module } from \"./modules/{id}\"` and\n push it into the `modules` array (e.g. `board-game` → `boardGameModule`). Then add the module to\n the \"Installed modules\" block of `IDOS.md` (one line: ``- `board-game` (0.1.0) — src/modules/board-game/``)\n — on platform projects the platform maintains that block itself.\n5. **Install deps** — the union of `runtimePackages` + each module's `dependencies`. Modules bring\n their own engine (three, phaser); the host brings react/react-dom/app-shell.\n6. **Run** — sign-in → the lobby: the systems' screens are its tabs (a tab hides itself while the\n title has nothing for it) and \"Play\" launches a game on the whole screen with a small button back\n — or, for a game whose route says `inLobby: true` (idle-rpg), straight into that game inside the\n lobby, the lobby's balances and tabs around it. The lobby draws the balances and the wallet; games hide their own copies by\n themselves (`sharedUi` roles).\n\nTo combine multiple genres into one game, see **idosgames-compose-modules**. To write or edit a\nmodule, see **idosgames-module-contract**.\n\n## Where state lives (decide this before writing the first save)\n\nThe project is client-side code in the player's browser. `localStorage`, module fields, and React\nstate are **not storage** — nothing there survives a device change, and nothing there is trusted.\n\n1. **A dedicated module owns it?** Use that module. Currencies, inventory, quests, characters,\n leaderboards, store purchases each have a service that enforces the rules server-side.\n2. **Otherwise, per-player data → `client.userCustomData`** — buckets `Private`/`Public` are\n client-writable (settings, cosmetics), `ReadOnly`/`Internal` are server-only. Anything a player\n could cheat by editing goes in the server-only buckets. See **user-custom-data**.\n3. **Shared by all players → `client.titleCustomData`** (event state, global counters, server\n thresholds, feature toggles). Read-only for clients. See **title-custom-data**.\n4. **Writing any of the server-only data, or any rule the player must not be able to fake** →\n a CloudCode handler, called with `client.cloudCode.execute(...)`. See **cloud-code**.\n\n## Two MCP surfaces: game CODE vs. a Title's live DATA\n\nThe platform exposes **two independent MCP servers** — don't confuse them:\n\n- **`@idosgames/mcp`** (this one) serves the **CODE registry**. Use it to WRITE a game's source:\n `get_host_scaffold`, `list_modules` / `search` / `get_module`, `get_manifest`, `list_skills` /\n `get_skill`. Transport: stdio (`npx -y @idosgames/mcp`). Its registry is bundled offline; to use the\n hosted copy set `IDOSGAMES_REGISTRY_URL=https://cloud.idosgames.com/drive/registry/latest` — a **base**\n the loader appends `/index.json`, `/modules/{id}.json`, etc. to (the base itself is not fetchable on\n R2; open `.../latest/index.json` to browse the catalog). Read-only, no auth. It never reads or changes\n a live Title's data.\n- **The Title-configuration MCP** (a separate backend server) owns a **live Title's DATA**. Use it to\n read/write the Title's `TitlePublicConfiguration` (`get_<field>` / `save_<field>`, or the whole\n model) and to generate assets (`generate_image` / `generate_audio` / `generate_text` /\n `generate_three_d` / `generate_video`). Transport: HTTP JSON-RPC at\n `POST https://site.idosgames.com/api/v2/mcp`; every tool call takes a `title_id` argument.\n Authorization is **OAuth 2.1** — there is no API key and nothing to paste. Connect it as a plain\n HTTP MCP server with **no headers**: your client gets a `401`, discovers the authorization\n server, registers itself, and opens a browser where the publisher picks which Titles and which\n permissions to grant. The token lives in your client's own credential store, so committed config\n holds only the URL:\n\n ```json\n {\n \"mcpServers\": {\n \"idosgames-title\": {\n \"type\": \"http\",\n \"url\": \"https://site.idosgames.com/api/v2/mcp\"\n }\n }\n }\n ```\n\n Permissions the publisher can grant: `config:read`, `config:write`, `cloudcode:write`,\n `ai:generate`, `kanban:read`, `kanban:write`, `build:write`. A grant is scoped to the Titles ticked on the consent screen, and the publisher\n can revoke it any time from **Connected apps** in the dashboard. If a call comes back\n `SCOPE_NOT_ALLOWED` or `TITLE_NOT_ALLOWED`, the token is fine — that permission or that Title\n simply was not granted; ask the publisher to re-authorize rather than retrying.\n\n **Shipping the game itself** (permission `build:write`) also goes through this server — the\n platform hosts it on the Title's own address (`{titleid}.idos.games`) and its idosgames.com page:\n\n 1. `begin_build_upload { title_id }` → `build_id`, a one-hour `upload_url`, `asset_base`.\n 2. Build the game as static files with that base: `vite build --base=<asset_base>` (a relative\n `./` base also works — Unity WebGL builds already are). Use the LIVE title id, never `-DEV`.\n 3. Zip the CONTENTS of the output folder (`index.html` at the zip root; a single `dist/` top folder\n is accepted) and upload it: `curl -T build.zip \"<upload_url>\"` — a plain PUT, no headers.\n 4. `finish_build_upload { title_id, build_id, deploy }` — unpacks it into a new version (it shows up\n in the dashboard's version history) and returns `TestUrl` (DEV address). `deploy: true` puts it\n live for players right away; without it, check `TestUrl` and call it again with `deploy: true`.\n Still unpacking when it returns → poll `get_build`. `list_builds` shows recent versions.\n\n A game that is live but whose Title is not published yet has no idosgames.com page — the\n response says so; the publisher publishes it from the dashboard.\n\n Configuring a **fresh (empty) Title** so a game can actually run against it (currencies → game\n loop → bots) is its own checklist: see **idosgames-title-bootstrap**.\n\nRule of thumb: **game CODE → `@idosgames/mcp`; a Title's live config DATA and generated ASSETS → the\nbackend `v2/mcp` server.** Scaffolding a project and configuring/populating the Title it runs as are\ntwo different jobs on two different servers — connect the one that matches the task (or both).\n",
|
|
4
|
+
"content": "---\nname: idosgames-getting-started\ndescription: >-\n Start a new game or app on the iDosGames composable-module architecture: scaffold the base (sign-in\n + the lobby on the host shell) and plug in modules — the systems (shop, heroes, leaderboards…) and\n the games (board-game, idle-rpg, voxelcraft, mini-game, …). Use this whenever\n a developer wants to CREATE an iDosGames project from scratch, add an iDosGames game module to a\n project, or asks how @idosgames/app-shell, @idosgames/module-sdk, the host shell, mountHost, or\n src/modules.ts fit together. Pairs with idosgames-module-contract (writing a module) and\n idosgames-compose-modules (merging several) and idosgames-project-structure (where code goes as\n the project grows). If pulling modules over MCP, use the @idosgames/mcp\n tools get_host_scaffold / get_module / get_manifest.\n---\n\n# Getting started (iDosGames composable modules)\n\nAn iDosGames project is **one host shell + N feature modules**. The host owns everything that exists\nonce — the SDK client, login, the React root, the screen, a module registry, and a Mode Router that\nswitches between modules. A module is a library (a game or app) that plugs into the host; it never\ncreates the client, logs in, or owns the root.\n\n## Runtime packages (npm)\n\n- `@idosgames/core` — the SDK client (`createIDosGamesClient`): auth, currency, store, characters,\n blockchain, ~28 services. See the per-service skills (currency-system, store-system, …). Its\n **central cache** `client.cache` decides every read: the login brings the title config (by version)\n and the player's state (by each container's `Rev`) in ONE call; afterwards read state through\n `client.cache.ensureState([...containers])`, definitions through `getDefinitions()` (served from the\n config cache), server views through their service (cached by policy) — never re-fetch on start-up.\n The server views the game reads ride on that same login call (`ClientState.Views`): the client\n option `loginViews` — `\"auto\"` (default, what the game read last time), `\"all\"`, `\"none\"` or a list.\n- `@idosgames/module-sdk` — the module contract types (`Module`, `ModuleContext`, `EngineScene`,\n `UiPanel`). See idosgames-module-contract.\n- `@idosgames/react` — shared React glue (`IDosGamesProvider`, `useIDosGamesClient`, `useUserState`,\n `StatusProvider`, `createControllerContext`).\n- `@idosgames/app-shell` — the host runtime (`mountHost`, the Mode Router, the module registry).\n- `@idosgames/wallet` — optional wallet bridge (EVM/Solana) for on-chain deposits/withdrawals.\n\nInstall the exact versions from `get_manifest` (MCP) or the registry `index.json` `runtimePackages`.\n\n## Project shape\n\n```\nIDOS.md # the project guide every agent reads first (short, evergreen)\nAGENTS.md, CLAUDE.md # pointers to IDOS.md for external tools\ndocs/feature-history/ # one file per game system + README.md index (the project's memory)\nindex.html # mounts #app\nsrc/main.tsx # creates ONE client and calls mountHost({container, client, modules})\nsrc/modules.ts # the registry: export const modules: Module[] = [ … ] — imports + array only\nsrc/modules/{id}/ # each module's source + its module.meta.json (from get_module)\n```\n\nPlatform-created projects also carry `idos.modules.lock.json` (which modules came from the catalog,\nwith file fingerprints) — it is platform-owned; don't edit it. Where new code goes as the game grows,\nand how the project documents itself, is **idosgames-project-structure**.\n\n`src/main.tsx` (host-owned) is the only place that creates the client — but it does **not** sign in.\n`mountHost` owns sign-in: it replays a previous session (`autoLogin`) and renders the login screen\nwhen there is nothing to replay. Calling a `login*` method here skips that screen for good, taking\n\"switch account\" and wallet sign-in with it:\n\n```ts\nconst client = createIDosGamesClient({ titleID, buildKey, throttleMs: 0 });\n// Do NOT log in here — the host does it.\nmountHost({\n container: app,\n client,\n modules, // from ./modules\n renderLogin, // optional: your own screen; omitted = a plain guest-only default\n});\n```\n\nWhether a returning player is signed back in silently is the login screen's business, not the\nhost's: it calls `client.auth.setRememberSession(remember)` before a `login*` method. See the\nauthentication skill.\n\n`src/modules.ts` registers what the project composes:\n\n```ts\nimport type { Module } from \"@idosgames/module-sdk\";\nimport { boardGameModule } from \"./modules/board-game\";\nexport const modules: Module[] = [boardGameModule];\n```\n\n## Steps to scaffold\n\n1. **Base** — write the host scaffold to the project root (`get_host_scaffold`, or copy\n `templates/base`): sign-in and the lobby in `src/base/`, `src/app.config.ts` (start in the lobby or\n a game), an empty `src/modules.ts` → an empty lobby.\n2. **Bind the Title** — open `src/idos.title.ts` and set `IDOS_TITLE_ID` to the game's canonical\n Title id (and `IDOS_BUILD_KEY` if the title enforces one). This file is the project's single\n centralized identity — it is the highest-priority source and the only channel a packaged mobile\n build, iframe embed, or shared link has. On platform-created projects the platform generates it;\n on a manually scaffolded project **you fill it yourself**. Do NOT bind the title via `.env.local`\n (`VITE_IDOS_TITLE_ID`) — that is a local-dev fallback for the raw template only, and it does not\n travel with the code.\n3. **Pick modules** — `list_modules` / `search`, then `get_module {id}` for each. Write its files\n into `src/modules/{id}/`. The base's systems are the modules with `inBase: true` (profile,\n inventory, invite, friends, quests, mailbox); add the game(s) with the modules each game `uses`, and any\n other system (shop, VIP, leaderboards…) only when the app needs it.\n4. **Register** — for each module add `import { {camelCase(id)}Module } from \"./modules/{id}\"` and\n push it into the `modules` array (e.g. `board-game` → `boardGameModule`). Then add the module to\n the \"Installed modules\" block of `IDOS.md` (one line: ``- `board-game` (0.1.0) — src/modules/board-game/``)\n — on platform projects the platform maintains that block itself.\n5. **Install deps** — the union of `runtimePackages` + each module's `dependencies`. Modules bring\n their own engine (three, phaser); the host brings react/react-dom/app-shell.\n6. **Run** — sign-in → the lobby: the systems' screens are its tabs (a tab hides itself while the\n title has nothing for it) and \"Play\" launches a game on the whole screen with a small button back\n — or, for a game whose route says `inLobby: true` (idle-rpg), straight into that game inside the\n lobby, the lobby's balances and tabs around it. The lobby draws the balances and the wallet; games hide their own copies by\n themselves (`sharedUi` roles).\n\nTo combine multiple genres into one game, see **idosgames-compose-modules**. To write or edit a\nmodule, see **idosgames-module-contract**.\n\n## Where state lives (decide this before writing the first save)\n\nThe project is client-side code in the player's browser. `localStorage`, module fields, and React\nstate are **not storage** — nothing there survives a device change, and nothing there is trusted.\n\n1. **A dedicated module owns it?** Use that module. Currencies, inventory, quests, characters,\n leaderboards, store purchases each have a service that enforces the rules server-side.\n2. **Otherwise, per-player data → `client.userCustomData`** — buckets `Private`/`Public` are\n client-writable (settings, cosmetics), `ReadOnly`/`Internal` are server-only. Anything a player\n could cheat by editing goes in the server-only buckets. See **user-custom-data**.\n3. **Shared by all players → `client.titleCustomData`** (event state, global counters, server\n thresholds, feature toggles). Read-only for clients. See **title-custom-data**.\n4. **Writing any of the server-only data, or any rule the player must not be able to fake** →\n a CloudCode handler, called with `client.cloudCode.execute(...)`. See **cloud-code**.\n\n## Two MCP surfaces: game CODE vs. a Title's live DATA\n\nThe platform exposes **two independent MCP servers** — don't confuse them:\n\n- **`@idosgames/mcp`** (this one) serves the **CODE registry**. Use it to WRITE a game's source:\n `get_host_scaffold`, `list_modules` / `search` / `get_module`, `get_manifest`, `list_skills` /\n `get_skill`. Transport: stdio (`npx -y @idosgames/mcp`). Its registry is bundled offline; to use the\n hosted copy set `IDOSGAMES_REGISTRY_URL=https://cloud.idosgames.com/drive/registry/latest` — a **base**\n the loader appends `/index.json`, `/modules/{id}.json`, etc. to (the base itself is not fetchable on\n R2; open `.../latest/index.json` to browse the catalog). Read-only, no auth. It never reads or changes\n a live Title's data.\n- **The Title-configuration MCP** (a separate backend server) owns a **live Title's DATA**. Use it to\n read/write the Title's `TitlePublicConfiguration` (`get_<field>` / `save_<field>`, or the whole\n model) and to generate assets (`generate_image` / `generate_audio` / `generate_text` /\n `generate_three_d` / `generate_video`). Transport: HTTP JSON-RPC at\n `POST https://site.idosgames.com/api/v2/mcp`; every tool call takes a `title_id` argument.\n Authorization is **OAuth 2.1** — there is no API key and nothing to paste. Connect it as a plain\n HTTP MCP server with **no headers**: your client gets a `401`, discovers the authorization\n server, registers itself, and opens a browser where the publisher picks which Titles and which\n permissions to grant. The token lives in your client's own credential store, so committed config\n holds only the URL:\n\n ```json\n {\n \"mcpServers\": {\n \"idosgames-title\": {\n \"type\": \"http\",\n \"url\": \"https://site.idosgames.com/api/v2/mcp\"\n }\n }\n }\n ```\n\n Permissions the publisher can grant: `config:read`, `config:write`, `cloudcode:write`,\n `ai:generate`, `kanban:read`, `kanban:write`, `build:write`. A grant is scoped to the Titles ticked on the consent screen, and the publisher\n can revoke it any time from **Connected apps** in the dashboard. If a call comes back\n `SCOPE_NOT_ALLOWED` or `TITLE_NOT_ALLOWED`, the token is fine — that permission or that Title\n simply was not granted; ask the publisher to re-authorize rather than retrying.\n\n **Shipping the game itself** (permission `build:write`) also goes through this server — the\n platform hosts it on the Title's own address (`{titleid}.idos.games`) and its idosgames.com page:\n\n 1. `begin_build_upload { title_id }` → `build_id`, a one-hour `upload_url`, `asset_base`.\n 2. Build the game as static files with that base: `vite build --base=<asset_base>` (a relative\n `./` base also works — Unity WebGL builds already are). Use the LIVE title id, never `-DEV`.\n 3. Zip the CONTENTS of the output folder (`index.html` at the zip root; a single `dist/` top folder\n is accepted) and upload it: `curl -T build.zip \"<upload_url>\"` — a plain PUT, no headers.\n 4. `finish_build_upload { title_id, build_id, deploy }` — unpacks it into a new version (it shows up\n in the dashboard's version history) and returns `TestUrl` (DEV address). `deploy: true` puts it\n live for players right away; without it, check `TestUrl` and call it again with `deploy: true`.\n Still unpacking when it returns → poll `get_build`. `list_builds` shows recent versions.\n\n A game that is live but whose Title is not published yet has no idosgames.com page — the\n response says so; the publisher publishes it from the dashboard.\n\n ⚠ **The build must be the game itself.** On the Title's idosgames.com page the game may embed\n (`<iframe>`) only platform hosts — never another website, with no setting to allow one. A\n \"wrapper\" build that signs in and then frames the publisher's own site shows **\"Content\n unavailable\"** there instead of the game: build and upload the real game. Network calls\n (`fetch`/WebSocket) from the embedded game reach platform hosts plus the Title's\n `Blockchain.IframeConnectHosts` (`save_blockchain`; wallet-connection hosts are always refused).\n\n Configuring a **fresh (empty) Title** so a game can actually run against it (currencies → game\n loop → bots) is its own checklist: see **idosgames-title-bootstrap**.\n\nRule of thumb: **game CODE → `@idosgames/mcp`; a Title's live config DATA and generated ASSETS → the\nbackend `v2/mcp` server.** Scaffolding a project and configuring/populating the Title it runs as are\ntwo different jobs on two different servers — connect the one that matches the task (or both).\n",
|
|
5
5
|
"references": []
|
|
6
6
|
}
|