summer-engine 2.8.2 → 3.1.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 +27 -7
- package/.claude-plugin/plugin.json +99 -83
- package/.codex-plugin/plugin.json +112 -82
- package/.cursor-plugin/plugin.json +119 -83
- package/.factory-plugin/plugin.json +100 -3
- package/.mcp.json +6 -1
- package/.opencode/INSTALL.md +7 -4
- package/.opencode/plugins/summer.js +31 -18
- package/AGENTS.md +107 -34
- package/CHANGELOG.md +149 -44
- package/CLAUDE.md +4 -2
- package/GEMINI.md +7 -53
- package/NOTICE +31 -0
- package/README.md +161 -393
- package/assets/api-docs.json.gz +0 -0
- package/assets/autopilot/README.md +20 -6
- package/assets/autopilot/autopilot.gd +80 -26
- package/assets/autopilot/run.sh +132 -7
- package/assets/navigation/web-routes.json +719 -0
- package/commands/gameskill.md +10 -108
- package/commands/summer.md +72 -4
- package/dist/bin/summer.js +6 -87
- package/dist/cli/banner.d.ts +1 -0
- package/dist/cli/banner.js +33 -0
- package/dist/{commands → cli/commands}/config.js +1 -1
- package/dist/cli/commands/create.d.ts +30 -0
- package/dist/cli/commands/create.js +212 -0
- package/dist/{commands → cli/commands}/debug.js +2 -2
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.js +18 -0
- package/dist/cli/commands/events.d.ts +57 -0
- package/dist/cli/commands/events.js +158 -0
- package/dist/cli/commands/install.d.ts +50 -0
- package/dist/cli/commands/install.js +447 -0
- package/dist/cli/commands/list.js +72 -0
- package/dist/{commands → cli/commands}/login.js +33 -17
- package/dist/{commands → cli/commands}/logout.d.ts +1 -0
- package/dist/cli/commands/logout.js +19 -0
- package/dist/{commands → cli/commands}/memory.d.ts +1 -8
- package/dist/{commands → cli/commands}/memory.js +20 -11
- package/dist/cli/commands/open.d.ts +45 -0
- package/dist/cli/commands/open.js +216 -0
- package/dist/{commands → cli/commands}/plan.js +2 -2
- package/dist/{commands → cli/commands}/publish.js +1 -1
- package/dist/{commands → cli/commands}/releases.js +1 -1
- package/dist/cli/commands/run.d.ts +19 -0
- package/dist/cli/commands/run.js +255 -0
- package/dist/cli/commands/setup.js +158 -0
- package/dist/{commands → cli/commands}/skills.js +121 -251
- package/dist/{commands → cli/commands}/status.d.ts +1 -0
- package/dist/cli/commands/status.js +62 -0
- package/dist/cli/commands/tool.d.ts +11 -0
- package/dist/cli/commands/tool.js +121 -0
- package/dist/cli/index.d.ts +6 -0
- package/dist/cli/index.js +89 -0
- package/dist/cli/root-action.d.ts +7 -0
- package/dist/cli/root-action.js +15 -0
- package/dist/{lib → core}/api-client.d.ts +106 -15
- package/dist/{lib → core}/api-client.js +267 -75
- package/dist/{lib → core}/async-op-lifecycle.d.ts +3 -4
- package/dist/{lib → core}/async-op-lifecycle.js +3 -4
- package/dist/{lib → core}/auth.d.ts +14 -6
- package/dist/{lib → core}/auth.js +56 -40
- package/dist/core/capabilities/agent-playbook.d.ts +20 -0
- package/dist/core/capabilities/agent-playbook.js +218 -0
- package/dist/core/capabilities/api-docs.d.ts +36 -0
- package/dist/core/capabilities/api-docs.js +118 -0
- package/dist/core/capabilities/asset-import.d.ts +49 -0
- package/dist/core/capabilities/asset-import.js +134 -0
- package/dist/core/capabilities/camera-view.d.ts +98 -0
- package/dist/core/capabilities/camera-view.js +222 -0
- package/dist/core/capabilities/capture.d.ts +63 -0
- package/dist/core/capabilities/capture.js +67 -0
- package/dist/core/capabilities/console-read.d.ts +17 -0
- package/dist/core/capabilities/console-read.js +21 -0
- package/dist/{lib → core/capabilities}/creator.d.ts +1 -29
- package/dist/{lib → core/capabilities}/creator.js +14 -33
- package/dist/{lib → core/capabilities}/debug-report.d.ts +1 -1
- package/dist/{lib → core/capabilities}/debug-report.js +12 -31
- package/dist/{commands → core/capabilities}/doctor.d.ts +7 -2
- package/dist/{commands → core/capabilities}/doctor.js +47 -73
- package/dist/core/capabilities/engine-fallbacks.d.ts +26 -0
- package/dist/core/capabilities/engine-fallbacks.js +36 -0
- package/dist/core/capabilities/engine-ops.d.ts +33 -0
- package/dist/core/capabilities/engine-ops.js +145 -0
- package/dist/core/capabilities/engine-receipt.d.ts +53 -0
- package/dist/core/capabilities/engine-receipt.js +134 -0
- package/dist/core/capabilities/events.d.ts +200 -0
- package/dist/core/capabilities/events.js +383 -0
- package/dist/core/capabilities/fabricate-mesh.d.ts +111 -0
- package/dist/core/capabilities/fabricate-mesh.js +165 -0
- package/dist/core/capabilities/frame-quality.d.ts +71 -0
- package/dist/core/capabilities/frame-quality.js +449 -0
- package/dist/core/capabilities/game-task-plan.d.ts +66 -0
- package/dist/{lib → core/capabilities}/game-task-plan.js +59 -8
- package/dist/core/capabilities/hdri-import.d.ts +90 -0
- package/dist/core/capabilities/hdri-import.js +250 -0
- package/dist/core/capabilities/image-generation.d.ts +24 -0
- package/dist/core/capabilities/image-generation.js +22 -0
- package/dist/core/capabilities/navigation/open.d.ts +156 -0
- package/dist/core/capabilities/navigation/open.js +567 -0
- package/dist/core/capabilities/navigation/render-product-map.d.ts +1 -0
- package/dist/core/capabilities/navigation/render-product-map.js +84 -0
- package/dist/core/capabilities/navigation/targets.d.ts +87 -0
- package/dist/core/capabilities/navigation/targets.js +250 -0
- package/dist/core/capabilities/play-determinism.d.ts +35 -0
- package/dist/core/capabilities/play-determinism.js +86 -0
- package/dist/core/capabilities/project-context.d.ts +114 -0
- package/dist/core/capabilities/project-context.js +249 -0
- package/dist/core/capabilities/runtime-control.d.ts +540 -0
- package/dist/core/capabilities/runtime-control.js +1011 -0
- package/dist/core/capabilities/scene-kind.d.ts +19 -0
- package/dist/core/capabilities/scene-kind.js +137 -0
- package/dist/core/capabilities/scene-script.d.ts +38 -0
- package/dist/core/capabilities/scene-script.js +45 -0
- package/dist/core/capabilities/tool-dispatch.d.ts +42 -0
- package/dist/core/capabilities/tool-dispatch.js +1490 -0
- package/dist/core/capabilities/ui-control.d.ts +179 -0
- package/dist/core/capabilities/ui-control.js +423 -0
- package/dist/core/capabilities/variant-types.d.ts +22 -0
- package/dist/core/capabilities/variant-types.js +101 -0
- package/dist/core/capability-skew.d.ts +205 -0
- package/dist/core/capability-skew.js +386 -0
- package/dist/{lib → core}/config.d.ts +11 -1
- package/dist/{lib → core}/config.js +13 -2
- package/dist/core/embeddings.d.ts +78 -0
- package/dist/core/embeddings.js +166 -0
- package/dist/core/engine-install.d.ts +105 -0
- package/dist/core/engine-install.js +190 -0
- package/dist/core/engine.d.ts +94 -0
- package/dist/{lib → core}/engine.js +74 -28
- package/dist/core/feedback/client.d.ts +88 -0
- package/dist/core/feedback/client.js +182 -0
- package/dist/{lib → core}/format.d.ts +0 -1
- package/dist/{lib → core}/format.js +1 -1
- package/dist/core/headless/connection.d.ts +86 -0
- package/dist/core/headless/connection.js +97 -0
- package/dist/core/headless/editor-connection.d.ts +26 -0
- package/dist/core/headless/editor-connection.js +81 -0
- package/dist/core/headless/mcp-routing.d.ts +38 -0
- package/dist/core/headless/mcp-routing.js +83 -0
- package/dist/core/headless/registry.d.ts +91 -0
- package/dist/core/headless/registry.js +226 -0
- package/dist/core/headless/resolve.d.ts +46 -0
- package/dist/core/headless/resolve.js +75 -0
- package/dist/core/headless/spawn.d.ts +46 -0
- package/dist/core/headless/spawn.js +205 -0
- package/dist/core/headless/worker-connection.d.ts +96 -0
- package/dist/core/headless/worker-connection.js +353 -0
- package/dist/core/headless/worker-engine-client.d.ts +58 -0
- package/dist/core/headless/worker-engine-client.js +246 -0
- package/dist/core/launch-posture.d.ts +170 -0
- package/dist/core/launch-posture.js +317 -0
- package/dist/core/library-read.d.ts +73 -0
- package/dist/core/library-read.js +279 -0
- package/dist/core/library-search.d.ts +143 -0
- package/dist/core/library-search.js +301 -0
- package/dist/{lib → core}/log-filters.js +4 -2
- package/dist/{lib → core}/mcp-log.js +2 -17
- package/dist/core/package-root.d.ts +9 -0
- package/dist/core/package-root.js +11 -0
- package/dist/core/redact.d.ts +20 -0
- package/dist/core/redact.js +64 -0
- package/dist/core/registry-search.d.ts +167 -0
- package/dist/core/registry-search.js +358 -0
- package/dist/core/skills-registry.d.ts +55 -0
- package/dist/core/skills-registry.js +106 -0
- package/dist/{lib → core}/store.js +11 -7
- package/dist/{lib → core}/summer-compatibility.js +3 -3
- package/dist/{lib → core}/telemetry.js +5 -2
- package/dist/core/templates.d.ts +98 -0
- package/dist/core/templates.js +241 -0
- package/dist/core/tool-errors.d.ts +30 -0
- package/dist/core/tool-errors.js +40 -0
- package/dist/core/trajectory.d.ts +80 -0
- package/dist/core/trajectory.js +307 -0
- package/dist/core/util/http.d.ts +13 -0
- package/dist/core/util/http.js +28 -0
- package/dist/core/util/json.d.ts +12 -0
- package/dist/core/util/json.js +21 -0
- package/dist/core/util/process.d.ts +3 -0
- package/dist/core/util/process.js +13 -0
- package/dist/core/util/sleep.d.ts +1 -0
- package/dist/core/util/sleep.js +3 -0
- package/dist/core/version.d.ts +3 -0
- package/dist/core/version.js +5 -0
- package/dist/installer/agent-config.d.ts +63 -0
- package/dist/installer/agent-config.js +540 -0
- package/dist/installer/agent-table.d.ts +103 -0
- package/dist/installer/agent-table.js +584 -0
- package/dist/installer/legacy-skills.d.ts +26 -0
- package/dist/installer/legacy-skills.js +53 -0
- package/dist/installer/setup.d.ts +76 -0
- package/dist/installer/setup.js +148 -0
- package/dist/installer/skill-locations.d.ts +36 -0
- package/dist/installer/skill-locations.js +91 -0
- package/dist/installer/version-check.d.ts +178 -0
- package/dist/installer/version-check.js +479 -0
- package/dist/{lib/mcp-boot-notice.d.ts → mcp/boot-notice.d.ts} +1 -1
- package/dist/{commands/mcp.js → mcp/command.js} +18 -6
- package/dist/mcp/server.d.ts +23 -3
- package/dist/mcp/server.js +122 -28
- package/dist/mcp/tools/asset-tools.js +62 -142
- package/dist/mcp/tools/creator-tools.js +5 -23
- package/dist/mcp/tools/debug-tools.js +61 -18
- package/dist/mcp/tools/event-tools.d.ts +14 -0
- package/dist/mcp/tools/event-tools.js +41 -0
- package/dist/mcp/tools/fabricate-tools.d.ts +2 -0
- package/dist/mcp/tools/fabricate-tools.js +28 -0
- package/dist/mcp/tools/feedback-tools.d.ts +77 -0
- package/dist/mcp/tools/feedback-tools.js +88 -0
- package/dist/mcp/tools/file-tools.js +6 -53
- package/dist/mcp/tools/generate-tools.js +37 -63
- package/dist/mcp/tools/library-tools.d.ts +11 -0
- package/dist/mcp/tools/library-tools.js +42 -0
- package/dist/mcp/tools/navigation-tools.d.ts +7 -0
- package/dist/mcp/tools/navigation-tools.js +37 -0
- package/dist/mcp/tools/perception-tools.d.ts +20 -0
- package/dist/mcp/tools/perception-tools.js +146 -0
- package/dist/mcp/tools/project-tools.d.ts +14 -0
- package/dist/mcp/tools/project-tools.js +72 -281
- package/dist/mcp/tools/runtime-tools.d.ts +2 -0
- package/dist/mcp/tools/runtime-tools.js +92 -0
- package/dist/mcp/tools/scene-tools.d.ts +3 -0
- package/dist/mcp/tools/scene-tools.js +68 -119
- package/dist/mcp/tools/script-tools.d.ts +3 -0
- package/dist/mcp/tools/script-tools.js +118 -0
- package/dist/mcp/tools/spatial-tools.d.ts +2 -0
- package/dist/mcp/tools/spatial-tools.js +485 -0
- package/dist/mcp/tools/text-json.d.ts +8 -0
- package/dist/mcp/tools/text-json.js +12 -0
- package/dist/mcp/tools/{cloud-tools.d.ts → ui-tools.d.ts} +1 -1
- package/dist/mcp/tools/ui-tools.js +82 -0
- package/dist/mcp/tools/visual-tools.d.ts +2 -7
- package/dist/mcp/tools/visual-tools.js +383 -101
- package/dist/mcp/tools/with-engine.d.ts +9 -15
- package/dist/mcp/tools/with-engine.js +60 -96
- package/dist/project-memory/project-manifest.d.ts +36 -0
- package/dist/project-memory/project-manifest.js +50 -0
- package/dist/project-memory/project-memory.d.ts +57 -0
- package/dist/{lib → project-memory}/project-memory.js +46 -0
- package/gemini-extension.json +103 -2
- package/hooks/hooks-cursor.json +2 -2
- package/hooks/hooks.json +2 -1
- package/hooks/pre-commit-doctor.sh +45 -39
- package/hooks/run-hook.cmd +30 -23
- package/hooks/run-hook.sh +20 -0
- package/hooks/session-start.sh +18 -7
- package/integrations/README.md +99 -0
- 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/README.md +19 -0
- package/integrations/claude/manifest-target.json +16 -0
- package/integrations/claude-desktop/README.md +12 -0
- package/integrations/claude-desktop/manifest-target.json +3 -0
- package/integrations/cline/README.md +12 -0
- package/integrations/cline/manifest-target.json +3 -0
- package/integrations/cline-cli/README.md +12 -0
- package/integrations/cline-cli/manifest-target.json +3 -0
- package/integrations/codex/README.md +15 -0
- package/integrations/codex/manifest-target.json +5 -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/cursor/README.md +16 -0
- package/integrations/cursor/manifest-target.json +5 -0
- package/integrations/factory/README.md +26 -0
- package/integrations/factory/manifest-target.json +5 -0
- package/integrations/gemini/README.md +26 -0
- package/integrations/gemini/manifest-target.json +5 -0
- package/integrations/github-copilot/README.md +12 -0
- package/integrations/github-copilot/manifest-target.json +3 -0
- 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 +12 -0
- package/integrations/kilo-code/manifest-target.json +3 -0
- 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 +12 -0
- package/integrations/lm-studio/manifest-target.json +3 -0
- package/integrations/mistral-vibe/README.md +12 -0
- package/integrations/mistral-vibe/manifest-target.json +3 -0
- package/integrations/opencode/README.md +12 -0
- package/integrations/opencode/manifest-target.json +3 -0
- 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 +14 -0
- package/integrations/roo-code/manifest-target.json +3 -0
- 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 +12 -0
- package/integrations/vscode-copilot/manifest-target.json +3 -0
- package/integrations/warp/README.md +12 -0
- package/integrations/warp/manifest-target.json +3 -0
- package/integrations/windsurf/README.md +12 -0
- package/integrations/windsurf/manifest-target.json +3 -0
- package/integrations/zed/README.md +12 -0
- package/integrations/zed/manifest-target.json +3 -0
- package/library/references/collaborative-protocol/resource.yaml +24 -0
- package/library/references/gd-style/resource.yaml +24 -0
- package/{references → library/references/godot-version}/godot-version.md +6 -6
- package/library/references/godot-version/resource.yaml +22 -0
- package/library/references/headless-routing/headless-routing.md +46 -0
- package/library/references/headless-routing/resource.yaml +24 -0
- package/library/references/mcp-fresh-chat-playbook/mcp-fresh-chat-playbook.md +49 -0
- package/library/references/mcp-fresh-chat-playbook/resource.yaml +23 -0
- package/library/references/mcp-tools-reference/mcp-tools-reference.md +271 -0
- package/library/references/mcp-tools-reference/resource.yaml +17 -0
- package/library/references/product-map/product-map.md +103 -0
- package/library/references/product-map/resource.yaml +33 -0
- package/{references → library/references/public-surface-language}/public-surface-language.md +5 -7
- package/library/references/public-surface-language/resource.yaml +17 -0
- package/library/references/summer-folder/resource.yaml +20 -0
- package/{references → library/references/summer-folder}/summer-folder.md +22 -21
- package/{skills/rendering-and-lighting → library/skills}/3d-lighting/SKILL.md +15 -11
- package/library/skills/3d-lighting/resource.yaml +27 -0
- package/library/skills/README.md +242 -0
- package/{skills/audio → library/skills}/adaptive-music/SKILL.md +1 -1
- package/library/skills/adaptive-music/resource.yaml +28 -0
- package/library/skills/agent-playtesting/SKILL.md +148 -0
- package/library/skills/agent-playtesting/resource.yaml +52 -0
- package/library/skills/ambient-bed/resource.yaml +24 -0
- package/{skills/video → library/skills}/animated-loop/SKILL.md +1 -1
- package/library/skills/animated-loop/resource.yaml +27 -0
- package/{skills/animation → library/skills}/animation-tree/SKILL.md +29 -14
- package/library/skills/animation-tree/resource.yaml +33 -0
- package/{skills/rendering-and-lighting → library/skills}/art-direction/SKILL.md +3 -3
- package/library/skills/art-direction/resource.yaml +29 -0
- package/{skills/asset-pipeline → library/skills}/asset-strategy/SKILL.md +44 -44
- package/library/skills/asset-strategy/resource.yaml +63 -0
- package/{skills/audio → library/skills}/audio-direction/SKILL.md +7 -7
- package/library/skills/audio-direction/resource.yaml +32 -0
- package/library/skills/auto-fire-targeting/resource.yaml +22 -0
- package/{skills/scene-and-project → library/skills}/brainstorm-game/SKILL.md +8 -8
- package/library/skills/brainstorm-game/resource.yaml +30 -0
- package/{skills/workflow → library/skills}/brainstorming/SKILL.md +2 -22
- package/library/skills/brainstorming/resource.yaml +23 -0
- package/{skills/workflow → library/skills}/brainstorming/spec-document-reviewer-prompt.md +1 -1
- package/{skills/scene-and-project → library/skills}/browse-templates/SKILL.md +18 -18
- package/library/skills/browse-templates/resource.yaml +23 -0
- package/library/skills/celeste-momentum-platforming/SKILL.md +366 -0
- package/library/skills/celeste-momentum-platforming/resource.yaml +33 -0
- package/library/skills/character-animation-wiring/SKILL.md +249 -0
- package/library/skills/character-animation-wiring/resource.yaml +39 -0
- package/{skills/3d-assets → library/skills}/character-model/SKILL.md +25 -25
- package/library/skills/character-model/resource.yaml +36 -0
- package/{skills/2d-assets → library/skills}/character-portrait/SKILL.md +14 -14
- package/library/skills/character-portrait/resource.yaml +30 -0
- package/{skills/video → library/skills}/cinematic-cutscene/SKILL.md +2 -2
- package/library/skills/cinematic-cutscene/resource.yaml +29 -0
- package/{skills/2d-assets → library/skills}/concept-art/SKILL.md +15 -15
- package/library/skills/concept-art/resource.yaml +34 -0
- package/{skills/2d-assets → library/skills}/create-asset-sheet/SKILL.md +8 -8
- package/library/skills/create-asset-sheet/resource.yaml +33 -0
- package/{skills/debugging → library/skills}/debug/SKILL.md +3 -3
- package/library/skills/debug/resource.yaml +31 -0
- package/{skills/workflow → library/skills}/debugging-game-feel/SKILL.md +11 -11
- package/library/skills/debugging-game-feel/resource.yaml +25 -0
- package/{skills/level-design → library/skills}/design-level/SKILL.md +6 -6
- package/library/skills/design-level/resource.yaml +31 -0
- package/{skills/gameplay-mechanics → library/skills}/design-mechanic/SKILL.md +3 -3
- package/library/skills/design-mechanic/resource.yaml +31 -0
- package/{skills/ai-and-npcs → library/skills}/design-npc/SKILL.md +7 -3
- package/library/skills/design-npc/resource.yaml +29 -0
- package/{skills/workflow → library/skills}/diagnosing-perf-regressions/SKILL.md +10 -10
- package/library/skills/diagnosing-perf-regressions/resource.yaml +25 -0
- package/{skills/workflow → library/skills}/dispatching-parallel-agents/SKILL.md +8 -8
- package/library/skills/dispatching-parallel-agents/resource.yaml +23 -0
- package/library/skills/driving-the-editor-ui/SKILL.md +85 -0
- package/library/skills/driving-the-editor-ui/resource.yaml +46 -0
- package/{skills/3d-assets → library/skills}/environment-kit/SKILL.md +11 -11
- package/library/skills/environment-kit/resource.yaml +29 -0
- package/{skills/deployment → library/skills}/export-and-ship/SKILL.md +5 -5
- package/library/skills/export-and-ship/resource.yaml +32 -0
- package/library/skills/fabricating-assets/SKILL.md +195 -0
- package/library/skills/fabricating-assets/resource.yaml +52 -0
- package/{skills/animation → library/skills}/facial-and-lipsync/SKILL.md +23 -11
- package/library/skills/facial-and-lipsync/resource.yaml +36 -0
- package/{skills/character-controllers → library/skills}/fps-controller/SKILL.md +8 -4
- package/library/skills/fps-controller/resource.yaml +29 -0
- package/{skills/visual-effects → library/skills}/game-feel/SKILL.md +7 -7
- package/library/skills/game-feel/resource.yaml +27 -0
- package/library/skills/gameskill/SKILL.md +64 -0
- package/library/skills/gameskill/resource.yaml +22 -0
- package/library/skills/gdscript-patterns/resource.yaml +23 -0
- package/{skills/animation → library/skills}/generate-motion/SKILL.md +16 -16
- package/library/skills/generate-motion/resource.yaml +34 -0
- package/library/skills/godogen-visual-proof-game-generation/SKILL.md +223 -0
- package/library/skills/godogen-visual-proof-game-generation/resource.yaml +33 -0
- package/{skills/workflow → library/skills}/headless-scripting/SKILL.md +14 -7
- package/library/skills/headless-scripting/resource.yaml +26 -0
- package/library/skills/host-authoritative-state/resource.yaml +28 -0
- package/{skills/2d-assets → library/skills}/instantiate-asset-pack/SKILL.md +10 -12
- package/library/skills/instantiate-asset-pack/resource.yaml +29 -0
- package/{skills/workflow → library/skills}/investigating-bugs/SKILL.md +4 -4
- package/{skills/workflow → library/skills}/investigating-bugs/condition-based-waiting.md +8 -8
- package/library/skills/investigating-bugs/resource.yaml +24 -0
- package/{skills/workflow → library/skills}/investigating-bugs/root-cause-tracing.md +1 -7
- package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +164 -0
- package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +35 -0
- package/{skills/scene-and-project → library/skills}/make-game/SKILL.md +22 -22
- package/library/skills/make-game/resource.yaml +35 -0
- package/library/skills/music-track/resource.yaml +28 -0
- package/library/skills/navigate-summer/SKILL.md +61 -0
- package/library/skills/navigate-summer/resource.yaml +35 -0
- package/{skills/scene-and-project → library/skills}/new-project/SKILL.md +10 -10
- package/library/skills/new-project/resource.yaml +28 -0
- package/{skills/3d-assets → library/skills}/organic-model/SKILL.md +16 -16
- package/library/skills/organic-model/resource.yaml +32 -0
- package/{skills/multiplayer-and-networking → library/skills}/peer-to-peer-multiplayer/SKILL.md +2 -2
- package/library/skills/peer-to-peer-multiplayer/resource.yaml +28 -0
- package/{skills/2d-assets → library/skills}/pixel-art/SKILL.md +13 -13
- package/library/skills/pixel-art/resource.yaml +31 -0
- package/library/skills/play/resource.yaml +26 -0
- package/{skills/workflow → library/skills}/playtesting-a-feature/SKILL.md +41 -22
- package/library/skills/playtesting-a-feature/resource.yaml +31 -0
- package/{skills/animation → library/skills}/procedural-animation/SKILL.md +25 -10
- package/library/skills/procedural-animation/resource.yaml +33 -0
- package/{skills/3d-assets → library/skills}/prop-model/SKILL.md +13 -13
- package/library/skills/prop-model/resource.yaml +33 -0
- package/library/skills/psx-retro-rendering/SKILL.md +416 -0
- package/library/skills/psx-retro-rendering/resource.yaml +36 -0
- package/library/skills/realtime-wet-surfaces/SKILL.md +189 -0
- package/library/skills/realtime-wet-surfaces/resource.yaml +31 -0
- package/{skills/deployment → library/skills}/remote-deploy/SKILL.md +3 -3
- package/library/skills/remote-deploy/resource.yaml +23 -0
- package/{skills/animation → library/skills}/retarget/SKILL.md +15 -14
- package/library/skills/retarget/resource.yaml +33 -0
- package/library/skills/running-in-the-cloud/SKILL.md +103 -0
- package/library/skills/running-in-the-cloud/resource.yaml +33 -0
- package/{skills/scene-and-project → library/skills}/scene-composition/SKILL.md +8 -0
- package/library/skills/scene-composition/resource.yaml +27 -0
- package/library/skills/scene-hierarchy-design/SKILL.md +102 -0
- package/library/skills/scene-hierarchy-design/resource.yaml +31 -0
- package/library/skills/scene-scripting/SKILL.md +764 -0
- package/library/skills/scene-scripting/resource.yaml +58 -0
- package/{skills/level-design → library/skills}/scene-to-level/SKILL.md +16 -17
- package/library/skills/scene-to-level/resource.yaml +33 -0
- package/library/skills/setup-multiplayer/resource.yaml +28 -0
- package/library/skills/skill-create/SKILL.md +138 -0
- package/library/skills/skill-create/resource.yaml +25 -0
- package/{skills/workflow → library/skills}/skill-improve/SKILL.md +2 -2
- package/library/skills/skill-improve/resource.yaml +25 -0
- package/{skills/workflow → library/skills}/skill-test/SKILL.md +4 -4
- package/library/skills/skill-test/resource.yaml +26 -0
- package/library/skills/skintokens-auto-rigging/SKILL.md +200 -0
- package/library/skills/skintokens-auto-rigging/resource.yaml +38 -0
- package/{skills/2d-assets → library/skills}/skybox-panorama/SKILL.md +8 -8
- package/library/skills/skybox-panorama/resource.yaml +28 -0
- package/{skills/audio → library/skills}/sound-effect/SKILL.md +2 -2
- package/library/skills/sound-effect/resource.yaml +27 -0
- package/library/skills/spatial-placement/SKILL.md +74 -0
- package/library/skills/spatial-placement/resource.yaml +42 -0
- package/library/skills/spatial-placement/tests/spec.md +65 -0
- package/{skills/2d-assets → library/skills}/sprite-sheet/SKILL.md +12 -12
- package/library/skills/sprite-sheet/resource.yaml +32 -0
- package/{skills/2d-assets → library/skills}/tileable-texture/SKILL.md +9 -9
- package/library/skills/tileable-texture/resource.yaml +31 -0
- package/{skills/video → library/skills}/trailer-shot/SKILL.md +1 -1
- package/library/skills/trailer-shot/resource.yaml +27 -0
- package/{skills/performance → library/skills}/tune-performance/SKILL.md +6 -6
- package/library/skills/tune-performance/resource.yaml +31 -0
- package/library/skills/ui-basics/resource.yaml +25 -0
- package/{skills/2d-assets → library/skills}/ui-graphics/SKILL.md +11 -11
- package/library/skills/ui-graphics/resource.yaml +29 -0
- package/{skills/2d-assets → library/skills}/use-widget-asset/SKILL.md +4 -4
- package/library/skills/use-widget-asset/resource.yaml +29 -0
- package/{skills/workflow → library/skills}/using-summer/SKILL.md +12 -9
- package/library/skills/using-summer/resource.yaml +41 -0
- package/{skills/3d-assets → library/skills}/vehicle-model/SKILL.md +18 -18
- package/library/skills/vehicle-model/resource.yaml +34 -0
- package/{skills/workflow → library/skills}/verification-before-completion/SKILL.md +10 -10
- package/library/skills/verification-before-completion/resource.yaml +23 -0
- package/library/skills/verifying-scenes/SKILL.md +98 -0
- package/library/skills/verifying-scenes/resource.yaml +42 -0
- package/{skills/visual-effects/recipes/dissolve → library/skills/vfx-dissolve}/SKILL.md +31 -11
- package/library/skills/vfx-dissolve/resource.yaml +33 -0
- package/{skills/visual-effects/recipes/fire → library/skills/vfx-fire}/SKILL.md +43 -12
- package/library/skills/vfx-fire/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
- package/library/skills/vfx-fire/resource.yaml +35 -0
- package/{skills/visual-effects/recipes/hit-spark → library/skills/vfx-hit-spark}/SKILL.md +16 -10
- package/library/skills/vfx-hit-spark/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-hit-spark/resource.yaml +34 -0
- package/{skills/visual-effects/recipes/lightning → library/skills/vfx-lightning}/SKILL.md +24 -11
- package/library/skills/vfx-lightning/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-lightning/resource.yaml +33 -0
- package/{skills/visual-effects/recipes/magic-glow → library/skills/vfx-magic-glow}/SKILL.md +31 -11
- package/library/skills/vfx-magic-glow/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-magic-glow/resource.yaml +34 -0
- package/{skills/visual-effects/recipes/muzzle-flash → library/skills/vfx-muzzle-flash}/SKILL.md +29 -9
- package/library/skills/vfx-muzzle-flash/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-muzzle-flash/_building-blocks/trauma-shake-snippet.md +53 -0
- package/library/skills/vfx-muzzle-flash/resource.yaml +35 -0
- package/{skills/visual-effects/recipes/smoke → library/skills/vfx-smoke}/SKILL.md +35 -9
- package/library/skills/vfx-smoke/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
- package/library/skills/vfx-smoke/resource.yaml +32 -0
- package/{skills/visual-effects/recipes/water-ripple → library/skills/vfx-water-ripple}/SKILL.md +31 -9
- package/library/skills/vfx-water-ripple/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-water-ripple/resource.yaml +31 -0
- package/library/skills/voice-line/resource.yaml +27 -0
- package/library/skills/world-building-3d/SKILL.md +105 -0
- package/library/skills/world-building-3d/references/spatial-tools.md +50 -0
- package/library/skills/world-building-3d/resource.yaml +44 -0
- package/library/skills/world-building-3d/tests/spec.md +48 -0
- package/{skills/workflow → library/skills}/writing-plans/SKILL.md +19 -14
- package/library/skills/writing-plans/resource.yaml +23 -0
- package/{skills/workflow → library/skills}/writing-skills/SKILL.md +38 -44
- package/library/skills/writing-skills/resource.yaml +29 -0
- package/{skills/workflow → library/skills}/writing-skills/testing-skills-with-subagents.md +13 -14
- package/library/templates/2d-brario-platformer/resource.yaml +21 -0
- package/library/templates/2d-dungeon-roguelike/resource.yaml +23 -0
- package/library/templates/2d-grid-puzzle/resource.yaml +21 -0
- package/library/templates/2d-plants-and-zombies-tower-defense/resource.yaml +21 -0
- package/library/templates/2d-platformer/resource.yaml +24 -0
- package/library/templates/2d-rpg/resource.yaml +21 -0
- package/library/templates/2d-vampire-survivor-roguelike/resource.yaml +21 -0
- package/library/templates/3d-basic/resource.yaml +16 -0
- package/library/templates/3d-city-kit/resource.yaml +24 -0
- package/library/templates/3d-fps-old-school/resource.yaml +21 -0
- package/library/templates/3d-fps-simple-animated-npc/resource.yaml +21 -0
- package/library/templates/3d-lan-multiplayer-starter/resource.yaml +22 -0
- package/library/templates/3d-open-world-explore-tps/resource.yaml +21 -0
- package/library/templates/3d-procedural-road-world/resource.yaml +21 -0
- package/library/templates/3d-racing-game/resource.yaml +21 -0
- package/library/templates/3d-royale-clash-type/resource.yaml +21 -0
- package/library/templates/3d-third-person-controller/resource.yaml +21 -0
- package/library/templates/3d-voxel-sandbox/resource.yaml +24 -0
- package/library/templates/README.md +94 -0
- package/library/templates/empty/resource.yaml +16 -0
- package/library/tools/add-node/resource.yaml +60 -0
- package/library/tools/align-distribute-3d/resource.yaml +87 -0
- package/library/tools/api-docs/resource.yaml +57 -0
- package/library/tools/batch/resource.yaml +52 -0
- package/library/tools/camera-bookmark/resource.yaml +73 -0
- package/library/tools/check-job/resource.yaml +45 -0
- package/library/tools/clear-console/resource.yaml +40 -0
- package/library/tools/connect-signal/resource.yaml +63 -0
- package/library/tools/create-debug-report/resource.yaml +67 -0
- package/library/tools/create-scene/resource.yaml +59 -0
- package/library/tools/creator-config/resource.yaml +63 -0
- package/library/tools/creator-publish/resource.yaml +73 -0
- package/library/tools/creator-releases/resource.yaml +53 -0
- package/library/tools/fabricate-3d/resource.yaml +108 -0
- package/library/tools/game-control/resource.yaml +84 -0
- package/library/tools/game-input/resource.yaml +159 -0
- package/library/tools/game-probe/resource.yaml +90 -0
- package/library/tools/generate-3d/resource.yaml +112 -0
- package/library/tools/generate-audio/resource.yaml +80 -0
- package/library/tools/generate-image/resource.yaml +62 -0
- package/library/tools/generate-motion/resource.yaml +66 -0
- package/library/tools/generate-video/resource.yaml +66 -0
- package/library/tools/get-agent-playbook/resource.yaml +40 -0
- package/library/tools/get-asset/resource.yaml +42 -0
- package/library/tools/get-asset-download-url/resource.yaml +52 -0
- package/library/tools/get-console/resource.yaml +69 -0
- package/library/tools/get-debugger-errors/resource.yaml +56 -0
- package/library/tools/get-debugger-warnings/resource.yaml +52 -0
- package/library/tools/get-diagnostics/resource.yaml +42 -0
- package/library/tools/get-project-context/resource.yaml +45 -0
- package/library/tools/get-runtime-tree/resource.yaml +62 -0
- package/library/tools/get-scene-tree/resource.yaml +52 -0
- package/library/tools/get-script-errors/resource.yaml +45 -0
- package/library/tools/get-studio-workflow/resource.yaml +43 -0
- package/library/tools/import-asset/resource.yaml +73 -0
- package/library/tools/import-asset-by-id/resource.yaml +56 -0
- package/library/tools/import-from-url/resource.yaml +51 -0
- package/library/tools/import-from-url-batch/resource.yaml +60 -0
- package/library/tools/import-hdri/resource.yaml +69 -0
- package/library/tools/input-map-bind/resource.yaml +52 -0
- package/library/tools/inspect-node/resource.yaml +46 -0
- package/library/tools/inspect-resource/resource.yaml +45 -0
- package/library/tools/inspect-runtime-node/resource.yaml +54 -0
- package/library/tools/instantiate-scene/resource.yaml +62 -0
- package/library/tools/is-running/resource.yaml +40 -0
- package/library/tools/library-feedback/resource.yaml +89 -0
- package/library/tools/list-my-assets/resource.yaml +56 -0
- package/library/tools/navigation-probe/resource.yaml +85 -0
- package/library/tools/open/resource.yaml +80 -0
- package/library/tools/open-main-scene/resource.yaml +40 -0
- package/library/tools/open-scene/resource.yaml +46 -0
- package/library/tools/play/resource.yaml +91 -0
- package/library/tools/project-setting/resource.yaml +53 -0
- package/library/tools/read-file/resource.yaml +47 -0
- package/library/tools/read-library/resource.yaml +67 -0
- package/library/tools/recent-events/resource.yaml +71 -0
- package/library/tools/remove-node/resource.yaml +51 -0
- package/library/tools/replace-node/resource.yaml +57 -0
- package/library/tools/replace-text/resource.yaml +61 -0
- package/library/tools/run-editor-script/resource.yaml +61 -0
- package/library/tools/run-script/resource.yaml +73 -0
- package/library/tools/runtime-animate/resource.yaml +140 -0
- package/library/tools/runtime-call/resource.yaml +74 -0
- package/library/tools/runtime-set/resource.yaml +80 -0
- package/library/tools/runtime-spawn/resource.yaml +95 -0
- package/library/tools/save-scene/resource.yaml +50 -0
- package/library/tools/screenshot/resource.yaml +112 -0
- package/library/tools/search-assets/resource.yaml +67 -0
- package/library/tools/search-library/resource.yaml +81 -0
- package/library/tools/select-node/resource.yaml +48 -0
- package/library/tools/set-prop/resource.yaml +64 -0
- package/library/tools/set-resource-property/resource.yaml +66 -0
- package/library/tools/slice-asset-sheet/resource.yaml +47 -0
- package/library/tools/snap-to-surface/resource.yaml +90 -0
- package/library/tools/snapshot-diff/resource.yaml +58 -0
- package/library/tools/starcast/resource.yaml +120 -0
- package/library/tools/start-game-task/resource.yaml +91 -0
- package/library/tools/stop/resource.yaml +51 -0
- package/library/tools/test-placement/resource.yaml +109 -0
- package/library/tools/ui-actions/resource.yaml +77 -0
- package/library/tools/ui-activate/resource.yaml +88 -0
- package/library/tools/ui-screenshot/resource.yaml +63 -0
- package/library/tools/ui-tree/resource.yaml +69 -0
- package/library/tools/wait-for-event/resource.yaml +84 -0
- package/library/tools/world-snapshot/resource.yaml +60 -0
- package/library/tools/write-file/resource.yaml +54 -0
- package/package.json +21 -15
- package/registry/generated/aliases.json +207 -0
- package/registry/generated/counts.json +12 -0
- package/registry/generated/gemini-extension.json +122 -0
- package/registry/generated/index.json +7709 -0
- package/registry/generated/marketplace.claude.json +44 -0
- package/registry/generated/mcp.json +13 -0
- package/registry/generated/plugin.claude.json +135 -0
- package/registry/generated/plugin.codex.json +144 -0
- package/registry/generated/plugin.cursor.json +134 -0
- package/registry/generated/plugin.factory.json +117 -0
- package/registry/generated/skills-index.md +242 -0
- package/registry/generated/skills-registry.json +1249 -0
- package/registry/generated/templates-registry.json +455 -0
- package/registry/schemas/allowed-hosts.json +19 -0
- package/registry/schemas/collection.schema.json +68 -0
- package/registry/schemas/domains.json +96 -0
- package/registry/schemas/example.schema.json +11 -0
- package/registry/schemas/reference.schema.json +10 -0
- package/registry/schemas/resource.schema.json +154 -0
- package/registry/schemas/skill.schema.json +14 -0
- package/registry/schemas/template.schema.json +46 -0
- package/registry/schemas/tool.schema.json +61 -0
- package/_persona/summer/SKILL.md +0 -113
- package/dist/bin/postinstall.d.ts +0 -2
- package/dist/bin/postinstall.js +0 -3
- package/dist/commands/cloud.d.ts +0 -2
- package/dist/commands/cloud.js +0 -80
- package/dist/commands/create.d.ts +0 -3
- package/dist/commands/create.js +0 -171
- package/dist/commands/install.d.ts +0 -19
- package/dist/commands/install.js +0 -194
- package/dist/commands/list.js +0 -67
- package/dist/commands/logout.js +0 -13
- package/dist/commands/logs.d.ts +0 -2
- package/dist/commands/logs.js +0 -19
- package/dist/commands/open.d.ts +0 -2
- package/dist/commands/open.js +0 -32
- package/dist/commands/orchestrator.d.ts +0 -8
- package/dist/commands/orchestrator.js +0 -143
- package/dist/commands/run.d.ts +0 -2
- package/dist/commands/run.js +0 -167
- package/dist/commands/setup.js +0 -217
- package/dist/commands/status.js +0 -46
- package/dist/lib/agent-config.d.ts +0 -39
- package/dist/lib/agent-config.js +0 -626
- package/dist/lib/banner.d.ts +0 -4
- package/dist/lib/banner.js +0 -122
- package/dist/lib/cloud/api.d.ts +0 -79
- package/dist/lib/cloud/api.js +0 -107
- package/dist/lib/cloud/apply.d.ts +0 -32
- package/dist/lib/cloud/apply.js +0 -294
- package/dist/lib/cloud/checkpoint.d.ts +0 -26
- package/dist/lib/cloud/checkpoint.js +0 -142
- package/dist/lib/cloud/conflicts.d.ts +0 -55
- package/dist/lib/cloud/conflicts.js +0 -131
- package/dist/lib/cloud/containment.d.ts +0 -8
- package/dist/lib/cloud/containment.js +0 -52
- package/dist/lib/cloud/diff.d.ts +0 -39
- package/dist/lib/cloud/diff.js +0 -138
- package/dist/lib/cloud/engine-bridge.d.ts +0 -34
- package/dist/lib/cloud/engine-bridge.js +0 -139
- package/dist/lib/cloud/hash-cache.d.ts +0 -23
- package/dist/lib/cloud/hash-cache.js +0 -44
- package/dist/lib/cloud/hash.d.ts +0 -10
- package/dist/lib/cloud/hash.js +0 -111
- package/dist/lib/cloud/http.d.ts +0 -17
- package/dist/lib/cloud/http.js +0 -47
- package/dist/lib/cloud/lock-path.d.ts +0 -1
- package/dist/lib/cloud/lock-path.js +0 -5
- package/dist/lib/cloud/lock.d.ts +0 -14
- package/dist/lib/cloud/lock.js +0 -143
- package/dist/lib/cloud/manifest.d.ts +0 -6
- package/dist/lib/cloud/manifest.js +0 -41
- package/dist/lib/cloud/paths.d.ts +0 -20
- package/dist/lib/cloud/paths.js +0 -90
- package/dist/lib/cloud/project-godot-merge.d.ts +0 -32
- package/dist/lib/cloud/project-godot-merge.js +0 -185
- package/dist/lib/cloud/rules.d.ts +0 -39
- package/dist/lib/cloud/rules.js +0 -159
- package/dist/lib/cloud/sync.d.ts +0 -21
- package/dist/lib/cloud/sync.js +0 -518
- package/dist/lib/cloud/transfer.d.ts +0 -23
- package/dist/lib/cloud/transfer.js +0 -184
- package/dist/lib/cloud/types.d.ts +0 -62
- package/dist/lib/cloud/types.js +0 -1
- package/dist/lib/cloud/validate-path.d.ts +0 -23
- package/dist/lib/cloud/validate-path.js +0 -103
- package/dist/lib/engine.d.ts +0 -51
- package/dist/lib/game-task-plan.d.ts +0 -42
- package/dist/lib/project-memory.d.ts +0 -33
- package/dist/lib/public-surface-paths.d.ts +0 -13
- package/dist/lib/public-surface-paths.js +0 -42
- package/dist/lib/remote-templates.d.ts +0 -25
- package/dist/lib/remote-templates.js +0 -86
- package/dist/lib/skills-registry.d.ts +0 -572
- package/dist/lib/skills-registry.js +0 -1061
- package/dist/lib/version-check.d.ts +0 -106
- package/dist/lib/version-check.js +0 -338
- package/dist/mcp/tools/cloud-tools.js +0 -42
- package/references/mcp-tools-reference.md +0 -199
- package/references/template-registry.md +0 -73
- package/skills/README.md +0 -103
- package/skills/scene-and-project/summer-cloud/SKILL.md +0 -92
- package/skills/workflow/brainstorming/scripts/frame-template.html +0 -214
- package/skills/workflow/brainstorming/scripts/helper.js +0 -88
- package/skills/workflow/brainstorming/scripts/server.cjs +0 -354
- package/skills/workflow/brainstorming/scripts/start-server.sh +0 -148
- package/skills/workflow/brainstorming/scripts/stop-server.sh +0 -56
- package/skills/workflow/brainstorming/visual-companion.md +0 -287
- package/skills/workflow/gameskill/SKILL.md +0 -120
- package/skills/workflow/investigating-bugs/CREATION-LOG.md +0 -119
- package/skills/workflow/investigating-bugs/condition-based-waiting-example.ts +0 -158
- package/skills/workflow/investigating-bugs/find-polluter.sh +0 -63
- package/skills/workflow/investigating-bugs/test-academic.md +0 -14
- package/skills/workflow/investigating-bugs/test-pressure-1.md +0 -58
- package/skills/workflow/investigating-bugs/test-pressure-2.md +0 -68
- package/skills/workflow/investigating-bugs/test-pressure-3.md +0 -69
- package/skills/workflow/mcpupdate/SKILL.md +0 -134
- package/skills/workflow/skill-create/SKILL.md +0 -153
- package/skills/workflow/writing-skills/anthropic-best-practices.md +0 -1150
- package/skills/workflow/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -189
- package/skills/workflow/writing-skills/graphviz-conventions.dot +0 -172
- package/skills/workflow/writing-skills/persuasion-principles.md +0 -187
- package/skills/workflow/writing-skills/render-graphs.js +0 -168
- /package/dist/{commands → cli/commands}/config.d.ts +0 -0
- /package/dist/{commands → cli/commands}/debug.d.ts +0 -0
- /package/dist/{commands → cli/commands}/list.d.ts +0 -0
- /package/dist/{commands → cli/commands}/login.d.ts +0 -0
- /package/dist/{commands → cli/commands}/plan.d.ts +0 -0
- /package/dist/{commands → cli/commands}/publish.d.ts +0 -0
- /package/dist/{commands → cli/commands}/releases.d.ts +0 -0
- /package/dist/{commands → cli/commands}/setup.d.ts +0 -0
- /package/dist/{commands → cli/commands}/skills.d.ts +0 -0
- /package/dist/{lib → core}/log-filters.d.ts +0 -0
- /package/dist/{lib → core}/mcp-log.d.ts +0 -0
- /package/dist/{lib → core}/store.d.ts +0 -0
- /package/dist/{lib → core}/summer-compatibility.d.ts +0 -0
- /package/dist/{lib → core}/telemetry.d.ts +0 -0
- /package/dist/{lib/mcp-boot-notice.js → mcp/boot-notice.js} +0 -0
- /package/dist/{commands/mcp.d.ts → mcp/command.d.ts} +0 -0
- /package/{references → library/references/collaborative-protocol}/collaborative-protocol.md +0 -0
- /package/{references → library/references/gd-style}/gd-style.md +0 -0
- /package/{skills/audio → library/skills}/ambient-bed/SKILL.md +0 -0
- /package/{skills/gameplay-mechanics → library/skills}/auto-fire-targeting/SKILL.md +0 -0
- /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/SKILL.md +0 -0
- /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/reference.md +0 -0
- /package/{skills/multiplayer-and-networking → library/skills}/host-authoritative-state/SKILL.md +0 -0
- /package/{skills/workflow → library/skills}/investigating-bugs/defense-in-depth.md +0 -0
- /package/{skills/audio → library/skills}/music-track/SKILL.md +0 -0
- /package/{skills/scene-and-project → library/skills}/play/SKILL.md +0 -0
- /package/{skills/multiplayer-and-networking → library/skills}/setup-multiplayer/SKILL.md +0 -0
- /package/{skills/ui-and-ux → library/skills}/ui-basics/SKILL.md +0 -0
- /package/{skills/visual-effects → library/skills/vfx-dissolve}/_building-blocks/noise-3d-fbm.gdshaderinc +0 -0
- /package/{skills/visual-effects → library/skills/vfx-fire}/_building-blocks/additive-billboard-particles.md +0 -0
- /package/{skills/visual-effects → library/skills/vfx-lightning}/_building-blocks/trauma-shake-snippet.md +0 -0
- /package/{skills/audio → library/skills}/voice-line/SKILL.md +0 -0
- /package/{skills/workflow → library/skills}/writing-plans/plan-document-reviewer-prompt.md +0 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
export type NavSurface = "web" | "editor";
|
|
2
|
+
export interface NavParam {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
required?: boolean;
|
|
6
|
+
/** Closed vocabulary, when one exists (validated). */
|
|
7
|
+
values?: readonly string[];
|
|
8
|
+
/** Friendly names that resolve to a value in `values` (e.g. "cursor" -> a guide slug). */
|
|
9
|
+
valueAliases?: Readonly<Record<string, string>>;
|
|
10
|
+
}
|
|
11
|
+
export interface WebRoute {
|
|
12
|
+
id: string;
|
|
13
|
+
/** Path template. `{slot}` required; `[/{slot}]` optional segment. */
|
|
14
|
+
path: string;
|
|
15
|
+
title: string;
|
|
16
|
+
description: string;
|
|
17
|
+
intents: readonly string[];
|
|
18
|
+
auth: "public" | "signed-in";
|
|
19
|
+
aliases?: readonly string[];
|
|
20
|
+
params?: readonly NavParam[];
|
|
21
|
+
/** "docs" = docs.summerengine.com; default = the gateway origin. */
|
|
22
|
+
origin?: "web" | "docs";
|
|
23
|
+
}
|
|
24
|
+
export interface WebRoutesCatalog {
|
|
25
|
+
schemaVersion: string;
|
|
26
|
+
source?: string;
|
|
27
|
+
base: string;
|
|
28
|
+
docsBase: string;
|
|
29
|
+
login: {
|
|
30
|
+
path: string;
|
|
31
|
+
returnParam: string;
|
|
32
|
+
};
|
|
33
|
+
routes: WebRoute[];
|
|
34
|
+
}
|
|
35
|
+
export declare const WEB_ROUTES_SNAPSHOT_PATH: string;
|
|
36
|
+
export declare function parseWebRoutesCatalog(raw: unknown, where?: string): WebRoutesCatalog;
|
|
37
|
+
export declare function loadWebRoutesCatalog(path?: string): WebRoutesCatalog;
|
|
38
|
+
export declare const WEB_CATALOG: WebRoutesCatalog;
|
|
39
|
+
/** How to express a row as the engine's one-table op: Navigate { target, ...args }. */
|
|
40
|
+
export interface NavigateSpec {
|
|
41
|
+
target: string;
|
|
42
|
+
fixed?: Readonly<Record<string, string>>;
|
|
43
|
+
/** param name -> Navigate arg name */
|
|
44
|
+
map?: Readonly<Record<string, string>>;
|
|
45
|
+
}
|
|
46
|
+
/** The pre-Navigate op an older engine can serve this row with. */
|
|
47
|
+
export interface LegacyOpSpec {
|
|
48
|
+
op: string;
|
|
49
|
+
fixed?: Readonly<Record<string, string>>;
|
|
50
|
+
/** param name -> op field */
|
|
51
|
+
map?: Readonly<Record<string, string>>;
|
|
52
|
+
}
|
|
53
|
+
export interface EditorTargetMeta {
|
|
54
|
+
id: string;
|
|
55
|
+
title: string;
|
|
56
|
+
description: string;
|
|
57
|
+
intents: readonly string[];
|
|
58
|
+
aliases?: readonly string[];
|
|
59
|
+
navigate: NavigateSpec;
|
|
60
|
+
legacy?: LegacyOpSpec;
|
|
61
|
+
params?: readonly NavParam[];
|
|
62
|
+
/** When `path` is omitted, read application/run/main_scene first. */
|
|
63
|
+
mainSceneDefault?: boolean;
|
|
64
|
+
}
|
|
65
|
+
export declare const EDITOR_TARGETS: readonly EditorTargetMeta[];
|
|
66
|
+
/** Legacy ops the toolkit may still send on engines that predate `Navigate`. */
|
|
67
|
+
export declare const LEGACY_NAVIGATION_OPS: Set<string>;
|
|
68
|
+
export interface NavTarget {
|
|
69
|
+
id: string;
|
|
70
|
+
surface: NavSurface;
|
|
71
|
+
title: string;
|
|
72
|
+
description: string;
|
|
73
|
+
intents: readonly string[];
|
|
74
|
+
aliases?: readonly string[];
|
|
75
|
+
params?: readonly NavParam[];
|
|
76
|
+
requires: {
|
|
77
|
+
login?: boolean;
|
|
78
|
+
engine?: boolean;
|
|
79
|
+
};
|
|
80
|
+
web?: {
|
|
81
|
+
origin: "gateway" | "docs";
|
|
82
|
+
path: string;
|
|
83
|
+
};
|
|
84
|
+
editor?: EditorTargetMeta;
|
|
85
|
+
}
|
|
86
|
+
export declare const NAV_TARGETS: readonly NavTarget[];
|
|
87
|
+
export declare function getNavTarget(idOrAlias: string): NavTarget | undefined;
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The product map as the toolkit sees it (docs/design/NAVIGATION-PLAN.md).
|
|
3
|
+
*
|
|
4
|
+
* The toolkit does NOT own where things are. Each product does:
|
|
5
|
+
*
|
|
6
|
+
* - summerengine.com publishes /agent-routes.json (web repo
|
|
7
|
+
* src/lib/navigation/routes.ts). A vendored snapshot lives at
|
|
8
|
+
* assets/navigation/web-routes.json (refresh: `npm run sync:web-routes`) and
|
|
9
|
+
* every web row below is built from it — nothing hand-written.
|
|
10
|
+
* - Summer Engine owns one table of editor destinations (navigate_ops.cpp) and
|
|
11
|
+
* advertises the ids it can open in /api/health capabilities.navigation.
|
|
12
|
+
* The rows below are METADATA for those ids (titles, intents, argument
|
|
13
|
+
* names) plus, for the few ids an older engine can serve through its
|
|
14
|
+
* original ops, a `legacy` mapping. Availability is decided at connect time
|
|
15
|
+
* from the advert, never hardcoded here.
|
|
16
|
+
*
|
|
17
|
+
* `summer_open` / `summer open` forward ids; they never know the layout.
|
|
18
|
+
*/
|
|
19
|
+
import { readFileSync } from "node:fs";
|
|
20
|
+
import { resolve } from "node:path";
|
|
21
|
+
import { PACKAGE_ROOT } from "../../package-root.js";
|
|
22
|
+
export const WEB_ROUTES_SNAPSHOT_PATH = resolve(PACKAGE_ROOT, "assets/navigation/web-routes.json");
|
|
23
|
+
export function parseWebRoutesCatalog(raw, where = "web-routes") {
|
|
24
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
25
|
+
throw new Error(`${where}: not an object`);
|
|
26
|
+
const doc = raw;
|
|
27
|
+
if (!Array.isArray(doc.routes))
|
|
28
|
+
throw new Error(`${where}: missing routes[]`);
|
|
29
|
+
const login = (doc.login ?? {});
|
|
30
|
+
const routes = [];
|
|
31
|
+
const seen = new Set();
|
|
32
|
+
for (const entry of doc.routes) {
|
|
33
|
+
const r = (entry ?? {});
|
|
34
|
+
for (const key of ["id", "path", "title", "description"]) {
|
|
35
|
+
if (typeof r[key] !== "string" || r[key].length === 0) {
|
|
36
|
+
throw new Error(`${where}: route ${JSON.stringify(r.id ?? "?")} missing string ${key}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (seen.has(r.id))
|
|
40
|
+
throw new Error(`${where}: duplicate route id ${r.id}`);
|
|
41
|
+
seen.add(r.id);
|
|
42
|
+
routes.push({
|
|
43
|
+
id: r.id,
|
|
44
|
+
path: r.path,
|
|
45
|
+
title: r.title,
|
|
46
|
+
description: r.description,
|
|
47
|
+
intents: Array.isArray(r.intents) ? r.intents.filter((x) => typeof x === "string") : [],
|
|
48
|
+
auth: r.auth === "signed-in" ? "signed-in" : "public",
|
|
49
|
+
...(Array.isArray(r.aliases) ? { aliases: r.aliases.filter((x) => typeof x === "string") } : {}),
|
|
50
|
+
...(Array.isArray(r.params) ? { params: r.params } : {}),
|
|
51
|
+
...(r.origin === "docs" ? { origin: "docs" } : {}),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
schemaVersion: typeof doc.schemaVersion === "string" ? doc.schemaVersion : "1.0",
|
|
56
|
+
...(typeof doc.source === "string" ? { source: doc.source } : {}),
|
|
57
|
+
base: typeof doc.base === "string" ? doc.base : "https://www.summerengine.com",
|
|
58
|
+
docsBase: typeof doc.docsBase === "string" ? doc.docsBase : "https://docs.summerengine.com",
|
|
59
|
+
login: {
|
|
60
|
+
path: typeof login.path === "string" ? login.path : "/login",
|
|
61
|
+
returnParam: typeof login.returnParam === "string" ? login.returnParam : "returnUrl",
|
|
62
|
+
},
|
|
63
|
+
routes,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export function loadWebRoutesCatalog(path = WEB_ROUTES_SNAPSHOT_PATH) {
|
|
67
|
+
return parseWebRoutesCatalog(JSON.parse(readFileSync(path, "utf8")), path);
|
|
68
|
+
}
|
|
69
|
+
export const WEB_CATALOG = loadWebRoutesCatalog();
|
|
70
|
+
const PATH_PARAM = { name: "path", description: "Project resource path, e.g. res://levels/level_1.tscn", required: true };
|
|
71
|
+
function dock(id, name, title, intents, legacyDock, aliases) {
|
|
72
|
+
return {
|
|
73
|
+
id,
|
|
74
|
+
title,
|
|
75
|
+
description: `The ${title} comes to the front.`,
|
|
76
|
+
intents,
|
|
77
|
+
...(aliases ? { aliases } : {}),
|
|
78
|
+
navigate: { target: "dock", fixed: { name } },
|
|
79
|
+
...(legacyDock ? { legacy: { op: "FocusDock", fixed: { dock: legacyDock } } } : {}),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function screen(id, name, intents) {
|
|
83
|
+
return {
|
|
84
|
+
id,
|
|
85
|
+
title: `${name} main screen`,
|
|
86
|
+
description: `The main editor switches to the ${name} view.`,
|
|
87
|
+
intents,
|
|
88
|
+
navigate: { target: id },
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function panel(id, title, intents) {
|
|
92
|
+
return {
|
|
93
|
+
id,
|
|
94
|
+
title,
|
|
95
|
+
description: `The ${title} opens at the bottom of the editor.`,
|
|
96
|
+
intents,
|
|
97
|
+
navigate: { target: "panel", fixed: { name: id } },
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
export const EDITOR_TARGETS = [
|
|
101
|
+
{
|
|
102
|
+
id: "scene",
|
|
103
|
+
title: "Open a scene",
|
|
104
|
+
description: "The scene becomes the current tab in Summer Engine.",
|
|
105
|
+
intents: ["open the scene", "open this scene", "show the scene", "switch to the scene", "the scene i'm editing", "open my level"],
|
|
106
|
+
navigate: { target: "scene", map: { path: "path" } },
|
|
107
|
+
legacy: { op: "OpenScene", map: { path: "path" } },
|
|
108
|
+
params: [{ name: "path", description: "Scene path, e.g. res://main.tscn. Omit for the project's main scene." }],
|
|
109
|
+
mainSceneDefault: true,
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
id: "main-scene",
|
|
113
|
+
title: "Open the main scene",
|
|
114
|
+
description: "The project's configured main scene becomes the current tab.",
|
|
115
|
+
intents: ["open the main scene", "main scene", "go to the main scene", "the starting scene"],
|
|
116
|
+
navigate: { target: "scene" },
|
|
117
|
+
legacy: { op: "OpenScene" },
|
|
118
|
+
mainSceneDefault: true,
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
id: "node",
|
|
122
|
+
title: "Select a node",
|
|
123
|
+
description: "The node is highlighted in the Scene tree and its properties show in the Inspector.",
|
|
124
|
+
intents: ["select the node", "show me the node", "focus the player node", "highlight the node", "go to the node", "inspect the node in the editor"],
|
|
125
|
+
navigate: { target: "node", map: { node: "path", scene: "scene" } },
|
|
126
|
+
legacy: { op: "SelectNode", map: { node: "nodePath", scene: "scenePath" } },
|
|
127
|
+
params: [
|
|
128
|
+
{ name: "node", description: "Node path relative to the scene root, e.g. Player/Camera3D.", required: true },
|
|
129
|
+
{ name: "scene", description: "Scene to open first, e.g. res://main.tscn (optional)." },
|
|
130
|
+
],
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
id: "script",
|
|
134
|
+
title: "Open a script",
|
|
135
|
+
description: "The script opens in the Script editor and takes focus (at a line, when given). On engines without the Navigate op it opens without taking focus.",
|
|
136
|
+
intents: ["open the script", "show me the script", "open the gdscript file", "go to the script", "open player.gd", "jump to line"],
|
|
137
|
+
navigate: { target: "script", map: { path: "path", line: "line", col: "col" } },
|
|
138
|
+
legacy: { op: "OpenResource", map: { path: "path" } },
|
|
139
|
+
params: [PATH_PARAM, { name: "line", description: "1-based line to jump to (Navigate engines only)." }, { name: "col", description: "Column (Navigate engines only)." }],
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
id: "file",
|
|
143
|
+
title: "Reveal a file",
|
|
144
|
+
description: "The FileSystem dock comes to the front, scrolled to the file.",
|
|
145
|
+
intents: ["show the file in the filesystem", "reveal the file", "find the file in the editor", "where is this asset", "show me the texture in the file dock"],
|
|
146
|
+
navigate: { target: "file", map: { path: "path" } },
|
|
147
|
+
legacy: { op: "RevealInFileSystem", map: { path: "path" } },
|
|
148
|
+
params: [PATH_PARAM],
|
|
149
|
+
},
|
|
150
|
+
dock("files", "file_system", "FileSystem dock", ["filesystem dock", "file dock", "show the files", "project files panel"], "file_system", ["filesystem", "file-system"]),
|
|
151
|
+
dock("scene-tree", "scene_tree", "Scene tree dock", ["scene tree", "scene dock", "show the scene tree", "node tree panel"], "scene_tree"),
|
|
152
|
+
dock("inspector", "inspector", "Inspector dock", ["inspector", "show the inspector", "properties panel", "inspector dock"], "inspector"),
|
|
153
|
+
dock("import-dock", "import", "Import dock", ["import dock", "import settings panel", "show import options"]),
|
|
154
|
+
dock("signals-dock", "node", "Node dock (signals and groups)", ["signals dock", "node dock", "show the signals", "connect signals panel"]),
|
|
155
|
+
dock("changes-dock", "changes", "Changes dock", ["changes dock", "show the changes", "what did the agent change", "diff panel"]),
|
|
156
|
+
screen("screen-2d", "2D", ["switch to 2d", "2d view", "show the 2d editor"]),
|
|
157
|
+
screen("screen-3d", "3D", ["switch to 3d", "3d view", "show the 3d editor", "show me the viewport"]),
|
|
158
|
+
screen("screen-script", "Script", ["switch to the script editor", "script view", "show the code editor"]),
|
|
159
|
+
screen("screen-game", "Game", ["switch to the game view", "game tab", "show the running game view"]),
|
|
160
|
+
screen("screen-assetlib", "AssetLib", ["asset library tab", "open the asset lib", "godot asset library"]),
|
|
161
|
+
{
|
|
162
|
+
id: "viewport-show",
|
|
163
|
+
title: "Show the viewport column",
|
|
164
|
+
description: "The agent layout's viewport column becomes visible.",
|
|
165
|
+
intents: ["show the viewport column", "bring back the viewport", "unhide the editor viewport"],
|
|
166
|
+
navigate: { target: "viewport-show" },
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
id: "viewport-hide",
|
|
170
|
+
title: "Hide the viewport column",
|
|
171
|
+
description: "The agent layout's viewport column is hidden.",
|
|
172
|
+
intents: ["hide the viewport column", "hide the editor viewport", "chat only layout"],
|
|
173
|
+
navigate: { target: "viewport-hide" },
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
id: "assistant",
|
|
177
|
+
title: "Summer assistant",
|
|
178
|
+
description: "The Summer assistant (chat) dock opens.",
|
|
179
|
+
intents: ["open the assistant", "show the chat dock", "summer assistant", "ai chat in the editor", "open the agent panel"],
|
|
180
|
+
navigate: { target: "assistant", map: { path: "path" } },
|
|
181
|
+
params: [{ name: "path", description: "Chat path to open (optional)." }],
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
id: "project-settings",
|
|
185
|
+
title: "Project Settings",
|
|
186
|
+
description: "The Project Settings dialog opens.",
|
|
187
|
+
intents: ["project settings", "settings", "open project settings", "input map settings", "autoload settings", "rendering settings"],
|
|
188
|
+
navigate: { target: "project-settings", map: { tab: "tab" } },
|
|
189
|
+
params: [{ name: "tab", description: "Settings tab to show (best effort)." }],
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
id: "editor-settings",
|
|
193
|
+
title: "Editor Settings",
|
|
194
|
+
description: "The Editor Settings dialog opens.",
|
|
195
|
+
intents: ["editor settings", "settings", "open editor settings", "editor preferences", "change the editor theme"],
|
|
196
|
+
navigate: { target: "editor-settings" },
|
|
197
|
+
},
|
|
198
|
+
panel("output", "Output panel", ["output panel", "show the output", "editor console", "show the log"]),
|
|
199
|
+
panel("debugger", "Debugger panel", ["debugger panel", "show the debugger", "open the debugger", "errors panel"]),
|
|
200
|
+
{
|
|
201
|
+
id: "editor-window",
|
|
202
|
+
title: "Summer Engine window",
|
|
203
|
+
description: "The Summer Engine window comes to the front.",
|
|
204
|
+
intents: ["bring the editor to the front", "focus summer engine", "show the editor window", "switch to the editor"],
|
|
205
|
+
navigate: { target: "editor-window" },
|
|
206
|
+
},
|
|
207
|
+
];
|
|
208
|
+
/** Legacy ops the toolkit may still send on engines that predate `Navigate`. */
|
|
209
|
+
export const LEGACY_NAVIGATION_OPS = new Set(["OpenScene", "SelectNode", "OpenResource", "FocusDock", "RevealInFileSystem"]);
|
|
210
|
+
function fromWeb(route) {
|
|
211
|
+
return {
|
|
212
|
+
id: route.id,
|
|
213
|
+
surface: "web",
|
|
214
|
+
title: route.title,
|
|
215
|
+
description: route.description,
|
|
216
|
+
intents: route.intents,
|
|
217
|
+
...(route.aliases ? { aliases: route.aliases } : {}),
|
|
218
|
+
...(route.params ? { params: route.params } : {}),
|
|
219
|
+
requires: route.auth === "signed-in" ? { login: true } : {},
|
|
220
|
+
web: { origin: route.origin === "docs" ? "docs" : "gateway", path: route.path },
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
function fromEditor(meta) {
|
|
224
|
+
return {
|
|
225
|
+
id: meta.id,
|
|
226
|
+
surface: "editor",
|
|
227
|
+
title: meta.title,
|
|
228
|
+
description: meta.description,
|
|
229
|
+
intents: meta.intents,
|
|
230
|
+
...(meta.aliases ? { aliases: meta.aliases } : {}),
|
|
231
|
+
...(meta.params ? { params: meta.params } : {}),
|
|
232
|
+
requires: { engine: true },
|
|
233
|
+
editor: meta,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
export const NAV_TARGETS = [...WEB_CATALOG.routes.map(fromWeb), ...EDITOR_TARGETS.map(fromEditor)];
|
|
237
|
+
const BY_ID = new Map();
|
|
238
|
+
for (const target of NAV_TARGETS) {
|
|
239
|
+
if (BY_ID.has(target.id))
|
|
240
|
+
throw new Error(`navigation: duplicate target id ${target.id}`);
|
|
241
|
+
BY_ID.set(target.id, target);
|
|
242
|
+
for (const alias of target.aliases ?? []) {
|
|
243
|
+
if (BY_ID.has(alias))
|
|
244
|
+
throw new Error(`navigation: alias ${alias} collides on ${target.id}`);
|
|
245
|
+
BY_ID.set(alias, target);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
export function getNavTarget(idOrAlias) {
|
|
249
|
+
return BY_ID.get(idOrAlias.trim().toLowerCase());
|
|
250
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PlayGame determinism params (engine contract "PlayGame determinism params
|
|
3
|
+
* (additive)"): seed / fixed_fps / time_scale ride onto ONE launch's child
|
|
4
|
+
* command line (--summer-seed, --fixed-fps, --time-scale). Shared by the MCP
|
|
5
|
+
* summer_play tool and the CLI dispatcher.
|
|
6
|
+
*
|
|
7
|
+
* Transport note: the engine's /api/play rung copies only `scene` into the
|
|
8
|
+
* PlayGame op (local_api_server.cpp play branch), so a launch that carries a
|
|
9
|
+
* pin is sent as an explicit PlayGame op through /api/ops instead. A launch
|
|
10
|
+
* without any pin stays on /api/play, byte-for-byte the v1 call.
|
|
11
|
+
*
|
|
12
|
+
* Result: the engine adds `determinism {seed?, fixed_fps?, time_scale?, args,
|
|
13
|
+
* applied, reason?, conflicting_flag?, conflicting_source?, hint?, note?,
|
|
14
|
+
* seed_scope?}` ONLY when a pin was requested. An engine that predates the
|
|
15
|
+
* params ignores them and answers the v1 result — no `determinism` key — which
|
|
16
|
+
* is the one case the toolkit must call out itself: the run is NOT pinned.
|
|
17
|
+
*/
|
|
18
|
+
export interface PlayDeterminism {
|
|
19
|
+
seed?: number;
|
|
20
|
+
fixed_fps?: number;
|
|
21
|
+
time_scale?: number;
|
|
22
|
+
}
|
|
23
|
+
/** Keep only the pins that were actually given (undefined never travels). */
|
|
24
|
+
export declare function pickPlayDeterminism(input: PlayDeterminism | undefined): PlayDeterminism | undefined;
|
|
25
|
+
/** Pull the `determinism` object off a play result — the envelope's first
|
|
26
|
+
* PlayGame result, or the top level (legacy /api/play shapes). */
|
|
27
|
+
export declare function readPlayDeterminism(result: unknown): Record<string, unknown> | null;
|
|
28
|
+
export declare const PLAY_DETERMINISM_NOT_SUPPORTED = "not applied (engine predates determinism params): seed/fixed_fps/time_scale were sent but this Summer Engine build ignored them, so this run is NOT pinned \u2014 do not treat it as reproducible. Update Summer Engine (restart it after updating).";
|
|
29
|
+
/**
|
|
30
|
+
* Human/model-facing summary of what the pin did. Null when no pin was
|
|
31
|
+
* requested (nothing to say). Reads applied / reason / hint / conflicting_flag
|
|
32
|
+
* / note / seed_scope off the engine's determinism object; when the engine
|
|
33
|
+
* returned none, says so honestly.
|
|
34
|
+
*/
|
|
35
|
+
export declare function describePlayDeterminism(result: unknown, requested: PlayDeterminism | undefined): string | null;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PlayGame determinism params (engine contract "PlayGame determinism params
|
|
3
|
+
* (additive)"): seed / fixed_fps / time_scale ride onto ONE launch's child
|
|
4
|
+
* command line (--summer-seed, --fixed-fps, --time-scale). Shared by the MCP
|
|
5
|
+
* summer_play tool and the CLI dispatcher.
|
|
6
|
+
*
|
|
7
|
+
* Transport note: the engine's /api/play rung copies only `scene` into the
|
|
8
|
+
* PlayGame op (local_api_server.cpp play branch), so a launch that carries a
|
|
9
|
+
* pin is sent as an explicit PlayGame op through /api/ops instead. A launch
|
|
10
|
+
* without any pin stays on /api/play, byte-for-byte the v1 call.
|
|
11
|
+
*
|
|
12
|
+
* Result: the engine adds `determinism {seed?, fixed_fps?, time_scale?, args,
|
|
13
|
+
* applied, reason?, conflicting_flag?, conflicting_source?, hint?, note?,
|
|
14
|
+
* seed_scope?}` ONLY when a pin was requested. An engine that predates the
|
|
15
|
+
* params ignores them and answers the v1 result — no `determinism` key — which
|
|
16
|
+
* is the one case the toolkit must call out itself: the run is NOT pinned.
|
|
17
|
+
*/
|
|
18
|
+
/** Keep only the pins that were actually given (undefined never travels). */
|
|
19
|
+
export function pickPlayDeterminism(input) {
|
|
20
|
+
if (!input)
|
|
21
|
+
return undefined;
|
|
22
|
+
const out = {};
|
|
23
|
+
if (input.seed !== undefined)
|
|
24
|
+
out.seed = input.seed;
|
|
25
|
+
if (input.fixed_fps !== undefined)
|
|
26
|
+
out.fixed_fps = input.fixed_fps;
|
|
27
|
+
if (input.time_scale !== undefined)
|
|
28
|
+
out.time_scale = input.time_scale;
|
|
29
|
+
return Object.keys(out).length ? out : undefined;
|
|
30
|
+
}
|
|
31
|
+
/** Pull the `determinism` object off a play result — the envelope's first
|
|
32
|
+
* PlayGame result, or the top level (legacy /api/play shapes). */
|
|
33
|
+
export function readPlayDeterminism(result) {
|
|
34
|
+
if (!result || typeof result !== "object")
|
|
35
|
+
return null;
|
|
36
|
+
const envelope = result;
|
|
37
|
+
const candidates = [envelope];
|
|
38
|
+
if (Array.isArray(envelope.results))
|
|
39
|
+
candidates.push(...envelope.results);
|
|
40
|
+
for (const candidate of candidates) {
|
|
41
|
+
if (!candidate || typeof candidate !== "object")
|
|
42
|
+
continue;
|
|
43
|
+
const det = candidate.determinism;
|
|
44
|
+
if (det && typeof det === "object" && !Array.isArray(det))
|
|
45
|
+
return det;
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
export const PLAY_DETERMINISM_NOT_SUPPORTED = "not applied (engine predates determinism params): seed/fixed_fps/time_scale were sent but this Summer Engine build ignored them, so this run is NOT pinned — do not treat it as reproducible. Update Summer Engine (restart it after updating).";
|
|
50
|
+
/**
|
|
51
|
+
* Human/model-facing summary of what the pin did. Null when no pin was
|
|
52
|
+
* requested (nothing to say). Reads applied / reason / hint / conflicting_flag
|
|
53
|
+
* / note / seed_scope off the engine's determinism object; when the engine
|
|
54
|
+
* returned none, says so honestly.
|
|
55
|
+
*/
|
|
56
|
+
export function describePlayDeterminism(result, requested) {
|
|
57
|
+
const pins = pickPlayDeterminism(requested);
|
|
58
|
+
if (!pins)
|
|
59
|
+
return null;
|
|
60
|
+
const asked = Object.entries(pins)
|
|
61
|
+
.map(([key, value]) => `${key}=${String(value)}`)
|
|
62
|
+
.join(", ");
|
|
63
|
+
const det = readPlayDeterminism(result);
|
|
64
|
+
if (!det)
|
|
65
|
+
return `Determinism (${asked}): ${PLAY_DETERMINISM_NOT_SUPPORTED}`;
|
|
66
|
+
const lines = [];
|
|
67
|
+
const args = Array.isArray(det.args) ? det.args.filter((a) => typeof a === "string") : [];
|
|
68
|
+
if (det.applied === true) {
|
|
69
|
+
lines.push(`Determinism (${asked}): applied — flags on the child command line${args.length ? `: ${args.join(" ")}` : ""}.`);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
const reason = typeof det.reason === "string" ? det.reason : "unknown";
|
|
73
|
+
let why = `Determinism (${asked}): NOT applied — reason: ${reason}.`;
|
|
74
|
+
if (typeof det.conflicting_flag === "string") {
|
|
75
|
+
why += ` A user-configured run argument (${det.conflicting_flag}${typeof det.conflicting_source === "string" ? ` in ${det.conflicting_source}` : ""}) is appended after the op's flags and wins.`;
|
|
76
|
+
}
|
|
77
|
+
if (typeof det.hint === "string" && det.hint)
|
|
78
|
+
why += ` ${det.hint}`;
|
|
79
|
+
lines.push(why);
|
|
80
|
+
}
|
|
81
|
+
if (typeof det.note === "string" && det.note)
|
|
82
|
+
lines.push(`Note: ${det.note}`);
|
|
83
|
+
if (typeof det.seed_scope === "string" && det.seed_scope)
|
|
84
|
+
lines.push(`seed_scope: ${det.seed_scope}`);
|
|
85
|
+
return lines.join("\n");
|
|
86
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* project-context — ONE builder for `summer_get_project_context`, called by
|
|
3
|
+
* both faces (src/mcp/tools/project-tools.ts and
|
|
4
|
+
* src/core/capabilities/tool-dispatch.ts) so the payload is identical
|
|
5
|
+
* (CONTRACT.md §3, "one behavior, two faces").
|
|
6
|
+
*
|
|
7
|
+
* E2E 2026-09-03 F-04: the CLI face returned an untrimmed 969-setting dump
|
|
8
|
+
* (144 KB) with no guidance/projectMemory while the MCP face returned the
|
|
9
|
+
* trimmed 88 KB shape — two implementations, two payloads. Both now call
|
|
10
|
+
* buildProjectContext(); the only face-specific input is the MCP boot drift
|
|
11
|
+
* notice, passed in as an extra.
|
|
12
|
+
*
|
|
13
|
+
* Payload budget: the engine's /api/state/project ignores ?prefix= (it is
|
|
14
|
+
* snapshot-served — see EngineApiClient.getProjectState), so every trim here
|
|
15
|
+
* is client-side and every trim is declared (settingsTruncated, totalSettings,
|
|
16
|
+
* settingsPrefixesIncluded, settingsPrefixesExcluded) — nothing is hidden,
|
|
17
|
+
* only deferred behind settingsPrefixes.
|
|
18
|
+
*/
|
|
19
|
+
import { z } from "zod";
|
|
20
|
+
import { type ProjectMemorySummary } from "../../project-memory/project-memory.js";
|
|
21
|
+
import { type JsonRecord } from "../util/json.js";
|
|
22
|
+
/**
|
|
23
|
+
* Settings groups an agent acts on by default: project identity and main
|
|
24
|
+
* scene (application/), window size and stretch (display/window/), the
|
|
25
|
+
* project's own input actions (input/), gravity, the renderer method
|
|
26
|
+
* (forward_plus / mobile / gl_compatibility) and the 2D default texture
|
|
27
|
+
* filter (pixel art vs. smooth). Everything else — audio buses, layer names,
|
|
28
|
+
* editor prefs, per-feature rendering knobs — is one settingsPrefixes call
|
|
29
|
+
* away and is counted in totalSettings.
|
|
30
|
+
*/
|
|
31
|
+
export declare const DEFAULT_PROJECT_CONTEXT_SETTINGS_PREFIXES: readonly string[];
|
|
32
|
+
/**
|
|
33
|
+
* Dropped from the default set only: Godot's built-in `input/ui_*` actions
|
|
34
|
+
* (72 of them, identical in every project, each carrying InputEvent dumps).
|
|
35
|
+
* They are the single largest block of the default payload and never inform
|
|
36
|
+
* a game-building decision. Read them with settingsPrefixes: ["input/ui_"].
|
|
37
|
+
*/
|
|
38
|
+
export declare const DEFAULT_PROJECT_CONTEXT_SETTINGS_EXCLUDED: readonly string[];
|
|
39
|
+
export declare const MAX_SETTINGS_PREFIXES = 32;
|
|
40
|
+
export declare const projectContextInputShape: {
|
|
41
|
+
settingsPrefix: z.ZodOptional<z.ZodString>;
|
|
42
|
+
settingsPrefixes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
43
|
+
};
|
|
44
|
+
export declare const projectContextInputSchema: z.ZodObject<{
|
|
45
|
+
settingsPrefix: z.ZodOptional<z.ZodString>;
|
|
46
|
+
settingsPrefixes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
47
|
+
}, "strict", z.ZodTypeAny, {
|
|
48
|
+
settingsPrefix?: string | undefined;
|
|
49
|
+
settingsPrefixes?: string[] | undefined;
|
|
50
|
+
}, {
|
|
51
|
+
settingsPrefix?: string | undefined;
|
|
52
|
+
settingsPrefixes?: string[] | undefined;
|
|
53
|
+
}>;
|
|
54
|
+
export type ProjectContextArgs = z.infer<typeof projectContextInputSchema>;
|
|
55
|
+
/** The engine reads the builder needs — a structural subset of EngineApiClient
|
|
56
|
+
* so tests and the headless router can hand in a stand-in. */
|
|
57
|
+
export interface ProjectContextClient {
|
|
58
|
+
health(): Promise<unknown>;
|
|
59
|
+
getProjectState(prefix?: string): Promise<unknown>;
|
|
60
|
+
getSceneState(): Promise<unknown>;
|
|
61
|
+
rebind(): Promise<string | undefined>;
|
|
62
|
+
}
|
|
63
|
+
export interface ProjectContextExtras {
|
|
64
|
+
/** MCP-only: the boot drift notice the server probes at startup. The CLI
|
|
65
|
+
* face has no such probe and passes nothing; the key is still emitted (null). */
|
|
66
|
+
summerUpdateNotice?: string | null;
|
|
67
|
+
/** Called with the skew warning when the engine advert and this toolkit
|
|
68
|
+
* disagree — the MCP face logs it once per process. */
|
|
69
|
+
onCapabilitySkew?: (warning: string) => void;
|
|
70
|
+
}
|
|
71
|
+
export interface ProjectContextPayload extends JsonRecord {
|
|
72
|
+
health: unknown;
|
|
73
|
+
capabilitySkewWarning?: string;
|
|
74
|
+
project: unknown;
|
|
75
|
+
scene: unknown;
|
|
76
|
+
projectName: string | null;
|
|
77
|
+
projectPath: string | null;
|
|
78
|
+
currentScene: string | null;
|
|
79
|
+
mainScene: string | null;
|
|
80
|
+
boundProjectIdHash: string | undefined;
|
|
81
|
+
rebindError?: string;
|
|
82
|
+
projectMemory: ProjectMemorySummary;
|
|
83
|
+
summerUpdateNotice: string | null;
|
|
84
|
+
/** Present (true) only while SUMMER_TRAJECTORY_DIR + SUMMER_TRAJECTORY_EVAL=1
|
|
85
|
+
* make every tool call also land unredacted in trajectory.full.jsonl. */
|
|
86
|
+
trajectory_eval_mode?: true;
|
|
87
|
+
guidance: string;
|
|
88
|
+
fileEditingGuidance: string;
|
|
89
|
+
}
|
|
90
|
+
export interface SettingsSelection {
|
|
91
|
+
prefixes: readonly string[];
|
|
92
|
+
excluded: readonly string[];
|
|
93
|
+
/** True when the caller named the prefixes (no default trim applies). */
|
|
94
|
+
explicit: boolean;
|
|
95
|
+
/** The single settingsPrefix argument as given (echoed in the payload). */
|
|
96
|
+
settingsPrefix?: string;
|
|
97
|
+
}
|
|
98
|
+
/** Which settings groups to keep: the caller's prefixes (settingsPrefix and
|
|
99
|
+
* settingsPrefixes merged, blanks dropped, order kept, de-duplicated) or the
|
|
100
|
+
* curated default with its exclusion. */
|
|
101
|
+
export declare function resolveSettingsSelection(args: ProjectContextArgs): SettingsSelection;
|
|
102
|
+
/**
|
|
103
|
+
* Bound the project-state payload to the selected settings groups. Everything
|
|
104
|
+
* outside data.entries is preserved; the trim is always declared so an agent
|
|
105
|
+
* can see what it did not get and how to ask for it.
|
|
106
|
+
*/
|
|
107
|
+
export declare function trimProjectSettings(projectState: unknown, selection: SettingsSelection): unknown;
|
|
108
|
+
/** The value of the first matching ProjectSettings key, or null. */
|
|
109
|
+
export declare function projectSettingValue(projectState: unknown, keys: string[]): string | null;
|
|
110
|
+
export declare function resolveProjectPath(projectState: unknown, health: unknown): string | null;
|
|
111
|
+
export declare function resolveProjectName(projectState: unknown, health: unknown): string | null;
|
|
112
|
+
export declare function resolveMainScene(projectState: unknown): string | null;
|
|
113
|
+
export declare function resolveCurrentScene(projectState: unknown, sceneState: unknown, health: unknown): string | null;
|
|
114
|
+
export declare function buildProjectContext(client: ProjectContextClient, args?: ProjectContextArgs, extras?: ProjectContextExtras): Promise<ProjectContextPayload>;
|