summer-engine 3.8.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -13
- package/.claude-plugin/plugin.json +24 -22
- package/.codex-plugin/plugin.json +18 -22
- package/.cursor-plugin/plugin.json +8 -14
- package/.factory-plugin/plugin.json +6 -13
- package/AGENTS.md +19 -12
- package/CHANGELOG.md +133 -0
- package/GEMINI.md +3 -3
- package/README.md +118 -37
- package/assets/icon.png +0 -0
- package/commands/start.md +71 -0
- package/commands/summer.md +3 -2
- package/dist/cli/banner.js +3 -0
- package/dist/cli/commands/config.js +3 -2
- package/dist/cli/commands/create.js +12 -3
- package/dist/cli/commands/list.d.ts +5 -0
- package/dist/cli/commands/list.js +30 -13
- package/dist/cli/commands/login.d.ts +27 -0
- package/dist/cli/commands/login.js +58 -12
- package/dist/cli/commands/memory.js +6 -2
- package/dist/cli/commands/ops.d.ts +64 -0
- package/dist/cli/commands/ops.js +329 -0
- package/dist/cli/commands/setup.d.ts +4 -0
- package/dist/cli/commands/setup.js +254 -26
- package/dist/cli/commands/skills.js +28 -11
- package/dist/cli/commands/status.d.ts +26 -0
- package/dist/cli/commands/status.js +36 -21
- package/dist/cli/index.js +7 -0
- package/dist/core/agent-host.d.ts +65 -0
- package/dist/core/agent-host.js +193 -0
- package/dist/core/capabilities/agent-playbook.d.ts +3 -0
- package/dist/core/capabilities/agent-playbook.js +54 -2
- package/dist/core/capabilities/apps.d.ts +33 -10
- package/dist/core/capabilities/apps.js +25 -12
- package/dist/core/capabilities/audit/args.d.ts +6 -6
- package/dist/core/capabilities/doctor.d.ts +3 -0
- package/dist/core/capabilities/doctor.js +20 -15
- package/dist/core/capabilities/fabricate-mesh.d.ts +4 -4
- package/dist/core/capabilities/game-task-plan.d.ts +12 -6
- package/dist/core/capabilities/game-task-plan.js +80 -5
- package/dist/core/capabilities/hdri-import.d.ts +2 -2
- package/dist/core/capabilities/motion-generation.d.ts +2 -2
- package/dist/core/capabilities/motion-generation.js +2 -2
- package/dist/core/capabilities/navigation/open.d.ts +6 -2
- package/dist/core/capabilities/navigation/open.js +3 -0
- package/dist/core/capabilities/placement.d.ts +23 -23
- package/dist/core/capabilities/publish-build.js +2 -0
- package/dist/core/capabilities/runtime-control.d.ts +42 -42
- package/dist/core/capabilities/scene-script-target.d.ts +17 -0
- package/dist/core/capabilities/scene-script-target.js +70 -0
- package/dist/core/capabilities/seeing/args.d.ts +16 -16
- package/dist/core/capabilities/sfx-choices.d.ts +4 -0
- package/dist/core/capabilities/sfx-choices.js +13 -6
- package/dist/core/capabilities/tool-dispatch.d.ts +12 -3
- package/dist/core/capabilities/tool-dispatch.js +81 -46
- package/dist/core/capabilities/ui-control.d.ts +2 -2
- package/dist/core/capabilities/world-snapshot.d.ts +4 -4
- package/dist/core/embeddings.d.ts +2 -0
- package/dist/core/embeddings.js +1 -1
- package/dist/core/error-codes.d.ts +62 -0
- package/dist/core/error-codes.js +97 -0
- package/dist/core/format.d.ts +2 -0
- package/dist/core/format.js +2 -1
- package/dist/core/hosted-mcp.d.ts +22 -0
- package/dist/core/hosted-mcp.js +56 -1
- package/dist/core/library-read.js +5 -0
- package/dist/core/library-search.d.ts +2 -2
- package/dist/core/library-search.js +2 -1
- package/dist/core/oauth.js +4 -0
- package/dist/core/ops/areas.d.ts +11 -0
- package/dist/core/ops/areas.js +24 -0
- package/dist/core/ops/catalog.d.ts +45 -0
- package/dist/core/ops/catalog.js +157 -0
- package/dist/core/ops/cloud.d.ts +64 -0
- package/dist/core/ops/cloud.js +198 -0
- package/dist/core/ops/contract.d.ts +120 -0
- package/dist/core/ops/contract.js +134 -0
- package/dist/core/ops/engine-answer.d.ts +25 -0
- package/dist/core/ops/engine-answer.js +117 -0
- package/dist/core/ops/engine.d.ts +55 -0
- package/dist/core/ops/engine.js +649 -0
- package/dist/core/ops/public-catalog.d.ts +48 -0
- package/dist/core/ops/public-catalog.js +56 -0
- package/dist/core/ops/save-files.d.ts +78 -0
- package/dist/core/ops/save-files.js +419 -0
- package/dist/core/ops/search.d.ts +8 -0
- package/dist/core/ops/search.js +187 -0
- package/dist/core/skills-registry.d.ts +16 -1
- package/dist/core/skills-registry.js +35 -2
- package/dist/core/telemetry.d.ts +32 -0
- package/dist/core/telemetry.js +38 -10
- package/dist/core/tool-profiles.d.ts +25 -0
- package/dist/core/tool-profiles.js +41 -0
- package/dist/installer/agent-config.d.ts +17 -4
- package/dist/installer/agent-config.js +27 -6
- package/dist/installer/agent-table.d.ts +12 -0
- package/dist/installer/agent-table.js +33 -9
- package/dist/installer/cli-permissions.d.ts +65 -0
- package/dist/installer/cli-permissions.js +182 -0
- package/dist/installer/setup.d.ts +4 -0
- package/dist/installer/setup.js +12 -4
- package/dist/installer/skills-refresh.d.ts +29 -0
- package/dist/installer/skills-refresh.js +261 -0
- package/dist/installer/version-check.d.ts +51 -11
- package/dist/installer/version-check.js +147 -37
- package/dist/mcp/command.js +7 -0
- package/dist/mcp/hosted-mount.d.ts +27 -2
- package/dist/mcp/hosted-mount.js +53 -23
- package/dist/mcp/legacy-toolset.d.ts +27 -0
- package/dist/mcp/legacy-toolset.js +43 -0
- package/dist/mcp/ops-surface.d.ts +59 -0
- package/dist/mcp/ops-surface.js +453 -0
- package/dist/mcp/server.d.ts +45 -11
- package/dist/mcp/server.js +263 -89
- package/dist/mcp/tool-results.d.ts +26 -0
- package/dist/mcp/tool-results.js +81 -0
- package/dist/mcp/tool-surface.d.ts +65 -0
- package/dist/mcp/tool-surface.js +317 -0
- package/dist/mcp/tools/app-tools.js +9 -2
- package/dist/mcp/tools/asset-tools.js +55 -53
- package/dist/mcp/tools/audit-tools.js +21 -21
- package/dist/mcp/tools/debug-tools.js +6 -6
- package/dist/mcp/tools/fabricate-tools.js +6 -6
- package/dist/mcp/tools/generate-tools.js +76 -70
- package/dist/mcp/tools/project-tools.d.ts +9 -4
- package/dist/mcp/tools/project-tools.js +16 -10
- package/dist/mcp/tools/scene-tools.js +12 -23
- package/dist/mcp/tools/script-tools.js +9 -5
- package/dist/mcp/tools/with-engine.d.ts +6 -0
- package/dist/mcp/tools/with-engine.js +19 -0
- package/dist/project-memory/agent-instructions.d.ts +47 -0
- package/dist/project-memory/agent-instructions.js +226 -0
- package/gemini-extension.json +6 -13
- package/hooks/pre-commit-doctor.sh +5 -4
- package/hooks/session-start.sh +24 -28
- package/integrations/README.md +1 -1
- package/integrations/claude/README.md +6 -0
- package/integrations/claude/manifest-target.json +4 -0
- package/integrations/claude-desktop/README.md +1 -1
- package/integrations/copilot-jetbrains/README.md +1 -1
- package/integrations/gemini/README.md +11 -0
- package/integrations/junie/README.md +1 -1
- package/integrations/lm-studio/README.md +1 -1
- package/integrations/trae/README.md +1 -1
- package/integrations/visual-studio/README.md +1 -1
- package/integrations/windsurf/README.md +1 -1
- package/library/references/mcp-tools-reference/mcp-tools-reference.md +79 -51
- package/library/references/mcp-tools-reference/resource.yaml +1 -1
- package/library/references/product-map/resource.yaml +2 -2
- package/library/skills/3d-lighting/SKILL.md +69 -28
- package/library/skills/3d-lighting/resource.yaml +1 -1
- package/library/skills/README.md +121 -118
- package/library/skills/adaptive-music/SKILL.md +40 -23
- package/library/skills/adaptive-music/resource.yaml +1 -1
- package/library/skills/agent-playtesting/SKILL.md +23 -1
- package/library/skills/agent-playtesting/resource.yaml +1 -1
- package/library/skills/ai-characters-in-games/SKILL.md +16 -1
- package/library/skills/ai-characters-in-games/resource.yaml +1 -1
- package/library/skills/ambient-bed/SKILL.md +38 -13
- package/library/skills/ambient-bed/resource.yaml +1 -1
- package/library/skills/animated-loop/SKILL.md +60 -32
- package/library/skills/animated-loop/resource.yaml +1 -1
- package/library/skills/animation-tree/SKILL.md +27 -1
- package/library/skills/animation-tree/resource.yaml +1 -1
- package/library/skills/art-direction/SKILL.md +17 -3
- package/library/skills/art-direction/resource.yaml +1 -1
- package/library/skills/asset-strategy/SKILL.md +51 -4
- package/library/skills/asset-strategy/resource.yaml +2 -1
- package/library/skills/audio-direction/SKILL.md +26 -10
- package/library/skills/audio-direction/resource.yaml +1 -1
- package/library/skills/auto-fire-targeting/SKILL.md +15 -1
- package/library/skills/auto-fire-targeting/resource.yaml +1 -1
- package/library/skills/bounded-engine-runs/SKILL.md +1 -1
- package/library/skills/bounded-engine-runs/resource.yaml +1 -1
- package/library/skills/brainstorm-game/SKILL.md +14 -1
- package/library/skills/brainstorm-game/resource.yaml +1 -1
- package/library/skills/brainstorming/SKILL.md +1 -1
- package/library/skills/brainstorming/resource.yaml +1 -1
- package/library/skills/browse-templates/SKILL.md +11 -1
- package/library/skills/browse-templates/resource.yaml +1 -1
- package/library/skills/camera-rigs/SKILL.md +22 -2
- package/library/skills/camera-rigs/resource.yaml +1 -1
- package/library/skills/celeste-momentum-platforming/resource.yaml +1 -0
- package/library/skills/character-animation-wiring/SKILL.md +28 -4
- package/library/skills/character-animation-wiring/resource.yaml +1 -1
- package/library/skills/character-model/SKILL.md +83 -47
- package/library/skills/character-model/resource.yaml +1 -1
- package/library/skills/character-movement/SKILL.md +27 -3
- package/library/skills/character-movement/resource.yaml +1 -1
- package/library/skills/character-portrait/SKILL.md +39 -19
- package/library/skills/character-portrait/resource.yaml +1 -1
- package/library/skills/cinematic-cutscene/SKILL.md +79 -46
- package/library/skills/cinematic-cutscene/resource.yaml +1 -1
- package/library/skills/combat-basics/SKILL.md +20 -1
- package/library/skills/combat-basics/resource.yaml +1 -1
- package/library/skills/compatibility-renderer-traps/SKILL.md +12 -1
- package/library/skills/compatibility-renderer-traps/resource.yaml +1 -1
- package/library/skills/concept-art/SKILL.md +29 -12
- package/library/skills/concept-art/resource.yaml +1 -1
- package/library/skills/concept-to-level/SKILL.md +258 -0
- package/library/skills/concept-to-level/references/technical-rules.md +150 -0
- package/library/skills/concept-to-level/resource.yaml +44 -0
- package/library/skills/create-asset-sheet/SKILL.md +37 -13
- package/library/skills/create-asset-sheet/resource.yaml +1 -1
- package/library/skills/debug/SKILL.md +34 -2
- package/library/skills/debug/resource.yaml +1 -1
- package/library/skills/debugging-game-feel/SKILL.md +13 -1
- package/library/skills/debugging-game-feel/resource.yaml +1 -1
- package/library/skills/design-level/SKILL.md +40 -35
- package/library/skills/design-level/resource.yaml +1 -1
- package/library/skills/design-mechanic/SKILL.md +18 -1
- package/library/skills/design-mechanic/resource.yaml +1 -1
- package/library/skills/design-npc/SKILL.md +43 -24
- package/library/skills/design-npc/resource.yaml +1 -1
- package/library/skills/diagnosing-perf-regressions/SKILL.md +13 -1
- package/library/skills/diagnosing-perf-regressions/resource.yaml +1 -1
- package/library/skills/driving-the-editor-ui/SKILL.md +24 -1
- package/library/skills/driving-the-editor-ui/resource.yaml +1 -1
- package/library/skills/environment-kit/SKILL.md +43 -16
- package/library/skills/environment-kit/resource.yaml +1 -1
- package/library/skills/export-and-ship/SKILL.md +29 -6
- package/library/skills/export-and-ship/resource.yaml +1 -1
- package/library/skills/fabricating-assets/SKILL.md +30 -7
- package/library/skills/fabricating-assets/resource.yaml +3 -3
- package/library/skills/facial-and-lipsync/SKILL.md +36 -15
- package/library/skills/facial-and-lipsync/resource.yaml +1 -1
- package/library/skills/fps-controller/SKILL.md +50 -41
- package/library/skills/fps-controller/resource.yaml +1 -1
- package/library/skills/game-feel/SKILL.md +34 -8
- package/library/skills/game-feel/resource.yaml +1 -1
- package/library/skills/gameskill/SKILL.md +15 -4
- package/library/skills/gameskill/resource.yaml +1 -1
- package/library/skills/gdscript-patterns/SKILL.md +16 -1
- package/library/skills/gdscript-patterns/resource.yaml +1 -1
- package/library/skills/generate-motion/SKILL.md +51 -21
- package/library/skills/generate-motion/resource.yaml +1 -1
- package/library/skills/godogen-visual-proof-game-generation/SKILL.md +18 -1
- package/library/skills/godogen-visual-proof-game-generation/resource.yaml +1 -0
- package/library/skills/grow-analytics/SKILL.md +13 -3
- package/library/skills/grow-analytics/resource.yaml +1 -1
- package/library/skills/headless-scripting/SKILL.md +14 -1
- package/library/skills/headless-scripting/resource.yaml +1 -1
- package/library/skills/in-game-purchases/SKILL.md +12 -1
- package/library/skills/in-game-purchases/resource.yaml +1 -1
- package/library/skills/instantiate-asset-pack/SKILL.md +19 -2
- package/library/skills/instantiate-asset-pack/resource.yaml +1 -1
- package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +1 -0
- package/library/skills/make-game/SKILL.md +33 -4
- package/library/skills/make-game/references/2d-platformer.md +1 -1
- package/library/skills/make-game/references/3d-fps.md +1 -1
- package/library/skills/make-game/references/3d-horror.md +1 -1
- package/library/skills/make-game/references/3d-third-person.md +2 -2
- package/library/skills/make-game/resource.yaml +1 -1
- package/library/skills/multiplayer/SKILL.md +13 -1
- package/library/skills/multiplayer/resource.yaml +1 -1
- package/library/skills/multiplayer-movement/SKILL.md +19 -1
- package/library/skills/multiplayer-movement/resource.yaml +1 -1
- package/library/skills/multiplayer-project/SKILL.md +18 -1
- package/library/skills/multiplayer-project/resource.yaml +1 -1
- package/library/skills/multiplayer-publish/SKILL.md +25 -7
- package/library/skills/multiplayer-publish/resource.yaml +3 -3
- package/library/skills/multiplayer-state/SKILL.md +17 -1
- package/library/skills/multiplayer-state/resource.yaml +1 -1
- package/library/skills/multiplayer-testing/SKILL.md +16 -1
- package/library/skills/multiplayer-testing/resource.yaml +1 -1
- package/library/skills/music-track/SKILL.md +38 -13
- package/library/skills/music-track/resource.yaml +1 -1
- package/library/skills/navigate-summer/SKILL.md +26 -9
- package/library/skills/navigate-summer/resource.yaml +1 -1
- package/library/skills/new-project/SKILL.md +12 -1
- package/library/skills/new-project/resource.yaml +1 -1
- package/library/skills/organic-model/SKILL.md +48 -18
- package/library/skills/organic-model/resource.yaml +1 -1
- package/library/skills/pixel-art/SKILL.md +42 -23
- package/library/skills/pixel-art/resource.yaml +1 -1
- package/library/skills/play/SKILL.md +19 -1
- package/library/skills/play/resource.yaml +1 -1
- package/library/skills/playtesting-a-feature/SKILL.md +24 -1
- package/library/skills/playtesting-a-feature/resource.yaml +1 -1
- package/library/skills/procedural-animation/SKILL.md +38 -16
- package/library/skills/procedural-animation/resource.yaml +1 -1
- package/library/skills/prop-model/SKILL.md +48 -19
- package/library/skills/prop-model/resource.yaml +1 -1
- package/library/skills/psx-retro-rendering/resource.yaml +1 -0
- package/library/skills/publish-your-game/SKILL.md +43 -6
- package/library/skills/publish-your-game/resource.yaml +3 -3
- package/library/skills/realtime-wet-surfaces/resource.yaml +1 -0
- package/library/skills/release-readiness/SKILL.md +13 -1
- package/library/skills/release-readiness/resource.yaml +1 -1
- package/library/skills/remote-deploy/SKILL.md +15 -1
- package/library/skills/remote-deploy/resource.yaml +1 -1
- package/library/skills/retarget/SKILL.md +43 -20
- package/library/skills/retarget/resource.yaml +1 -1
- package/library/skills/running-in-the-cloud/SKILL.md +11 -1
- package/library/skills/running-in-the-cloud/resource.yaml +1 -1
- package/library/skills/save-load/SKILL.md +16 -1
- package/library/skills/save-load/resource.yaml +1 -1
- package/library/skills/scene-composition/SKILL.md +18 -1
- package/library/skills/scene-composition/resource.yaml +1 -1
- package/library/skills/scene-hierarchy-design/SKILL.md +26 -2
- package/library/skills/scene-hierarchy-design/resource.yaml +1 -1
- package/library/skills/scene-scripting/SKILL.md +96 -636
- package/library/skills/scene-scripting/references/ctx-api.md +184 -0
- package/library/skills/scene-scripting/references/recipes-2d-ui.md +193 -0
- package/library/skills/scene-scripting/references/recipes-3d.md +280 -0
- package/library/skills/scene-scripting/resource.yaml +4 -4
- package/library/skills/scene-to-level/SKILL.md +24 -2
- package/library/skills/scene-to-level/resource.yaml +1 -1
- package/library/skills/skill-create/resource.yaml +1 -0
- package/library/skills/skill-improve/resource.yaml +1 -0
- package/library/skills/skill-test/SKILL.md +12 -2
- package/library/skills/skill-test/resource.yaml +1 -0
- package/library/skills/skintokens-auto-rigging/resource.yaml +1 -0
- package/library/skills/skybox-panorama/SKILL.md +47 -21
- package/library/skills/skybox-panorama/resource.yaml +1 -1
- package/library/skills/sound-effect/SKILL.md +52 -20
- package/library/skills/sound-effect/resource.yaml +1 -1
- package/library/skills/spatial-placement/SKILL.md +44 -9
- package/library/skills/spatial-placement/resource.yaml +1 -1
- package/library/skills/sprite-sheet/SKILL.md +55 -27
- package/library/skills/sprite-sheet/resource.yaml +1 -1
- package/library/skills/store-art/SKILL.md +14 -3
- package/library/skills/store-art/resource.yaml +2 -2
- package/library/skills/store-listing/SKILL.md +13 -3
- package/library/skills/store-listing/resource.yaml +2 -2
- package/library/skills/summer-analytics/SKILL.md +22 -5
- package/library/skills/summer-analytics/resource.yaml +2 -2
- package/library/skills/summer-apps/SKILL.md +77 -32
- package/library/skills/summer-apps/manifest.md +1 -1
- package/library/skills/summer-apps/minimal-app.md +7 -7
- package/library/skills/summer-apps/resource.yaml +1 -1
- package/library/skills/summer-apps/sdk-reference.md +5 -5
- package/library/skills/summer-apps-design/SKILL.md +1 -1
- package/library/skills/summer-apps-design/resource.yaml +1 -1
- package/library/skills/summer-assets/SKILL.md +86 -0
- package/library/skills/summer-assets/resource.yaml +34 -0
- package/library/skills/summer-cli/SKILL.md +133 -0
- package/library/skills/summer-cli/resource.yaml +31 -0
- package/library/skills/summer-friends/SKILL.md +14 -0
- package/library/skills/summer-leaderboards/SKILL.md +16 -0
- package/library/skills/summer-match-results/SKILL.md +17 -0
- package/library/skills/summer-matchmaking/SKILL.md +17 -0
- package/library/skills/summer-parties/SKILL.md +14 -0
- package/library/skills/summer-player-data/SKILL.md +14 -0
- package/library/skills/summer-store/SKILL.md +16 -1
- package/library/skills/summer-world-chat/SKILL.md +14 -0
- package/library/skills/summer-world-saves/SKILL.md +14 -0
- package/library/skills/text-to-motion/SKILL.md +45 -23
- package/library/skills/text-to-motion/prompts-and-controls.md +5 -5
- package/library/skills/text-to-motion/resource.yaml +1 -1
- package/library/skills/text-to-motion/rigging-for-text-motion.md +2 -2
- package/library/skills/tileable-texture/SKILL.md +37 -15
- package/library/skills/tileable-texture/resource.yaml +1 -1
- package/library/skills/trailer-shot/SKILL.md +46 -24
- package/library/skills/trailer-shot/resource.yaml +1 -1
- package/library/skills/tune-performance/SKILL.md +32 -6
- package/library/skills/tune-performance/resource.yaml +1 -1
- package/library/skills/ui-basics/SKILL.md +55 -36
- package/library/skills/ui-basics/resource.yaml +1 -1
- package/library/skills/ui-graphics/SKILL.md +64 -38
- package/library/skills/ui-graphics/resource.yaml +1 -1
- package/library/skills/use-widget-asset/SKILL.md +15 -1
- package/library/skills/use-widget-asset/resource.yaml +1 -1
- package/library/skills/using-summer/SKILL.md +32 -5
- package/library/skills/using-summer/resource.yaml +3 -2
- package/library/skills/vehicle-model/SKILL.md +92 -57
- package/library/skills/vehicle-model/resource.yaml +1 -1
- package/library/skills/verification-before-completion/SKILL.md +1 -1
- package/library/skills/verification-before-completion/resource.yaml +1 -1
- package/library/skills/verifying-scenes/SKILL.md +31 -2
- package/library/skills/verifying-scenes/resource.yaml +1 -1
- package/library/skills/vfx-dissolve/SKILL.md +21 -2
- package/library/skills/vfx-dissolve/resource.yaml +1 -1
- package/library/skills/vfx-fire/SKILL.md +41 -41
- package/library/skills/vfx-fire/resource.yaml +1 -1
- package/library/skills/vfx-hit-spark/SKILL.md +24 -1
- package/library/skills/vfx-hit-spark/resource.yaml +1 -1
- package/library/skills/vfx-lightning/SKILL.md +30 -16
- package/library/skills/vfx-lightning/resource.yaml +1 -1
- package/library/skills/vfx-magic-glow/SKILL.md +46 -32
- package/library/skills/vfx-magic-glow/resource.yaml +1 -1
- package/library/skills/vfx-muzzle-flash/SKILL.md +43 -35
- package/library/skills/vfx-muzzle-flash/resource.yaml +1 -1
- package/library/skills/vfx-smoke/SKILL.md +39 -31
- package/library/skills/vfx-smoke/resource.yaml +1 -1
- package/library/skills/vfx-water-ripple/SKILL.md +35 -31
- package/library/skills/vfx-water-ripple/resource.yaml +1 -1
- package/library/skills/voice-line/SKILL.md +87 -40
- package/library/skills/voice-line/resource.yaml +1 -1
- package/library/skills/web-and-touch-input/SKILL.md +20 -1
- package/library/skills/web-and-touch-input/resource.yaml +1 -1
- package/library/skills/web-compatibility-look/SKILL.md +21 -1
- package/library/skills/web-compatibility-look/resource.yaml +1 -1
- package/library/skills/world-building-3d/SKILL.md +29 -1
- package/library/skills/world-building-3d/resource.yaml +1 -1
- package/library/skills/writing-skills/resource.yaml +1 -0
- package/library/tools/add-node/GUIDE.md +14 -0
- package/library/tools/align-distribute-3d/GUIDE.md +7 -0
- package/library/tools/app-call/resource.yaml +1 -1
- package/library/tools/app-guide/resource.yaml +2 -2
- package/library/tools/app-page/resource.yaml +1 -1
- package/library/tools/app-screenshot/resource.yaml +19 -1
- package/library/tools/app-tools/resource.yaml +1 -1
- package/library/tools/attach-to-surface/GUIDE.md +15 -0
- package/library/tools/batch/GUIDE.md +27 -0
- package/library/tools/camera-bookmark/GUIDE.md +12 -0
- package/library/tools/capture-gameplay/GUIDE.md +3 -0
- package/library/tools/capture-gameplay/resource.yaml +3 -3
- package/library/tools/check-job/resource.yaml +1 -1
- package/library/tools/clear-console/GUIDE.md +3 -0
- package/library/tools/connect-ports/GUIDE.md +9 -0
- package/library/tools/connect-signal/GUIDE.md +14 -0
- package/library/tools/create-debug-report/GUIDE.md +10 -0
- package/library/tools/create-scene/GUIDE.md +10 -0
- package/library/tools/debug-views/GUIDE.md +7 -0
- package/library/tools/enable-plugin/GUIDE.md +3 -0
- package/library/tools/export-game/GUIDE.md +3 -0
- package/library/tools/export-game/resource.yaml +3 -3
- package/library/tools/export-templates/GUIDE.md +3 -0
- package/library/tools/fabricate-3d/GUIDE.md +19 -0
- package/library/tools/frame-nodes/GUIDE.md +9 -0
- package/library/tools/frame-shot/GUIDE.md +9 -0
- package/library/tools/game-control/GUIDE.md +9 -0
- package/library/tools/game-input/GUIDE.md +9 -0
- package/library/tools/game-probe/GUIDE.md +9 -0
- package/library/tools/generate-3d/resource.yaml +3 -3
- package/library/tools/generate-motion/resource.yaml +2 -2
- package/library/tools/get-console/GUIDE.md +9 -0
- package/library/tools/get-console/resource.yaml +5 -0
- package/library/tools/get-debugger-errors/GUIDE.md +7 -0
- package/library/tools/get-debugger-errors/resource.yaml +5 -0
- package/library/tools/get-debugger-warnings/GUIDE.md +7 -0
- package/library/tools/get-debugger-warnings/resource.yaml +5 -0
- package/library/tools/get-diagnostics/GUIDE.md +13 -0
- package/library/tools/get-project-context/GUIDE.md +25 -0
- package/library/tools/get-runtime-tree/GUIDE.md +7 -0
- package/library/tools/get-runtime-tree/resource.yaml +5 -0
- package/library/tools/get-scene-tree/GUIDE.md +11 -0
- package/library/tools/get-scene-tree/resource.yaml +5 -0
- package/library/tools/get-script-errors/GUIDE.md +5 -0
- package/library/tools/grep/GUIDE.md +11 -0
- package/library/tools/import-asset/GUIDE.md +8 -0
- package/library/tools/import-asset-by-id/GUIDE.md +12 -0
- package/library/tools/import-from-url/GUIDE.md +10 -0
- package/library/tools/import-from-url-batch/GUIDE.md +3 -0
- package/library/tools/import-hdri/GUIDE.md +16 -0
- package/library/tools/input-map-bind/GUIDE.md +11 -0
- package/library/tools/inspect-asset/GUIDE.md +14 -0
- package/library/tools/inspect-asset/resource.yaml +5 -0
- package/library/tools/inspect-node/GUIDE.md +11 -0
- package/library/tools/inspect-node/resource.yaml +5 -0
- package/library/tools/inspect-resource/GUIDE.md +7 -0
- package/library/tools/inspect-resource/resource.yaml +5 -0
- package/library/tools/inspect-runtime-node/GUIDE.md +7 -0
- package/library/tools/inspect-runtime-node/resource.yaml +5 -0
- package/library/tools/instantiate-scene/GUIDE.md +12 -0
- package/library/tools/is-running/GUIDE.md +3 -0
- package/library/tools/measure/GUIDE.md +8 -0
- package/library/tools/navigation-probe/GUIDE.md +9 -0
- package/library/tools/open/resource.yaml +2 -2
- package/library/tools/open-main-scene/GUIDE.md +6 -0
- package/library/tools/open-scene/GUIDE.md +8 -0
- package/library/tools/place-adjacent/GUIDE.md +7 -0
- package/library/tools/play/GUIDE.md +13 -0
- package/library/tools/project-setting/GUIDE.md +9 -0
- package/library/tools/publish-build/resource.yaml +6 -6
- package/library/tools/raycast/GUIDE.md +7 -0
- package/library/tools/read-file/GUIDE.md +10 -0
- package/library/tools/read-library/resource.yaml +5 -0
- package/library/tools/recent-events/GUIDE.md +7 -0
- package/library/tools/remove-node/GUIDE.md +3 -0
- package/library/tools/repeat-along/GUIDE.md +5 -0
- package/library/tools/replace-node/GUIDE.md +9 -0
- package/library/tools/replace-text/GUIDE.md +5 -0
- package/library/tools/run-editor-script/GUIDE.md +16 -0
- package/library/tools/run-script/GUIDE.md +30 -0
- package/library/tools/run-script/resource.yaml +6 -3
- package/library/tools/runtime-animate/GUIDE.md +7 -0
- package/library/tools/runtime-call/GUIDE.md +7 -0
- package/library/tools/runtime-set/GUIDE.md +9 -0
- package/library/tools/runtime-spawn/GUIDE.md +9 -0
- package/library/tools/save-scene/GUIDE.md +3 -0
- package/library/tools/scene-audit/GUIDE.md +29 -0
- package/library/tools/screenshot/GUIDE.md +17 -0
- package/library/tools/select-node/GUIDE.md +3 -0
- package/library/tools/set-prop/GUIDE.md +23 -0
- package/library/tools/set-resource-property/GUIDE.md +8 -0
- package/library/tools/shot-sheet/GUIDE.md +7 -0
- package/library/tools/snap-to-surface/GUIDE.md +17 -0
- package/library/tools/snapshot-diff/GUIDE.md +7 -0
- package/library/tools/starcast/GUIDE.md +12 -0
- package/library/tools/stop/GUIDE.md +3 -0
- package/library/tools/test-placement/GUIDE.md +7 -0
- package/library/tools/ui-actions/GUIDE.md +12 -0
- package/library/tools/ui-activate/GUIDE.md +11 -0
- package/library/tools/ui-screenshot/GUIDE.md +9 -0
- package/library/tools/ui-tree/GUIDE.md +10 -0
- package/library/tools/wait-for-event/GUIDE.md +11 -0
- package/library/tools/world-snapshot/GUIDE.md +9 -0
- package/library/tools/write-file/GUIDE.md +5 -0
- package/library/tools/zoom/GUIDE.md +5 -0
- package/package.json +8 -5
- package/registry/generated/counts.json +2 -2
- package/registry/generated/gemini-extension.json +6 -13
- package/registry/generated/index.json +482 -349
- package/registry/generated/marketplace.claude.json +2 -13
- package/registry/generated/plugin.claude-directory.json +168 -0
- package/registry/generated/plugin.claude.json +24 -22
- package/registry/generated/plugin.codex.json +18 -22
- package/registry/generated/plugin.cursor.json +8 -14
- package/registry/generated/plugin.factory.json +6 -13
- package/registry/generated/server.json +43 -0
- package/registry/generated/skills-index.md +121 -118
- package/registry/generated/skills-registry.json +167 -115
- package/registry/operations/fixtures/invalid-deprecated-without-replacement.json +60 -0
- package/registry/operations/fixtures/invalid-name.json +60 -0
- package/registry/operations/fixtures/invalid-publish-without-owner.json +82 -0
- package/registry/operations/fixtures/invalid-spend-without-estimate.json +42 -0
- package/registry/operations/fixtures/invalid-unknown-field.json +61 -0
- package/registry/operations/fixtures/valid-player-facing.json +82 -0
- package/registry/operations/fixtures/valid-read.json +60 -0
- package/registry/operations/fixtures/valid-spend.json +43 -0
- package/registry/operations/legacy-names.json +1241 -0
- package/registry/operations/public-catalog.json +33160 -0
- package/registry/schemas/operation.schema.json +318 -0
- package/registry/schemas/skill.schema.json +4 -0
- package/CLAUDE.md +0 -7
|
@@ -10,14 +10,15 @@ import { c, pad, sym, tildeify } from "../format.js";
|
|
|
10
10
|
import { getMcpLogPath } from "../mcp-log.js";
|
|
11
11
|
import { checkStoreAccess, hasStoreSignIn } from "../hosted-mcp.js";
|
|
12
12
|
import { formatProjectPin, getProjectMemorySummary, } from "../../project-memory/project-memory.js";
|
|
13
|
-
import { buildCliVersionCheck, buildSkillsVersionCheck, defaultSkillMarkerCandidates, detectRecordedInstall, fetchLatestRegistryVersion, } from "../../installer/version-check.js";
|
|
13
|
+
import { buildCliVersionCheck, buildSkillsVersionCheck, defaultSkillMarkerCandidates, detectRecordedInstall, fetchLatestRegistryVersion, fetchRegistryDistTags, } from "../../installer/version-check.js";
|
|
14
14
|
import { TOOLKIT_VERSION as version } from "../version.js";
|
|
15
|
+
import { resolveSurface } from "../tool-profiles.js";
|
|
15
16
|
const MIN_EXPECTED_MCP_TOOLS = 50;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"summer_generate_image",
|
|
19
|
-
"summer_create_debug_report",
|
|
20
|
-
|
|
17
|
+
/** Per surface: the spawned `summer mcp` reads SUMMER_SURFACE from this process's env. */
|
|
18
|
+
const REQUIRED_MCP_TOOLS = {
|
|
19
|
+
v3: ["summer_get_project_context", "summer_generate_image", "summer_create_debug_report"],
|
|
20
|
+
v4: ["summer_get_project_context", "summer_search", "summer_call", "summer_create_debug_report"],
|
|
21
|
+
};
|
|
21
22
|
export async function runDoctor(options = {}) {
|
|
22
23
|
const checks = [];
|
|
23
24
|
checks.push(checkNodeVersion());
|
|
@@ -47,21 +48,24 @@ export async function runDoctor(options = {}) {
|
|
|
47
48
|
}
|
|
48
49
|
return result;
|
|
49
50
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
/** The oldest Node major the package supports: `engines.node` in package.json. */
|
|
52
|
+
export const MIN_NODE_MAJOR = 20;
|
|
53
|
+
export function checkNodeVersion(nodeVersion = process.versions.node) {
|
|
54
|
+
const major = Number(nodeVersion.split(".")[0]);
|
|
55
|
+
const shown = `v${nodeVersion.replace(/^v/, "")}`;
|
|
56
|
+
if (Number.isFinite(major) && major >= MIN_NODE_MAJOR) {
|
|
53
57
|
return {
|
|
54
58
|
id: "node-version",
|
|
55
59
|
label: "Node.js",
|
|
56
60
|
status: "ok",
|
|
57
|
-
message:
|
|
61
|
+
message: shown,
|
|
58
62
|
};
|
|
59
63
|
}
|
|
60
64
|
return {
|
|
61
65
|
id: "node-version",
|
|
62
66
|
label: "Node.js",
|
|
63
67
|
status: "fail",
|
|
64
|
-
message: `${
|
|
68
|
+
message: `${shown} (need ${MIN_NODE_MAJOR}+)`,
|
|
65
69
|
};
|
|
66
70
|
}
|
|
67
71
|
async function checkCliVersionCurrent() {
|
|
@@ -83,12 +87,12 @@ async function checkCliVersionCurrent() {
|
|
|
83
87
|
* recorded by `summer setup`: a `--local-dev` link gets the local-dev form
|
|
84
88
|
* so the fix does not replace the checkout with the published package. */
|
|
85
89
|
async function checkSkillsVersion() {
|
|
86
|
-
const registry = await
|
|
90
|
+
const registry = await fetchRegistryDistTags();
|
|
87
91
|
const result = await buildSkillsVersionCheck({
|
|
88
92
|
installedCliVersion: version,
|
|
89
93
|
candidates: defaultSkillMarkerCandidates(),
|
|
90
94
|
recordedInstall: detectRecordedInstall,
|
|
91
|
-
...(registry.ok ? { latestRegistryVersion: registry.
|
|
95
|
+
...(registry.ok ? { latestRegistryVersion: registry.tags.latest, nextRegistryVersion: registry.tags.next } : {}),
|
|
92
96
|
});
|
|
93
97
|
return {
|
|
94
98
|
id: "skills-version-stale",
|
|
@@ -384,11 +388,12 @@ async function checkMcpToolsList() {
|
|
|
384
388
|
await client.connect(transport, { timeout: 5000 });
|
|
385
389
|
const listed = await client.listTools(undefined, { timeout: 5000 });
|
|
386
390
|
const toolNames = listed.tools.map((tool) => tool.name).sort();
|
|
387
|
-
const
|
|
391
|
+
const requiredTools = REQUIRED_MCP_TOOLS[resolveSurface(undefined)];
|
|
392
|
+
const missing = requiredTools.filter((tool) => !toolNames.includes(tool));
|
|
388
393
|
const details = {
|
|
389
394
|
...resolved,
|
|
390
395
|
toolCount: toolNames.length,
|
|
391
|
-
requiredTools
|
|
396
|
+
requiredTools,
|
|
392
397
|
missing,
|
|
393
398
|
server: client.getServerVersion(),
|
|
394
399
|
stderr: stderr.trim().slice(-1000),
|
|
@@ -56,10 +56,10 @@ export declare const fabricateArgsSchema: z.ZodObject<{
|
|
|
56
56
|
checkpoint: z.ZodOptional<z.ZodBoolean>;
|
|
57
57
|
blender_path: z.ZodOptional<z.ZodString>;
|
|
58
58
|
}, "strip", z.ZodTypeAny, {
|
|
59
|
-
source: string;
|
|
60
59
|
name: string;
|
|
61
|
-
|
|
60
|
+
source: string;
|
|
62
61
|
target_size?: number | undefined;
|
|
62
|
+
out_path?: string | undefined;
|
|
63
63
|
import_to_scene?: {
|
|
64
64
|
parent: string;
|
|
65
65
|
position?: string | undefined;
|
|
@@ -68,10 +68,10 @@ export declare const fabricateArgsSchema: z.ZodObject<{
|
|
|
68
68
|
checkpoint?: boolean | undefined;
|
|
69
69
|
blender_path?: string | undefined;
|
|
70
70
|
}, {
|
|
71
|
-
source: string;
|
|
72
71
|
name: string;
|
|
73
|
-
|
|
72
|
+
source: string;
|
|
74
73
|
target_size?: number | undefined;
|
|
74
|
+
out_path?: string | undefined;
|
|
75
75
|
import_to_scene?: {
|
|
76
76
|
parent: string;
|
|
77
77
|
position?: string | undefined;
|
|
@@ -15,17 +15,17 @@ export declare const gameTaskPlanInputSchema: z.ZodObject<{
|
|
|
15
15
|
assetPolicy: z.ZodDefault<z.ZodEnum<["reuse-first", "ask-before-paid-generation", "no-paid-generation", "generate-when-clearly-needed"]>>;
|
|
16
16
|
verification: z.ZodDefault<z.ZodEnum<["none", "fast", "full"]>>;
|
|
17
17
|
}, "strip", z.ZodTypeAny, {
|
|
18
|
-
mode: "auto" | "
|
|
19
|
-
target: "auto" | "audio" | "level" | "npc" | "
|
|
18
|
+
mode: "auto" | "ship" | "debug" | "asset" | "new-game" | "feature" | "playtest" | "polish";
|
|
19
|
+
target: "auto" | "audio" | "level" | "npc" | "ui" | "2d" | "3d" | "animation" | "multiplayer";
|
|
20
20
|
goal: string;
|
|
21
21
|
assetPolicy: "reuse-first" | "ask-before-paid-generation" | "no-paid-generation" | "generate-when-clearly-needed";
|
|
22
|
-
verification: "none" | "
|
|
22
|
+
verification: "none" | "full" | "fast";
|
|
23
23
|
}, {
|
|
24
24
|
goal: string;
|
|
25
|
-
mode?: "auto" | "
|
|
26
|
-
target?: "auto" | "audio" | "level" | "npc" | "
|
|
25
|
+
mode?: "auto" | "ship" | "debug" | "asset" | "new-game" | "feature" | "playtest" | "polish" | undefined;
|
|
26
|
+
target?: "auto" | "audio" | "level" | "npc" | "ui" | "2d" | "3d" | "animation" | "multiplayer" | undefined;
|
|
27
27
|
assetPolicy?: "reuse-first" | "ask-before-paid-generation" | "no-paid-generation" | "generate-when-clearly-needed" | undefined;
|
|
28
|
-
verification?: "none" | "
|
|
28
|
+
verification?: "none" | "full" | "fast" | undefined;
|
|
29
29
|
}>;
|
|
30
30
|
export type GameTaskMode = (typeof GAME_TASK_MODES)[number];
|
|
31
31
|
export type GameTaskTarget = (typeof GAME_TASK_TARGETS)[number];
|
|
@@ -37,6 +37,10 @@ export interface GameTaskPlanOptions {
|
|
|
37
37
|
target?: GameTaskTarget;
|
|
38
38
|
assetPolicy?: AssetPolicy;
|
|
39
39
|
verification?: VerificationLevel;
|
|
40
|
+
/** False when the session has no engine tools (the assets profile): the plan
|
|
41
|
+
* then ends at a delivered file and names only tools the session has. Not
|
|
42
|
+
* part of the input schema; the MCP server sets it from its profile. */
|
|
43
|
+
engine?: boolean;
|
|
40
44
|
}
|
|
41
45
|
export interface SkillRoute {
|
|
42
46
|
/** Library resource id, e.g. "skill/make-game". */
|
|
@@ -62,5 +66,7 @@ export interface GameTaskPlan {
|
|
|
62
66
|
userGates: string[];
|
|
63
67
|
nextAgentSteps: string[];
|
|
64
68
|
antiPatterns: string[];
|
|
69
|
+
/** Present only without engine tools: what this session can and cannot do. */
|
|
70
|
+
profileNote?: string;
|
|
65
71
|
}
|
|
66
72
|
export declare function buildGameTaskPlan(options: GameTaskPlanOptions): GameTaskPlan;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { getSkillRegistry } from "../skills-registry.js";
|
|
2
|
+
import { getSkillRegistry, isAssetSkill } from "../skills-registry.js";
|
|
3
3
|
export const GAME_TASK_MODES = [
|
|
4
4
|
"auto",
|
|
5
5
|
"new-game",
|
|
@@ -150,7 +150,7 @@ function addSkill(routes, name, why, weight) {
|
|
|
150
150
|
}
|
|
151
151
|
routes.push({ name, why, weight });
|
|
152
152
|
}
|
|
153
|
-
function inferSkills(mode, target, goal) {
|
|
153
|
+
function inferSkills(mode, target, goal, engine = true) {
|
|
154
154
|
const text = goal.toLowerCase();
|
|
155
155
|
const routes = [];
|
|
156
156
|
const animationIntent = includesAny(text, [
|
|
@@ -182,7 +182,12 @@ function inferSkills(mode, target, goal) {
|
|
|
182
182
|
"voice",
|
|
183
183
|
"animation clip",
|
|
184
184
|
]);
|
|
185
|
-
|
|
185
|
+
if (engine) {
|
|
186
|
+
addSkill(routes, "using-summer", "Baseline workflow for building through Summer CLI/MCP.", 100);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
addSkill(routes, "summer-assets", "The asset loop without Summer Engine: reuse, generate, check, download.", 250);
|
|
190
|
+
}
|
|
186
191
|
if (mode === "debug") {
|
|
187
192
|
addSkill(routes, "debug", "Primary runtime/script/diagnostics loop.", 300);
|
|
188
193
|
addSkill(routes, "investigating-bugs", "Systematic bug investigation workflow.", 220);
|
|
@@ -307,6 +312,8 @@ function inferSkills(mode, target, goal) {
|
|
|
307
312
|
addSkill(routes, "gdscript-patterns", "Use guarded Summer file tools for scripts, then verify through MCP.", 90);
|
|
308
313
|
addSkill(routes, "verification-before-completion", "Do not finish without a clean verification story.", 80);
|
|
309
314
|
return routes
|
|
315
|
+
// Without engine tools, only the skills that work without them.
|
|
316
|
+
.filter((route) => engine || isAssetSkill(skillByName().get(route.name)))
|
|
310
317
|
.sort((a, b) => b.weight - a.weight)
|
|
311
318
|
.slice(0, 7)
|
|
312
319
|
.map((route) => {
|
|
@@ -372,9 +379,34 @@ function buildMcpToolPlan(mode, target, assetPolicy, verification, goal = "") {
|
|
|
372
379
|
}
|
|
373
380
|
return { start, mutate, assets, verify };
|
|
374
381
|
}
|
|
375
|
-
|
|
382
|
+
/** The plan for a session without engine tools: find, generate, check, hand over a file. */
|
|
383
|
+
function buildAssetsToolPlan(target, assetPolicy, verification) {
|
|
384
|
+
const assets = ["summer_list_my_assets", "summer_search_assets", "summer_get_asset"];
|
|
385
|
+
if (assetPolicy !== "no-paid-generation") {
|
|
386
|
+
const generator = {
|
|
387
|
+
"3d": "summer_generate_3d",
|
|
388
|
+
"2d": "summer_generate_image",
|
|
389
|
+
ui: "summer_generate_image",
|
|
390
|
+
audio: "summer_generate_audio",
|
|
391
|
+
animation: "summer_generate_motion",
|
|
392
|
+
};
|
|
393
|
+
if (generator[target])
|
|
394
|
+
assets.push(generator[target]);
|
|
395
|
+
assets.push("summer_check_job");
|
|
396
|
+
}
|
|
397
|
+
assets.push("summer_get_asset_download_url");
|
|
398
|
+
return {
|
|
399
|
+
start: ["summer_search_library", "summer_read_library"],
|
|
400
|
+
mutate: [],
|
|
401
|
+
assets,
|
|
402
|
+
verify: verification === "none" ? [] : ["summer_check_job", "summer_get_asset"],
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
function buildUserGates(mode, assetPolicy, engine = true) {
|
|
376
406
|
const gates = [
|
|
377
|
-
|
|
407
|
+
engine
|
|
408
|
+
? "Ask before destructive scene changes, deleting assets, or changing locked .summer memory."
|
|
409
|
+
: "Ask before deleting or replacing the person's assets.",
|
|
378
410
|
];
|
|
379
411
|
if (assetPolicy !== "generate-when-clearly-needed") {
|
|
380
412
|
gates.push("Ask before paid generation, rigging, video, or large batch asset creation.");
|
|
@@ -395,6 +427,8 @@ export function buildGameTaskPlan(options) {
|
|
|
395
427
|
const verification = options.verification ?? "full";
|
|
396
428
|
const mode = inferMode(goal, options.mode ?? "auto");
|
|
397
429
|
const target = inferTarget(goal, options.target ?? "auto");
|
|
430
|
+
if (options.engine === false)
|
|
431
|
+
return buildAssetsPlan(goal, mode, target, assetPolicy, verification);
|
|
398
432
|
return {
|
|
399
433
|
goal,
|
|
400
434
|
mode,
|
|
@@ -431,3 +465,44 @@ export function buildGameTaskPlan(options) {
|
|
|
431
465
|
],
|
|
432
466
|
};
|
|
433
467
|
}
|
|
468
|
+
/** summer_start_game_task in a session without engine tools (the assets profile). */
|
|
469
|
+
function buildAssetsPlan(goal, mode, target, assetPolicy, verification) {
|
|
470
|
+
const needsEngine = mode !== "asset";
|
|
471
|
+
return {
|
|
472
|
+
goal,
|
|
473
|
+
mode,
|
|
474
|
+
target,
|
|
475
|
+
assetPolicy,
|
|
476
|
+
verification,
|
|
477
|
+
profileNote: "This session has generation and the Summer asset library, and no Summer Engine tools. Deliver files the person can use in any engine or web app." +
|
|
478
|
+
(needsEngine
|
|
479
|
+
? " Building or changing a game needs Summer Engine and the full setup: npx -y summer-engine@latest setup <agent> --yes. Until then, make the assets the task needs."
|
|
480
|
+
: ""),
|
|
481
|
+
principles: [
|
|
482
|
+
"Deliver files, not scenes: the asset is done when it is saved where the person asked.",
|
|
483
|
+
"Reuse the person's assets and the Summer library before paid generation unless the person wants something custom.",
|
|
484
|
+
"Use the asset id a job returns; never search by name right after a generation.",
|
|
485
|
+
"Check each asset before claiming it is done: the job finished, and you saw the preview (or the person heard the sound).",
|
|
486
|
+
],
|
|
487
|
+
recommendedSkills: inferSkills(mode, target, goal, false),
|
|
488
|
+
mcpToolPlan: buildAssetsToolPlan(target, assetPolicy, verification),
|
|
489
|
+
hostFileWork: [
|
|
490
|
+
"summer_generate_image saves the file itself when you pass out (a folder or a file path in the person's project).",
|
|
491
|
+
"Download other assets from summer_get_asset_download_url with your own shell into the folder the person named.",
|
|
492
|
+
],
|
|
493
|
+
userGates: buildUserGates(mode, assetPolicy, false),
|
|
494
|
+
nextAgentSteps: [
|
|
495
|
+
"Load the top recommended skill; follow it until the asset exists, then its 'Without Summer Engine' section.",
|
|
496
|
+
"Ask what the asset is for: engine or app, format, size or scale, style, how many.",
|
|
497
|
+
"Check summer_list_my_assets and summer_search_assets before generating.",
|
|
498
|
+
"Generate after the person confirms the spend; poll summer_check_job until the state is terminal.",
|
|
499
|
+
"Hand the file over and tell the person its path and format.",
|
|
500
|
+
],
|
|
501
|
+
antiPatterns: [
|
|
502
|
+
"Do not call engine tools (summer_get_project_context, summer_add_node, summer_play, summer_import_asset_by_id): this session does not have them.",
|
|
503
|
+
"Do not generate assets before checking library/user assets.",
|
|
504
|
+
"Do not search by name for an asset immediately after generation; use the returned asset ID.",
|
|
505
|
+
"Do not say an asset looks right without a preview you actually received.",
|
|
506
|
+
],
|
|
507
|
+
};
|
|
508
|
+
}
|
|
@@ -25,14 +25,14 @@ export declare const importHdriArgsSchema: z.ZodObject<{
|
|
|
25
25
|
resolution: z.ZodDefault<z.ZodEnum<["1k", "2k", "4k"]>>;
|
|
26
26
|
allow_large: z.ZodDefault<z.ZodBoolean>;
|
|
27
27
|
}, "strip", z.ZodTypeAny, {
|
|
28
|
-
resolution: "
|
|
28
|
+
resolution: "2k" | "1k" | "4k";
|
|
29
29
|
allow_large: boolean;
|
|
30
30
|
query?: string | undefined;
|
|
31
31
|
assetId?: string | undefined;
|
|
32
32
|
}, {
|
|
33
33
|
query?: string | undefined;
|
|
34
|
+
resolution?: "2k" | "1k" | "4k" | undefined;
|
|
34
35
|
assetId?: string | undefined;
|
|
35
|
-
resolution?: "1k" | "2k" | "4k" | undefined;
|
|
36
36
|
allow_large?: boolean | undefined;
|
|
37
37
|
}>;
|
|
38
38
|
export interface ImportHdriArgs {
|
|
@@ -27,24 +27,24 @@ export declare const motionGenerationArgsSchema: z.ZodObject<{
|
|
|
27
27
|
backend: "meshy-library" | "text-to-motion";
|
|
28
28
|
options?: Record<string, any> | undefined;
|
|
29
29
|
prompt?: string | undefined;
|
|
30
|
+
idempotencyKey?: string | undefined;
|
|
30
31
|
motionName?: string | undefined;
|
|
31
32
|
prompts?: string[] | undefined;
|
|
32
33
|
takes?: number | undefined;
|
|
33
34
|
lockJoints?: string[] | undefined;
|
|
34
35
|
cfgScale?: number | undefined;
|
|
35
|
-
idempotencyKey?: string | undefined;
|
|
36
36
|
}, {
|
|
37
37
|
rigAssetId: string;
|
|
38
38
|
options?: Record<string, any> | undefined;
|
|
39
39
|
wait?: boolean | undefined;
|
|
40
40
|
prompt?: string | undefined;
|
|
41
|
+
idempotencyKey?: string | undefined;
|
|
41
42
|
backend?: "meshy-library" | "text-to-motion" | undefined;
|
|
42
43
|
motionName?: string | undefined;
|
|
43
44
|
prompts?: string[] | undefined;
|
|
44
45
|
takes?: number | undefined;
|
|
45
46
|
lockJoints?: string[] | undefined;
|
|
46
47
|
cfgScale?: number | undefined;
|
|
47
|
-
idempotencyKey?: string | undefined;
|
|
48
48
|
}>;
|
|
49
49
|
export type MotionGenerationArgs = z.input<typeof motionGenerationArgsSchema>;
|
|
50
50
|
/** Validate the backend-specific rules zod cannot express on a flat shape and
|
|
@@ -53,8 +53,8 @@ export const motionGenerationArgsSchema = z.object({
|
|
|
53
53
|
.describe("Stable retry key so the same logical request is not billed or queued twice"),
|
|
54
54
|
wait: z
|
|
55
55
|
.boolean()
|
|
56
|
-
.default(
|
|
57
|
-
.describe("
|
|
56
|
+
.default(false)
|
|
57
|
+
.describe("Block until the job finishes (up to 10 min) and return the result. Default false returns the jobId at once; poll summer_check_job."),
|
|
58
58
|
options: z
|
|
59
59
|
.record(z.any())
|
|
60
60
|
.optional()
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import { z } from "zod";
|
|
22
22
|
import type { EngineCapabilities } from "../../capability-skew.js";
|
|
23
|
+
import { type SummerErrorCode } from "../../error-codes.js";
|
|
23
24
|
import { type EditorTargetMeta, type NavParam, type NavSurface, type NavTarget } from "./targets.js";
|
|
24
25
|
export type OpenSurface = "auto" | NavSurface;
|
|
25
26
|
/** The ONE argument shape both faces validate with (mirrors
|
|
@@ -36,14 +37,14 @@ export declare const openArgsSchema: z.ZodObject<{
|
|
|
36
37
|
surface: z.ZodOptional<z.ZodEnum<["auto", "web", "editor"]>>;
|
|
37
38
|
open: z.ZodOptional<z.ZodBoolean>;
|
|
38
39
|
}, "strict", z.ZodTypeAny, {
|
|
40
|
+
surface?: "web" | "editor" | "auto" | undefined;
|
|
39
41
|
params?: Record<string, string> | undefined;
|
|
40
42
|
target?: string | undefined;
|
|
41
|
-
surface?: "web" | "editor" | "auto" | undefined;
|
|
42
43
|
open?: boolean | undefined;
|
|
43
44
|
}, {
|
|
45
|
+
surface?: "web" | "editor" | "auto" | undefined;
|
|
44
46
|
params?: Record<string, string> | undefined;
|
|
45
47
|
target?: string | undefined;
|
|
46
|
-
surface?: "web" | "editor" | "auto" | undefined;
|
|
47
48
|
open?: boolean | undefined;
|
|
48
49
|
}>;
|
|
49
50
|
export type OpenArgs = z.infer<typeof openArgsSchema>;
|
|
@@ -93,6 +94,9 @@ export interface OpenResult {
|
|
|
93
94
|
receipt?: unknown;
|
|
94
95
|
/** Structured failure class for ok:false results (engine_lacks_op, …). */
|
|
95
96
|
failure_reason?: string;
|
|
97
|
+
/** The shared code (core/error-codes.ts) when the engine is not running. */
|
|
98
|
+
code?: SummerErrorCode;
|
|
99
|
+
recovery?: string;
|
|
96
100
|
matches?: OpenMatch[];
|
|
97
101
|
targets?: OpenTargetSummary[];
|
|
98
102
|
hint?: string;
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import { z } from "zod";
|
|
22
22
|
import { extractOpError } from "../engine-receipt.js";
|
|
23
|
+
import { RECOVERY } from "../../error-codes.js";
|
|
23
24
|
import { NAV_TARGETS, WEB_CATALOG, getNavTarget, } from "./targets.js";
|
|
24
25
|
/** The ONE argument shape both faces validate with (mirrors
|
|
25
26
|
* library/tools/open/resource.yaml input_schema; parity-tested). */
|
|
@@ -516,6 +517,8 @@ export async function runOpen(args, deps) {
|
|
|
516
517
|
return {
|
|
517
518
|
ok: false,
|
|
518
519
|
action: "engine_not_running",
|
|
520
|
+
code: "engine_not_running",
|
|
521
|
+
recovery: RECOVERY.engine_not_running,
|
|
519
522
|
target: summary,
|
|
520
523
|
op: navigateOp,
|
|
521
524
|
engine: { running: false, error: message },
|
|
@@ -151,20 +151,20 @@ export declare const measureArgsSchema: z.ZodObject<{
|
|
|
151
151
|
space: "local" | "world";
|
|
152
152
|
tolerance: number;
|
|
153
153
|
a?: string | undefined;
|
|
154
|
-
axis?: "y" | "x" | "z" | undefined;
|
|
155
|
-
nodes?: string[] | undefined;
|
|
156
154
|
b?: string | undefined;
|
|
157
|
-
|
|
155
|
+
nodes?: string[] | undefined;
|
|
156
|
+
axis?: "y" | "z" | "x" | undefined;
|
|
157
|
+
face?: "-y" | "-z" | "+x" | "-x" | "+y" | "+z" | undefined;
|
|
158
158
|
}, {
|
|
159
159
|
scenePath: string;
|
|
160
160
|
mode?: "pair" | "plane" | undefined;
|
|
161
161
|
a?: string | undefined;
|
|
162
162
|
space?: "local" | "world" | undefined;
|
|
163
|
-
axis?: "y" | "x" | "z" | undefined;
|
|
164
|
-
nodes?: string[] | undefined;
|
|
165
163
|
b?: string | undefined;
|
|
164
|
+
nodes?: string[] | undefined;
|
|
165
|
+
axis?: "y" | "z" | "x" | undefined;
|
|
166
166
|
tolerance?: number | undefined;
|
|
167
|
-
face?: "-y" | "+x" | "-x" | "+y" | "+z" |
|
|
167
|
+
face?: "-y" | "-z" | "+x" | "-x" | "+y" | "+z" | undefined;
|
|
168
168
|
}>;
|
|
169
169
|
export type MeasureArgs = z.output<typeof measureArgsSchema>;
|
|
170
170
|
export declare function measure(client: PlacementClient, args: MeasureArgs): Promise<PlacementResult>;
|
|
@@ -213,39 +213,39 @@ export declare const placeAdjacentArgsSchema: z.ZodObject<{
|
|
|
213
213
|
z: z.ZodOptional<z.ZodEnum<["min", "center", "max", "none"]>>;
|
|
214
214
|
}, "strip", z.ZodTypeAny, {
|
|
215
215
|
y?: "none" | "min" | "max" | "center" | undefined;
|
|
216
|
-
x?: "none" | "min" | "max" | "center" | undefined;
|
|
217
216
|
z?: "none" | "min" | "max" | "center" | undefined;
|
|
217
|
+
x?: "none" | "min" | "max" | "center" | undefined;
|
|
218
218
|
}, {
|
|
219
219
|
y?: "none" | "min" | "max" | "center" | undefined;
|
|
220
|
-
x?: "none" | "min" | "max" | "center" | undefined;
|
|
221
220
|
z?: "none" | "min" | "max" | "center" | undefined;
|
|
221
|
+
x?: "none" | "min" | "max" | "center" | undefined;
|
|
222
222
|
}>]>>>;
|
|
223
223
|
space: z.ZodDefault<z.ZodOptional<z.ZodEnum<["world", "local"]>>>;
|
|
224
224
|
}, "strip", z.ZodTypeAny, {
|
|
225
225
|
scenePath: string;
|
|
226
226
|
space: "local" | "world";
|
|
227
|
-
gap: number;
|
|
228
|
-
axis: "y" | "x" | "z";
|
|
229
|
-
subject: string;
|
|
230
227
|
reference: string;
|
|
228
|
+
subject: string;
|
|
229
|
+
axis: "y" | "z" | "x";
|
|
231
230
|
side: "min" | "max";
|
|
231
|
+
gap: number;
|
|
232
232
|
alignOtherAxes: "none" | "min" | "max" | "center" | {
|
|
233
233
|
y?: "none" | "min" | "max" | "center" | undefined;
|
|
234
|
-
x?: "none" | "min" | "max" | "center" | undefined;
|
|
235
234
|
z?: "none" | "min" | "max" | "center" | undefined;
|
|
235
|
+
x?: "none" | "min" | "max" | "center" | undefined;
|
|
236
236
|
};
|
|
237
237
|
}, {
|
|
238
238
|
scenePath: string;
|
|
239
|
-
axis: "y" | "x" | "z";
|
|
240
|
-
subject: string;
|
|
241
239
|
reference: string;
|
|
240
|
+
subject: string;
|
|
241
|
+
axis: "y" | "z" | "x";
|
|
242
242
|
side: "min" | "max";
|
|
243
243
|
space?: "local" | "world" | undefined;
|
|
244
244
|
gap?: number | undefined;
|
|
245
245
|
alignOtherAxes?: "none" | "min" | "max" | "center" | {
|
|
246
246
|
y?: "none" | "min" | "max" | "center" | undefined;
|
|
247
|
-
x?: "none" | "min" | "max" | "center" | undefined;
|
|
248
247
|
z?: "none" | "min" | "max" | "center" | undefined;
|
|
248
|
+
x?: "none" | "min" | "max" | "center" | undefined;
|
|
249
249
|
} | undefined;
|
|
250
250
|
}>;
|
|
251
251
|
export type PlaceAdjacentArgs = z.output<typeof placeAdjacentArgsSchema>;
|
|
@@ -277,12 +277,12 @@ export declare const attachToSurfaceArgsSchema: z.ZodObject<{
|
|
|
277
277
|
}, "strip", z.ZodTypeAny, {
|
|
278
278
|
scenePath: string;
|
|
279
279
|
subject: string;
|
|
280
|
+
backAxis: "-y" | "-z" | "+x" | "-x" | "+y" | "+z";
|
|
280
281
|
maxDistance: number;
|
|
281
282
|
collisionMask: number;
|
|
282
283
|
placeAt: "current" | "hit";
|
|
283
284
|
maxMove: number;
|
|
284
|
-
|
|
285
|
-
upAxis: "-y" | "+x" | "-x" | "+y" | "+z" | "-z";
|
|
285
|
+
upAxis: "-y" | "-z" | "+x" | "-x" | "+y" | "+z";
|
|
286
286
|
worldUp: [number, number, number];
|
|
287
287
|
standoff: number;
|
|
288
288
|
surface?: string | undefined;
|
|
@@ -294,6 +294,7 @@ export declare const attachToSurfaceArgsSchema: z.ZodObject<{
|
|
|
294
294
|
scenePath: string;
|
|
295
295
|
subject: string;
|
|
296
296
|
surface?: string | undefined;
|
|
297
|
+
backAxis?: "-y" | "-z" | "+x" | "-x" | "+y" | "+z" | undefined;
|
|
297
298
|
ray?: {
|
|
298
299
|
origin: [number, number, number];
|
|
299
300
|
direction: [number, number, number];
|
|
@@ -302,8 +303,7 @@ export declare const attachToSurfaceArgsSchema: z.ZodObject<{
|
|
|
302
303
|
collisionMask?: number | undefined;
|
|
303
304
|
placeAt?: "current" | "hit" | undefined;
|
|
304
305
|
maxMove?: number | undefined;
|
|
305
|
-
|
|
306
|
-
upAxis?: "-y" | "+x" | "-x" | "+y" | "+z" | "-z" | undefined;
|
|
306
|
+
upAxis?: "-y" | "-z" | "+x" | "-x" | "+y" | "+z" | undefined;
|
|
307
307
|
worldUp?: [number, number, number] | undefined;
|
|
308
308
|
standoff?: number | undefined;
|
|
309
309
|
}>;
|
|
@@ -378,9 +378,9 @@ export declare const repeatAlongArgsSchema: z.ZodObject<{
|
|
|
378
378
|
align: "end" | "start" | "center";
|
|
379
379
|
end?: [number, number, number] | undefined;
|
|
380
380
|
count?: number | undefined;
|
|
381
|
-
scale?: [number, number, number] | undefined;
|
|
382
381
|
direction?: [number, number, number] | undefined;
|
|
383
382
|
spacing?: number | undefined;
|
|
383
|
+
scale?: [number, number, number] | undefined;
|
|
384
384
|
rotationDegrees?: [number, number, number] | undefined;
|
|
385
385
|
namePrefix?: string | undefined;
|
|
386
386
|
}, {
|
|
@@ -390,9 +390,9 @@ export declare const repeatAlongArgsSchema: z.ZodObject<{
|
|
|
390
390
|
start: [number, number, number];
|
|
391
391
|
end?: [number, number, number] | undefined;
|
|
392
392
|
count?: number | undefined;
|
|
393
|
-
scale?: [number, number, number] | undefined;
|
|
394
393
|
direction?: [number, number, number] | undefined;
|
|
395
394
|
spacing?: number | undefined;
|
|
395
|
+
scale?: [number, number, number] | undefined;
|
|
396
396
|
align?: "end" | "start" | "center" | undefined;
|
|
397
397
|
rotationDegrees?: [number, number, number] | undefined;
|
|
398
398
|
namePrefix?: string | undefined;
|
|
@@ -422,11 +422,11 @@ export declare const connectPortsArgsSchema: z.ZodObject<{
|
|
|
422
422
|
}, "strip", z.ZodTypeAny, {
|
|
423
423
|
scenePath: string;
|
|
424
424
|
target: string;
|
|
425
|
-
gap: number;
|
|
426
425
|
subject: string;
|
|
427
|
-
maxTriangles: number;
|
|
428
426
|
subjectPort: string | number;
|
|
429
427
|
targetPort: string | number;
|
|
428
|
+
gap: number;
|
|
429
|
+
maxTriangles: number;
|
|
430
430
|
rollDegrees: number;
|
|
431
431
|
maxTiltDegrees: number;
|
|
432
432
|
allowTilt: boolean;
|
|
@@ -2,6 +2,7 @@ import { createHash } from "node:crypto";
|
|
|
2
2
|
import { createReadStream } from "node:fs";
|
|
3
3
|
import { open } from "node:fs/promises";
|
|
4
4
|
import { extname, resolve } from "node:path";
|
|
5
|
+
import { summerRequestHeaders } from "../agent-host.js";
|
|
5
6
|
import { resolveGatewayUrl } from "../config.js";
|
|
6
7
|
import { getStoreAccessToken, OAuthError } from "../oauth.js";
|
|
7
8
|
import { appendStoreJsonLine } from "../store.js";
|
|
@@ -87,6 +88,7 @@ export function createStore(baseUrl, token, deps) {
|
|
|
87
88
|
response = await deps.fetch(`${baseUrl}${STORE_PROXY_PATH}/${path}`, {
|
|
88
89
|
method,
|
|
89
90
|
headers: {
|
|
91
|
+
...summerRequestHeaders(),
|
|
90
92
|
accept: "application/json",
|
|
91
93
|
authorization: `Bearer ${token}`,
|
|
92
94
|
...(options.body === undefined ? {} : { "content-type": "application/json" }),
|