summer-engine 3.8.0 → 4.2.0

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