summer-engine 3.0.0 → 3.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 -2
- package/.claude-plugin/plugin.json +27 -5
- package/.codex-plugin/plugin.json +28 -6
- package/.cursor-plugin/plugin.json +27 -5
- package/.factory-plugin/plugin.json +27 -5
- package/.opencode/plugins/summer.js +1 -1
- package/CHANGELOG.md +120 -0
- package/README.md +22 -7
- package/assets/audit/scene_audit.gd +4136 -0
- package/assets/seeing/seeing_probe.gd +1873 -0
- package/dist/cli/commands/setup.js +6 -19
- package/dist/cli/commands/skills.js +57 -32
- package/dist/core/api-client.d.ts +9 -1
- package/dist/core/api-client.js +21 -4
- package/dist/core/capabilities/agent-playbook.js +46 -0
- package/dist/core/capabilities/audit/accept.d.ts +55 -0
- package/dist/core/capabilities/audit/accept.js +147 -0
- package/dist/core/capabilities/audit/args.d.ts +95 -0
- package/dist/core/capabilities/audit/args.js +89 -0
- package/dist/core/capabilities/audit/audit.d.ts +56 -0
- package/dist/core/capabilities/audit/audit.js +287 -0
- package/dist/core/capabilities/audit/frame.d.ts +14 -0
- package/dist/core/capabilities/audit/frame.js +35 -0
- package/dist/core/capabilities/audit/gaps.d.ts +96 -0
- package/dist/core/capabilities/audit/gaps.js +257 -0
- package/dist/core/capabilities/audit/judge.d.ts +162 -0
- package/dist/core/capabilities/audit/judge.js +1134 -0
- package/dist/core/capabilities/audit/math.d.ts +110 -0
- package/dist/core/capabilities/audit/math.js +263 -0
- package/dist/core/capabilities/audit/summary.d.ts +74 -0
- package/dist/core/capabilities/audit/summary.js +212 -0
- package/dist/core/capabilities/board.d.ts +31 -0
- package/dist/core/capabilities/board.js +43 -0
- package/dist/core/capabilities/camera-view.d.ts +4 -2
- package/dist/core/capabilities/camera-view.js +6 -3
- package/dist/core/capabilities/connect-signal.d.ts +85 -0
- package/dist/core/capabilities/connect-signal.js +285 -0
- package/dist/core/capabilities/engine-fallbacks.d.ts +5 -0
- package/dist/core/capabilities/engine-fallbacks.js +5 -0
- package/dist/core/capabilities/engine-ops.d.ts +5 -1
- package/dist/core/capabilities/engine-ops.js +0 -3
- package/dist/core/capabilities/engine-receipt.d.ts +12 -0
- package/dist/core/capabilities/engine-receipt.js +26 -0
- package/dist/core/capabilities/file-read.d.ts +64 -0
- package/dist/core/capabilities/file-read.js +325 -0
- package/dist/core/capabilities/game-task-plan.js +4 -2
- package/dist/core/capabilities/grep.d.ts +60 -0
- package/dist/core/capabilities/grep.js +190 -0
- package/dist/core/capabilities/inspect-node.d.ts +56 -0
- package/dist/core/capabilities/inspect-node.js +225 -0
- package/dist/core/capabilities/inspect-resource.d.ts +61 -0
- package/dist/core/capabilities/inspect-resource.js +376 -0
- package/dist/core/capabilities/math3d.d.ts +28 -0
- package/dist/core/capabilities/math3d.js +88 -0
- package/dist/core/capabilities/motion-generation.d.ts +62 -0
- package/dist/core/capabilities/motion-generation.js +138 -0
- package/dist/core/capabilities/placement-batch.d.ts +102 -0
- package/dist/core/capabilities/placement-batch.js +483 -0
- package/dist/core/capabilities/placement-math.d.ts +70 -0
- package/dist/core/capabilities/placement-math.js +209 -0
- package/dist/core/capabilities/placement-script.d.ts +42 -0
- package/dist/core/capabilities/placement-script.js +1096 -0
- package/dist/core/capabilities/placement.d.ts +485 -0
- package/dist/core/capabilities/placement.js +1731 -0
- package/dist/core/capabilities/project-context.d.ts +33 -2
- package/dist/core/capabilities/project-context.js +87 -4
- package/dist/core/capabilities/replace-node.d.ts +91 -0
- package/dist/core/capabilities/replace-node.js +423 -0
- package/dist/core/capabilities/runtime-control.d.ts +20 -4
- package/dist/core/capabilities/runtime-control.js +67 -2
- package/dist/core/capabilities/scene-batch.d.ts +63 -0
- package/dist/core/capabilities/scene-batch.js +394 -0
- package/dist/core/capabilities/scene-readback.d.ts +36 -0
- package/dist/core/capabilities/scene-readback.js +54 -0
- package/dist/core/capabilities/seeing/args.d.ts +348 -0
- package/dist/core/capabilities/seeing/args.js +178 -0
- package/dist/core/capabilities/seeing/candidates.d.ts +127 -0
- package/dist/core/capabilities/seeing/candidates.js +282 -0
- package/dist/core/capabilities/seeing/math.d.ts +134 -0
- package/dist/core/capabilities/seeing/math.js +269 -0
- package/dist/core/capabilities/seeing/probe.d.ts +62 -0
- package/dist/core/capabilities/seeing/probe.js +188 -0
- package/dist/core/capabilities/seeing/scoring.d.ts +235 -0
- package/dist/core/capabilities/seeing/scoring.js +639 -0
- package/dist/core/capabilities/seeing/seeing.d.ts +233 -0
- package/dist/core/capabilities/seeing/seeing.js +1341 -0
- package/dist/core/capabilities/seeing/shot-store.d.ts +52 -0
- package/dist/core/capabilities/seeing/shot-store.js +204 -0
- package/dist/core/capabilities/surface-snap-mesh.d.ts +88 -0
- package/dist/core/capabilities/surface-snap-mesh.js +425 -0
- package/dist/core/capabilities/surface-snap.d.ts +77 -0
- package/dist/core/capabilities/surface-snap.js +461 -0
- package/dist/core/capabilities/tool-dispatch.js +231 -72
- package/dist/core/capabilities/tscn.d.ts +85 -0
- package/dist/core/capabilities/tscn.js +391 -0
- package/dist/core/capabilities/world-snapshot.d.ts +58 -0
- package/dist/core/capabilities/world-snapshot.js +150 -0
- package/dist/core/capability-skew.d.ts +5 -5
- package/dist/core/capability-skew.js +14 -6
- package/dist/core/headless/worker-engine-client.d.ts +1 -1
- package/dist/core/headless/worker-engine-client.js +2 -2
- package/dist/core/library-read.d.ts +37 -5
- package/dist/core/library-read.js +264 -33
- package/dist/core/library-search.d.ts +2 -2
- package/dist/core/skills-registry.d.ts +9 -1
- package/dist/core/skills-registry.js +25 -2
- package/dist/installer/agent-config.d.ts +9 -4
- package/dist/installer/agent-config.js +194 -392
- package/dist/installer/agent-table.d.ts +119 -0
- package/dist/installer/agent-table.js +619 -0
- package/dist/installer/setup.js +4 -2
- package/dist/installer/skill-locations.d.ts +8 -17
- package/dist/installer/skill-locations.js +22 -101
- package/dist/installer/version-check.d.ts +5 -1
- package/dist/installer/version-check.js +38 -28
- package/dist/mcp/server.js +9 -3
- package/dist/mcp/tools/asset-tools.js +21 -3
- package/dist/mcp/tools/audit-tools.d.ts +23 -0
- package/dist/mcp/tools/audit-tools.js +60 -0
- package/dist/mcp/tools/debug-tools.js +3 -1
- package/dist/mcp/tools/file-tools.js +17 -4
- package/dist/mcp/tools/generate-tools.js +74 -66
- package/dist/mcp/tools/library-tools.js +2 -0
- package/dist/mcp/tools/perception-tools.js +6 -19
- package/dist/mcp/tools/placement-tools.d.ts +24 -0
- package/dist/mcp/tools/placement-tools.js +91 -0
- package/dist/mcp/tools/project-tools.js +18 -15
- package/dist/mcp/tools/scene-tools.js +71 -83
- package/dist/mcp/tools/seeing-tools.d.ts +24 -0
- package/dist/mcp/tools/seeing-tools.js +64 -0
- package/dist/mcp/tools/spatial-tools.js +17 -9
- package/dist/mcp/tools/visual-tools.js +59 -7
- package/gemini-extension.json +26 -4
- package/integrations/README.md +48 -19
- package/integrations/amp/README.md +12 -0
- package/integrations/amp/manifest-target.json +3 -0
- package/integrations/antigravity/README.md +12 -0
- package/integrations/antigravity/manifest-target.json +3 -0
- package/integrations/claude-desktop/README.md +12 -0
- package/integrations/claude-desktop/manifest-target.json +3 -0
- package/integrations/cline/README.md +8 -9
- package/integrations/cline-cli/README.md +12 -0
- package/integrations/cline-cli/manifest-target.json +3 -0
- package/integrations/copilot-jetbrains/README.md +12 -0
- package/integrations/copilot-jetbrains/manifest-target.json +3 -0
- package/integrations/crush/README.md +12 -0
- package/integrations/crush/manifest-target.json +3 -0
- package/integrations/github-copilot/README.md +8 -8
- package/integrations/goose/README.md +12 -0
- package/integrations/goose/manifest-target.json +3 -0
- package/integrations/grok-build/README.md +12 -0
- package/integrations/grok-build/manifest-target.json +3 -0
- package/integrations/hermes/README.md +12 -0
- package/integrations/hermes/manifest-target.json +3 -0
- package/integrations/junie/README.md +12 -0
- package/integrations/junie/manifest-target.json +3 -0
- package/integrations/kilo-code/README.md +6 -10
- package/integrations/kimi-code/README.md +12 -0
- package/integrations/kimi-code/manifest-target.json +3 -0
- package/integrations/kiro/README.md +12 -0
- package/integrations/kiro/manifest-target.json +3 -0
- package/integrations/lm-studio/README.md +8 -8
- package/integrations/mistral-vibe/README.md +12 -0
- package/integrations/mistral-vibe/manifest-target.json +3 -0
- package/integrations/opencode/README.md +9 -12
- package/integrations/qoder/README.md +12 -0
- package/integrations/qoder/manifest-target.json +3 -0
- package/integrations/qwen-code/README.md +12 -0
- package/integrations/qwen-code/manifest-target.json +3 -0
- package/integrations/roo-code/README.md +8 -7
- package/integrations/rovo-dev/README.md +12 -0
- package/integrations/rovo-dev/manifest-target.json +3 -0
- package/integrations/trae/README.md +12 -0
- package/integrations/trae/manifest-target.json +3 -0
- package/integrations/visual-studio/README.md +12 -0
- package/integrations/visual-studio/manifest-target.json +3 -0
- package/integrations/vscode-copilot/README.md +9 -9
- package/integrations/warp/README.md +12 -0
- package/integrations/warp/manifest-target.json +3 -0
- package/integrations/windsurf/README.md +8 -9
- package/integrations/zed/README.md +12 -0
- package/integrations/zed/manifest-target.json +3 -0
- package/library/references/mcp-tools-reference/mcp-tools-reference.md +59 -15
- package/library/references/mcp-tools-reference/resource.yaml +1 -1
- package/library/references/summer-folder/resource.yaml +1 -1
- package/library/references/summer-folder/summer-folder.md +1 -1
- package/library/skills/3d-lighting/SKILL.md +1 -1
- package/library/skills/README.md +264 -0
- package/library/skills/adaptive-music/SKILL.md +1 -1
- package/library/skills/agent-playtesting/SKILL.md +1 -1
- package/library/skills/ai-characters-in-games/SKILL.md +220 -0
- package/library/skills/ai-characters-in-games/resource.yaml +30 -0
- package/library/skills/ambient-bed/SKILL.md +1 -1
- package/library/skills/animated-loop/SKILL.md +1 -1
- package/library/skills/animation-tree/SKILL.md +1 -1
- package/library/skills/art-direction/SKILL.md +1 -1
- package/library/skills/asset-strategy/SKILL.md +2 -1
- package/library/skills/asset-strategy/resource.yaml +2 -1
- package/library/skills/audio-direction/SKILL.md +1 -1
- package/library/skills/auto-fire-targeting/SKILL.md +1 -1
- package/library/skills/brainstorm-game/SKILL.md +1 -1
- package/library/skills/brainstorming/SKILL.md +1 -1
- package/library/skills/browse-templates/SKILL.md +3 -3
- package/library/skills/browse-templates/resource.yaml +1 -1
- package/library/skills/camera-rigs/SKILL.md +128 -0
- package/library/skills/camera-rigs/resource.yaml +29 -0
- package/library/skills/celeste-momentum-platforming/SKILL.md +1 -1
- package/library/skills/character-animation-wiring/SKILL.md +1 -1
- package/library/skills/character-model/SKILL.md +1 -1
- package/library/skills/character-movement/SKILL.md +326 -0
- package/library/skills/character-movement/references/default-third-person-controller.gd +201 -0
- package/library/skills/character-movement/references/default-third-person-verification-probe.gd +154 -0
- package/library/skills/character-movement/references/movement-3d.md +136 -0
- package/library/skills/character-movement/references/platformer-feel.md +83 -0
- package/library/skills/character-movement/resource.yaml +40 -0
- package/library/skills/character-portrait/SKILL.md +1 -1
- package/library/skills/cinematic-cutscene/SKILL.md +1 -1
- package/library/skills/combat-basics/SKILL.md +159 -0
- package/library/skills/combat-basics/references/projectiles-and-aoe.md +100 -0
- package/library/skills/combat-basics/resource.yaml +34 -0
- package/library/skills/concept-art/SKILL.md +1 -1
- package/library/skills/create-asset-sheet/SKILL.md +1 -1
- package/library/skills/debug/SKILL.md +1 -1
- package/library/skills/debugging-game-feel/SKILL.md +1 -1
- package/library/skills/design-level/SKILL.md +1 -1
- package/library/skills/design-mechanic/SKILL.md +1 -1
- package/library/skills/design-npc/SKILL.md +1 -1
- package/library/skills/diagnosing-perf-regressions/SKILL.md +1 -1
- package/library/skills/dispatching-parallel-agents/SKILL.md +1 -1
- package/library/skills/driving-the-editor-ui/SKILL.md +1 -1
- package/library/skills/environment-kit/SKILL.md +1 -1
- package/library/skills/export-and-ship/SKILL.md +1 -1
- package/library/skills/fabricating-assets/SKILL.md +1 -1
- package/library/skills/facial-and-lipsync/SKILL.md +1 -1
- package/library/skills/fps-controller/SKILL.md +9 -7
- package/library/skills/fps-controller/resource.yaml +4 -1
- package/library/skills/game-feel/SKILL.md +1 -1
- package/library/skills/gameskill/SKILL.md +1 -1
- package/library/skills/gdscript-patterns/SKILL.md +1 -1
- package/library/skills/generate-motion/SKILL.md +9 -9
- package/library/skills/generate-motion/resource.yaml +2 -1
- package/library/skills/godogen-visual-proof-game-generation/SKILL.md +1 -1
- package/library/skills/headless-scripting/SKILL.md +1 -1
- package/library/skills/in-game-purchases/SKILL.md +254 -0
- package/library/skills/in-game-purchases/resource.yaml +29 -0
- package/library/skills/instantiate-asset-pack/SKILL.md +1 -1
- package/library/skills/investigating-bugs/SKILL.md +1 -1
- package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +1 -1
- package/library/skills/make-game/SKILL.md +25 -3
- package/library/skills/make-game/references/2d-platformer-polish.md +93 -0
- package/library/skills/make-game/references/2d-platformer.md +117 -0
- package/library/skills/make-game/references/2d-rpg-content.md +234 -0
- package/library/skills/make-game/references/2d-rpg.md +241 -0
- package/library/skills/make-game/references/2d-survivors-progression.md +201 -0
- package/library/skills/make-game/references/2d-survivors.md +237 -0
- package/library/skills/make-game/references/3d-fps-systems.md +216 -0
- package/library/skills/make-game/references/3d-fps.md +177 -0
- package/library/skills/make-game/references/3d-horror-systems.md +186 -0
- package/library/skills/make-game/references/3d-horror.md +201 -0
- package/library/skills/make-game/references/3d-third-person-systems.md +220 -0
- package/library/skills/make-game/references/3d-third-person.md +215 -0
- package/library/skills/make-game/resource.yaml +6 -1
- package/library/skills/multiplayer/SKILL.md +150 -0
- package/library/skills/multiplayer/resource.yaml +33 -0
- package/library/skills/multiplayer-movement/SKILL.md +510 -0
- package/library/skills/multiplayer-movement/files.md +501 -0
- package/library/skills/multiplayer-movement/resource.yaml +30 -0
- package/library/skills/multiplayer-project/SKILL.md +521 -0
- package/library/skills/multiplayer-project/files.md +448 -0
- package/library/skills/multiplayer-project/resource.yaml +36 -0
- package/library/skills/multiplayer-publish/SKILL.md +229 -0
- package/library/skills/multiplayer-publish/export-errors.md +89 -0
- package/library/skills/multiplayer-publish/resource.yaml +28 -0
- package/library/skills/multiplayer-state/SKILL.md +438 -0
- package/library/skills/multiplayer-state/files.md +592 -0
- package/library/skills/multiplayer-state/resource.yaml +35 -0
- package/library/skills/multiplayer-testing/SKILL.md +236 -0
- package/library/skills/multiplayer-testing/resource.yaml +39 -0
- package/library/skills/music-track/SKILL.md +1 -1
- package/library/skills/navigate-summer/SKILL.md +1 -1
- package/library/skills/new-project/SKILL.md +1 -1
- package/library/skills/organic-model/SKILL.md +1 -1
- package/library/skills/pixel-art/SKILL.md +1 -1
- package/library/skills/play/SKILL.md +1 -1
- package/library/skills/playtesting-a-feature/SKILL.md +1 -1
- package/library/skills/procedural-animation/SKILL.md +2 -2
- package/library/skills/procedural-animation/resource.yaml +1 -1
- package/library/skills/prop-model/SKILL.md +1 -1
- package/library/skills/psx-retro-rendering/SKILL.md +1 -1
- package/library/skills/realtime-wet-surfaces/SKILL.md +2 -2
- package/library/skills/remote-deploy/SKILL.md +1 -1
- package/library/skills/retarget/SKILL.md +1 -1
- package/library/skills/running-in-the-cloud/SKILL.md +1 -1
- package/library/skills/save-load/SKILL.md +156 -0
- package/library/skills/save-load/resource.yaml +27 -0
- package/library/skills/scene-composition/SKILL.md +1 -1
- package/library/skills/scene-hierarchy-design/SKILL.md +1 -1
- package/library/skills/scene-scripting/SKILL.md +1 -1
- package/library/skills/scene-to-level/SKILL.md +1 -1
- package/library/skills/skill-create/SKILL.md +1 -1
- package/library/skills/skill-improve/SKILL.md +1 -1
- package/library/skills/skill-test/SKILL.md +1 -1
- package/library/skills/skintokens-auto-rigging/SKILL.md +1 -1
- package/library/skills/skybox-panorama/SKILL.md +1 -1
- package/library/skills/sound-effect/SKILL.md +1 -1
- package/library/skills/spatial-placement/SKILL.md +134 -3
- package/library/skills/spatial-placement/references/kit-placement-tools.md +364 -0
- package/library/skills/spatial-placement/resource.yaml +16 -2
- package/library/skills/sprite-sheet/SKILL.md +1 -1
- package/library/skills/summer-analytics/SKILL.md +147 -0
- package/library/skills/summer-analytics/resource.yaml +28 -0
- package/library/skills/summer-friends/SKILL.md +226 -0
- package/library/skills/summer-friends/resource.yaml +28 -0
- package/library/skills/summer-leaderboards/SKILL.md +231 -0
- package/library/skills/summer-leaderboards/resource.yaml +30 -0
- package/library/skills/summer-match-results/SKILL.md +286 -0
- package/library/skills/summer-match-results/resource.yaml +32 -0
- package/library/skills/summer-matchmaking/SKILL.md +301 -0
- package/library/skills/summer-matchmaking/resource.yaml +32 -0
- package/library/skills/summer-parties/SKILL.md +253 -0
- package/library/skills/summer-parties/resource.yaml +30 -0
- package/library/skills/summer-player-data/SKILL.md +322 -0
- package/library/skills/summer-player-data/resource.yaml +30 -0
- package/library/skills/summer-store/SKILL.md +271 -0
- package/library/skills/summer-store/resource.yaml +29 -0
- package/library/skills/summer-world-chat/SKILL.md +195 -0
- package/library/skills/summer-world-chat/resource.yaml +30 -0
- package/library/skills/summer-world-saves/SKILL.md +284 -0
- package/library/skills/summer-world-saves/resource.yaml +29 -0
- package/library/skills/text-to-motion/SKILL.md +99 -0
- package/library/skills/text-to-motion/prompts-and-controls.md +34 -0
- package/library/skills/text-to-motion/resource.yaml +41 -0
- package/library/skills/text-to-motion/rigging-for-text-motion.md +54 -0
- package/library/skills/tileable-texture/SKILL.md +1 -1
- package/library/skills/trailer-shot/SKILL.md +1 -1
- package/library/skills/tune-performance/SKILL.md +1 -1
- package/library/skills/ui-basics/SKILL.md +10 -1
- package/library/skills/ui-graphics/SKILL.md +1 -1
- package/library/skills/use-widget-asset/SKILL.md +1 -1
- package/library/skills/using-summer/SKILL.md +2 -2
- package/library/skills/using-summer/resource.yaml +2 -2
- package/library/skills/vehicle-model/SKILL.md +1 -1
- package/library/skills/verification-before-completion/SKILL.md +1 -1
- package/library/skills/verifying-scenes/SKILL.md +76 -2
- package/library/skills/verifying-scenes/resource.yaml +13 -2
- package/library/skills/vfx-dissolve/SKILL.md +1 -1
- package/library/skills/vfx-fire/SKILL.md +1 -1
- package/library/skills/vfx-hit-spark/SKILL.md +1 -1
- package/library/skills/vfx-lightning/SKILL.md +1 -1
- package/library/skills/vfx-magic-glow/SKILL.md +1 -1
- package/library/skills/vfx-muzzle-flash/SKILL.md +1 -1
- package/library/skills/vfx-smoke/SKILL.md +1 -1
- package/library/skills/vfx-water-ripple/SKILL.md +1 -1
- package/library/skills/voice-line/SKILL.md +1 -1
- package/library/skills/web-and-touch-input/SKILL.md +38 -0
- package/library/skills/web-and-touch-input/resource.yaml +28 -0
- package/library/skills/web-compatibility-look/SKILL.md +62 -0
- package/library/skills/web-compatibility-look/resource.yaml +30 -0
- package/library/skills/world-building-3d/SKILL.md +8 -1
- package/library/skills/world-building-3d/references/spatial-tools.md +1 -1
- package/library/skills/world-building-3d/resource.yaml +2 -1
- package/library/skills/writing-plans/SKILL.md +1 -1
- package/library/skills/writing-skills/SKILL.md +1 -1
- package/library/templates/3d-lan-multiplayer-starter/resource.yaml +2 -2
- package/library/tools/attach-to-surface/resource.yaml +142 -0
- package/library/tools/batch/resource.yaml +9 -3
- package/library/tools/connect-ports/resource.yaml +120 -0
- package/library/tools/connect-signal/resource.yaml +3 -2
- package/library/tools/debug-views/resource.yaml +94 -0
- package/library/tools/frame-nodes/resource.yaml +104 -0
- package/library/tools/frame-shot/resource.yaml +134 -0
- package/library/tools/generate-motion/resource.yaml +44 -9
- package/library/tools/get-board/resource.yaml +50 -0
- package/library/tools/get-project-context/resource.yaml +13 -2
- package/library/tools/grep/resource.yaml +77 -0
- package/library/tools/inspect-asset/resource.yaml +71 -0
- package/library/tools/inspect-node/resource.yaml +9 -2
- package/library/tools/inspect-resource/resource.yaml +16 -5
- package/library/tools/instantiate-scene/resource.yaml +27 -2
- package/library/tools/measure/resource.yaml +96 -0
- package/library/tools/place-adjacent/resource.yaml +113 -0
- package/library/tools/play/resource.yaml +15 -2
- package/library/tools/raycast/resource.yaml +101 -0
- package/library/tools/read-file/resource.yaml +36 -2
- package/library/tools/read-library/resource.yaml +2 -2
- package/library/tools/repeat-along/resource.yaml +129 -0
- package/library/tools/replace-node/resource.yaml +11 -5
- package/library/tools/scene-audit/resource.yaml +144 -0
- package/library/tools/screenshot/resource.yaml +13 -2
- package/library/tools/search-assets/resource.yaml +18 -0
- package/library/tools/shot-sheet/resource.yaml +110 -0
- package/library/tools/snap-to-surface/resource.yaml +4 -1
- package/library/tools/world-snapshot/resource.yaml +24 -3
- package/library/tools/zoom/resource.yaml +105 -0
- package/package.json +3 -3
- package/registry/generated/aliases.json +17 -3
- package/registry/generated/counts.json +3 -3
- package/registry/generated/gemini-extension.json +26 -4
- package/registry/generated/index.json +2154 -469
- package/registry/generated/marketplace.claude.json +2 -2
- package/registry/generated/plugin.claude.json +27 -5
- package/registry/generated/plugin.codex.json +28 -6
- package/registry/generated/plugin.cursor.json +27 -5
- package/registry/generated/plugin.factory.json +27 -5
- package/registry/generated/skills-index.md +264 -0
- package/registry/generated/skills-registry.json +901 -206
- package/registry/generated/templates-registry.json +2 -2
- package/library/skills/host-authoritative-state/SKILL.md +0 -332
- package/library/skills/host-authoritative-state/resource.yaml +0 -28
- package/library/skills/peer-to-peer-multiplayer/SKILL.md +0 -373
- package/library/skills/peer-to-peer-multiplayer/resource.yaml +0 -28
- package/library/skills/setup-multiplayer/SKILL.md +0 -336
- package/library/skills/setup-multiplayer/resource.yaml +0 -28
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Small, dependency-free 3D math for the placement tools (tool/place-adjacent,
|
|
3
|
+
* tool/attach-to-surface, tool/connect-ports, tool/repeat-along) and the
|
|
4
|
+
* Godot variant-string formatting they send through SetProp.
|
|
5
|
+
*
|
|
6
|
+
* Conventions:
|
|
7
|
+
* - A basis is three COLUMN vectors [x, y, z] (Godot's Basis.x/.y/.z).
|
|
8
|
+
* - A transform is { basis, origin } and maps local -> parent space.
|
|
9
|
+
* - "Scene space" is the scene root's frame, the same space GetWorldSnapshot
|
|
10
|
+
* and the placement scripts report; in the editor it equals world space.
|
|
11
|
+
* - Godot's Transform3D(...) string lists the basis ROW-major, then the origin
|
|
12
|
+
* (core/variant/variant_parser.cpp), so toGodotTransform transposes.
|
|
13
|
+
*/
|
|
14
|
+
export const AXIS_NAMES = ["+x", "-x", "+y", "-y", "+z", "-z"];
|
|
15
|
+
export const WORLD_AXES = ["x", "y", "z"];
|
|
16
|
+
export const add = (a, b) => [a[0] + b[0], a[1] + b[1], a[2] + b[2]];
|
|
17
|
+
export const sub = (a, b) => [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
|
|
18
|
+
export const scale = (a, s) => [a[0] * s, a[1] * s, a[2] * s];
|
|
19
|
+
export const dot = (a, b) => a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
|
|
20
|
+
export const cross = (a, b) => [
|
|
21
|
+
a[1] * b[2] - a[2] * b[1],
|
|
22
|
+
a[2] * b[0] - a[0] * b[2],
|
|
23
|
+
a[0] * b[1] - a[1] * b[0],
|
|
24
|
+
];
|
|
25
|
+
export const length = (a) => Math.hypot(a[0], a[1], a[2]);
|
|
26
|
+
export function normalize(a) {
|
|
27
|
+
const len = length(a);
|
|
28
|
+
if (!(len > 1e-12))
|
|
29
|
+
throw new Error("cannot normalize a zero-length vector");
|
|
30
|
+
return scale(a, 1 / len);
|
|
31
|
+
}
|
|
32
|
+
export function isFiniteVec3(value) {
|
|
33
|
+
return Array.isArray(value) && value.length === 3 && value.every((n) => typeof n === "number" && Number.isFinite(n));
|
|
34
|
+
}
|
|
35
|
+
export function axisIndex(axis) {
|
|
36
|
+
return axis === "x" ? 0 : axis === "y" ? 1 : 2;
|
|
37
|
+
}
|
|
38
|
+
/** Unit vector for a signed axis name such as "-z". */
|
|
39
|
+
export function signedAxisVector(axis) {
|
|
40
|
+
const sign = axis[0] === "-" ? -1 : 1;
|
|
41
|
+
const out = [0, 0, 0];
|
|
42
|
+
out[axisIndex(axis[1])] = sign;
|
|
43
|
+
return out;
|
|
44
|
+
}
|
|
45
|
+
export function sameAxisLine(a, b) {
|
|
46
|
+
return a[1] === b[1];
|
|
47
|
+
}
|
|
48
|
+
export const IDENTITY_BASIS = [
|
|
49
|
+
[1, 0, 0],
|
|
50
|
+
[0, 1, 0],
|
|
51
|
+
[0, 0, 1],
|
|
52
|
+
];
|
|
53
|
+
export function basisMulVec(b, v) {
|
|
54
|
+
return [
|
|
55
|
+
b[0][0] * v[0] + b[1][0] * v[1] + b[2][0] * v[2],
|
|
56
|
+
b[0][1] * v[0] + b[1][1] * v[1] + b[2][1] * v[2],
|
|
57
|
+
b[0][2] * v[0] + b[1][2] * v[1] + b[2][2] * v[2],
|
|
58
|
+
];
|
|
59
|
+
}
|
|
60
|
+
export function basisMul(a, b) {
|
|
61
|
+
return [basisMulVec(a, b[0]), basisMulVec(a, b[1]), basisMulVec(a, b[2])];
|
|
62
|
+
}
|
|
63
|
+
export function basisTranspose(b) {
|
|
64
|
+
return [
|
|
65
|
+
[b[0][0], b[1][0], b[2][0]],
|
|
66
|
+
[b[0][1], b[1][1], b[2][1]],
|
|
67
|
+
[b[0][2], b[1][2], b[2][2]],
|
|
68
|
+
];
|
|
69
|
+
}
|
|
70
|
+
export function basisDeterminant(b) {
|
|
71
|
+
return dot(b[0], cross(b[1], b[2]));
|
|
72
|
+
}
|
|
73
|
+
/** General 3x3 inverse (parents may carry non-uniform scale). */
|
|
74
|
+
export function basisInverse(b) {
|
|
75
|
+
const det = basisDeterminant(b);
|
|
76
|
+
if (!(Math.abs(det) > 1e-12))
|
|
77
|
+
throw new Error("basis is not invertible");
|
|
78
|
+
// Rows of the inverse are the cross products of the columns, divided by det.
|
|
79
|
+
const r0 = scale(cross(b[1], b[2]), 1 / det);
|
|
80
|
+
const r1 = scale(cross(b[2], b[0]), 1 / det);
|
|
81
|
+
const r2 = scale(cross(b[0], b[1]), 1 / det);
|
|
82
|
+
return basisTranspose([r0, r1, r2]);
|
|
83
|
+
}
|
|
84
|
+
export function xformMulPoint(t, p) {
|
|
85
|
+
return add(basisMulVec(t.basis, p), t.origin);
|
|
86
|
+
}
|
|
87
|
+
export function xformCompose(a, b) {
|
|
88
|
+
return { basis: basisMul(a.basis, b.basis), origin: xformMulPoint(a, b.origin) };
|
|
89
|
+
}
|
|
90
|
+
export function xformInverse(t) {
|
|
91
|
+
const inv = basisInverse(t.basis);
|
|
92
|
+
return { basis: inv, origin: scale(basisMulVec(inv, t.origin), -1) };
|
|
93
|
+
}
|
|
94
|
+
/** 12 numbers, basis columns then origin (the placement scripts' wire form). */
|
|
95
|
+
export function xformFromArray(values) {
|
|
96
|
+
if (!Array.isArray(values) || values.length !== 12 || !values.every((n) => typeof n === "number" && Number.isFinite(n))) {
|
|
97
|
+
throw new Error("expected a 12-number transform array");
|
|
98
|
+
}
|
|
99
|
+
const v = values;
|
|
100
|
+
return {
|
|
101
|
+
basis: [
|
|
102
|
+
[v[0], v[1], v[2]],
|
|
103
|
+
[v[3], v[4], v[5]],
|
|
104
|
+
[v[6], v[7], v[8]],
|
|
105
|
+
],
|
|
106
|
+
origin: [v[9], v[10], v[11]],
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/** Column lengths: the per-axis scale a basis applies. */
|
|
110
|
+
export function basisScale(b) {
|
|
111
|
+
return [length(b[0]), length(b[1]), length(b[2])];
|
|
112
|
+
}
|
|
113
|
+
/** Rotation by `angle` radians about unit `axis` (Rodrigues). */
|
|
114
|
+
export function rotationAbout(axis, angle) {
|
|
115
|
+
const [x, y, z] = normalize(axis);
|
|
116
|
+
const c = Math.cos(angle);
|
|
117
|
+
const s = Math.sin(angle);
|
|
118
|
+
const t = 1 - c;
|
|
119
|
+
// Columns of the rotation matrix.
|
|
120
|
+
return [
|
|
121
|
+
[t * x * x + c, t * x * y + s * z, t * x * z - s * y],
|
|
122
|
+
[t * x * y - s * z, t * y * y + c, t * y * z + s * x],
|
|
123
|
+
[t * x * z + s * y, t * y * z - s * x, t * z * z + c],
|
|
124
|
+
];
|
|
125
|
+
}
|
|
126
|
+
/** Shortest-arc rotation taking unit `from` onto unit `to`. For opposite
|
|
127
|
+
* vectors the half-turn axis is `fallbackAxis` made perpendicular to `from`. */
|
|
128
|
+
export function rotationBetween(from, to, fallbackAxis = [0, 1, 0]) {
|
|
129
|
+
const f = normalize(from);
|
|
130
|
+
const t = normalize(to);
|
|
131
|
+
const c = Math.max(-1, Math.min(1, dot(f, t)));
|
|
132
|
+
const axis = cross(f, t);
|
|
133
|
+
const axisLength = length(axis);
|
|
134
|
+
if (axisLength < 1e-9) {
|
|
135
|
+
if (c > 0)
|
|
136
|
+
return IDENTITY_BASIS;
|
|
137
|
+
let perpendicular = sub(fallbackAxis, scale(f, dot(fallbackAxis, f)));
|
|
138
|
+
if (length(perpendicular) < 1e-6) {
|
|
139
|
+
const other = Math.abs(f[0]) < 0.9 ? [1, 0, 0] : [0, 0, 1];
|
|
140
|
+
perpendicular = sub(other, scale(f, dot(other, f)));
|
|
141
|
+
}
|
|
142
|
+
return rotationAbout(perpendicular, Math.PI);
|
|
143
|
+
}
|
|
144
|
+
return rotationAbout(scale(axis, 1 / axisLength), Math.atan2(axisLength, c));
|
|
145
|
+
}
|
|
146
|
+
/** The rotation mapping local frame (a, b, a x b) onto world frame (A, B, A x B).
|
|
147
|
+
* a/b and A/B must each be orthonormal pairs. */
|
|
148
|
+
export function rotationFromFrames(localA, localB, worldA, worldB) {
|
|
149
|
+
const local = [localA, localB, cross(localA, localB)];
|
|
150
|
+
const world = [worldA, worldB, cross(worldA, worldB)];
|
|
151
|
+
return basisMul(world, basisTranspose(local));
|
|
152
|
+
}
|
|
153
|
+
/** Angle in degrees between two directions. */
|
|
154
|
+
export function angleDegrees(a, b) {
|
|
155
|
+
const c = dot(normalize(a), normalize(b));
|
|
156
|
+
return (Math.acos(Math.max(-1, Math.min(1, c))) * 180) / Math.PI;
|
|
157
|
+
}
|
|
158
|
+
/** Round for model-visible output (millimetres by default). */
|
|
159
|
+
export function round(value, digits = 3) {
|
|
160
|
+
const factor = 10 ** digits;
|
|
161
|
+
const rounded = Math.round(value * factor) / factor;
|
|
162
|
+
return Object.is(rounded, -0) ? 0 : rounded;
|
|
163
|
+
}
|
|
164
|
+
export function roundVec(v, digits = 3) {
|
|
165
|
+
return [round(v[0], digits), round(v[1], digits), round(v[2], digits)];
|
|
166
|
+
}
|
|
167
|
+
/** A number in Godot variant-string form: fixed-point, never exponent notation. */
|
|
168
|
+
export function godotNumber(value) {
|
|
169
|
+
if (!Number.isFinite(value))
|
|
170
|
+
throw new Error("non-finite number in a variant string");
|
|
171
|
+
const fixed = value.toFixed(6).replace(/\.?0+$/, "");
|
|
172
|
+
return fixed === "-0" || fixed === "" ? "0" : fixed;
|
|
173
|
+
}
|
|
174
|
+
export function toGodotVector3(v) {
|
|
175
|
+
return `Vector3(${v.map(godotNumber).join(", ")})`;
|
|
176
|
+
}
|
|
177
|
+
export function toGodotTransform(t) {
|
|
178
|
+
const [x, y, z] = t.basis;
|
|
179
|
+
const rows = [x[0], y[0], z[0], x[1], y[1], z[1], x[2], y[2], z[2]];
|
|
180
|
+
return `Transform3D(${[...rows, ...t.origin].map(godotNumber).join(", ")})`;
|
|
181
|
+
}
|
|
182
|
+
const NUMBER = String.raw `[-+]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?`;
|
|
183
|
+
const VECTOR3_STRING = new RegExp(String.raw `^\s*Vector3\(\s*(${NUMBER})\s*,\s*(${NUMBER})\s*,\s*(${NUMBER})\s*\)\s*$`);
|
|
184
|
+
const TRANSFORM3D_STRING = new RegExp(String.raw `^\s*Transform3D\(\s*(${NUMBER}(?:\s*,\s*${NUMBER}){11})\s*\)\s*$`);
|
|
185
|
+
/** Parse "Vector3(x, y, z)" into numbers, or null when it is not one. */
|
|
186
|
+
export function parseGodotVector3(value) {
|
|
187
|
+
const match = VECTOR3_STRING.exec(value);
|
|
188
|
+
if (!match)
|
|
189
|
+
return null;
|
|
190
|
+
const out = [Number(match[1]), Number(match[2]), Number(match[3])];
|
|
191
|
+
return out.every(Number.isFinite) ? out : null;
|
|
192
|
+
}
|
|
193
|
+
/** Parse "Transform3D(<12 numbers>)" (Godot row-major basis, then origin). */
|
|
194
|
+
export function parseGodotTransform(value) {
|
|
195
|
+
const match = TRANSFORM3D_STRING.exec(value);
|
|
196
|
+
if (!match)
|
|
197
|
+
return null;
|
|
198
|
+
const n = match[1].split(",").map((part) => Number(part.trim()));
|
|
199
|
+
if (n.length !== 12 || !n.every(Number.isFinite))
|
|
200
|
+
return null;
|
|
201
|
+
return {
|
|
202
|
+
basis: [
|
|
203
|
+
[n[0], n[3], n[6]],
|
|
204
|
+
[n[1], n[4], n[7]],
|
|
205
|
+
[n[2], n[5], n[8]],
|
|
206
|
+
],
|
|
207
|
+
origin: [n[9], n[10], n[11]],
|
|
208
|
+
};
|
|
209
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The measurement probe behind the placement tools. ONE GDScript, sent through
|
|
3
|
+
* the existing RunSceneScript op (summer_run_script's op: in-process, on the
|
|
4
|
+
* live editor's main thread, no child editor is spawned), with a JSON argument
|
|
5
|
+
* block selecting the command. It only READS: it never adds, moves, or frees a
|
|
6
|
+
* node of an open scene. Mutations are sent afterwards as ordinary SetProp /
|
|
7
|
+
* SnapToSurface / InstantiateScene ops so they get the scene-target, undo and
|
|
8
|
+
* save contract every other scene tool has.
|
|
9
|
+
*
|
|
10
|
+
* Commands:
|
|
11
|
+
* inspect_asset load a .tscn/.glb/.gltf/Mesh, instantiate it OFF the scene
|
|
12
|
+
* tree, measure (AABB, meshes, planar faces, open boundary
|
|
13
|
+
* loops, Marker3D anchors, collision shapes), free it.
|
|
14
|
+
* bounds visible-geometry extents of nodes along three directions
|
|
15
|
+
* (world axes or a node's local axes), plus transforms.
|
|
16
|
+
* raycast physics ray (active scene only) and a visual-AABB ray.
|
|
17
|
+
* ports resolve Marker3D ports (optionally with the subject's
|
|
18
|
+
* other markers), or return every open loop of the node in
|
|
19
|
+
* its own frame for placement.ts to order and pick from.
|
|
20
|
+
* blockers what a node overlaps where it stands and what it would
|
|
21
|
+
* touch first moving along a direction.
|
|
22
|
+
* multi run several of the scene commands above in one call.
|
|
23
|
+
*
|
|
24
|
+
* "Scene space" = the scene root's frame, accumulated by hand from
|
|
25
|
+
* Node3D.transform (the same walk GetWorldSnapshot uses), so it works for an
|
|
26
|
+
* open scene tab that is not the active one. Physics needs the active tab:
|
|
27
|
+
* only that scene's bodies are in the editor's physics space.
|
|
28
|
+
*/
|
|
29
|
+
export declare const PLACEMENT_SCRIPT_BUDGET_SECONDS = 20;
|
|
30
|
+
/** Placeholder for the argument literal; appears exactly once in the source. */
|
|
31
|
+
export declare const PLACEMENT_ARGS_TOKEN = "__SUMMER_PLACEMENT_ARGS__";
|
|
32
|
+
/**
|
|
33
|
+
* Encode the arguments as base64 of their UTF-8 JSON. No caller text is ever
|
|
34
|
+
* interpolated into the GDScript: node paths and port names can come from
|
|
35
|
+
* scene content, so they are data the script decodes (Marshalls.base64_to_utf8
|
|
36
|
+
* + JSON.parse_string), never source it compiles. The base64 alphabet cannot
|
|
37
|
+
* close the string literal or start a statement.
|
|
38
|
+
*/
|
|
39
|
+
export declare function encodeScriptArgs(args: Record<string, unknown>): string;
|
|
40
|
+
export declare function buildPlacementScript(args: Record<string, unknown>): string;
|
|
41
|
+
/** The probe source with its placeholder, for tests. */
|
|
42
|
+
export declare function placementProbeTemplate(): string;
|