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,62 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { getAuthToken, getUserInfo, hasEnvAuthToken } from "../../core/auth.js";
|
|
3
|
+
import { resolveGatewayUrl } from "../../core/config.js";
|
|
4
|
+
import { getApiToken, getApiPort, checkEngineHealth } from "../../core/engine.js";
|
|
5
|
+
export const statusCommand = new Command("status")
|
|
6
|
+
.description("Check Summer Engine status, connection, and auth state")
|
|
7
|
+
.action(async () => {
|
|
8
|
+
await runStatus(console.log);
|
|
9
|
+
});
|
|
10
|
+
export async function runStatus(log) {
|
|
11
|
+
log("Summer Engine Status\n");
|
|
12
|
+
const authToken = await getAuthToken();
|
|
13
|
+
if (!authToken) {
|
|
14
|
+
log(" Auth: Not logged in");
|
|
15
|
+
log(" Run: npx -y summer-engine@latest login");
|
|
16
|
+
log(` Or: ${await loginPageHint()}`);
|
|
17
|
+
}
|
|
18
|
+
else if (hasEnvAuthToken()) {
|
|
19
|
+
// The env credential is what every gateway call uses; a stored identity
|
|
20
|
+
// (if any) is not the one in effect, so it is not printed.
|
|
21
|
+
log(" Auth: SUMMER_TOKEN (env) — logout does not affect it");
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
log(` Auth: Logged in${await storedIdentitySuffix()}`);
|
|
25
|
+
}
|
|
26
|
+
const apiToken = await getApiToken();
|
|
27
|
+
const port = await getApiPort();
|
|
28
|
+
if (!apiToken) {
|
|
29
|
+
log(" Engine: Not running (no api-token found)");
|
|
30
|
+
log("\n To start: summer run");
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
log(" API Token: Found (~/.summer/api-token)");
|
|
34
|
+
log(` Port: ${port}`);
|
|
35
|
+
const health = await checkEngineHealth(port);
|
|
36
|
+
if (!health) {
|
|
37
|
+
log(" Engine: Not responding (may have closed since last launch)");
|
|
38
|
+
log("\n To start: summer run");
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// /api/health carries no project name/path/scene (see EngineHealth in
|
|
42
|
+
// core/engine.ts); summer_get_project_context is the read for those.
|
|
43
|
+
log(` Engine: Running (v${health.version})`);
|
|
44
|
+
}
|
|
45
|
+
/** A corrupt user.json must not take `summer status` down with it. */
|
|
46
|
+
async function storedIdentitySuffix() {
|
|
47
|
+
try {
|
|
48
|
+
const userInfo = await getUserInfo();
|
|
49
|
+
return userInfo?.email ? ` as ${userInfo.email}` : "";
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
return ` (identity unreadable: ${error instanceof Error ? error.message : String(error)})`;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async function loginPageHint() {
|
|
56
|
+
try {
|
|
57
|
+
return `${await resolveGatewayUrl()}/login`;
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
return `(gateway.url is invalid: ${error instanceof Error ? error.message : String(error)})`;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { type ToolDispatchEntry } from "../../core/capabilities/tool-dispatch.js";
|
|
3
|
+
/** Resolve a name through the compiled registry index when it exists —
|
|
4
|
+
* accepts full ids ("tool/add-node") and legacy aliases, returning the slug
|
|
5
|
+
* the dispatch table knows. Returns null when the index is absent or the
|
|
6
|
+
* name is not a tool resource. */
|
|
7
|
+
export declare function resolveViaRegistryIndex(name: string, root?: string): string | null;
|
|
8
|
+
export declare function resolveToolForCli(name: string): ToolDispatchEntry | null;
|
|
9
|
+
export declare function parseJsonArgs(raw: string | undefined): Record<string, unknown>;
|
|
10
|
+
export declare function formatToolList(entries: readonly ToolDispatchEntry[]): string;
|
|
11
|
+
export declare const toolCommand: Command;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* summer tool — CLI parity passthrough for every library tool resource.
|
|
3
|
+
*
|
|
4
|
+
* Dispatches through the shared registry in
|
|
5
|
+
* src/core/capabilities/tool-dispatch.ts (the same core capabilities, engine
|
|
6
|
+
* client, and gateway endpoints the MCP surface uses; contract §2: cli never
|
|
7
|
+
* imports mcp). Name resolution prefers the dispatch table and, when the
|
|
8
|
+
* compiled registry exists (registry/generated/index.json), also resolves
|
|
9
|
+
* library ids and legacy aliases through it.
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
12
|
+
import { join } from "node:path";
|
|
13
|
+
import { PACKAGE_ROOT } from "../../core/package-root.js";
|
|
14
|
+
import { Command, Option } from "commander";
|
|
15
|
+
import { ToolDispatchError, ToolResultError, dispatchTool, listToolDispatches, resolveToolDispatch, } from "../../core/capabilities/tool-dispatch.js";
|
|
16
|
+
import { c } from "../../core/format.js";
|
|
17
|
+
/** Resolve a name through the compiled registry index when it exists —
|
|
18
|
+
* accepts full ids ("tool/add-node") and legacy aliases, returning the slug
|
|
19
|
+
* the dispatch table knows. Returns null when the index is absent or the
|
|
20
|
+
* name is not a tool resource. */
|
|
21
|
+
export function resolveViaRegistryIndex(name, root = PACKAGE_ROOT) {
|
|
22
|
+
const indexPath = join(root, "registry", "generated", "index.json");
|
|
23
|
+
if (!existsSync(indexPath))
|
|
24
|
+
return null;
|
|
25
|
+
let resources;
|
|
26
|
+
try {
|
|
27
|
+
const parsed = JSON.parse(readFileSync(indexPath, "utf8"));
|
|
28
|
+
resources = Array.isArray(parsed.resources) ? parsed.resources : [];
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
const needle = name.trim();
|
|
34
|
+
for (const resource of resources) {
|
|
35
|
+
if (resource.kind !== "tool" || typeof resource.id !== "string")
|
|
36
|
+
continue;
|
|
37
|
+
const matches = resource.id === needle ||
|
|
38
|
+
resource.id === `tool/${needle}` ||
|
|
39
|
+
(Array.isArray(resource.aliases) && resource.aliases.includes(needle));
|
|
40
|
+
if (matches)
|
|
41
|
+
return resource.id.replace(/^tool\//, "");
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
export function resolveToolForCli(name) {
|
|
46
|
+
const direct = resolveToolDispatch(name);
|
|
47
|
+
if (direct)
|
|
48
|
+
return direct;
|
|
49
|
+
const viaRegistry = resolveViaRegistryIndex(name);
|
|
50
|
+
return viaRegistry ? resolveToolDispatch(viaRegistry) : null;
|
|
51
|
+
}
|
|
52
|
+
export function parseJsonArgs(raw) {
|
|
53
|
+
if (raw === undefined)
|
|
54
|
+
return {};
|
|
55
|
+
let parsed;
|
|
56
|
+
try {
|
|
57
|
+
parsed = JSON.parse(raw);
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
throw new ToolDispatchError(`--args must be valid JSON: ${err instanceof Error ? err.message : String(err)}`);
|
|
61
|
+
}
|
|
62
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
63
|
+
throw new ToolDispatchError("--args must be a JSON object of tool arguments");
|
|
64
|
+
}
|
|
65
|
+
return parsed;
|
|
66
|
+
}
|
|
67
|
+
export function formatToolList(entries) {
|
|
68
|
+
const width = Math.max(...entries.map((entry) => entry.slug.length));
|
|
69
|
+
const lines = [...entries]
|
|
70
|
+
.sort((a, b) => a.slug.localeCompare(b.slug))
|
|
71
|
+
.map((entry) => ` ${entry.slug.padEnd(width)} ${entry.summary}${entry.engineRequired ? c.dim(" [engine]") : ""}`);
|
|
72
|
+
return [
|
|
73
|
+
c.bold(`Summer tools (${entries.length})`),
|
|
74
|
+
...lines,
|
|
75
|
+
"",
|
|
76
|
+
c.dim("[engine] needs the Summer Engine app running with the project open."),
|
|
77
|
+
c.dim(`Run one: summer tool <name> --args '{"arg": "value"}'`),
|
|
78
|
+
].join("\n");
|
|
79
|
+
}
|
|
80
|
+
export const toolCommand = new Command("tool")
|
|
81
|
+
.description("Run any Summer tool from the CLI — same implementations as the MCP surface")
|
|
82
|
+
.argument("[name]", "Tool name: library slug (add-node) or MCP alias (summer_add_node)")
|
|
83
|
+
.option("--args <json>", "Tool arguments as a JSON object (matches the tool's input_schema)")
|
|
84
|
+
.addOption(new Option("--json <args>", "Deprecated alias of --args").hideHelp())
|
|
85
|
+
.option("--list", "List every tool with a one-line summary")
|
|
86
|
+
.action(async (name, options) => {
|
|
87
|
+
if (options.list || name === undefined) {
|
|
88
|
+
console.log(formatToolList(listToolDispatches()));
|
|
89
|
+
if (name === undefined && !options.list) {
|
|
90
|
+
console.log("");
|
|
91
|
+
console.log(c.dim("Pass a tool name to run one."));
|
|
92
|
+
}
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const entry = resolveToolForCli(name);
|
|
96
|
+
if (!entry) {
|
|
97
|
+
throw new ToolDispatchError(`Unknown tool "${name}". Run 'summer tool --list' to see all ${listToolDispatches().length} tools.`);
|
|
98
|
+
}
|
|
99
|
+
if (options.json !== undefined && options.args === undefined) {
|
|
100
|
+
console.error("Note: 'summer tool --json <args>' is deprecated; use --args <json>.");
|
|
101
|
+
}
|
|
102
|
+
const args = parseJsonArgs(options.args ?? options.json);
|
|
103
|
+
let result;
|
|
104
|
+
try {
|
|
105
|
+
result = await dispatchTool(entry.slug, args);
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
// A structured failure — any engine receipt the MCP face would mark
|
|
109
|
+
// isError, engine_lacks_op, a library/navigation miss — is printed whole
|
|
110
|
+
// (stdout, exit 1) so callers read ok/error/failure_reason instead of
|
|
111
|
+
// scraping a sentence. Argument and connection errors stay plain text on
|
|
112
|
+
// stderr (thrown; the program's catch exits 1).
|
|
113
|
+
if (err instanceof ToolResultError) {
|
|
114
|
+
console.log(JSON.stringify(err.result, null, 2));
|
|
115
|
+
process.exitCode = 1;
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
throw err;
|
|
119
|
+
}
|
|
120
|
+
console.log(JSON.stringify(result, null, 2));
|
|
121
|
+
});
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { loginCommand } from "./commands/login.js";
|
|
3
|
+
import { logoutCommand } from "./commands/logout.js";
|
|
4
|
+
import { statusCommand } from "./commands/status.js";
|
|
5
|
+
import { runCommand } from "./commands/run.js";
|
|
6
|
+
import { openCommand } from "./commands/open.js";
|
|
7
|
+
import { installCommand } from "./commands/install.js";
|
|
8
|
+
import { createCommand } from "./commands/create.js";
|
|
9
|
+
import { listCommand } from "./commands/list.js";
|
|
10
|
+
import { memoryCommand } from "./commands/memory.js";
|
|
11
|
+
import { skillsCommand } from "./commands/skills.js";
|
|
12
|
+
import { setupCommand } from "./commands/setup.js";
|
|
13
|
+
import { doctorCommand } from "./commands/doctor.js";
|
|
14
|
+
import { planCommand } from "./commands/plan.js";
|
|
15
|
+
import { debugCommand } from "./commands/debug.js";
|
|
16
|
+
import { configCommand } from "./commands/config.js";
|
|
17
|
+
import { publishCommand } from "./commands/publish.js";
|
|
18
|
+
import { releasesCommand } from "./commands/releases.js";
|
|
19
|
+
import { eventsCommand } from "./commands/events.js";
|
|
20
|
+
import { toolCommand } from "./commands/tool.js";
|
|
21
|
+
import { getBanner } from "./banner.js";
|
|
22
|
+
import { runRootAction } from "./root-action.js";
|
|
23
|
+
import { c, sym } from "../core/format.js";
|
|
24
|
+
import { TOOLKIT_VERSION as version } from "../core/version.js";
|
|
25
|
+
/**
|
|
26
|
+
* Build and run the summer CLI. The `mcp` command is injected by the bin
|
|
27
|
+
* entry (the composition root) so the cli layer never imports from src/mcp.
|
|
28
|
+
*/
|
|
29
|
+
export function runCli(mcpCommand) {
|
|
30
|
+
const program = new Command();
|
|
31
|
+
program
|
|
32
|
+
.name("summer")
|
|
33
|
+
.description("CLI and MCP tools for Summer Engine — the AI-native game engine")
|
|
34
|
+
.version(version)
|
|
35
|
+
.action((_opts, command) => {
|
|
36
|
+
runRootAction(command.args, () => printIntro(version));
|
|
37
|
+
});
|
|
38
|
+
program.addCommand(installCommand);
|
|
39
|
+
program.addCommand(loginCommand);
|
|
40
|
+
program.addCommand(logoutCommand);
|
|
41
|
+
program.addCommand(statusCommand);
|
|
42
|
+
program.addCommand(runCommand);
|
|
43
|
+
program.addCommand(openCommand);
|
|
44
|
+
program.addCommand(createCommand);
|
|
45
|
+
program.addCommand(listCommand);
|
|
46
|
+
program.addCommand(memoryCommand);
|
|
47
|
+
program.addCommand(skillsCommand);
|
|
48
|
+
program.addCommand(mcpCommand);
|
|
49
|
+
program.addCommand(setupCommand);
|
|
50
|
+
program.addCommand(doctorCommand);
|
|
51
|
+
program.addCommand(debugCommand);
|
|
52
|
+
program.addCommand(planCommand);
|
|
53
|
+
program.addCommand(configCommand);
|
|
54
|
+
program.addCommand(publishCommand);
|
|
55
|
+
program.addCommand(releasesCommand);
|
|
56
|
+
program.addCommand(eventsCommand);
|
|
57
|
+
program.addCommand(toolCommand);
|
|
58
|
+
program.parseAsync().catch((err) => {
|
|
59
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
60
|
+
process.exit(1);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function printIntro(version) {
|
|
64
|
+
console.log("");
|
|
65
|
+
console.log(getBanner());
|
|
66
|
+
console.log("");
|
|
67
|
+
console.log(` ${sym.arrow()} ${c.bold("Summer Engine")} ${c.dim("v" + version)} ${c.dim("·")} AI-native game engine`);
|
|
68
|
+
console.log("");
|
|
69
|
+
console.log(` ${c.bold("Setup wizard")}`);
|
|
70
|
+
console.log(` Open Claude Code, Cursor, Codex, Copilot, Devin Desktop (formerly Windsurf), or another supported agent and paste:`);
|
|
71
|
+
console.log(` ${c.brand("\"Install Summer Engine and let's make a game.\"")}`);
|
|
72
|
+
console.log("");
|
|
73
|
+
console.log(` ${c.bold("Manual commands")}`);
|
|
74
|
+
console.log(` ${c.dim("$")} npx -y summer-engine@latest setup claude-code --yes`);
|
|
75
|
+
console.log(` ${c.dim("$")} npx -y summer-engine@latest create 3d-basic my-game`);
|
|
76
|
+
console.log(` ${c.dim("$")} npx -y summer-engine@latest plan make a small arena shooter`);
|
|
77
|
+
console.log(` ${c.dim("$")} npx -y summer-engine@latest debug "player crashes on pickup"`);
|
|
78
|
+
console.log(` ${c.dim("$")} npx -y summer-engine@latest memory`);
|
|
79
|
+
console.log(` ${c.dim("$")} npx -y summer-engine@latest doctor`);
|
|
80
|
+
console.log("");
|
|
81
|
+
console.log(` ${c.bold("Slash commands")} ${c.dim("(in your AI agent)")}`);
|
|
82
|
+
console.log(` ${c.brand("/summer debug")} ${c.dim("Create a support-ready debug report")}`);
|
|
83
|
+
console.log(` ${c.brand("/debug")} ${c.dim("Triage and fix a bug end-to-end")}`);
|
|
84
|
+
console.log(` ${c.brand("/play")} ${c.dim("Run the game and report state")}`);
|
|
85
|
+
console.log("");
|
|
86
|
+
console.log(` ${c.dim("Docs:")} https://summerengine.com/docs`);
|
|
87
|
+
console.log(` ${c.dim("Source:")} https://github.com/summerengine/summer`);
|
|
88
|
+
console.log("");
|
|
89
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Root `summer` invocation. Commander routes an unknown subcommand
|
|
3
|
+
* (`summer bogus`) to the program action with the stray word as an operand,
|
|
4
|
+
* so a bare-intro action would print the banner and exit 0. Agents probe
|
|
5
|
+
* commands by exit code — an unknown command must fail.
|
|
6
|
+
*/
|
|
7
|
+
export declare function runRootAction(operands: readonly string[], printIntro: () => void): void;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Root `summer` invocation. Commander routes an unknown subcommand
|
|
3
|
+
* (`summer bogus`) to the program action with the stray word as an operand,
|
|
4
|
+
* so a bare-intro action would print the banner and exit 0. Agents probe
|
|
5
|
+
* commands by exit code — an unknown command must fail.
|
|
6
|
+
*/
|
|
7
|
+
export function runRootAction(operands, printIntro) {
|
|
8
|
+
if (operands.length > 0) {
|
|
9
|
+
console.error(`error: unknown command '${operands[0]}'`);
|
|
10
|
+
console.error("Run 'summer --help' to see the available commands.");
|
|
11
|
+
process.exitCode = 1;
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
printIntro();
|
|
15
|
+
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { type EngineSelection } from "./engine.js";
|
|
1
|
+
import { type DiscoverEngineOptions, type EngineSelection } from "./engine.js";
|
|
2
|
+
import type { EngineCapabilities } from "./capability-skew.js";
|
|
3
|
+
import { type PlayDeterminism } from "./capabilities/play-determinism.js";
|
|
2
4
|
export type EngineSnapshot = {
|
|
3
5
|
ok: boolean;
|
|
4
6
|
localPath?: string;
|
|
@@ -48,13 +50,52 @@ type EngineTargetIdentity = {
|
|
|
48
50
|
projectId?: string;
|
|
49
51
|
projectIdHash?: string;
|
|
50
52
|
};
|
|
53
|
+
/** Query parameters of GET /api/events/poll (the engine's events channel). */
|
|
54
|
+
export type EventsPollParams = {
|
|
55
|
+
/** Deliver events with seq > since. Omitted = live only (from the newest
|
|
56
|
+
* seq at request time); 0 = replay the whole retained ring. A value beyond
|
|
57
|
+
* the newest seq is clamped by the engine so the caller resyncs. */
|
|
58
|
+
since?: number;
|
|
59
|
+
/** Allow-list of event kinds (op.applied, play.started, ...); omitted or
|
|
60
|
+
* empty = every kind. */
|
|
61
|
+
kinds?: string[];
|
|
62
|
+
/** Max ms the engine holds the request before answering with zero events
|
|
63
|
+
* (engine default 25000, cap 60000; 0 = answer immediately). */
|
|
64
|
+
wait?: number;
|
|
65
|
+
/** Max events per answer (engine default 100, cap 500); the answer says
|
|
66
|
+
* truncated:true when the page was full. */
|
|
67
|
+
limit?: number;
|
|
68
|
+
};
|
|
69
|
+
/** rebind() could not re-read engine health; the session identity is unchanged. */
|
|
70
|
+
export declare class EngineRebindError extends Error {
|
|
71
|
+
constructor(message: string);
|
|
72
|
+
}
|
|
51
73
|
export declare class EngineApiClient {
|
|
52
74
|
private port;
|
|
53
75
|
private token;
|
|
54
76
|
private targetIdentity;
|
|
55
77
|
private selection;
|
|
78
|
+
private registryDiscovery;
|
|
79
|
+
private lastHealth;
|
|
56
80
|
constructor(port: number, token: string, targetIdentity?: EngineTargetIdentity | string, selection?: EngineSelection | null);
|
|
57
|
-
|
|
81
|
+
/**
|
|
82
|
+
* With a selection (the MCP server: --project / --instance / its cwd) the
|
|
83
|
+
* registry decides — resolveEngineConnection. Without one (the CLI face):
|
|
84
|
+
* SUMMER_ENGINE_PROJECT / SUMMER_ENGINE_INSTANCE_ID when set (same names the
|
|
85
|
+
* MCP server reads), else the global pointer (~/.summer/api-token + api-port)
|
|
86
|
+
* when it names an engine that answers /api/health — today's behaviour,
|
|
87
|
+
* unchanged — else the instance registry (discoverRegistryConnection), so an
|
|
88
|
+
* editor launched `--summer-no-publish` or a second editor is still found.
|
|
89
|
+
* The pointer is read through getApiPort/getApiToken/checkEngineHealth so
|
|
90
|
+
* tests that stub those readers never touch the real ~/.summer. `discovery`
|
|
91
|
+
* is a test seam (fake ~/.summer, cwd, env).
|
|
92
|
+
*/
|
|
93
|
+
static connect(selection?: EngineSelection, discovery?: DiscoverEngineOptions): Promise<EngineApiClient>;
|
|
94
|
+
/** The engine's capability advert from the last health read (connect or
|
|
95
|
+
* rebind), or undefined when the engine predates the advert. */
|
|
96
|
+
getEngineCapabilities(): EngineCapabilities | undefined;
|
|
97
|
+
/** Engine version string from the last health read, for skew messages. */
|
|
98
|
+
getEngineVersion(): string | undefined;
|
|
58
99
|
/** The projectIdHash this session is bound to (undefined if none was reported
|
|
59
100
|
* at connect — e.g. no project open yet). */
|
|
60
101
|
getBoundProjectIdHash(): string | undefined;
|
|
@@ -64,6 +105,10 @@ export declare class EngineApiClient {
|
|
|
64
105
|
* switch (the deliberate escape hatch after an identity_mismatch). Returns the
|
|
65
106
|
* new bound hash. The direct health probe is intentionally unscoped, so it can
|
|
66
107
|
* reach the current engine even when bound requests would be rejected.
|
|
108
|
+
*
|
|
109
|
+
* Throws EngineRebindError when the health probe fails: the previous identity
|
|
110
|
+
* is kept, and reporting it as "the rebound hash" would tell the agent a
|
|
111
|
+
* switch it never followed had succeeded.
|
|
67
112
|
*/
|
|
68
113
|
rebind(): Promise<string | undefined>;
|
|
69
114
|
/** Identity to attach to a MUTATING command's options so the engine can reject
|
|
@@ -86,14 +131,39 @@ export declare class EngineApiClient {
|
|
|
86
131
|
* state instead of pretending the accepted operation did not apply.
|
|
87
132
|
*/
|
|
88
133
|
private _requestQueued;
|
|
134
|
+
/**
|
|
135
|
+
* The post-submission half of _requestQueued: classify an already-fetched
|
|
136
|
+
* response (200 legacy / 202 queued / 429 backpressure) and, for 202, poll
|
|
137
|
+
* the accepted requestId to its terminal receipt. Split out so a caller that
|
|
138
|
+
* has to inspect the raw status first (gameSnapshot's 409 bridge check) can
|
|
139
|
+
* feed its ONE response in here instead of issuing a second request.
|
|
140
|
+
*/
|
|
141
|
+
private _resolveQueuedResponse;
|
|
89
142
|
health(): Promise<unknown>;
|
|
90
|
-
|
|
143
|
+
/**
|
|
144
|
+
* One long-poll of GET /api/events/poll (the engine's events channel). The
|
|
145
|
+
* engine answers on the first event matching `kinds` with seq > `since`, or
|
|
146
|
+
* after `wait` ms with `timed_out:true`; a 2xx is the poll envelope
|
|
147
|
+
* {ok, events:[{seq, kind, ts, data}], next_seq, last_seq, since, truncated,
|
|
148
|
+
* timed_out}. Identity-gated like every other route: the bound project rides
|
|
149
|
+
* in the query, so a wrong project answers 409 identity_mismatch.
|
|
150
|
+
*
|
|
151
|
+
* The three answers this route documents — 404 (no channel on this build),
|
|
152
|
+
* 409 (identity mismatch), 503 (bus not started) — come back as a STRUCTURED
|
|
153
|
+
* failure {ok:false, http_status, ...body} so both faces classify them (a
|
|
154
|
+
* terminalState keeps its standard message and rebind hint; the events
|
|
155
|
+
* capability rewrites a 404 into engine_lacks_events). Anything else throws
|
|
156
|
+
* like every other request, so a stale-token 401/403 still triggers
|
|
157
|
+
* withEngine's reconnect-and-retry.
|
|
158
|
+
*/
|
|
159
|
+
pollEvents(params?: EventsPollParams, timeoutMs?: number): Promise<unknown>;
|
|
160
|
+
executeOps(ops: Record<string, unknown>[], options?: Record<string, unknown>, timeoutMs?: number): Promise<unknown>;
|
|
91
161
|
/**
|
|
92
162
|
* Mutation path for MCP file tools. Unlike legacy executeOps callers, this
|
|
93
163
|
* fails closed when health did not provide a complete target identity. The
|
|
94
164
|
* bound hash is stamped last so a caller cannot override it in options.
|
|
95
165
|
*/
|
|
96
|
-
executeIdentityBoundOps(ops: Record<string, unknown>[], options?: Record<string, unknown
|
|
166
|
+
executeIdentityBoundOps(ops: Record<string, unknown>[], options?: Record<string, unknown>, timeoutMs?: number): Promise<unknown>;
|
|
97
167
|
readProjectFile(path: string, maxBytes?: number): Promise<unknown>;
|
|
98
168
|
getSceneState(scenePath?: string, options?: {
|
|
99
169
|
depth?: number;
|
|
@@ -104,7 +174,7 @@ export declare class EngineApiClient {
|
|
|
104
174
|
inspectNode(path: string): Promise<unknown>;
|
|
105
175
|
inspectResource(path: string): Promise<unknown>;
|
|
106
176
|
getScriptErrors(path: string): Promise<unknown>;
|
|
107
|
-
play(scene?: string): Promise<unknown>;
|
|
177
|
+
play(scene?: string, determinism?: PlayDeterminism): Promise<unknown>;
|
|
108
178
|
stop(): Promise<unknown>;
|
|
109
179
|
readFile(path: string, maxBytes?: number): Promise<unknown>;
|
|
110
180
|
getFsTree(root?: string, limit?: number): Promise<unknown>;
|
|
@@ -115,14 +185,12 @@ export declare class EngineApiClient {
|
|
|
115
185
|
* Used by viewport/game snapshots and by scenePreview. */
|
|
116
186
|
private _parseSnapshotResponse;
|
|
117
187
|
/**
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
* normal queued path — so the moment the engine starts answering over HTTP
|
|
123
|
-
* (P4.4), game capture just works with no code change here.
|
|
188
|
+
* Turn a 409 from /api/snapshot/game into a structured failure. The engine's
|
|
189
|
+
* structural refusal carries `bridge_required` / `unsupported_transport`
|
|
190
|
+
* (tool_net_thread.cpp:495-503); a 409 without that shape is surfaced as a
|
|
191
|
+
* plain error rather than silently claiming "bridge required".
|
|
124
192
|
*/
|
|
125
|
-
private
|
|
193
|
+
private _bridgeRequiredFromResponse;
|
|
126
194
|
viewportSnapshot(): Promise<EngineSnapshot>;
|
|
127
195
|
gameSnapshot(): Promise<EngineSnapshot>;
|
|
128
196
|
/**
|
|
@@ -134,15 +202,38 @@ export declare class EngineApiClient {
|
|
|
134
202
|
* name `node_path`); an unresolvable node fails with failure_reason
|
|
135
203
|
* "node_not_found". framing "auto" is an alias of "iso"; the engine also
|
|
136
204
|
* accepts "top"/"front"/"back"/"left"/"right" and echoes the resolved framing.
|
|
137
|
-
*
|
|
138
|
-
*
|
|
205
|
+
* framing "camera" renders through the scene's current/first Camera3D — or
|
|
206
|
+
* the Camera3D named by `cameraPath` — with the scene's REAL WorldEnvironment
|
|
207
|
+
* instead of the flat preview substitute; the engine echoes the resolved
|
|
208
|
+
* framing, so an older build that ignores the value is detectable by the
|
|
209
|
+
* caller. The result carries image_base64 + mime (+ width/height) plus the
|
|
210
|
+
* P4.3 confession fields (scene_has_camera / scene_had_light /
|
|
139
211
|
* used_synthetic_camera) and framing / framed_node / render_retries.
|
|
212
|
+
*
|
|
213
|
+
* Perception additions (engine scene-scripting contracts): framing "free" takes
|
|
214
|
+
* `cameraPosition` / `cameraLookAt` (Godot "Vector3(x, y, z)" literals) and
|
|
215
|
+
* `fov`; framing "bookmark:<name>" resolves the pose from the project's
|
|
216
|
+
* camera bookmarks (fov overrides the bookmark's). `marks` draws the
|
|
217
|
+
* Set-of-Mark overlay (numbered tags + boxes over the largest visible
|
|
218
|
+
* VisualInstance3D nodes), capped by `maxMarks`. The result adds
|
|
219
|
+
* framing_source / camera_pose / bookmark and marks / marks_skipped /
|
|
220
|
+
* marks_candidates / marks_truncated / max_marks (all kept in `metadata`).
|
|
221
|
+
* Older engines resolve the new framings to a preset and echo THAT — the
|
|
222
|
+
* caller compares the echo against what it asked for.
|
|
140
223
|
*/
|
|
141
224
|
scenePreview(input?: {
|
|
142
225
|
scenePath?: string;
|
|
143
|
-
|
|
226
|
+
/** A preset ("auto" | "iso" | "top" | "front" | "back" | "left" | "right" |
|
|
227
|
+
* "camera"), "free", or "bookmark:<name>". */
|
|
228
|
+
framing?: string;
|
|
144
229
|
size?: [number, number];
|
|
145
230
|
nodePath?: string;
|
|
231
|
+
cameraPath?: string;
|
|
232
|
+
cameraPosition?: string;
|
|
233
|
+
cameraLookAt?: string;
|
|
234
|
+
fov?: number;
|
|
235
|
+
marks?: boolean;
|
|
236
|
+
maxMarks?: number;
|
|
146
237
|
}): Promise<EngineSnapshot>;
|
|
147
238
|
getPort(): number;
|
|
148
239
|
/**
|