@idosgames/mcp 0.1.44 → 0.1.45
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 +1 -1
- package/package.json +1 -1
- package/registry/host.json +1 -1
- package/registry/index.json +119 -119
- package/registry/modules/ai.json +5 -5
- package/registry/modules/board-game.json +6 -6
- package/registry/modules/boosts.json +5 -5
- package/registry/modules/character.json +9 -9
- package/registry/modules/chat.json +3 -3
- package/registry/modules/collections.json +5 -5
- package/registry/modules/coop-events.json +6 -6
- package/registry/modules/craft.json +5 -5
- package/registry/modules/deals.json +6 -6
- package/registry/modules/events.json +3 -3
- package/registry/modules/friends.json +3 -3
- package/registry/modules/hero-run.json +5 -5
- package/registry/modules/idle-rpg.json +7 -7
- package/registry/modules/inventory.json +3 -3
- package/registry/modules/invite.json +3 -3
- package/registry/modules/leaderboard.json +3 -3
- package/registry/modules/lootboxes.json +5 -5
- package/registry/modules/mailbox.json +3 -3
- package/registry/modules/marketplace.json +3 -3
- package/registry/modules/mini-game.json +3 -3
- package/registry/modules/multiplayer.json +3 -3
- package/registry/modules/premium.json +5 -5
- package/registry/modules/profile.json +3 -3
- package/registry/modules/pvp.json +3 -3
- package/registry/modules/quests.json +3 -3
- package/registry/modules/rewards.json +3 -3
- package/registry/modules/season.json +3 -3
- package/registry/modules/store.json +6 -6
- package/registry/modules/tutorials.json +3 -3
- package/registry/modules/video-studio.json +8 -8
- package/registry/modules/voxelcraft.json +5 -5
- package/registry/modules/workshop.json +6 -6
- package/registry/skills/idosgames-ui-kit.json +1 -1
- package/registry/skills/store-system.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -2248,7 +2248,7 @@ async function callVideoTool(name, args) {
|
|
|
2248
2248
|
}
|
|
2249
2249
|
|
|
2250
2250
|
// src/server.ts
|
|
2251
|
-
var SERVER_VERSION = true ? "0.1.
|
|
2251
|
+
var SERVER_VERSION = true ? "0.1.45" : "0.0.0-dev";
|
|
2252
2252
|
var readOnly2 = (title) => ({
|
|
2253
2253
|
title,
|
|
2254
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.45",
|
|
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
|
@@ -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 (both from @idosgames/app-shell) 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.16.
|
|
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 (both from @idosgames/app-shell) 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.16.5\",\n \"@idosgames/core\": \"0.26.0\",\n \"@idosgames/module-sdk\": \"0.13.3\",\n \"@idosgames/react\": \"0.7.0\",\n \"@idosgames/wallet\": \"0.6.9\",\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,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedFromCommit": "
|
|
2
|
+
"generatedFromCommit": "54bb37cc90f4bd0aafba3b71fc87abbfcfad9904",
|
|
3
3
|
"runtimePackages": {
|
|
4
|
-
"@idosgames/core": "0.
|
|
5
|
-
"@idosgames/wallet": "0.6.
|
|
6
|
-
"@idosgames/module-sdk": "0.13.
|
|
7
|
-
"@idosgames/react": "0.
|
|
8
|
-
"@idosgames/app-shell": "0.16.
|
|
4
|
+
"@idosgames/core": "0.26.0",
|
|
5
|
+
"@idosgames/wallet": "0.6.9",
|
|
6
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
7
|
+
"@idosgames/react": "0.7.0",
|
|
8
|
+
"@idosgames/app-shell": "0.16.5",
|
|
9
9
|
"@idosgames/characters": "0.1.2",
|
|
10
10
|
"@idosgames/timeline": "0.1.0"
|
|
11
11
|
},
|
|
@@ -47,13 +47,13 @@
|
|
|
47
47
|
},
|
|
48
48
|
"version": "0.1.4",
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@idosgames/core": "0.
|
|
51
|
-
"@idosgames/module-sdk": "0.13.
|
|
52
|
-
"@idosgames/react": "0.
|
|
50
|
+
"@idosgames/core": "0.26.0",
|
|
51
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
52
|
+
"@idosgames/react": "0.7.0",
|
|
53
53
|
"react": "19.2.7"
|
|
54
54
|
},
|
|
55
55
|
"fileCount": 7,
|
|
56
|
-
"contentHash": "
|
|
56
|
+
"contentHash": "e702aa4d3c44024f0c964d4b3c791599a8724bece9020895df2de3286ad204ff"
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
"id": "premium",
|
|
@@ -84,13 +84,13 @@
|
|
|
84
84
|
},
|
|
85
85
|
"version": "0.1.3",
|
|
86
86
|
"dependencies": {
|
|
87
|
-
"@idosgames/core": "0.
|
|
88
|
-
"@idosgames/module-sdk": "0.13.
|
|
89
|
-
"@idosgames/react": "0.
|
|
87
|
+
"@idosgames/core": "0.26.0",
|
|
88
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
89
|
+
"@idosgames/react": "0.7.0",
|
|
90
90
|
"react": "19.2.7"
|
|
91
91
|
},
|
|
92
92
|
"fileCount": 6,
|
|
93
|
-
"contentHash": "
|
|
93
|
+
"contentHash": "d835f2923e281c625bd1888202c6e2df9005bd05ba54ed5793fbac2e03aab4dc"
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
96
|
"id": "character",
|
|
@@ -143,13 +143,13 @@
|
|
|
143
143
|
]
|
|
144
144
|
},
|
|
145
145
|
"dependencies": {
|
|
146
|
-
"@idosgames/core": "0.
|
|
147
|
-
"@idosgames/module-sdk": "0.13.
|
|
148
|
-
"@idosgames/react": "0.
|
|
146
|
+
"@idosgames/core": "0.26.0",
|
|
147
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
148
|
+
"@idosgames/react": "0.7.0",
|
|
149
149
|
"react": "19.2.7"
|
|
150
150
|
},
|
|
151
151
|
"fileCount": 21,
|
|
152
|
-
"contentHash": "
|
|
152
|
+
"contentHash": "92f7f5539093cf9793ff5a366db0583ed1e250b9bab95763a14ee49e0739e015"
|
|
153
153
|
},
|
|
154
154
|
{
|
|
155
155
|
"id": "inventory",
|
|
@@ -180,9 +180,9 @@
|
|
|
180
180
|
},
|
|
181
181
|
"version": "0.1.1",
|
|
182
182
|
"dependencies": {
|
|
183
|
-
"@idosgames/core": "0.
|
|
184
|
-
"@idosgames/module-sdk": "0.13.
|
|
185
|
-
"@idosgames/react": "0.
|
|
183
|
+
"@idosgames/core": "0.26.0",
|
|
184
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
185
|
+
"@idosgames/react": "0.7.0",
|
|
186
186
|
"react": "19.2.7"
|
|
187
187
|
},
|
|
188
188
|
"fileCount": 6,
|
|
@@ -217,13 +217,13 @@
|
|
|
217
217
|
},
|
|
218
218
|
"version": "0.1.4",
|
|
219
219
|
"dependencies": {
|
|
220
|
-
"@idosgames/core": "0.
|
|
221
|
-
"@idosgames/module-sdk": "0.13.
|
|
222
|
-
"@idosgames/react": "0.
|
|
220
|
+
"@idosgames/core": "0.26.0",
|
|
221
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
222
|
+
"@idosgames/react": "0.7.0",
|
|
223
223
|
"react": "19.2.7"
|
|
224
224
|
},
|
|
225
225
|
"fileCount": 6,
|
|
226
|
-
"contentHash": "
|
|
226
|
+
"contentHash": "55544f5bae173482aaa22e92612cade99a356547ee80b68fc096dde8fb700b47"
|
|
227
227
|
},
|
|
228
228
|
{
|
|
229
229
|
"id": "boosts",
|
|
@@ -253,13 +253,13 @@
|
|
|
253
253
|
},
|
|
254
254
|
"version": "0.1.1",
|
|
255
255
|
"dependencies": {
|
|
256
|
-
"@idosgames/core": "0.
|
|
257
|
-
"@idosgames/module-sdk": "0.13.
|
|
258
|
-
"@idosgames/react": "0.
|
|
256
|
+
"@idosgames/core": "0.26.0",
|
|
257
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
258
|
+
"@idosgames/react": "0.7.0",
|
|
259
259
|
"react": "19.2.7"
|
|
260
260
|
},
|
|
261
261
|
"fileCount": 6,
|
|
262
|
-
"contentHash": "
|
|
262
|
+
"contentHash": "d79e71eb438f32329a34d0aeb4b9dcf7e7a8c6dac168224951a85a50f7bf84b0"
|
|
263
263
|
},
|
|
264
264
|
{
|
|
265
265
|
"id": "leaderboard",
|
|
@@ -294,9 +294,9 @@
|
|
|
294
294
|
},
|
|
295
295
|
"version": "0.1.5",
|
|
296
296
|
"dependencies": {
|
|
297
|
-
"@idosgames/core": "0.
|
|
298
|
-
"@idosgames/module-sdk": "0.13.
|
|
299
|
-
"@idosgames/react": "0.
|
|
297
|
+
"@idosgames/core": "0.26.0",
|
|
298
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
299
|
+
"@idosgames/react": "0.7.0",
|
|
300
300
|
"react": "19.2.7"
|
|
301
301
|
},
|
|
302
302
|
"fileCount": 10,
|
|
@@ -330,9 +330,9 @@
|
|
|
330
330
|
},
|
|
331
331
|
"version": "0.1.3",
|
|
332
332
|
"dependencies": {
|
|
333
|
-
"@idosgames/core": "0.
|
|
334
|
-
"@idosgames/module-sdk": "0.13.
|
|
335
|
-
"@idosgames/react": "0.
|
|
333
|
+
"@idosgames/core": "0.26.0",
|
|
334
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
335
|
+
"@idosgames/react": "0.7.0",
|
|
336
336
|
"react": "19.2.7"
|
|
337
337
|
},
|
|
338
338
|
"fileCount": 6,
|
|
@@ -369,9 +369,9 @@
|
|
|
369
369
|
},
|
|
370
370
|
"version": "0.1.3",
|
|
371
371
|
"dependencies": {
|
|
372
|
-
"@idosgames/core": "0.
|
|
373
|
-
"@idosgames/module-sdk": "0.13.
|
|
374
|
-
"@idosgames/react": "0.
|
|
372
|
+
"@idosgames/core": "0.26.0",
|
|
373
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
374
|
+
"@idosgames/react": "0.7.0",
|
|
375
375
|
"react": "19.2.7"
|
|
376
376
|
},
|
|
377
377
|
"fileCount": 6,
|
|
@@ -408,13 +408,13 @@
|
|
|
408
408
|
},
|
|
409
409
|
"version": "0.1.3",
|
|
410
410
|
"dependencies": {
|
|
411
|
-
"@idosgames/core": "0.
|
|
412
|
-
"@idosgames/module-sdk": "0.13.
|
|
413
|
-
"@idosgames/react": "0.
|
|
411
|
+
"@idosgames/core": "0.26.0",
|
|
412
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
413
|
+
"@idosgames/react": "0.7.0",
|
|
414
414
|
"react": "19.2.7"
|
|
415
415
|
},
|
|
416
416
|
"fileCount": 10,
|
|
417
|
-
"contentHash": "
|
|
417
|
+
"contentHash": "4a0b7e2e2ee14fd0ebf5ae7cb09246895b158e9ff62d372a7e18a041a3d54fbe"
|
|
418
418
|
},
|
|
419
419
|
{
|
|
420
420
|
"id": "craft",
|
|
@@ -448,13 +448,13 @@
|
|
|
448
448
|
},
|
|
449
449
|
"version": "0.1.2",
|
|
450
450
|
"dependencies": {
|
|
451
|
-
"@idosgames/core": "0.
|
|
452
|
-
"@idosgames/module-sdk": "0.13.
|
|
453
|
-
"@idosgames/react": "0.
|
|
451
|
+
"@idosgames/core": "0.26.0",
|
|
452
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
453
|
+
"@idosgames/react": "0.7.0",
|
|
454
454
|
"react": "19.2.7"
|
|
455
455
|
},
|
|
456
456
|
"fileCount": 6,
|
|
457
|
-
"contentHash": "
|
|
457
|
+
"contentHash": "f59536188295910902674239c662a7ed6eca971ba4820ade716a25e56f21ccf3"
|
|
458
458
|
},
|
|
459
459
|
{
|
|
460
460
|
"id": "marketplace",
|
|
@@ -489,9 +489,9 @@
|
|
|
489
489
|
},
|
|
490
490
|
"version": "0.1.3",
|
|
491
491
|
"dependencies": {
|
|
492
|
-
"@idosgames/core": "0.
|
|
493
|
-
"@idosgames/module-sdk": "0.13.
|
|
494
|
-
"@idosgames/react": "0.
|
|
492
|
+
"@idosgames/core": "0.26.0",
|
|
493
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
494
|
+
"@idosgames/react": "0.7.0",
|
|
495
495
|
"react": "19.2.7"
|
|
496
496
|
},
|
|
497
497
|
"fileCount": 13,
|
|
@@ -528,13 +528,13 @@
|
|
|
528
528
|
},
|
|
529
529
|
"version": "0.1.3",
|
|
530
530
|
"dependencies": {
|
|
531
|
-
"@idosgames/core": "0.
|
|
532
|
-
"@idosgames/module-sdk": "0.13.
|
|
533
|
-
"@idosgames/react": "0.
|
|
531
|
+
"@idosgames/core": "0.26.0",
|
|
532
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
533
|
+
"@idosgames/react": "0.7.0",
|
|
534
534
|
"react": "19.2.7"
|
|
535
535
|
},
|
|
536
536
|
"fileCount": 6,
|
|
537
|
-
"contentHash": "
|
|
537
|
+
"contentHash": "c4c7f012dbd1a629ebfd9276d872fad99f9b7254bf87279c6b2fcfa5fa7d0e53"
|
|
538
538
|
},
|
|
539
539
|
{
|
|
540
540
|
"id": "events",
|
|
@@ -570,9 +570,9 @@
|
|
|
570
570
|
},
|
|
571
571
|
"version": "0.1.5",
|
|
572
572
|
"dependencies": {
|
|
573
|
-
"@idosgames/core": "0.
|
|
574
|
-
"@idosgames/module-sdk": "0.13.
|
|
575
|
-
"@idosgames/react": "0.
|
|
573
|
+
"@idosgames/core": "0.26.0",
|
|
574
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
575
|
+
"@idosgames/react": "0.7.0",
|
|
576
576
|
"react": "19.2.7"
|
|
577
577
|
},
|
|
578
578
|
"fileCount": 6,
|
|
@@ -607,13 +607,13 @@
|
|
|
607
607
|
},
|
|
608
608
|
"version": "0.1.3",
|
|
609
609
|
"dependencies": {
|
|
610
|
-
"@idosgames/core": "0.
|
|
611
|
-
"@idosgames/module-sdk": "0.13.
|
|
612
|
-
"@idosgames/react": "0.
|
|
610
|
+
"@idosgames/core": "0.26.0",
|
|
611
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
612
|
+
"@idosgames/react": "0.7.0",
|
|
613
613
|
"react": "19.2.7"
|
|
614
614
|
},
|
|
615
615
|
"fileCount": 6,
|
|
616
|
-
"contentHash": "
|
|
616
|
+
"contentHash": "6af34c48b5056a655586dd2351d4b370756b9244b1aeda980c667b1c962428e5"
|
|
617
617
|
},
|
|
618
618
|
{
|
|
619
619
|
"id": "season",
|
|
@@ -648,9 +648,9 @@
|
|
|
648
648
|
},
|
|
649
649
|
"version": "0.1.3",
|
|
650
650
|
"dependencies": {
|
|
651
|
-
"@idosgames/core": "0.
|
|
652
|
-
"@idosgames/module-sdk": "0.13.
|
|
653
|
-
"@idosgames/react": "0.
|
|
651
|
+
"@idosgames/core": "0.26.0",
|
|
652
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
653
|
+
"@idosgames/react": "0.7.0",
|
|
654
654
|
"react": "19.2.7"
|
|
655
655
|
},
|
|
656
656
|
"fileCount": 6,
|
|
@@ -688,9 +688,9 @@
|
|
|
688
688
|
},
|
|
689
689
|
"version": "0.1.3",
|
|
690
690
|
"dependencies": {
|
|
691
|
-
"@idosgames/core": "0.
|
|
692
|
-
"@idosgames/module-sdk": "0.13.
|
|
693
|
-
"@idosgames/react": "0.
|
|
691
|
+
"@idosgames/core": "0.26.0",
|
|
692
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
693
|
+
"@idosgames/react": "0.7.0",
|
|
694
694
|
"react": "19.2.7"
|
|
695
695
|
},
|
|
696
696
|
"fileCount": 11,
|
|
@@ -728,9 +728,9 @@
|
|
|
728
728
|
},
|
|
729
729
|
"version": "0.1.2",
|
|
730
730
|
"dependencies": {
|
|
731
|
-
"@idosgames/core": "0.
|
|
732
|
-
"@idosgames/module-sdk": "0.13.
|
|
733
|
-
"@idosgames/react": "0.
|
|
731
|
+
"@idosgames/core": "0.26.0",
|
|
732
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
733
|
+
"@idosgames/react": "0.7.0",
|
|
734
734
|
"react": "19.2.7"
|
|
735
735
|
},
|
|
736
736
|
"fileCount": 11,
|
|
@@ -768,9 +768,9 @@
|
|
|
768
768
|
},
|
|
769
769
|
"version": "0.1.3",
|
|
770
770
|
"dependencies": {
|
|
771
|
-
"@idosgames/core": "0.
|
|
772
|
-
"@idosgames/module-sdk": "0.13.
|
|
773
|
-
"@idosgames/react": "0.
|
|
771
|
+
"@idosgames/core": "0.26.0",
|
|
772
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
773
|
+
"@idosgames/react": "0.7.0",
|
|
774
774
|
"react": "19.2.7"
|
|
775
775
|
},
|
|
776
776
|
"fileCount": 6,
|
|
@@ -809,9 +809,9 @@
|
|
|
809
809
|
},
|
|
810
810
|
"version": "0.1.3",
|
|
811
811
|
"dependencies": {
|
|
812
|
-
"@idosgames/core": "0.
|
|
813
|
-
"@idosgames/module-sdk": "0.13.
|
|
814
|
-
"@idosgames/react": "0.
|
|
812
|
+
"@idosgames/core": "0.26.0",
|
|
813
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
814
|
+
"@idosgames/react": "0.7.0",
|
|
815
815
|
"react": "19.2.7"
|
|
816
816
|
},
|
|
817
817
|
"fileCount": 13,
|
|
@@ -847,9 +847,9 @@
|
|
|
847
847
|
},
|
|
848
848
|
"version": "0.1.2",
|
|
849
849
|
"dependencies": {
|
|
850
|
-
"@idosgames/core": "0.
|
|
851
|
-
"@idosgames/module-sdk": "0.13.
|
|
852
|
-
"@idosgames/react": "0.
|
|
850
|
+
"@idosgames/core": "0.26.0",
|
|
851
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
852
|
+
"@idosgames/react": "0.7.0",
|
|
853
853
|
"react": "19.2.7"
|
|
854
854
|
},
|
|
855
855
|
"fileCount": 13,
|
|
@@ -891,9 +891,9 @@
|
|
|
891
891
|
},
|
|
892
892
|
"version": "0.2.1",
|
|
893
893
|
"dependencies": {
|
|
894
|
-
"@idosgames/core": "0.
|
|
895
|
-
"@idosgames/module-sdk": "0.13.
|
|
896
|
-
"@idosgames/react": "0.
|
|
894
|
+
"@idosgames/core": "0.26.0",
|
|
895
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
896
|
+
"@idosgames/react": "0.7.0",
|
|
897
897
|
"react": "19.2.7"
|
|
898
898
|
},
|
|
899
899
|
"fileCount": 15,
|
|
@@ -930,9 +930,9 @@
|
|
|
930
930
|
},
|
|
931
931
|
"version": "0.1.5",
|
|
932
932
|
"dependencies": {
|
|
933
|
-
"@idosgames/core": "0.
|
|
934
|
-
"@idosgames/module-sdk": "0.13.
|
|
935
|
-
"@idosgames/react": "0.
|
|
933
|
+
"@idosgames/core": "0.26.0",
|
|
934
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
935
|
+
"@idosgames/react": "0.7.0",
|
|
936
936
|
"react": "19.2.7"
|
|
937
937
|
},
|
|
938
938
|
"fileCount": 6,
|
|
@@ -967,9 +967,9 @@
|
|
|
967
967
|
},
|
|
968
968
|
"version": "0.1.4",
|
|
969
969
|
"dependencies": {
|
|
970
|
-
"@idosgames/core": "0.
|
|
971
|
-
"@idosgames/module-sdk": "0.13.
|
|
972
|
-
"@idosgames/react": "0.
|
|
970
|
+
"@idosgames/core": "0.26.0",
|
|
971
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
972
|
+
"@idosgames/react": "0.7.0",
|
|
973
973
|
"react": "19.2.7"
|
|
974
974
|
},
|
|
975
975
|
"fileCount": 6,
|
|
@@ -1011,13 +1011,13 @@
|
|
|
1011
1011
|
},
|
|
1012
1012
|
"version": "0.1.3",
|
|
1013
1013
|
"dependencies": {
|
|
1014
|
-
"@idosgames/core": "0.
|
|
1015
|
-
"@idosgames/module-sdk": "0.13.
|
|
1016
|
-
"@idosgames/react": "0.
|
|
1014
|
+
"@idosgames/core": "0.26.0",
|
|
1015
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
1016
|
+
"@idosgames/react": "0.7.0",
|
|
1017
1017
|
"react": "19.2.7"
|
|
1018
1018
|
},
|
|
1019
1019
|
"fileCount": 16,
|
|
1020
|
-
"contentHash": "
|
|
1020
|
+
"contentHash": "c3a4b38be15260152a5244a06539639a1c7c08c207faf76d03baab43e639d148"
|
|
1021
1021
|
},
|
|
1022
1022
|
{
|
|
1023
1023
|
"id": "ai",
|
|
@@ -1046,13 +1046,13 @@
|
|
|
1046
1046
|
},
|
|
1047
1047
|
"version": "0.1.3",
|
|
1048
1048
|
"dependencies": {
|
|
1049
|
-
"@idosgames/core": "0.
|
|
1050
|
-
"@idosgames/module-sdk": "0.13.
|
|
1051
|
-
"@idosgames/react": "0.
|
|
1049
|
+
"@idosgames/core": "0.26.0",
|
|
1050
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
1051
|
+
"@idosgames/react": "0.7.0",
|
|
1052
1052
|
"react": "19.2.7"
|
|
1053
1053
|
},
|
|
1054
1054
|
"fileCount": 6,
|
|
1055
|
-
"contentHash": "
|
|
1055
|
+
"contentHash": "94fa2be0fc5eff91bef20eb4ee063955c64d6df105066bafe384f5ec0be924a7"
|
|
1056
1056
|
},
|
|
1057
1057
|
{
|
|
1058
1058
|
"id": "board-game",
|
|
@@ -1096,10 +1096,10 @@
|
|
|
1096
1096
|
]
|
|
1097
1097
|
},
|
|
1098
1098
|
"dependencies": {
|
|
1099
|
-
"@idosgames/core": "0.
|
|
1100
|
-
"@idosgames/module-sdk": "0.13.
|
|
1101
|
-
"@idosgames/react": "0.
|
|
1102
|
-
"@idosgames/wallet": "0.6.
|
|
1099
|
+
"@idosgames/core": "0.26.0",
|
|
1100
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
1101
|
+
"@idosgames/react": "0.7.0",
|
|
1102
|
+
"@idosgames/wallet": "0.6.9",
|
|
1103
1103
|
"@tanstack/react-query": "5.101.2",
|
|
1104
1104
|
"react": "19.2.7",
|
|
1105
1105
|
"three": "0.185.1",
|
|
@@ -1107,7 +1107,7 @@
|
|
|
1107
1107
|
"wagmi": "3.7.2"
|
|
1108
1108
|
},
|
|
1109
1109
|
"fileCount": 46,
|
|
1110
|
-
"contentHash": "
|
|
1110
|
+
"contentHash": "a93a6822f166b908586371e556127149c5d275ee8044bf0c1c0c5384c345d266"
|
|
1111
1111
|
},
|
|
1112
1112
|
{
|
|
1113
1113
|
"id": "idle-rpg",
|
|
@@ -1182,14 +1182,14 @@
|
|
|
1182
1182
|
},
|
|
1183
1183
|
"dependencies": {
|
|
1184
1184
|
"@idosgames/characters": "0.1.2",
|
|
1185
|
-
"@idosgames/core": "0.
|
|
1186
|
-
"@idosgames/module-sdk": "0.13.
|
|
1187
|
-
"@idosgames/react": "0.
|
|
1185
|
+
"@idosgames/core": "0.26.0",
|
|
1186
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
1187
|
+
"@idosgames/react": "0.7.0",
|
|
1188
1188
|
"phaser": "4.2.1",
|
|
1189
1189
|
"react": "19.2.7"
|
|
1190
1190
|
},
|
|
1191
1191
|
"fileCount": 37,
|
|
1192
|
-
"contentHash": "
|
|
1192
|
+
"contentHash": "c829bf0a60c01c03a9370d167404e1cb6d5fce50e04f893157b7cdb33443d12f"
|
|
1193
1193
|
},
|
|
1194
1194
|
{
|
|
1195
1195
|
"id": "hero-run",
|
|
@@ -1257,14 +1257,14 @@
|
|
|
1257
1257
|
]
|
|
1258
1258
|
},
|
|
1259
1259
|
"dependencies": {
|
|
1260
|
-
"@idosgames/core": "0.
|
|
1261
|
-
"@idosgames/module-sdk": "0.13.
|
|
1262
|
-
"@idosgames/react": "0.
|
|
1260
|
+
"@idosgames/core": "0.26.0",
|
|
1261
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
1262
|
+
"@idosgames/react": "0.7.0",
|
|
1263
1263
|
"phaser": "4.2.1",
|
|
1264
1264
|
"react": "19.2.7"
|
|
1265
1265
|
},
|
|
1266
1266
|
"fileCount": 105,
|
|
1267
|
-
"contentHash": "
|
|
1267
|
+
"contentHash": "4f092b6d504b4ddfe84081e28ba71f7c09e8e33cedc511e764e85b213b8edfe3"
|
|
1268
1268
|
},
|
|
1269
1269
|
{
|
|
1270
1270
|
"id": "voxelcraft",
|
|
@@ -1348,14 +1348,14 @@
|
|
|
1348
1348
|
"version": "0.7.4",
|
|
1349
1349
|
"dependencies": {
|
|
1350
1350
|
"@idosgames/characters": "0.1.2",
|
|
1351
|
-
"@idosgames/core": "0.
|
|
1352
|
-
"@idosgames/module-sdk": "0.13.
|
|
1353
|
-
"@idosgames/react": "0.
|
|
1351
|
+
"@idosgames/core": "0.26.0",
|
|
1352
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
1353
|
+
"@idosgames/react": "0.7.0",
|
|
1354
1354
|
"react": "19.2.7",
|
|
1355
1355
|
"three": "0.185.1"
|
|
1356
1356
|
},
|
|
1357
1357
|
"fileCount": 561,
|
|
1358
|
-
"contentHash": "
|
|
1358
|
+
"contentHash": "5068fee9f43c38b2967a4771de445afa23699a0ed5bc16fe9ecd891757dd0730"
|
|
1359
1359
|
},
|
|
1360
1360
|
{
|
|
1361
1361
|
"id": "mini-game",
|
|
@@ -1384,9 +1384,9 @@
|
|
|
1384
1384
|
},
|
|
1385
1385
|
"version": "0.1.4",
|
|
1386
1386
|
"dependencies": {
|
|
1387
|
-
"@idosgames/core": "0.
|
|
1388
|
-
"@idosgames/module-sdk": "0.13.
|
|
1389
|
-
"@idosgames/react": "0.
|
|
1387
|
+
"@idosgames/core": "0.26.0",
|
|
1388
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
1389
|
+
"@idosgames/react": "0.7.0",
|
|
1390
1390
|
"react": "19.2.7"
|
|
1391
1391
|
},
|
|
1392
1392
|
"fileCount": 7,
|
|
@@ -1444,15 +1444,15 @@
|
|
|
1444
1444
|
"version": "0.1.1",
|
|
1445
1445
|
"dependencies": {
|
|
1446
1446
|
"@idosgames/characters": "0.1.2",
|
|
1447
|
-
"@idosgames/core": "0.
|
|
1448
|
-
"@idosgames/module-sdk": "0.13.
|
|
1449
|
-
"@idosgames/react": "0.
|
|
1447
|
+
"@idosgames/core": "0.26.0",
|
|
1448
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
1449
|
+
"@idosgames/react": "0.7.0",
|
|
1450
1450
|
"@idosgames/timeline": "0.1.0",
|
|
1451
1451
|
"react": "19.2.7",
|
|
1452
1452
|
"three": "0.185.1"
|
|
1453
1453
|
},
|
|
1454
1454
|
"fileCount": 40,
|
|
1455
|
-
"contentHash": "
|
|
1455
|
+
"contentHash": "f21269891c1f334358e49c1926f8fd343a3f32dae1ef373b15d7b4c193cf4b9b"
|
|
1456
1456
|
}
|
|
1457
1457
|
],
|
|
1458
1458
|
"skills": [
|
package/registry/modules/ai.json
CHANGED
|
@@ -30,16 +30,16 @@
|
|
|
30
30
|
"version": "0.1.3"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@idosgames/core": "0.
|
|
34
|
-
"@idosgames/module-sdk": "0.13.
|
|
35
|
-
"@idosgames/react": "0.
|
|
33
|
+
"@idosgames/core": "0.26.0",
|
|
34
|
+
"@idosgames/module-sdk": "0.13.3",
|
|
35
|
+
"@idosgames/react": "0.7.0",
|
|
36
36
|
"react": "19.2.7"
|
|
37
37
|
},
|
|
38
|
-
"contentHash": "
|
|
38
|
+
"contentHash": "94fa2be0fc5eff91bef20eb4ee063955c64d6df105066bafe384f5ec0be924a7",
|
|
39
39
|
"files": [
|
|
40
40
|
{
|
|
41
41
|
"path": "AiScreen.tsx",
|
|
42
|
-
"content": "import { useEffect, useRef, useState, type ReactNode } from \"react\";\nimport type { AIGenerationView, IDosGamesClient } from \"@idosgames/core\";\nimport type { FeatureScreenProps } from \"@idosgames/module-sdk\";\nimport { useIDosGamesClient, useUserState } from \"@idosgames/react\";\nimport {\n Columns,\n Button,\n canAfford,\n Card,\n Center,\n configSection,\n EmptyState,\n errorText,\n Icon,\n outlined,\n panel,\n ResourceList,\n Spinner,\n Tabs,\n TextArea,\n useCatalog,\n useStagger,\n useToast,\n v,\n} from \"@idosgames/react/ui\";\nimport {\n featureRows,\n resultKind,\n type AISection,\n type FeatureRow,\n type Modality,\n} from \"./model\";\nimport { t } from \"./i18n\";\n\n// AI studio (engine AI): the AI features the publisher opened to players — text, pictures, speech,\n// music, video, 3D. The player writes what they want, pays the feature's price (or nothing), and the\n// result comes back from a job the server runs (polled with waitForGeneration). A feature tagged\n// \"hidden\" is for the game's own code (NPC lines and the like) and does not show here.\n\ntype Tab = \"create\" | \"history\";\n\nexport function AiScreen(_: FeatureScreenProps): ReactNode {\n const client = useIDosGamesClient();\n const catalog = useCatalog();\n const [tab, setTab] = useState<Tab>(\"create\");\n const [picked, setPicked] = useState<string | null>(null);\n const features = featureRows(configSection<AISection>(client, \"AI\"));\n if (features.length === 0)\n return <EmptyState glyph=\"bulb\" text={t(\"noFeatures\")} />;\n const current = features.find((f) => f.key === picked) ?? features[0]!;\n return (\n <div style={{ display: \"grid\", gap: 12 }}>\n <Tabs\n tabs={[\n { id: \"create\", label: t(\"create\") },\n { id: \"history\", label: t(\"history\") },\n ]}\n value={tab}\n onChange={setTab}\n />\n {tab === \"create\" ? (\n <>\n {features.length > 1 ? (\n <div style={{ display: \"flex\", gap: 6, flexWrap: \"wrap\" }}>\n {features.map((f) => (\n <Button\n key={f.key}\n size=\"sm\"\n tone={f.key === current.key ? \"gold\" : \"grey\"}\n onClick={() => setPicked(f.key)}\n >\n {catalog.localize(f.key)} · {t(`m_${f.modality}`)}\n </Button>\n ))}\n </div>\n ) : null}\n <Create key={current.key} feature={current} />\n </>\n ) : (\n <History />\n )}\n </div>\n );\n}\n\n/** Starts a job for a feature by its modality and waits for the result. */\nfunction run(\n client: IDosGamesClient,\n feature: FeatureRow,\n prompt: string,\n optionID: string | undefined,\n): Promise<\n { ok: true; data: AIGenerationView } | { ok: false; error: string }\n> {\n
|
|
42
|
+
"content": "import { useEffect, useRef, useState, type ReactNode } from \"react\";\nimport type { AIGenerationView, IDosGamesClient } from \"@idosgames/core\";\nimport type { FeatureScreenProps } from \"@idosgames/module-sdk\";\nimport { useIDosGamesClient, useUserState } from \"@idosgames/react\";\nimport {\n Columns,\n Button,\n canAfford,\n Card,\n Center,\n configSection,\n EmptyState,\n errorText,\n Icon,\n outlined,\n panel,\n ResourceList,\n Spinner,\n Tabs,\n TextArea,\n useCatalog,\n useStagger,\n useToast,\n v,\n payWithCredits,\n} from \"@idosgames/react/ui\";\nimport {\n featureRows,\n resultKind,\n type AISection,\n type FeatureRow,\n type Modality,\n} from \"./model\";\nimport { t } from \"./i18n\";\n\n// AI studio (engine AI): the AI features the publisher opened to players — text, pictures, speech,\n// music, video, 3D. The player writes what they want, pays the feature's price (or nothing), and the\n// result comes back from a job the server runs (polled with waitForGeneration). A feature tagged\n// \"hidden\" is for the game's own code (NPC lines and the like) and does not show here.\n\ntype Tab = \"create\" | \"history\";\n\nexport function AiScreen(_: FeatureScreenProps): ReactNode {\n const client = useIDosGamesClient();\n const catalog = useCatalog();\n const [tab, setTab] = useState<Tab>(\"create\");\n const [picked, setPicked] = useState<string | null>(null);\n const features = featureRows(configSection<AISection>(client, \"AI\"));\n if (features.length === 0)\n return <EmptyState glyph=\"bulb\" text={t(\"noFeatures\")} />;\n const current = features.find((f) => f.key === picked) ?? features[0]!;\n return (\n <div style={{ display: \"grid\", gap: 12 }}>\n <Tabs\n tabs={[\n { id: \"create\", label: t(\"create\") },\n { id: \"history\", label: t(\"history\") },\n ]}\n value={tab}\n onChange={setTab}\n />\n {tab === \"create\" ? (\n <>\n {features.length > 1 ? (\n <div style={{ display: \"flex\", gap: 6, flexWrap: \"wrap\" }}>\n {features.map((f) => (\n <Button\n key={f.key}\n size=\"sm\"\n tone={f.key === current.key ? \"gold\" : \"grey\"}\n onClick={() => setPicked(f.key)}\n >\n {catalog.localize(f.key)} · {t(`m_${f.modality}`)}\n </Button>\n ))}\n </div>\n ) : null}\n <Create key={current.key} feature={current} />\n </>\n ) : (\n <History />\n )}\n </div>\n );\n}\n\n/** Starts a job for a feature by its modality and waits for the result. */\nfunction run(\n client: IDosGamesClient,\n feature: FeatureRow,\n prompt: string,\n optionID: string | undefined,\n): Promise<\n { ok: true; data: AIGenerationView } | { ok: false; error: string }\n> {\n // One key for both calls of an Aspis price: the request, then the confirmed generation.\n const relatedEntityID = crypto.randomUUID();\n const byModality: Record<\n Modality,\n (\n creditsConfirmationID?: string,\n ) => ReturnType<IDosGamesClient[\"ai\"][\"generateText\"]>\n > = {\n Text: (id) =>\n client.ai.generateText(feature.key, { Prompt: prompt }, opts(id)),\n Image: (id) =>\n client.ai.generateImage(feature.key, { Prompt: prompt }, opts(id)),\n Audio: (id) =>\n client.ai.generateAudio(feature.key, { Text: prompt }, opts(id)),\n Music: (id) =>\n client.ai.generateMusic(feature.key, { Prompt: prompt }, opts(id)),\n Video: (id) =>\n client.ai.generateVideo(feature.key, { Prompt: prompt }, opts(id)),\n ThreeD: (id) =>\n client.ai.generateThreeD(feature.key, { Prompt: prompt }, opts(id)),\n };\n function opts(creditsConfirmationID?: string) {\n return { selectedOptionID: optionID, relatedEntityID, creditsConfirmationID };\n }\n // A price in Aspis: the first call asks the player to confirm on idosgames.com (the kit shows it); the Aspis are\n // charged only when the generation is ready.\n return payWithCredits(client, byModality[feature.modality]).then((started) =>\n started.ok\n ? client.ai.waitForGeneration(started.data, { timeoutMs: 10 * 60_000 })\n : started,\n );\n}\n\nfunction Create({ feature }: { feature: FeatureRow }): ReactNode {\n const client = useIDosGamesClient();\n const state = useUserState();\n const toast = useToast();\n const [prompt, setPrompt] = useState(\"\");\n const [busy, setBusy] = useState(false);\n const [result, setResult] = useState<AIGenerationView | null>(null);\n const alive = useRef(true);\n useEffect(\n () => () => {\n alive.current = false;\n },\n [],\n );\n const balances = state?.InventoryV2?.VirtualCurrencies as\n Record<string, { Amount?: number }> | undefined;\n const option =\n feature.options.find((o) => canAfford(o.price, balances)) ??\n feature.options[0];\n const affordable = !option || canAfford(option.price, balances);\n\n const go = async () => {\n setBusy(true);\n setResult(null);\n const res = await run(client, feature, prompt.trim(), option?.id);\n if (!alive.current) return;\n setBusy(false);\n if (!res.ok) return toast(errorText(res.error), \"error\");\n if (res.data.Status !== \"completed\")\n return toast(res.data.Error?.Message || t(\"failed\"), \"error\");\n setResult(res.data);\n };\n\n return (\n <div style={{ display: \"grid\", gap: 10 }}>\n <TextArea\n value={prompt}\n maxLength={feature.maxChars > 0 ? feature.maxChars : undefined}\n placeholder={\n feature.modality === \"Audio\" ? t(\"sayWhat\") : t(\"describe\")\n }\n onChange={(e) => setPrompt(e.target.value)}\n rows={4}\n style={{ padding: 12, width: \"100%\" }}\n />\n <Button\n tone=\"gold\"\n size=\"lg\"\n attract={!!prompt.trim() && affordable}\n disabled={!prompt.trim() || !affordable}\n busy={busy}\n onClick={() => void go()}\n data-tutorial-anchor={`ai:${feature.key}`}\n >\n {busy ? t(\"working\") : t(\"generate\")}{\" \"}\n {option ? <ResourceList lines={option.price} size={18} /> : null}\n </Button>\n {busy ? (\n <Center>\n <Spinner />\n </Center>\n ) : null}\n {result ? <Result generation={result} /> : null}\n </div>\n );\n}\n\nfunction Result({ generation }: { generation: AIGenerationView }): ReactNode {\n return (\n <div style={{ ...panel, padding: 12, display: \"grid\", gap: 10 }}>\n {generation.OutputText ? (\n <div style={{ color: v.text, fontSize: 15, whiteSpace: \"pre-wrap\" }}>\n {generation.OutputText}\n </div>\n ) : null}\n {(generation.Assets ?? []).map((a, i) => {\n const kind = resultKind(a.ContentType);\n const url = a.Url ?? \"\";\n return kind === \"image\" ? (\n <img\n key={i}\n src={url}\n alt=\"\"\n style={{ width: \"100%\", borderRadius: 12 }}\n />\n ) : kind === \"audio\" ? (\n <audio key={i} src={url} controls style={{ width: \"100%\" }} />\n ) : kind === \"video\" ? (\n <video\n key={i}\n src={url}\n controls\n style={{ width: \"100%\", borderRadius: 12 }}\n />\n ) : (\n <a\n key={i}\n href={url}\n target=\"_blank\"\n rel=\"noreferrer\"\n style={{ ...outlined, color: v.gold, fontSize: 14 }}\n >\n {t(\"download\")}\n </a>\n );\n })}\n </div>\n );\n}\n\nfunction History(): ReactNode {\n const client = useIDosGamesClient();\n const catalog = useCatalog();\n const stagger = useStagger();\n const [items, setItems] = useState<AIGenerationView[] | null>(null);\n const [open, setOpen] = useState<string | null>(null);\n useEffect(() => {\n void client.ai\n .listGenerations({ Limit: 20 })\n .then((r) => setItems(r.ok ? (r.data.Data ?? []) : []));\n }, [client]);\n if (!items)\n return (\n <Center>\n <Spinner />\n </Center>\n );\n if (items.length === 0)\n return <EmptyState glyph=\"bulb\" text={t(\"noHistory\")} />;\n return (\n <Columns gap={8} min={320}>\n {items.map((g, i) => (\n <Card\n key={g.GenerationID}\n onClick={() =>\n setOpen(open === g.GenerationID ? null : g.GenerationID)\n }\n style={{ display: \"grid\", gap: 8, ...stagger(i) }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <Icon glyph=\"bulb\" size={26} />\n <span style={{ ...outlined, fontSize: 14, flex: 1 }}>\n {catalog.localize(g.FeatureKey ?? \"\")}\n </span>\n <span\n style={{\n ...outlined,\n fontSize: 12,\n color:\n g.Status === \"completed\"\n ? v.green\n : g.Status === \"failed\"\n ? v.textDim\n : v.gold,\n }}\n >\n {t(\n `s_${g.Status === \"completed\" || g.Status === \"failed\" ? g.Status : \"running\"}`,\n )}\n </span>\n </div>\n {open === g.GenerationID && g.Status === \"completed\" ? (\n <Result generation={g} />\n ) : null}\n </Card>\n ))}\n </Columns>\n );\n}\n"
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
"path": "i18n.ts",
|