summer-engine 3.4.0 → 3.4.1
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 +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.cursor-plugin/plugin.json +1 -1
- package/.factory-plugin/plugin.json +1 -1
- package/.opencode/INSTALL.md +8 -8
- package/.opencode/plugins/summer.js +2 -2
- package/AGENTS.md +7 -7
- package/CHANGELOG.md +14 -0
- package/GEMINI.md +1 -1
- package/NOTICE +1 -1
- package/README.md +30 -34
- package/assets/autopilot/run.sh +2 -2
- package/assets/navigation/web-routes.json +1 -1
- package/commands/gameskill.md +2 -2
- package/commands/summer.md +25 -25
- package/dist/cli/commands/open.d.ts +1 -1
- package/dist/cli/commands/run.d.ts +1 -1
- package/dist/cli/commands/run.js +1 -1
- package/dist/cli/commands/skills.js +2 -2
- package/dist/core/api-client.d.ts +5 -6
- package/dist/core/api-client.js +12 -15
- package/dist/core/auth.js +2 -2
- package/dist/core/capabilities/asset-import.d.ts +0 -1
- package/dist/core/capabilities/camera-view.d.ts +1 -1
- package/dist/core/capabilities/camera-view.js +2 -2
- package/dist/core/capabilities/connect-signal.d.ts +1 -2
- package/dist/core/capabilities/connect-signal.js +1 -2
- package/dist/core/capabilities/console-read.d.ts +2 -2
- package/dist/core/capabilities/console-read.js +2 -2
- package/dist/core/capabilities/engine-receipt.d.ts +5 -7
- package/dist/core/capabilities/engine-receipt.js +7 -9
- package/dist/core/capabilities/export-game.js +3 -3
- package/dist/core/capabilities/export-presets.d.ts +1 -1
- package/dist/core/capabilities/export-presets.js +1 -1
- package/dist/core/capabilities/fabricate-mesh.d.ts +2 -3
- package/dist/core/capabilities/fabricate-mesh.js +2 -3
- package/dist/core/capabilities/frame-quality.d.ts +4 -4
- package/dist/core/capabilities/frame-quality.js +4 -4
- package/dist/core/capabilities/grep.d.ts +1 -1
- package/dist/core/capabilities/grep.js +1 -1
- package/dist/core/capabilities/navigation/open.d.ts +1 -1
- package/dist/core/capabilities/navigation/open.js +1 -1
- package/dist/core/capabilities/navigation/render-product-map.js +1 -1
- package/dist/core/capabilities/navigation/targets.js +2 -2
- package/dist/core/capabilities/placement-batch.d.ts +1 -1
- package/dist/core/capabilities/placement-batch.js +2 -2
- package/dist/core/capabilities/play-determinism.d.ts +1 -1
- package/dist/core/capabilities/play-determinism.js +1 -1
- package/dist/core/capabilities/publish-build.d.ts +1 -1
- package/dist/core/capabilities/publish-build.js +4 -6
- package/dist/core/capabilities/publish-download.d.ts +1 -2
- package/dist/core/capabilities/publish-download.js +2 -3
- package/dist/core/capabilities/replace-node.d.ts +1 -3
- package/dist/core/capabilities/replace-node.js +1 -3
- package/dist/core/capabilities/runtime-control.d.ts +5 -7
- package/dist/core/capabilities/runtime-control.js +7 -9
- package/dist/core/capabilities/scene-batch.d.ts +1 -1
- package/dist/core/capabilities/scene-batch.js +1 -1
- package/dist/core/capabilities/scene-kind.js +1 -1
- package/dist/core/capabilities/scene-readback.d.ts +3 -4
- package/dist/core/capabilities/scene-readback.js +3 -4
- package/dist/core/capabilities/scene-script.d.ts +2 -2
- package/dist/core/capabilities/scene-script.js +2 -2
- package/dist/core/capabilities/seeing/shot-store.d.ts +1 -1
- package/dist/core/capabilities/seeing/shot-store.js +1 -1
- package/dist/core/capabilities/summer-bundle.d.ts +2 -3
- package/dist/core/capabilities/summer-bundle.js +2 -3
- package/dist/core/capabilities/surface-snap.d.ts +1 -1
- package/dist/core/capabilities/surface-snap.js +1 -1
- package/dist/core/capabilities/tool-dispatch.js +1 -1
- package/dist/core/capabilities/ui-control.d.ts +1 -2
- package/dist/core/capabilities/ui-control.js +1 -2
- package/dist/core/capabilities/world-snapshot.d.ts +1 -1
- package/dist/core/capabilities/world-snapshot.js +1 -1
- package/dist/core/capability-skew.d.ts +2 -3
- package/dist/core/capability-skew.js +4 -5
- package/dist/core/feedback/client.js +1 -1
- package/dist/core/launch-posture.d.ts +3 -3
- package/dist/core/launch-posture.js +3 -3
- package/dist/core/library-read.js +1 -2
- package/dist/core/templates.d.ts +1 -2
- package/dist/core/templates.js +1 -2
- package/dist/mcp/server.d.ts +2 -2
- package/dist/mcp/server.js +2 -2
- package/dist/mcp/tools/creator-tools.js +1 -1
- package/dist/mcp/tools/debug-tools.js +1 -1
- package/dist/mcp/tools/generate-tools.js +7 -7
- package/dist/mcp/tools/navigation-tools.d.ts +1 -1
- package/dist/mcp/tools/navigation-tools.js +1 -1
- package/dist/mcp/tools/spatial-tools.js +1 -1
- package/dist/mcp/tools/visual-tools.js +2 -2
- package/dist/mcp/tools/with-engine.d.ts +1 -2
- package/dist/mcp/tools/with-engine.js +1 -2
- package/gemini-extension.json +1 -1
- package/hooks/session-start.sh +2 -2
- package/integrations/README.md +70 -76
- package/integrations/claude/README.md +0 -3
- package/integrations/codex/README.md +1 -2
- package/integrations/copilot-jetbrains/README.md +1 -1
- package/integrations/cursor/README.md +1 -2
- package/integrations/factory/README.md +15 -11
- package/integrations/mistral-vibe/README.md +1 -1
- package/integrations/opencode/README.md +1 -1
- package/integrations/roo-code/README.md +1 -1
- package/integrations/rovo-dev/README.md +1 -1
- package/integrations/trae/README.md +1 -1
- package/integrations/windsurf/README.md +3 -3
- package/library/references/collaborative-protocol/collaborative-protocol.md +5 -5
- package/library/references/gd-style/gd-style.md +4 -6
- package/library/references/godot-version/godot-version.md +3 -3
- package/library/references/headless-routing/headless-routing.md +2 -2
- package/library/references/mcp-fresh-chat-playbook/mcp-fresh-chat-playbook.md +2 -2
- package/library/references/mcp-tools-reference/mcp-tools-reference.md +15 -14
- package/library/references/product-map/product-map.md +1 -1
- package/library/references/public-surface-language/public-surface-language.md +1 -1
- package/library/references/summer-folder/summer-folder.md +1 -1
- package/library/skills/3d-lighting/SKILL.md +4 -4
- package/library/skills/README.md +5 -5
- package/library/skills/adaptive-music/SKILL.md +7 -7
- package/library/skills/ai-characters-in-games/SKILL.md +1 -1
- package/library/skills/ambient-bed/SKILL.md +12 -14
- package/library/skills/animated-loop/SKILL.md +42 -42
- package/library/skills/animation-tree/SKILL.md +6 -6
- package/library/skills/art-direction/SKILL.md +8 -11
- package/library/skills/asset-strategy/SKILL.md +3 -3
- package/library/skills/audio-direction/SKILL.md +8 -10
- package/library/skills/auto-fire-targeting/SKILL.md +4 -3
- package/library/skills/bounded-engine-runs/SKILL.md +6 -7
- package/library/skills/brainstorm-game/SKILL.md +5 -5
- package/library/skills/brainstorming/SKILL.md +9 -15
- package/library/skills/celeste-momentum-platforming/SKILL.md +8 -13
- package/library/skills/celeste-momentum-platforming/resource.yaml +1 -1
- package/library/skills/character-animation-wiring/SKILL.md +2 -2
- package/library/skills/character-model/SKILL.md +15 -26
- package/library/skills/character-movement/SKILL.md +1 -1
- package/library/skills/character-movement/references/movement-3d.md +1 -1
- package/library/skills/character-portrait/SKILL.md +4 -4
- package/library/skills/cinematic-cutscene/SKILL.md +38 -38
- package/library/skills/combat-basics/SKILL.md +1 -1
- package/library/skills/compatibility-renderer-traps/SKILL.md +2 -2
- package/library/skills/concept-art/SKILL.md +3 -3
- package/library/skills/create-asset-sheet/SKILL.md +12 -31
- package/library/skills/debug/SKILL.md +5 -4
- package/library/skills/debugging-game-feel/SKILL.md +1 -4
- package/library/skills/debugging-game-feel/resource.yaml +1 -1
- package/library/skills/design-level/SKILL.md +5 -5
- package/library/skills/design-mechanic/SKILL.md +6 -6
- package/library/skills/design-npc/SKILL.md +8 -15
- package/library/skills/diagnosing-perf-regressions/SKILL.md +5 -10
- package/library/skills/dispatching-parallel-agents/SKILL.md +1 -19
- package/library/skills/environment-kit/SKILL.md +5 -5
- package/library/skills/export-and-ship/SKILL.md +23 -24
- package/library/skills/fabricating-assets/SKILL.md +1 -1
- package/library/skills/facial-and-lipsync/SKILL.md +5 -5
- package/library/skills/fps-controller/SKILL.md +17 -16
- package/library/skills/fps-controller/resource.yaml +0 -2
- package/library/skills/game-feel/SKILL.md +6 -7
- package/library/skills/gameskill/SKILL.md +3 -3
- package/library/skills/gdscript-patterns/SKILL.md +3 -3
- package/library/skills/generate-motion/SKILL.md +5 -22
- package/library/skills/godogen-visual-proof-game-generation/SKILL.md +72 -90
- package/library/skills/godogen-visual-proof-game-generation/resource.yaml +0 -1
- package/library/skills/headless-scripting/SKILL.md +8 -8
- package/library/skills/instantiate-asset-pack/SKILL.md +7 -3
- package/library/skills/investigating-bugs/SKILL.md +3 -11
- package/library/skills/investigating-bugs/condition-based-waiting.md +0 -10
- package/library/skills/investigating-bugs/root-cause-tracing.md +0 -8
- package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +15 -15
- package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +0 -1
- package/library/skills/make-game/SKILL.md +3 -5
- package/library/skills/make-game/references/2d-platformer.md +1 -1
- package/library/skills/multiplayer-project/SKILL.md +1 -1
- package/library/skills/multiplayer-testing/SKILL.md +4 -4
- package/library/skills/music-track/SKILL.md +40 -38
- package/library/skills/new-project/SKILL.md +4 -6
- package/library/skills/organic-model/SKILL.md +9 -9
- package/library/skills/pixel-art/SKILL.md +6 -6
- package/library/skills/play/SKILL.md +3 -4
- package/library/skills/playtesting-a-feature/SKILL.md +4 -6
- package/library/skills/procedural-animation/SKILL.md +10 -11
- package/library/skills/prop-model/SKILL.md +4 -4
- package/library/skills/psx-retro-rendering/SKILL.md +20 -20
- package/library/skills/psx-retro-rendering/resource.yaml +2 -3
- package/library/skills/realtime-wet-surfaces/SKILL.md +15 -15
- package/library/skills/realtime-wet-surfaces/resource.yaml +1 -2
- package/library/skills/remote-deploy/SKILL.md +20 -21
- package/library/skills/retarget/SKILL.md +19 -23
- package/library/skills/running-in-the-cloud/SKILL.md +5 -5
- package/library/skills/scene-composition/SKILL.md +5 -5
- package/library/skills/scene-hierarchy-design/SKILL.md +3 -3
- package/library/skills/scene-hierarchy-design/resource.yaml +0 -1
- package/library/skills/scene-scripting/SKILL.md +3 -3
- package/library/skills/scene-to-level/SKILL.md +28 -31
- package/library/skills/skill-create/SKILL.md +1 -1
- package/library/skills/skill-improve/SKILL.md +9 -9
- package/library/skills/skill-test/SKILL.md +10 -10
- package/library/skills/skintokens-auto-rigging/SKILL.md +18 -18
- package/library/skills/skintokens-auto-rigging/resource.yaml +3 -3
- package/library/skills/skybox-panorama/SKILL.md +8 -9
- package/library/skills/sound-effect/SKILL.md +19 -19
- package/library/skills/spatial-placement/SKILL.md +2 -2
- package/library/skills/spatial-placement/references/kit-placement-tools.md +12 -22
- package/library/skills/sprite-sheet/SKILL.md +10 -10
- package/library/skills/summer-analytics/SKILL.md +3 -3
- package/library/skills/summer-friends/SKILL.md +10 -10
- package/library/skills/summer-leaderboards/SKILL.md +6 -6
- package/library/skills/summer-match-results/SKILL.md +13 -13
- package/library/skills/summer-matchmaking/SKILL.md +11 -11
- package/library/skills/summer-parties/SKILL.md +9 -9
- package/library/skills/summer-player-data/SKILL.md +12 -12
- package/library/skills/summer-store/SKILL.md +6 -6
- package/library/skills/summer-world-chat/SKILL.md +9 -9
- package/library/skills/summer-world-saves/SKILL.md +7 -7
- package/library/skills/text-to-motion/rigging-for-text-motion.md +1 -1
- package/library/skills/tileable-texture/SKILL.md +1 -1
- package/library/skills/trailer-shot/SKILL.md +36 -36
- package/library/skills/tune-performance/SKILL.md +13 -13
- package/library/skills/tune-performance/resource.yaml +1 -1
- package/library/skills/ui-graphics/SKILL.md +7 -7
- package/library/skills/use-widget-asset/SKILL.md +7 -7
- package/library/skills/using-summer/SKILL.md +5 -7
- package/library/skills/vehicle-model/SKILL.md +6 -7
- package/library/skills/vehicle-model/resource.yaml +2 -2
- package/library/skills/verification-before-completion/SKILL.md +5 -6
- package/library/skills/vfx-dissolve/SKILL.md +4 -4
- package/library/skills/vfx-fire/SKILL.md +6 -6
- package/library/skills/vfx-fire/_building-blocks/additive-billboard-particles.md +3 -3
- package/library/skills/vfx-hit-spark/SKILL.md +4 -4
- package/library/skills/vfx-hit-spark/_building-blocks/additive-billboard-particles.md +3 -3
- package/library/skills/vfx-lightning/SKILL.md +5 -5
- package/library/skills/vfx-lightning/_building-blocks/additive-billboard-particles.md +3 -3
- package/library/skills/vfx-lightning/_building-blocks/trauma-shake-snippet.md +9 -3
- package/library/skills/vfx-magic-glow/SKILL.md +4 -4
- package/library/skills/vfx-magic-glow/_building-blocks/additive-billboard-particles.md +3 -3
- package/library/skills/vfx-muzzle-flash/SKILL.md +5 -5
- package/library/skills/vfx-muzzle-flash/_building-blocks/additive-billboard-particles.md +3 -3
- package/library/skills/vfx-muzzle-flash/_building-blocks/trauma-shake-snippet.md +9 -3
- package/library/skills/vfx-smoke/SKILL.md +5 -5
- package/library/skills/vfx-water-ripple/SKILL.md +2 -2
- package/library/skills/vfx-water-ripple/_building-blocks/additive-billboard-particles.md +3 -3
- package/library/skills/voice-line/SKILL.md +9 -9
- package/library/skills/world-building-3d/references/spatial-tools.md +2 -2
- package/library/skills/writing-plans/SKILL.md +4 -4
- package/library/skills/writing-skills/SKILL.md +8 -8
- package/library/tools/creator-publish/resource.yaml +4 -4
- package/library/tools/creator-releases/resource.yaml +5 -5
- package/library/tools/publish-build/resource.yaml +5 -1
- package/package.json +1 -1
- package/registry/generated/gemini-extension.json +1 -1
- package/registry/generated/index.json +130 -130
- package/registry/generated/marketplace.claude.json +1 -1
- package/registry/generated/plugin.claude.json +1 -1
- package/registry/generated/plugin.codex.json +1 -1
- package/registry/generated/plugin.cursor.json +1 -1
- package/registry/generated/plugin.factory.json +1 -1
- package/registry/generated/skills-index.md +5 -5
- package/registry/generated/skills-registry.json +5 -5
- package/registry/schemas/domains.json +1 -1
|
@@ -7,8 +7,7 @@ import { readZipEntries } from "../util/zip.js";
|
|
|
7
7
|
import { BuildToolError } from "./summer-bundle.js";
|
|
8
8
|
import { createStore, readGrants, uploadParts } from "./publish-build.js";
|
|
9
9
|
/**
|
|
10
|
-
* The store's second build path (
|
|
11
|
-
* internal/creatorstore): a web build (an HTML5 .zip played on summer.games)
|
|
10
|
+
* The store's second build path (store versions): a web build (an HTML5 .zip played on summer.games)
|
|
12
11
|
* or a native download (macOS universal, Windows x64, Linux x64) that players
|
|
13
12
|
* download. summer_export_game format "download" makes these files;
|
|
14
13
|
* summer_publish_build uploads them here, through the same creator store
|
|
@@ -25,7 +24,7 @@ import { createStore, readGrants, uploadParts } from "./publish-build.js";
|
|
|
25
24
|
* already live the store refuses an agent's :complete (the owner finishes it).
|
|
26
25
|
*/
|
|
27
26
|
export const DOWNLOAD_PLATFORMS = ["web", "macos-universal", "windows-x64", "linux-x64"];
|
|
28
|
-
/**
|
|
27
|
+
/** The store's upload limits for store versions and web zips. */
|
|
29
28
|
const WEB_MAX_BYTES = 500 * 1024 * 1024;
|
|
30
29
|
const WEB_MAX_FILES = 2000;
|
|
31
30
|
const WEB_MAX_FILE_BYTES = 200 * 1024 * 1024;
|
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
* (src/mcp/tools/scene-tools.ts and tool-dispatch.ts), built from ops whose
|
|
4
4
|
* results persist, and verified against the SAVED scene file.
|
|
5
5
|
*
|
|
6
|
-
* Why not the engine's ReplaceNode op for scenes:
|
|
7
|
-
* (engine modules/1summer_engine/editor/ops/scene_ops.cpp, scene branch and
|
|
8
|
-
* the async _finish_replace_node) instantiates the new PackedScene and hands
|
|
6
|
+
* Why not the engine's ReplaceNode op for scenes: for a scene it instantiates the new PackedScene and hands
|
|
9
7
|
* it to SceneTreeDock::replace_node — the editor's "Change Type" path — which
|
|
10
8
|
* ends in Node::replace_by (scene/main/node.cpp). replace_by finishes with
|
|
11
9
|
* `p_node->set_scene_file_path(get_scene_file_path())`: the new instance is
|
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
* (src/mcp/tools/scene-tools.ts and tool-dispatch.ts), built from ops whose
|
|
4
4
|
* results persist, and verified against the SAVED scene file.
|
|
5
5
|
*
|
|
6
|
-
* Why not the engine's ReplaceNode op for scenes:
|
|
7
|
-
* (engine modules/1summer_engine/editor/ops/scene_ops.cpp, scene branch and
|
|
8
|
-
* the async _finish_replace_node) instantiates the new PackedScene and hands
|
|
6
|
+
* Why not the engine's ReplaceNode op for scenes: for a scene it instantiates the new PackedScene and hands
|
|
9
7
|
* it to SceneTreeDock::replace_node — the editor's "Change Type" path — which
|
|
10
8
|
* ends in Node::replace_by (scene/main/node.cpp). replace_by finishes with
|
|
11
9
|
* `p_node->set_scene_file_path(get_scene_file_path())`: the new instance is
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
* both faces validate the same inputs, send the same op and wait the same
|
|
7
7
|
* budget.
|
|
8
8
|
*
|
|
9
|
-
* Engine contract (frozen):
|
|
10
|
-
* Runtime control & playtest ops" + editor/ops/runtime_ops.h. Every op except
|
|
9
|
+
* Engine contract (frozen): the runtime control and playtest ops. Every op except
|
|
11
10
|
* ListGameInstances is SINGLE-ONLY and ASYNC (a debugger round-trip needs the
|
|
12
11
|
* reply channel), requires a RUNNING game, accepts `instance?` (default
|
|
13
12
|
* "main"), stamps the game frame it describes, rounds floats to 3dp and
|
|
@@ -499,9 +498,8 @@ export declare function playRequestsLocalPlay(args: PlayGameArgs): boolean;
|
|
|
499
498
|
/**
|
|
500
499
|
* Quiet is the default whenever an agent drives play — both faces of this tool
|
|
501
500
|
* (MCP and `summer tool`) ARE agent faces, so the only way to a focus-stealing
|
|
502
|
-
* launch is an explicit focus:true. Quiet travels as PlayGame `agent:true
|
|
503
|
-
*
|
|
504
|
-
* has honoured since 0.5.45 (c7c490d84f3, 2026-07-02).
|
|
501
|
+
* launch is an explicit focus:true. Quiet travels as PlayGame `agent:true`,
|
|
502
|
+
* which the engine has honoured since 0.5.45.
|
|
505
503
|
*/
|
|
506
504
|
export declare function playIsQuiet(args: PlayGameArgs): boolean;
|
|
507
505
|
/** True when the call needs the PlayGame OP (instance-aware / determinism
|
|
@@ -529,8 +527,8 @@ export declare function withLocalPlayEcho(result: unknown, args: PlayGameArgs):
|
|
|
529
527
|
export declare const PLAY_QUIET_NOT_SUPPORTED = "This Summer Engine build did not echo `agent_quiet` in its PlayGame result \u2014 it predates quiet play and has most likely switched the editor to the Game tab and taken focus. Update Summer Engine (restart it after updating) for launches that leave the user's screen alone.";
|
|
530
528
|
/**
|
|
531
529
|
* Quiet was requested: the engine echoes `agent_quiet` when it understood the
|
|
532
|
-
* flag (
|
|
533
|
-
*
|
|
530
|
+
* flag (in the launch branch AND the already-running branch on current
|
|
531
|
+
* engines). No echo at all means an engine that predates
|
|
534
532
|
* the flag ignored it — say so instead of letting the model believe the user
|
|
535
533
|
* was left alone. The field is the contract; the `note` text is never matched.
|
|
536
534
|
*/
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
* both faces validate the same inputs, send the same op and wait the same
|
|
7
7
|
* budget.
|
|
8
8
|
*
|
|
9
|
-
* Engine contract (frozen):
|
|
10
|
-
* Runtime control & playtest ops" + editor/ops/runtime_ops.h. Every op except
|
|
9
|
+
* Engine contract (frozen): the runtime control and playtest ops. Every op except
|
|
11
10
|
* ListGameInstances is SINGLE-ONLY and ASYNC (a debugger round-trip needs the
|
|
12
11
|
* reply channel), requires a RUNNING game, accepts `instance?` (default
|
|
13
12
|
* "main"), stamps the game frame it describes, rounds floats to 3dp and
|
|
@@ -59,7 +58,7 @@ export const RUNTIME_CONTROL_OP_KINDS = [
|
|
|
59
58
|
"ListGameInstances",
|
|
60
59
|
];
|
|
61
60
|
// ---------------------------------------------------------------------------
|
|
62
|
-
// Budgets — mirror the engine's watchdogs
|
|
61
|
+
// Budgets — mirror the engine's runtime-op watchdogs plus relay headroom.
|
|
63
62
|
// ---------------------------------------------------------------------------
|
|
64
63
|
/** Default editor-side watchdog for a runtime op (_RT_DEFAULT_TIMEOUT_SEC). */
|
|
65
64
|
export const RUNTIME_WATCHDOG_DEFAULT_SEC = 10;
|
|
@@ -882,9 +881,8 @@ export function playRequestsLocalPlay(args) {
|
|
|
882
881
|
/**
|
|
883
882
|
* Quiet is the default whenever an agent drives play — both faces of this tool
|
|
884
883
|
* (MCP and `summer tool`) ARE agent faces, so the only way to a focus-stealing
|
|
885
|
-
* launch is an explicit focus:true. Quiet travels as PlayGame `agent:true
|
|
886
|
-
*
|
|
887
|
-
* has honoured since 0.5.45 (c7c490d84f3, 2026-07-02).
|
|
884
|
+
* launch is an explicit focus:true. Quiet travels as PlayGame `agent:true`,
|
|
885
|
+
* which the engine has honoured since 0.5.45.
|
|
888
886
|
*/
|
|
889
887
|
export function playIsQuiet(args) {
|
|
890
888
|
return args.focus !== true;
|
|
@@ -894,7 +892,7 @@ export function playIsQuiet(args) {
|
|
|
894
892
|
export function playNeedsOp(args) {
|
|
895
893
|
return (
|
|
896
894
|
// The /api/play rung builds a PlayGame op with ONLY `scene`
|
|
897
|
-
// (
|
|
895
|
+
// (the engine's /api/play handler), so `agent:true` has to ride the op.
|
|
898
896
|
playIsQuiet(args) ||
|
|
899
897
|
(typeof args.instance === "string" && args.instance.trim().length > 0) ||
|
|
900
898
|
args.mode !== undefined ||
|
|
@@ -1031,8 +1029,8 @@ export function withLocalPlayEcho(result, args) {
|
|
|
1031
1029
|
export const PLAY_QUIET_NOT_SUPPORTED = "This Summer Engine build did not echo `agent_quiet` in its PlayGame result — it predates quiet play and has most likely switched the editor to the Game tab and taken focus. Update Summer Engine (restart it after updating) for launches that leave the user's screen alone.";
|
|
1032
1030
|
/**
|
|
1033
1031
|
* Quiet was requested: the engine echoes `agent_quiet` when it understood the
|
|
1034
|
-
* flag (
|
|
1035
|
-
*
|
|
1032
|
+
* flag (in the launch branch AND the already-running branch on current
|
|
1033
|
+
* engines). No echo at all means an engine that predates
|
|
1036
1034
|
* the flag ignored it — say so instead of letting the model believe the user
|
|
1037
1035
|
* was left alone. The field is the contract; the `note` text is never matched.
|
|
1038
1036
|
*/
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* re-owning step every MCP path that sends ReparentNode shares.
|
|
5
5
|
*
|
|
6
6
|
* Two engine ops answer ok for changes SaveScene then leaves out of the file
|
|
7
|
-
* (engine
|
|
7
|
+
* (engine 0.6.0):
|
|
8
8
|
*
|
|
9
9
|
* - ReparentNode (SceneOps::reparent_node) re-owns only the node it moves
|
|
10
10
|
* (`add_do_method(node, "set_owner", root)`). The remove_child before it
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* re-owning step every MCP path that sends ReparentNode shares.
|
|
5
5
|
*
|
|
6
6
|
* Two engine ops answer ok for changes SaveScene then leaves out of the file
|
|
7
|
-
* (engine
|
|
7
|
+
* (engine 0.6.0):
|
|
8
8
|
*
|
|
9
9
|
* - ReparentNode (SceneOps::reparent_node) re-owns only the node it moves
|
|
10
10
|
* (`add_do_method(node, "set_owner", root)`). The remove_child before it
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Is a scene 2D or 3D? Decided from a scene-tree read, the way the engine's
|
|
3
|
-
* ScenePreview decides it
|
|
3
|
+
* ScenePreview decides it:
|
|
4
4
|
* any Node3D anywhere in the tree makes the scene 3D; otherwise any CanvasItem
|
|
5
5
|
* makes it 2D; a tree of plain Nodes is neither.
|
|
6
6
|
*
|
|
@@ -4,10 +4,9 @@
|
|
|
4
4
|
* trusting the engine receipt (summer_replace_node, summer_batch with
|
|
5
5
|
* ReparentNode, summer_connect_signal).
|
|
6
6
|
*
|
|
7
|
-
* The engine's `scenePersistence.persisted` only says SaveScene returned OK
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* it. The client renames that flag to `saved` (engine-receipt.ts
|
|
7
|
+
* The engine's `scenePersistence.persisted` only says SaveScene returned OK;
|
|
8
|
+
* what the file holds is only known by reading it. The client renames that
|
|
9
|
+
* flag to `saved` (engine-receipt.ts
|
|
11
10
|
* honestSceneReceipt); `verified` is set only by tools that read back here.
|
|
12
11
|
*/
|
|
13
12
|
import { type JsonRecord } from "../util/json.js";
|
|
@@ -4,10 +4,9 @@
|
|
|
4
4
|
* trusting the engine receipt (summer_replace_node, summer_batch with
|
|
5
5
|
* ReparentNode, summer_connect_signal).
|
|
6
6
|
*
|
|
7
|
-
* The engine's `scenePersistence.persisted` only says SaveScene returned OK
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* it. The client renames that flag to `saved` (engine-receipt.ts
|
|
7
|
+
* The engine's `scenePersistence.persisted` only says SaveScene returned OK;
|
|
8
|
+
* what the file holds is only known by reading it. The client renames that
|
|
9
|
+
* flag to `saved` (engine-receipt.ts
|
|
11
10
|
* honestSceneReceipt); `verified` is set only by tools that read back here.
|
|
12
11
|
*/
|
|
13
12
|
import { asRecord } from "../util/json.js";
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Server-side clamps: RunSceneScript blocks between frames of the LIVE editor,
|
|
7
7
|
* so its ceiling is deliberately low; RunEditorScript boots a whole headless
|
|
8
|
-
* child editor, so its floor covers the boot cost (
|
|
9
|
-
*
|
|
8
|
+
* child editor, so its floor covers the boot cost (engine clamp: 15..600,
|
|
9
|
+
* default 120).
|
|
10
10
|
*/
|
|
11
11
|
export declare const SCENE_SCRIPT_MIN_SECONDS = 5;
|
|
12
12
|
export declare const SCENE_SCRIPT_MAX_SECONDS = 120;
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Server-side clamps: RunSceneScript blocks between frames of the LIVE editor,
|
|
7
7
|
* so its ceiling is deliberately low; RunEditorScript boots a whole headless
|
|
8
|
-
* child editor, so its floor covers the boot cost (
|
|
9
|
-
*
|
|
8
|
+
* child editor, so its floor covers the boot cost (engine clamp: 15..600,
|
|
9
|
+
* default 120).
|
|
10
10
|
*/
|
|
11
11
|
export const SCENE_SCRIPT_MIN_SECONDS = 5;
|
|
12
12
|
export const SCENE_SCRIPT_MAX_SECONDS = 120;
|
|
@@ -2,7 +2,7 @@ export declare const SHOTS_DIR: string;
|
|
|
2
2
|
export declare const SAVED_SUBDIR = "saved";
|
|
3
3
|
export declare const SHOT_MAX_EDGE = 1024;
|
|
4
4
|
export declare const SHOTS_MAX_TOTAL_BYTES: number;
|
|
5
|
-
/** Same grammar as camera bookmark names
|
|
5
|
+
/** Same grammar as camera bookmark names. */
|
|
6
6
|
export declare const SHOT_NAME_PATTERN: RegExp;
|
|
7
7
|
export declare class ShotStoreError extends Error {
|
|
8
8
|
readonly reason: "bad_name" | "not_jpeg" | "too_large" | "over_cap" | "unsafe_path" | "no_project";
|
|
@@ -22,7 +22,7 @@ export const SHOTS_DIR = join(".summer", "shots");
|
|
|
22
22
|
export const SAVED_SUBDIR = "saved";
|
|
23
23
|
export const SHOT_MAX_EDGE = 1024;
|
|
24
24
|
export const SHOTS_MAX_TOTAL_BYTES = 20 * 1024 * 1024;
|
|
25
|
-
/** Same grammar as camera bookmark names
|
|
25
|
+
/** Same grammar as camera bookmark names. */
|
|
26
26
|
export const SHOT_NAME_PATTERN = /^[A-Za-z0-9_-]{1,64}$/;
|
|
27
27
|
export class ShotStoreError extends Error {
|
|
28
28
|
reason;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The summer.games export
|
|
2
|
+
* The summer.games export: one .zip with
|
|
3
3
|
* summer-bundle.json, client.pck, and for a game with a host server.pck plus
|
|
4
4
|
* config/. This reads what the build upload declares; the Platform verifies
|
|
5
|
-
* the uploaded bytes again. Same rules as Studio's browser check
|
|
6
|
-
* (publicsummerengine src/lib/creator-store/pck-check.ts, checkBundle).
|
|
5
|
+
* the uploaded bytes again. Same rules as Studio's browser check.
|
|
7
6
|
*/
|
|
8
7
|
export declare const BUNDLE_SCHEMA = "summer.bundle.v1";
|
|
9
8
|
export declare const BUNDLE_MANIFEST = "summer-bundle.json";
|
|
@@ -2,11 +2,10 @@ import { createHash } from "node:crypto";
|
|
|
2
2
|
import { createReadStream } from "node:fs";
|
|
3
3
|
import { readZipEntries, readZipEntry, ZipReadError } from "../util/zip.js";
|
|
4
4
|
/**
|
|
5
|
-
* The summer.games export
|
|
5
|
+
* The summer.games export: one .zip with
|
|
6
6
|
* summer-bundle.json, client.pck, and for a game with a host server.pck plus
|
|
7
7
|
* config/. This reads what the build upload declares; the Platform verifies
|
|
8
|
-
* the uploaded bytes again. Same rules as Studio's browser check
|
|
9
|
-
* (publicsummerengine src/lib/creator-store/pck-check.ts, checkBundle).
|
|
8
|
+
* the uploaded bytes again. Same rules as Studio's browser check.
|
|
10
9
|
*/
|
|
11
10
|
export const BUNDLE_SCHEMA = "summer.bundle.v1";
|
|
12
11
|
export const BUNDLE_MANIFEST = "summer-bundle.json";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* surface-snap — ONE implementation of `summer_snap_to_surface` for both faces
|
|
3
3
|
* (src/mcp/tools/spatial-tools.ts and tool-dispatch.ts), around the engine's
|
|
4
|
-
* SnapToSurface op
|
|
4
|
+
* SnapToSurface op.
|
|
5
5
|
*
|
|
6
6
|
* Two gaps in the engine op, closed here with ops main already ships:
|
|
7
7
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* surface-snap — ONE implementation of `summer_snap_to_surface` for both faces
|
|
3
3
|
* (src/mcp/tools/spatial-tools.ts and tool-dispatch.ts), around the engine's
|
|
4
|
-
* SnapToSurface op
|
|
4
|
+
* SnapToSurface op.
|
|
5
5
|
*
|
|
6
6
|
* Two gaps in the engine op, closed here with ops main already ships:
|
|
7
7
|
*
|
|
@@ -661,7 +661,7 @@ export const TOOL_DISPATCH = [
|
|
|
661
661
|
confirm: args.confirm === true,
|
|
662
662
|
face: "cli",
|
|
663
663
|
})),
|
|
664
|
-
entry("summer_creator_releases", "
|
|
664
|
+
entry("summer_creator_releases", "Deprecated: list releases on the legacy creator API; use summer_store_releases", false, (args) => listCreatorReleases({
|
|
665
665
|
projectId: optStr(args, "projectId"),
|
|
666
666
|
limit: typeof args.limit === "number" ? args.limit : 20,
|
|
667
667
|
cursor: optStr(args, "cursor"),
|
|
@@ -4,8 +4,7 @@
|
|
|
4
4
|
* both faces validate the same arguments, send the same op, and render the
|
|
5
5
|
* engine's failure taxonomy the same way.
|
|
6
6
|
*
|
|
7
|
-
* Seven engine ops (
|
|
8
|
-
* doc/SUMMER/SCENE_SCRIPTING_CONTRACTS.md "Wave L") behind four tools:
|
|
7
|
+
* Seven engine ops (a frozen engine contract) behind four tools:
|
|
9
8
|
*
|
|
10
9
|
* summer_ui_actions mode:"list" -> UiListActions (read)
|
|
11
10
|
* mode:"invoke" -> UiInvoke (mutates)
|
|
@@ -4,8 +4,7 @@
|
|
|
4
4
|
* both faces validate the same arguments, send the same op, and render the
|
|
5
5
|
* engine's failure taxonomy the same way.
|
|
6
6
|
*
|
|
7
|
-
* Seven engine ops (
|
|
8
|
-
* doc/SUMMER/SCENE_SCRIPTING_CONTRACTS.md "Wave L") behind four tools:
|
|
7
|
+
* Seven engine ops (a frozen engine contract) behind four tools:
|
|
9
8
|
*
|
|
10
9
|
* summer_ui_actions mode:"list" -> UiListActions (read)
|
|
11
10
|
* mode:"invoke" -> UiInvoke (mutates)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* `summer_world_snapshot` (src/mcp/tools/perception-tools.ts and
|
|
4
4
|
* tool-dispatch.ts).
|
|
5
5
|
*
|
|
6
|
-
* The engine's GetWorldSnapshot
|
|
6
|
+
* The engine's GetWorldSnapshot op takes only
|
|
7
7
|
* scene_path / max_nodes / max_lights / include_2d and returns every node it
|
|
8
8
|
* walked, about 250 bytes each: a scene of a few thousand nodes is far too
|
|
9
9
|
* big to read.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* `summer_world_snapshot` (src/mcp/tools/perception-tools.ts and
|
|
4
4
|
* tool-dispatch.ts).
|
|
5
5
|
*
|
|
6
|
-
* The engine's GetWorldSnapshot
|
|
6
|
+
* The engine's GetWorldSnapshot op takes only
|
|
7
7
|
* scene_path / max_nodes / max_lights / include_2d and returns every node it
|
|
8
8
|
* walked, about 250 bytes each: a scene of a few thousand nodes is far too
|
|
9
9
|
* big to read.
|
|
@@ -77,7 +77,7 @@ export interface EngineCapabilities {
|
|
|
77
77
|
* `summer` capture ships, and the offscreen instance cap. Absent = engine
|
|
78
78
|
* predates runtime control (or advertises the kinds only in opKinds). */
|
|
79
79
|
runtimeControl?: EngineRuntimeControlCapabilities;
|
|
80
|
-
/** Editor navigation advert (engine `Navigate` op
|
|
80
|
+
/** Editor navigation advert (engine `Navigate` op): the
|
|
81
81
|
* destination ids this build can open. Absent = engine predates the op;
|
|
82
82
|
* summer_open then falls back to the legacy per-surface ops it can map. */
|
|
83
83
|
navigation?: EngineNavigationCapabilities;
|
|
@@ -174,8 +174,7 @@ export declare function missingEngineEventsResult(client: CapabilityAdvertisingC
|
|
|
174
174
|
export declare function buildCapabilitySkewWarning(health: unknown): string | null;
|
|
175
175
|
/**
|
|
176
176
|
* Engine ops that MUST be dispatched as their own single-op request. Mirrors
|
|
177
|
-
*
|
|
178
|
-
* 0.5.60+): the engine rejects any multi-op batch containing one of these
|
|
177
|
+
* the engine's single-async-op list (engine 0.5.60+): the engine rejects any multi-op batch containing one of these
|
|
179
178
|
* WHOLESALE — nothing in the batch executes, and the batch fails with per-op
|
|
180
179
|
* failure_reason "unsupported_transport"/"skipped". Git ops are covered by a
|
|
181
180
|
* prefix check in the dispatchers.
|
|
@@ -46,7 +46,7 @@ export const CLI_KNOWN_OP_NEEDS = [
|
|
|
46
46
|
// summer_grep (core/capabilities/grep.ts)
|
|
47
47
|
"Grep",
|
|
48
48
|
// Navigation (summer_open: core/capabilities/navigation/) — Navigate is the
|
|
49
|
-
// one-table op
|
|
49
|
+
// engine's one-table op; the other three are the legacy
|
|
50
50
|
// fallbacks on engines that predate it.
|
|
51
51
|
"Navigate", "OpenResource", "FocusDock", "RevealInFileSystem",
|
|
52
52
|
// Project + input
|
|
@@ -334,8 +334,7 @@ export function buildCapabilitySkewWarning(health) {
|
|
|
334
334
|
// ---------------------------------------------------------------------------
|
|
335
335
|
/**
|
|
336
336
|
* Engine ops that MUST be dispatched as their own single-op request. Mirrors
|
|
337
|
-
*
|
|
338
|
-
* 0.5.60+): the engine rejects any multi-op batch containing one of these
|
|
337
|
+
* the engine's single-async-op list (engine 0.5.60+): the engine rejects any multi-op batch containing one of these
|
|
339
338
|
* WHOLESALE — nothing in the batch executes, and the batch fails with per-op
|
|
340
339
|
* failure_reason "unsupported_transport"/"skipped". Git ops are covered by a
|
|
341
340
|
* prefix check in the dispatchers.
|
|
@@ -353,12 +352,12 @@ export const FALLBACK_SINGLE_ONLY_OPS = new Set([
|
|
|
353
352
|
"RunCommand", "RunVerification", "RunEditorScript", "RunSceneScript",
|
|
354
353
|
"ImportFromUrl", "ImportFromUrlBatch", "ExtractZipFromUrl",
|
|
355
354
|
// Mesh fabrication: a headless Blender child on the same async single-op lane as
|
|
356
|
-
// RunEditorScript
|
|
355
|
+
// RunEditorScript.
|
|
357
356
|
"FabricateMesh",
|
|
358
357
|
// runtime control (RuntimeOps::async_op_kinds): every op below rides
|
|
359
358
|
// the `summer` debugger capture, so like GameSnapshot each needs the async
|
|
360
359
|
// single-op reply channel. ListGameInstances is deliberately NOT here — it
|
|
361
|
-
// is a cheap synchronous editor read that batches fine
|
|
360
|
+
// is a cheap synchronous editor read that batches fine.
|
|
362
361
|
"SetRuntimeProp", "CallRuntimeMethod", "SpawnRuntimeScene", "FreeRuntimeNode",
|
|
363
362
|
"RuntimeAnimation", "RuntimeAnimationTree", "GetRuntimeBones",
|
|
364
363
|
"GamePause", "GameSpeed", "GameStep",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* silent failure, never throws, never retries, never blocks the agent
|
|
8
8
|
* for more than the timeout.
|
|
9
9
|
*
|
|
10
|
-
* Consent
|
|
10
|
+
* Consent:
|
|
11
11
|
* - SUMMER_NO_TELEMETRY=1 or DO_NOT_TRACK=1 → nothing is ever sent.
|
|
12
12
|
* - First-run notice BEFORE the first event (CONTRACT §10): the first call
|
|
13
13
|
* ever made on a machine sends NOTHING and returns a one-paragraph notice
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
* or takes focus until the user clicks it.
|
|
12
12
|
* offscreen `--summer-offscreen` (also `--summer-verify`) — never
|
|
13
13
|
* activates, never frontmost; on shipped engines an unfocusable
|
|
14
|
-
* window pushed off-screen where a sliver may stay visible
|
|
15
|
-
*
|
|
14
|
+
* window pushed off-screen where a sliver may stay visible;
|
|
15
|
+
* on the background-posture engine a
|
|
16
16
|
* no-Dock-icon accessory process. Used by RunVerification /
|
|
17
17
|
* offscreen play instances, never by `summer run`.
|
|
18
18
|
*
|
|
@@ -139,7 +139,7 @@ export interface DetectBackgroundSupportOptions {
|
|
|
139
139
|
export declare function detectBackgroundLaunchSupport(binary: string, options?: DetectBackgroundSupportOptions): Promise<BackgroundLaunchSupport>;
|
|
140
140
|
/**
|
|
141
141
|
* The running engine's own word, once it is up: /api/health
|
|
142
|
-
* `capabilities.launchPostures` (engine
|
|
142
|
+
* `capabilities.launchPostures` (newer engine builds;
|
|
143
143
|
* "focus" always, "background" / "offscreen" only where enforced). true /
|
|
144
144
|
* false when advertised, null when the engine predates the advert.
|
|
145
145
|
*/
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
* or takes focus until the user clicks it.
|
|
12
12
|
* offscreen `--summer-offscreen` (also `--summer-verify`) — never
|
|
13
13
|
* activates, never frontmost; on shipped engines an unfocusable
|
|
14
|
-
* window pushed off-screen where a sliver may stay visible
|
|
15
|
-
*
|
|
14
|
+
* window pushed off-screen where a sliver may stay visible;
|
|
15
|
+
* on the background-posture engine a
|
|
16
16
|
* no-Dock-icon accessory process. Used by RunVerification /
|
|
17
17
|
* offscreen play instances, never by `summer run`.
|
|
18
18
|
*
|
|
@@ -241,7 +241,7 @@ export async function detectBackgroundLaunchSupport(binary, options = {}) {
|
|
|
241
241
|
}
|
|
242
242
|
/**
|
|
243
243
|
* The running engine's own word, once it is up: /api/health
|
|
244
|
-
* `capabilities.launchPostures` (engine
|
|
244
|
+
* `capabilities.launchPostures` (newer engine builds;
|
|
245
245
|
* "focus" always, "background" / "offscreen" only where enforced). true /
|
|
246
246
|
* false when advertised, null when the engine predates the advert.
|
|
247
247
|
*/
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* reference the markdown body
|
|
14
14
|
* example / collection README.md / collection.yaml when present
|
|
15
15
|
*
|
|
16
|
-
* The LAST line of every load is the feedback footer
|
|
17
|
-
* (SELF_IMPROVING_LIBRARY.md §3.1 "trigger placement"):
|
|
16
|
+
* The LAST line of every load is the feedback footer:
|
|
18
17
|
* — entry_id: <id>@<content_hash first 12>. If this entry is wrong, stale,
|
|
19
18
|
* or you deviate from it, report via summer_library_feedback.
|
|
20
19
|
* The agent copies that entry_id verbatim into summer_library_feedback, so
|
package/dist/core/templates.d.ts
CHANGED
|
@@ -53,8 +53,7 @@ export declare function getTemplateRegistry(): readonly TemplateEntry[];
|
|
|
53
53
|
*/
|
|
54
54
|
export declare function resolveTemplate(query: string, entries: readonly TemplateEntry[]): TemplateResolution;
|
|
55
55
|
/** Seconds a network git call (`fetch`) may take before it is killed.
|
|
56
|
-
* `summer create` once hung 42 minutes inside a fetch
|
|
57
|
-
* (docs/design/archive/TK-VS-FOLD-2026-09-07.md, gap 4). */
|
|
56
|
+
* `summer create` once hung 42 minutes inside a fetch. */
|
|
58
57
|
export declare const FETCH_TIMEOUT_ENV = "SUMMER_FETCH_TIMEOUT_S";
|
|
59
58
|
export declare const DEFAULT_FETCH_TIMEOUT_S = 120;
|
|
60
59
|
/** The bound in force: FETCH_TIMEOUT_ENV when it is a positive number of
|
package/dist/core/templates.js
CHANGED
|
@@ -109,8 +109,7 @@ export function resolveTemplate(query, entries) {
|
|
|
109
109
|
}
|
|
110
110
|
// ---------- git ----------
|
|
111
111
|
/** Seconds a network git call (`fetch`) may take before it is killed.
|
|
112
|
-
* `summer create` once hung 42 minutes inside a fetch
|
|
113
|
-
* (docs/design/archive/TK-VS-FOLD-2026-09-07.md, gap 4). */
|
|
112
|
+
* `summer create` once hung 42 minutes inside a fetch. */
|
|
114
113
|
export const FETCH_TIMEOUT_ENV = "SUMMER_FETCH_TIMEOUT_S";
|
|
115
114
|
export const DEFAULT_FETCH_TIMEOUT_S = 120;
|
|
116
115
|
/** The bound in force: FETCH_TIMEOUT_ENV when it is a positive number of
|
package/dist/mcp/server.d.ts
CHANGED
|
@@ -6,8 +6,8 @@ export declare const getCachedBootDriftNotice: typeof getCachedNotice;
|
|
|
6
6
|
/**
|
|
7
7
|
* Server `instructions` in the MCP initialize response (SDK ServerOptions,
|
|
8
8
|
* @modelcontextprotocol/sdk >= 1.x). Hosts hand this to the model once per
|
|
9
|
-
* session, before any tool call — the place for the five habits
|
|
10
|
-
*
|
|
9
|
+
* session, before any tool call — the place for the five habits an end-to-end run
|
|
10
|
+
* showed an agent needs on the first
|
|
11
11
|
* turn and would otherwise learn the hard way. Kept under 600 characters so
|
|
12
12
|
* it costs a few hundred tokens once; the full operating guide stays in the
|
|
13
13
|
* summer_agent_playbook prompt / summer_get_agent_playbook tool. The last
|
package/dist/mcp/server.js
CHANGED
|
@@ -34,8 +34,8 @@ export const getCachedBootDriftNotice = getCachedNotice;
|
|
|
34
34
|
/**
|
|
35
35
|
* Server `instructions` in the MCP initialize response (SDK ServerOptions,
|
|
36
36
|
* @modelcontextprotocol/sdk >= 1.x). Hosts hand this to the model once per
|
|
37
|
-
* session, before any tool call — the place for the five habits
|
|
38
|
-
*
|
|
37
|
+
* session, before any tool call — the place for the five habits an end-to-end run
|
|
38
|
+
* showed an agent needs on the first
|
|
39
39
|
* turn and would otherwise learn the hard way. Kept under 600 characters so
|
|
40
40
|
* it costs a few hundred tokens once; the full operating guide stays in the
|
|
41
41
|
* summer_agent_playbook prompt / summer_get_agent_playbook tool. The last
|
|
@@ -100,7 +100,7 @@ export function registerCreatorTools(server) {
|
|
|
100
100
|
...args,
|
|
101
101
|
face: "mcp",
|
|
102
102
|
})));
|
|
103
|
-
server.tool("summer_creator_releases", "
|
|
103
|
+
server.tool("summer_creator_releases", "Deprecated: lists releases on the legacy Summercraft creator API (separate sc_ token), not summer.games. For what players get on summer.games, and which upload can be released, use summer_store_releases.", {
|
|
104
104
|
projectId: z.string().optional().describe("Creator project ID. Defaults to ~/.summer/config.json."),
|
|
105
105
|
limit: z.number().int().min(1).max(100).default(20),
|
|
106
106
|
cursor: z.string().optional().describe("Opaque nextCursor from the previous page."),
|
|
@@ -178,7 +178,7 @@ Use this when summer_get_diagnostics shows a non-zero \`debugger.warnings\` coun
|
|
|
178
178
|
}, async ({ max_warnings, include_stack, raw }) => withEngine(async (client) => {
|
|
179
179
|
// Reuses the existing GetDebuggerErrors op with type: "warning" filter.
|
|
180
180
|
// Engine-side change: ScriptEditorDebugger::get_errors_data() supports
|
|
181
|
-
// include_warnings;
|
|
181
|
+
// include_warnings; the engine's GetDebuggerErrors honours `type` to
|
|
182
182
|
// return warnings only. Diagnostics also exposes `warnings_data`.
|
|
183
183
|
const op = {
|
|
184
184
|
op: "GetDebuggerErrors",
|
|
@@ -467,7 +467,7 @@ Optional rig pass (image-to-3d only):
|
|
|
467
467
|
Set options.rig = true to add an auto-rig pass via Meshy v6. The result
|
|
468
468
|
job (poll via summer_check_job) will include rigAssetId — the asset ID
|
|
469
469
|
of the rigged glb. Use that rigAssetId with summer_generate_motion to
|
|
470
|
-
add animation clips. Adds
|
|
470
|
+
add animation clips. Adds ~60s to the job.
|
|
471
471
|
|
|
472
472
|
Example:
|
|
473
473
|
summer_generate_3d({
|
|
@@ -593,11 +593,11 @@ Requires authentication: run 'npx -y summer-engine@latest login' first.`, {
|
|
|
593
593
|
server.tool("summer_generate_video", `Generate a video using AI models via Summer Engine Studio.
|
|
594
594
|
|
|
595
595
|
Known models (text-to-video):
|
|
596
|
-
- "ltx" (default) — LTX Video, fast
|
|
597
|
-
- "kling" — Kling 2 Master, high quality
|
|
598
|
-
- "kling-turbo" — Kling 2.5 Turbo Pro
|
|
599
|
-
- "minimax" — MiniMax
|
|
600
|
-
- "veo3" — Google Veo 3, premium
|
|
596
|
+
- "ltx" (default) — LTX Video, fast
|
|
597
|
+
- "kling" — Kling 2 Master, high quality
|
|
598
|
+
- "kling-turbo" — Kling 2.5 Turbo Pro
|
|
599
|
+
- "minimax" — MiniMax
|
|
600
|
+
- "veo3" — Google Veo 3, premium
|
|
601
601
|
|
|
602
602
|
Known models (image-to-video, when imageUrl provided):
|
|
603
603
|
- "ltx" (default), "kling", "minimax"
|
|
@@ -698,7 +698,7 @@ Requires authentication: run 'npx -y summer-engine@latest login' first.`, {
|
|
|
698
698
|
Backends (pick one):
|
|
699
699
|
- "meshy-library" (default) — a curated mocap clip by motionName on a
|
|
700
700
|
Summer-rigged humanoid (rigAssetId from summer_generate_3d with
|
|
701
|
-
options.rig=true). Fast (~30s),
|
|
701
|
+
options.rig=true). Fast (~30s), real mocap quality.
|
|
702
702
|
Names that always work: idle, walk, run, jump, attack; anything else must
|
|
703
703
|
be an exact library name.
|
|
704
704
|
- "text-to-motion" — custom 2-second clips (60 frames) from text prompts on
|
|
@@ -2,6 +2,6 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* summer_open — the MCP face of `summer open`. Same behavior as the CLI
|
|
4
4
|
* (src/core/capabilities/navigation/open.ts runOpen); this file only supplies
|
|
5
|
-
* the engine client and the browser launcher.
|
|
5
|
+
* the engine client and the browser launcher.
|
|
6
6
|
*/
|
|
7
7
|
export declare function registerNavigationTools(server: McpServer): void;
|
|
@@ -6,7 +6,7 @@ import { openArgsShape, runOpen } from "../../core/capabilities/navigation/open.
|
|
|
6
6
|
/**
|
|
7
7
|
* summer_open — the MCP face of `summer open`. Same behavior as the CLI
|
|
8
8
|
* (src/core/capabilities/navigation/open.ts runOpen); this file only supplies
|
|
9
|
-
* the engine client and the browser launcher.
|
|
9
|
+
* the engine client and the browser launcher.
|
|
10
10
|
*/
|
|
11
11
|
export function registerNavigationTools(server) {
|
|
12
12
|
server.tool("summer_open", `Open the exact summerengine.com page or Summer Engine editor surface the user wants to LOOK at, by intent name — or, with open:false, return the URL / engine op without opening anything. The result ALWAYS carries the resolved url or op, also after opening, so you can tell the user where they landed.
|
|
@@ -16,7 +16,7 @@ const NODE_PATH_LIMIT_BYTES = 256;
|
|
|
16
16
|
const MIN_PLACEMENT_FLOOR_DISTANCE = 0.001;
|
|
17
17
|
/** Mirrors the engine's SnapToSurface direction guard (length² > 1e-5). */
|
|
18
18
|
const MIN_SNAP_DIRECTION_LENGTH_SQUARED = 0.00001;
|
|
19
|
-
/** Starcast's own ceilings
|
|
19
|
+
/** Starcast's own ceilings in the engine: the engine
|
|
20
20
|
* measures the compact receipt as UTF-8 JSON, downgrades full -> summary
|
|
21
21
|
* above 12 KiB, and strips secondary paths above 5 KiB, so a receipt past the
|
|
22
22
|
* ceiling for its returnedDetail is one this CLI does not understand. Unlike
|
|
@@ -353,8 +353,8 @@ Static frame only — one moment, not motion. For a SEQUENCE of frames over time
|
|
|
353
353
|
if (snap.sceneHadLight === false) {
|
|
354
354
|
warnings.push("WARNING: this scene has no light — lit materials may appear black when played.");
|
|
355
355
|
}
|
|
356
|
-
// The engine ALWAYS synthesizes the preview camera (
|
|
357
|
-
//
|
|
356
|
+
// The engine ALWAYS synthesizes the preview camera (it sets
|
|
357
|
+
// used_synthetic_camera unconditionally) — the flag says nothing
|
|
358
358
|
// about the scene's own cameras. sceneHasCamera above is the
|
|
359
359
|
// authoritative "does this scene have a camera" answer.
|
|
360
360
|
if (snap.usedSyntheticCamera) {
|
|
@@ -41,8 +41,7 @@ export interface WithEngineOptions<T> {
|
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
43
|
* An auth failure is the ONE class of thrown error that is provably pre-apply:
|
|
44
|
-
* the engine rejects on the Bearer-token check
|
|
45
|
-
* BEFORE the op is queued or applied, so reconnecting with the fresh api-token and
|
|
44
|
+
* the engine rejects on the Bearer-token check BEFORE the op is queued or applied, so reconnecting with the fresh api-token and
|
|
46
45
|
* retrying cannot double-apply a mutation. This is exactly the stale-token case
|
|
47
46
|
* after the engine rotates its api-token on relaunch.
|
|
48
47
|
*
|