summer-engine 2.8.1 → 3.0.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 (742) hide show
  1. package/.claude-plugin/marketplace.json +27 -7
  2. package/.claude-plugin/plugin.json +99 -83
  3. package/.codex-plugin/plugin.json +112 -82
  4. package/.cursor-plugin/plugin.json +119 -83
  5. package/.factory-plugin/plugin.json +100 -3
  6. package/.mcp.json +6 -1
  7. package/.opencode/INSTALL.md +7 -4
  8. package/.opencode/plugins/summer.js +31 -18
  9. package/AGENTS.md +107 -34
  10. package/CHANGELOG.md +134 -41
  11. package/CLAUDE.md +4 -2
  12. package/GEMINI.md +7 -53
  13. package/NOTICE +31 -0
  14. package/README.md +159 -391
  15. package/assets/api-docs.json.gz +0 -0
  16. package/assets/autopilot/README.md +20 -6
  17. package/assets/autopilot/autopilot.gd +80 -26
  18. package/assets/autopilot/run.sh +132 -7
  19. package/assets/navigation/web-routes.json +719 -0
  20. package/commands/gameskill.md +10 -108
  21. package/commands/summer.md +72 -4
  22. package/dist/bin/summer.js +6 -87
  23. package/dist/cli/banner.d.ts +1 -0
  24. package/dist/cli/banner.js +33 -0
  25. package/dist/{commands → cli/commands}/config.js +1 -1
  26. package/dist/cli/commands/create.d.ts +30 -0
  27. package/dist/cli/commands/create.js +212 -0
  28. package/dist/{commands → cli/commands}/debug.js +2 -2
  29. package/dist/cli/commands/doctor.d.ts +2 -0
  30. package/dist/cli/commands/doctor.js +18 -0
  31. package/dist/cli/commands/events.d.ts +57 -0
  32. package/dist/cli/commands/events.js +158 -0
  33. package/dist/cli/commands/install.d.ts +50 -0
  34. package/dist/cli/commands/install.js +447 -0
  35. package/dist/cli/commands/list.js +72 -0
  36. package/dist/{commands → cli/commands}/login.js +33 -17
  37. package/dist/{commands → cli/commands}/logout.d.ts +1 -0
  38. package/dist/cli/commands/logout.js +19 -0
  39. package/dist/{commands → cli/commands}/memory.d.ts +1 -8
  40. package/dist/{commands → cli/commands}/memory.js +20 -11
  41. package/dist/cli/commands/open.d.ts +45 -0
  42. package/dist/cli/commands/open.js +216 -0
  43. package/dist/{commands → cli/commands}/plan.js +2 -2
  44. package/dist/{commands → cli/commands}/publish.js +1 -1
  45. package/dist/{commands → cli/commands}/releases.js +1 -1
  46. package/dist/cli/commands/run.d.ts +19 -0
  47. package/dist/cli/commands/run.js +255 -0
  48. package/dist/{commands → cli/commands}/setup.js +43 -89
  49. package/dist/{commands → cli/commands}/skills.js +85 -222
  50. package/dist/{commands → cli/commands}/status.d.ts +1 -0
  51. package/dist/cli/commands/status.js +62 -0
  52. package/dist/cli/commands/tool.d.ts +11 -0
  53. package/dist/cli/commands/tool.js +121 -0
  54. package/dist/cli/index.d.ts +6 -0
  55. package/dist/cli/index.js +89 -0
  56. package/dist/cli/root-action.d.ts +7 -0
  57. package/dist/cli/root-action.js +15 -0
  58. package/dist/{lib → core}/api-client.d.ts +106 -15
  59. package/dist/{lib → core}/api-client.js +267 -75
  60. package/dist/{lib → core}/async-op-lifecycle.d.ts +3 -4
  61. package/dist/{lib → core}/async-op-lifecycle.js +3 -4
  62. package/dist/{lib → core}/auth.d.ts +14 -6
  63. package/dist/{lib → core}/auth.js +56 -40
  64. package/dist/core/capabilities/agent-playbook.d.ts +20 -0
  65. package/dist/core/capabilities/agent-playbook.js +218 -0
  66. package/dist/core/capabilities/api-docs.d.ts +36 -0
  67. package/dist/core/capabilities/api-docs.js +118 -0
  68. package/dist/core/capabilities/asset-import.d.ts +49 -0
  69. package/dist/core/capabilities/asset-import.js +134 -0
  70. package/dist/core/capabilities/camera-view.d.ts +98 -0
  71. package/dist/core/capabilities/camera-view.js +222 -0
  72. package/dist/core/capabilities/capture.d.ts +63 -0
  73. package/dist/core/capabilities/capture.js +67 -0
  74. package/dist/core/capabilities/console-read.d.ts +17 -0
  75. package/dist/core/capabilities/console-read.js +21 -0
  76. package/dist/{lib → core/capabilities}/creator.d.ts +1 -29
  77. package/dist/{lib → core/capabilities}/creator.js +14 -33
  78. package/dist/{lib → core/capabilities}/debug-report.d.ts +1 -1
  79. package/dist/{lib → core/capabilities}/debug-report.js +12 -31
  80. package/dist/{commands → core/capabilities}/doctor.d.ts +7 -2
  81. package/dist/{commands → core/capabilities}/doctor.js +47 -73
  82. package/dist/core/capabilities/engine-fallbacks.d.ts +26 -0
  83. package/dist/core/capabilities/engine-fallbacks.js +36 -0
  84. package/dist/core/capabilities/engine-ops.d.ts +33 -0
  85. package/dist/core/capabilities/engine-ops.js +145 -0
  86. package/dist/core/capabilities/engine-receipt.d.ts +53 -0
  87. package/dist/core/capabilities/engine-receipt.js +134 -0
  88. package/dist/core/capabilities/events.d.ts +200 -0
  89. package/dist/core/capabilities/events.js +383 -0
  90. package/dist/core/capabilities/fabricate-mesh.d.ts +111 -0
  91. package/dist/core/capabilities/fabricate-mesh.js +165 -0
  92. package/dist/core/capabilities/frame-quality.d.ts +71 -0
  93. package/dist/core/capabilities/frame-quality.js +449 -0
  94. package/dist/core/capabilities/game-task-plan.d.ts +66 -0
  95. package/dist/{lib → core/capabilities}/game-task-plan.js +59 -8
  96. package/dist/core/capabilities/hdri-import.d.ts +90 -0
  97. package/dist/core/capabilities/hdri-import.js +250 -0
  98. package/dist/core/capabilities/image-generation.d.ts +24 -0
  99. package/dist/core/capabilities/image-generation.js +22 -0
  100. package/dist/core/capabilities/navigation/open.d.ts +156 -0
  101. package/dist/core/capabilities/navigation/open.js +567 -0
  102. package/dist/core/capabilities/navigation/render-product-map.d.ts +1 -0
  103. package/dist/core/capabilities/navigation/render-product-map.js +84 -0
  104. package/dist/core/capabilities/navigation/targets.d.ts +87 -0
  105. package/dist/core/capabilities/navigation/targets.js +250 -0
  106. package/dist/core/capabilities/play-determinism.d.ts +35 -0
  107. package/dist/core/capabilities/play-determinism.js +86 -0
  108. package/dist/core/capabilities/project-context.d.ts +114 -0
  109. package/dist/core/capabilities/project-context.js +249 -0
  110. package/dist/core/capabilities/runtime-control.d.ts +540 -0
  111. package/dist/core/capabilities/runtime-control.js +1011 -0
  112. package/dist/core/capabilities/scene-kind.d.ts +19 -0
  113. package/dist/core/capabilities/scene-kind.js +137 -0
  114. package/dist/core/capabilities/scene-script.d.ts +38 -0
  115. package/dist/core/capabilities/scene-script.js +45 -0
  116. package/dist/core/capabilities/tool-dispatch.d.ts +42 -0
  117. package/dist/core/capabilities/tool-dispatch.js +1490 -0
  118. package/dist/core/capabilities/ui-control.d.ts +179 -0
  119. package/dist/core/capabilities/ui-control.js +423 -0
  120. package/dist/core/capabilities/variant-types.d.ts +22 -0
  121. package/dist/core/capabilities/variant-types.js +101 -0
  122. package/dist/core/capability-skew.d.ts +205 -0
  123. package/dist/core/capability-skew.js +386 -0
  124. package/dist/{lib → core}/config.d.ts +11 -1
  125. package/dist/{lib → core}/config.js +13 -2
  126. package/dist/core/embeddings.d.ts +78 -0
  127. package/dist/core/embeddings.js +166 -0
  128. package/dist/core/engine-install.d.ts +105 -0
  129. package/dist/core/engine-install.js +190 -0
  130. package/dist/core/engine.d.ts +94 -0
  131. package/dist/{lib → core}/engine.js +74 -28
  132. package/dist/core/feedback/client.d.ts +88 -0
  133. package/dist/core/feedback/client.js +182 -0
  134. package/dist/{lib → core}/format.d.ts +0 -1
  135. package/dist/{lib → core}/format.js +1 -1
  136. package/dist/core/headless/connection.d.ts +86 -0
  137. package/dist/core/headless/connection.js +97 -0
  138. package/dist/core/headless/editor-connection.d.ts +26 -0
  139. package/dist/core/headless/editor-connection.js +81 -0
  140. package/dist/core/headless/mcp-routing.d.ts +38 -0
  141. package/dist/core/headless/mcp-routing.js +83 -0
  142. package/dist/core/headless/registry.d.ts +91 -0
  143. package/dist/core/headless/registry.js +226 -0
  144. package/dist/core/headless/resolve.d.ts +46 -0
  145. package/dist/core/headless/resolve.js +75 -0
  146. package/dist/core/headless/spawn.d.ts +46 -0
  147. package/dist/core/headless/spawn.js +205 -0
  148. package/dist/core/headless/worker-connection.d.ts +96 -0
  149. package/dist/core/headless/worker-connection.js +353 -0
  150. package/dist/core/headless/worker-engine-client.d.ts +58 -0
  151. package/dist/core/headless/worker-engine-client.js +246 -0
  152. package/dist/core/launch-posture.d.ts +170 -0
  153. package/dist/core/launch-posture.js +317 -0
  154. package/dist/core/library-read.d.ts +73 -0
  155. package/dist/core/library-read.js +279 -0
  156. package/dist/core/library-search.d.ts +143 -0
  157. package/dist/core/library-search.js +301 -0
  158. package/dist/{lib → core}/log-filters.js +4 -2
  159. package/dist/{lib → core}/mcp-log.js +2 -17
  160. package/dist/core/package-root.d.ts +9 -0
  161. package/dist/core/package-root.js +11 -0
  162. package/dist/core/redact.d.ts +20 -0
  163. package/dist/core/redact.js +64 -0
  164. package/dist/core/registry-search.d.ts +167 -0
  165. package/dist/core/registry-search.js +358 -0
  166. package/dist/core/skills-registry.d.ts +47 -0
  167. package/dist/core/skills-registry.js +83 -0
  168. package/dist/{lib → core}/store.js +11 -7
  169. package/dist/{lib → core}/summer-compatibility.js +3 -3
  170. package/dist/{lib → core}/telemetry.js +5 -2
  171. package/dist/core/templates.d.ts +98 -0
  172. package/dist/core/templates.js +241 -0
  173. package/dist/core/tool-errors.d.ts +30 -0
  174. package/dist/core/tool-errors.js +40 -0
  175. package/dist/core/trajectory.d.ts +80 -0
  176. package/dist/core/trajectory.js +307 -0
  177. package/dist/core/util/http.d.ts +13 -0
  178. package/dist/core/util/http.js +28 -0
  179. package/dist/core/util/json.d.ts +12 -0
  180. package/dist/core/util/json.js +21 -0
  181. package/dist/core/util/process.d.ts +3 -0
  182. package/dist/core/util/process.js +13 -0
  183. package/dist/core/util/sleep.d.ts +1 -0
  184. package/dist/core/util/sleep.js +3 -0
  185. package/dist/core/version.d.ts +3 -0
  186. package/dist/core/version.js +5 -0
  187. package/dist/{lib → installer}/agent-config.d.ts +20 -1
  188. package/dist/{lib → installer}/agent-config.js +148 -23
  189. package/dist/installer/legacy-skills.d.ts +26 -0
  190. package/dist/installer/legacy-skills.js +53 -0
  191. package/dist/installer/setup.d.ts +76 -0
  192. package/dist/installer/setup.js +146 -0
  193. package/dist/installer/skill-locations.d.ts +45 -0
  194. package/dist/installer/skill-locations.js +170 -0
  195. package/dist/installer/version-check.d.ts +174 -0
  196. package/dist/{lib → installer}/version-check.js +173 -42
  197. package/dist/{lib/mcp-boot-notice.d.ts → mcp/boot-notice.d.ts} +1 -1
  198. package/dist/{commands/mcp.js → mcp/command.js} +18 -6
  199. package/dist/mcp/server.d.ts +23 -3
  200. package/dist/mcp/server.js +122 -28
  201. package/dist/mcp/tools/asset-tools.js +62 -142
  202. package/dist/mcp/tools/creator-tools.js +5 -23
  203. package/dist/mcp/tools/debug-tools.js +61 -18
  204. package/dist/mcp/tools/event-tools.d.ts +14 -0
  205. package/dist/mcp/tools/event-tools.js +41 -0
  206. package/dist/mcp/tools/fabricate-tools.d.ts +2 -0
  207. package/dist/mcp/tools/fabricate-tools.js +28 -0
  208. package/dist/mcp/tools/feedback-tools.d.ts +77 -0
  209. package/dist/mcp/tools/feedback-tools.js +88 -0
  210. package/dist/mcp/tools/file-tools.js +6 -53
  211. package/dist/mcp/tools/generate-tools.js +37 -63
  212. package/dist/mcp/tools/library-tools.d.ts +11 -0
  213. package/dist/mcp/tools/library-tools.js +42 -0
  214. package/dist/mcp/tools/navigation-tools.d.ts +7 -0
  215. package/dist/mcp/tools/navigation-tools.js +37 -0
  216. package/dist/mcp/tools/perception-tools.d.ts +20 -0
  217. package/dist/mcp/tools/perception-tools.js +146 -0
  218. package/dist/mcp/tools/project-tools.d.ts +14 -0
  219. package/dist/mcp/tools/project-tools.js +72 -281
  220. package/dist/mcp/tools/runtime-tools.d.ts +2 -0
  221. package/dist/mcp/tools/runtime-tools.js +92 -0
  222. package/dist/mcp/tools/scene-tools.d.ts +3 -0
  223. package/dist/mcp/tools/scene-tools.js +68 -119
  224. package/dist/mcp/tools/script-tools.d.ts +3 -0
  225. package/dist/mcp/tools/script-tools.js +118 -0
  226. package/dist/mcp/tools/spatial-tools.d.ts +2 -0
  227. package/dist/mcp/tools/spatial-tools.js +485 -0
  228. package/dist/mcp/tools/text-json.d.ts +8 -0
  229. package/dist/mcp/tools/text-json.js +12 -0
  230. package/dist/mcp/tools/{cloud-tools.d.ts → ui-tools.d.ts} +1 -1
  231. package/dist/mcp/tools/ui-tools.js +82 -0
  232. package/dist/mcp/tools/visual-tools.d.ts +2 -7
  233. package/dist/mcp/tools/visual-tools.js +383 -101
  234. package/dist/mcp/tools/with-engine.d.ts +9 -15
  235. package/dist/mcp/tools/with-engine.js +60 -96
  236. package/dist/project-memory/project-manifest.d.ts +36 -0
  237. package/dist/project-memory/project-manifest.js +50 -0
  238. package/dist/project-memory/project-memory.d.ts +57 -0
  239. package/dist/{lib → project-memory}/project-memory.js +46 -0
  240. package/gemini-extension.json +103 -2
  241. package/hooks/hooks-cursor.json +2 -2
  242. package/hooks/hooks.json +2 -1
  243. package/hooks/pre-commit-doctor.sh +45 -39
  244. package/hooks/run-hook.cmd +30 -23
  245. package/hooks/run-hook.sh +20 -0
  246. package/hooks/session-start.sh +18 -7
  247. package/integrations/README.md +70 -0
  248. package/integrations/claude/README.md +19 -0
  249. package/integrations/claude/manifest-target.json +16 -0
  250. package/integrations/cline/README.md +13 -0
  251. package/integrations/cline/manifest-target.json +3 -0
  252. package/integrations/codex/README.md +15 -0
  253. package/integrations/codex/manifest-target.json +5 -0
  254. package/integrations/cursor/README.md +16 -0
  255. package/integrations/cursor/manifest-target.json +5 -0
  256. package/integrations/factory/README.md +26 -0
  257. package/integrations/factory/manifest-target.json +5 -0
  258. package/integrations/gemini/README.md +26 -0
  259. package/integrations/gemini/manifest-target.json +5 -0
  260. package/integrations/github-copilot/README.md +12 -0
  261. package/integrations/github-copilot/manifest-target.json +3 -0
  262. package/integrations/kilo-code/README.md +16 -0
  263. package/integrations/kilo-code/manifest-target.json +3 -0
  264. package/integrations/lm-studio/README.md +12 -0
  265. package/integrations/lm-studio/manifest-target.json +3 -0
  266. package/integrations/opencode/README.md +15 -0
  267. package/integrations/opencode/manifest-target.json +3 -0
  268. package/integrations/roo-code/README.md +13 -0
  269. package/integrations/roo-code/manifest-target.json +3 -0
  270. package/integrations/vscode-copilot/README.md +12 -0
  271. package/integrations/vscode-copilot/manifest-target.json +3 -0
  272. package/integrations/windsurf/README.md +13 -0
  273. package/integrations/windsurf/manifest-target.json +3 -0
  274. package/library/references/collaborative-protocol/resource.yaml +24 -0
  275. package/library/references/gd-style/resource.yaml +24 -0
  276. package/{references → library/references/godot-version}/godot-version.md +6 -6
  277. package/library/references/godot-version/resource.yaml +22 -0
  278. package/library/references/headless-routing/headless-routing.md +46 -0
  279. package/library/references/headless-routing/resource.yaml +24 -0
  280. package/library/references/mcp-fresh-chat-playbook/mcp-fresh-chat-playbook.md +49 -0
  281. package/library/references/mcp-fresh-chat-playbook/resource.yaml +23 -0
  282. package/library/references/mcp-tools-reference/mcp-tools-reference.md +271 -0
  283. package/library/references/mcp-tools-reference/resource.yaml +17 -0
  284. package/library/references/product-map/product-map.md +103 -0
  285. package/library/references/product-map/resource.yaml +33 -0
  286. package/{references → library/references/public-surface-language}/public-surface-language.md +5 -7
  287. package/library/references/public-surface-language/resource.yaml +17 -0
  288. package/library/references/summer-folder/resource.yaml +20 -0
  289. package/{references → library/references/summer-folder}/summer-folder.md +22 -21
  290. package/{skills/rendering-and-lighting → library/skills}/3d-lighting/SKILL.md +15 -11
  291. package/library/skills/3d-lighting/resource.yaml +27 -0
  292. package/{skills/audio → library/skills}/adaptive-music/SKILL.md +1 -1
  293. package/library/skills/adaptive-music/resource.yaml +28 -0
  294. package/library/skills/agent-playtesting/SKILL.md +148 -0
  295. package/library/skills/agent-playtesting/resource.yaml +52 -0
  296. package/library/skills/ambient-bed/resource.yaml +24 -0
  297. package/{skills/video → library/skills}/animated-loop/SKILL.md +1 -1
  298. package/library/skills/animated-loop/resource.yaml +27 -0
  299. package/{skills/animation → library/skills}/animation-tree/SKILL.md +29 -14
  300. package/library/skills/animation-tree/resource.yaml +33 -0
  301. package/{skills/rendering-and-lighting → library/skills}/art-direction/SKILL.md +3 -3
  302. package/library/skills/art-direction/resource.yaml +29 -0
  303. package/{skills/asset-pipeline → library/skills}/asset-strategy/SKILL.md +44 -44
  304. package/library/skills/asset-strategy/resource.yaml +63 -0
  305. package/{skills/audio → library/skills}/audio-direction/SKILL.md +7 -7
  306. package/library/skills/audio-direction/resource.yaml +32 -0
  307. package/library/skills/auto-fire-targeting/resource.yaml +22 -0
  308. package/{skills/scene-and-project → library/skills}/brainstorm-game/SKILL.md +8 -8
  309. package/library/skills/brainstorm-game/resource.yaml +30 -0
  310. package/{skills/workflow → library/skills}/brainstorming/SKILL.md +2 -22
  311. package/library/skills/brainstorming/resource.yaml +23 -0
  312. package/{skills/workflow → library/skills}/brainstorming/spec-document-reviewer-prompt.md +1 -1
  313. package/{skills/scene-and-project → library/skills}/browse-templates/SKILL.md +18 -18
  314. package/library/skills/browse-templates/resource.yaml +23 -0
  315. package/library/skills/celeste-momentum-platforming/SKILL.md +366 -0
  316. package/library/skills/celeste-momentum-platforming/resource.yaml +33 -0
  317. package/library/skills/character-animation-wiring/SKILL.md +249 -0
  318. package/library/skills/character-animation-wiring/resource.yaml +39 -0
  319. package/{skills/3d-assets → library/skills}/character-model/SKILL.md +25 -25
  320. package/library/skills/character-model/resource.yaml +36 -0
  321. package/{skills/2d-assets → library/skills}/character-portrait/SKILL.md +14 -14
  322. package/library/skills/character-portrait/resource.yaml +30 -0
  323. package/{skills/video → library/skills}/cinematic-cutscene/SKILL.md +2 -2
  324. package/library/skills/cinematic-cutscene/resource.yaml +29 -0
  325. package/{skills/2d-assets → library/skills}/concept-art/SKILL.md +15 -15
  326. package/library/skills/concept-art/resource.yaml +34 -0
  327. package/{skills/2d-assets → library/skills}/create-asset-sheet/SKILL.md +8 -8
  328. package/library/skills/create-asset-sheet/resource.yaml +33 -0
  329. package/{skills/debugging → library/skills}/debug/SKILL.md +3 -3
  330. package/library/skills/debug/resource.yaml +31 -0
  331. package/{skills/workflow → library/skills}/debugging-game-feel/SKILL.md +11 -11
  332. package/library/skills/debugging-game-feel/resource.yaml +25 -0
  333. package/{skills/level-design → library/skills}/design-level/SKILL.md +6 -6
  334. package/library/skills/design-level/resource.yaml +31 -0
  335. package/{skills/gameplay-mechanics → library/skills}/design-mechanic/SKILL.md +3 -3
  336. package/library/skills/design-mechanic/resource.yaml +31 -0
  337. package/{skills/ai-and-npcs → library/skills}/design-npc/SKILL.md +7 -3
  338. package/library/skills/design-npc/resource.yaml +29 -0
  339. package/{skills/workflow → library/skills}/diagnosing-perf-regressions/SKILL.md +10 -10
  340. package/library/skills/diagnosing-perf-regressions/resource.yaml +25 -0
  341. package/{skills/workflow → library/skills}/dispatching-parallel-agents/SKILL.md +8 -8
  342. package/library/skills/dispatching-parallel-agents/resource.yaml +23 -0
  343. package/library/skills/driving-the-editor-ui/SKILL.md +85 -0
  344. package/library/skills/driving-the-editor-ui/resource.yaml +46 -0
  345. package/{skills/3d-assets → library/skills}/environment-kit/SKILL.md +11 -11
  346. package/library/skills/environment-kit/resource.yaml +29 -0
  347. package/{skills/deployment → library/skills}/export-and-ship/SKILL.md +5 -5
  348. package/library/skills/export-and-ship/resource.yaml +32 -0
  349. package/library/skills/fabricating-assets/SKILL.md +195 -0
  350. package/library/skills/fabricating-assets/resource.yaml +52 -0
  351. package/{skills/animation → library/skills}/facial-and-lipsync/SKILL.md +23 -11
  352. package/library/skills/facial-and-lipsync/resource.yaml +36 -0
  353. package/{skills/character-controllers → library/skills}/fps-controller/SKILL.md +8 -4
  354. package/library/skills/fps-controller/resource.yaml +29 -0
  355. package/{skills/visual-effects → library/skills}/game-feel/SKILL.md +7 -7
  356. package/library/skills/game-feel/resource.yaml +27 -0
  357. package/library/skills/gameskill/SKILL.md +64 -0
  358. package/library/skills/gameskill/resource.yaml +22 -0
  359. package/library/skills/gdscript-patterns/resource.yaml +23 -0
  360. package/{skills/animation → library/skills}/generate-motion/SKILL.md +16 -16
  361. package/library/skills/generate-motion/resource.yaml +34 -0
  362. package/library/skills/godogen-visual-proof-game-generation/SKILL.md +223 -0
  363. package/library/skills/godogen-visual-proof-game-generation/resource.yaml +33 -0
  364. package/{skills/workflow → library/skills}/headless-scripting/SKILL.md +14 -7
  365. package/library/skills/headless-scripting/resource.yaml +26 -0
  366. package/{skills/multiplayer-and-networking → library/skills}/host-authoritative-state/SKILL.md +1 -1
  367. package/library/skills/host-authoritative-state/resource.yaml +28 -0
  368. package/{skills/2d-assets → library/skills}/instantiate-asset-pack/SKILL.md +10 -12
  369. package/library/skills/instantiate-asset-pack/resource.yaml +29 -0
  370. package/{skills/workflow → library/skills}/investigating-bugs/SKILL.md +4 -4
  371. package/{skills/workflow → library/skills}/investigating-bugs/condition-based-waiting.md +8 -8
  372. package/library/skills/investigating-bugs/resource.yaml +24 -0
  373. package/{skills/workflow → library/skills}/investigating-bugs/root-cause-tracing.md +1 -7
  374. package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +164 -0
  375. package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +35 -0
  376. package/{skills/scene-and-project → library/skills}/make-game/SKILL.md +23 -23
  377. package/library/skills/make-game/resource.yaml +35 -0
  378. package/library/skills/music-track/resource.yaml +28 -0
  379. package/library/skills/navigate-summer/SKILL.md +61 -0
  380. package/library/skills/navigate-summer/resource.yaml +35 -0
  381. package/{skills/scene-and-project → library/skills}/new-project/SKILL.md +10 -10
  382. package/library/skills/new-project/resource.yaml +28 -0
  383. package/{skills/3d-assets → library/skills}/organic-model/SKILL.md +16 -16
  384. package/library/skills/organic-model/resource.yaml +32 -0
  385. package/{skills/multiplayer-and-networking → library/skills}/peer-to-peer-multiplayer/SKILL.md +2 -2
  386. package/library/skills/peer-to-peer-multiplayer/resource.yaml +28 -0
  387. package/{skills/2d-assets → library/skills}/pixel-art/SKILL.md +13 -13
  388. package/library/skills/pixel-art/resource.yaml +31 -0
  389. package/library/skills/play/resource.yaml +26 -0
  390. package/{skills/workflow → library/skills}/playtesting-a-feature/SKILL.md +41 -22
  391. package/library/skills/playtesting-a-feature/resource.yaml +31 -0
  392. package/{skills/animation → library/skills}/procedural-animation/SKILL.md +25 -10
  393. package/library/skills/procedural-animation/resource.yaml +33 -0
  394. package/{skills/3d-assets → library/skills}/prop-model/SKILL.md +13 -13
  395. package/library/skills/prop-model/resource.yaml +33 -0
  396. package/library/skills/psx-retro-rendering/SKILL.md +416 -0
  397. package/library/skills/psx-retro-rendering/resource.yaml +36 -0
  398. package/library/skills/realtime-wet-surfaces/SKILL.md +189 -0
  399. package/library/skills/realtime-wet-surfaces/resource.yaml +31 -0
  400. package/{skills/deployment → library/skills}/remote-deploy/SKILL.md +3 -3
  401. package/library/skills/remote-deploy/resource.yaml +23 -0
  402. package/{skills/animation → library/skills}/retarget/SKILL.md +15 -14
  403. package/library/skills/retarget/resource.yaml +33 -0
  404. package/library/skills/running-in-the-cloud/SKILL.md +103 -0
  405. package/library/skills/running-in-the-cloud/resource.yaml +33 -0
  406. package/{skills/scene-and-project → library/skills}/scene-composition/SKILL.md +9 -1
  407. package/library/skills/scene-composition/resource.yaml +27 -0
  408. package/library/skills/scene-hierarchy-design/SKILL.md +102 -0
  409. package/library/skills/scene-hierarchy-design/resource.yaml +31 -0
  410. package/library/skills/scene-scripting/SKILL.md +764 -0
  411. package/library/skills/scene-scripting/resource.yaml +58 -0
  412. package/{skills/level-design → library/skills}/scene-to-level/SKILL.md +16 -17
  413. package/library/skills/scene-to-level/resource.yaml +33 -0
  414. package/{skills/multiplayer-and-networking → library/skills}/setup-multiplayer/SKILL.md +1 -1
  415. package/library/skills/setup-multiplayer/resource.yaml +28 -0
  416. package/library/skills/skill-create/SKILL.md +138 -0
  417. package/library/skills/skill-create/resource.yaml +25 -0
  418. package/{skills/workflow → library/skills}/skill-improve/SKILL.md +2 -2
  419. package/library/skills/skill-improve/resource.yaml +25 -0
  420. package/{skills/workflow → library/skills}/skill-test/SKILL.md +4 -4
  421. package/library/skills/skill-test/resource.yaml +26 -0
  422. package/library/skills/skintokens-auto-rigging/SKILL.md +200 -0
  423. package/library/skills/skintokens-auto-rigging/resource.yaml +38 -0
  424. package/{skills/2d-assets → library/skills}/skybox-panorama/SKILL.md +8 -8
  425. package/library/skills/skybox-panorama/resource.yaml +28 -0
  426. package/{skills/audio → library/skills}/sound-effect/SKILL.md +2 -2
  427. package/library/skills/sound-effect/resource.yaml +27 -0
  428. package/library/skills/spatial-placement/SKILL.md +74 -0
  429. package/library/skills/spatial-placement/resource.yaml +42 -0
  430. package/library/skills/spatial-placement/tests/spec.md +65 -0
  431. package/{skills/2d-assets → library/skills}/sprite-sheet/SKILL.md +12 -12
  432. package/library/skills/sprite-sheet/resource.yaml +32 -0
  433. package/{skills/2d-assets → library/skills}/tileable-texture/SKILL.md +9 -9
  434. package/library/skills/tileable-texture/resource.yaml +31 -0
  435. package/{skills/video → library/skills}/trailer-shot/SKILL.md +1 -1
  436. package/library/skills/trailer-shot/resource.yaml +27 -0
  437. package/{skills/performance → library/skills}/tune-performance/SKILL.md +6 -6
  438. package/library/skills/tune-performance/resource.yaml +31 -0
  439. package/{skills/ui-and-ux → library/skills}/ui-basics/SKILL.md +1 -1
  440. package/library/skills/ui-basics/resource.yaml +25 -0
  441. package/{skills/2d-assets → library/skills}/ui-graphics/SKILL.md +11 -11
  442. package/library/skills/ui-graphics/resource.yaml +29 -0
  443. package/{skills/2d-assets → library/skills}/use-widget-asset/SKILL.md +4 -4
  444. package/library/skills/use-widget-asset/resource.yaml +29 -0
  445. package/{skills/workflow → library/skills}/using-summer/SKILL.md +12 -9
  446. package/library/skills/using-summer/resource.yaml +41 -0
  447. package/{skills/3d-assets → library/skills}/vehicle-model/SKILL.md +18 -18
  448. package/library/skills/vehicle-model/resource.yaml +34 -0
  449. package/{skills/workflow → library/skills}/verification-before-completion/SKILL.md +10 -10
  450. package/library/skills/verification-before-completion/resource.yaml +23 -0
  451. package/library/skills/verifying-scenes/SKILL.md +98 -0
  452. package/library/skills/verifying-scenes/resource.yaml +42 -0
  453. package/{skills/visual-effects/recipes/dissolve → library/skills/vfx-dissolve}/SKILL.md +31 -11
  454. package/library/skills/vfx-dissolve/resource.yaml +33 -0
  455. package/{skills/visual-effects/recipes/fire → library/skills/vfx-fire}/SKILL.md +43 -12
  456. package/library/skills/vfx-fire/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
  457. package/library/skills/vfx-fire/resource.yaml +35 -0
  458. package/{skills/visual-effects/recipes/hit-spark → library/skills/vfx-hit-spark}/SKILL.md +16 -10
  459. package/library/skills/vfx-hit-spark/_building-blocks/additive-billboard-particles.md +37 -0
  460. package/library/skills/vfx-hit-spark/resource.yaml +34 -0
  461. package/{skills/visual-effects/recipes/lightning → library/skills/vfx-lightning}/SKILL.md +24 -11
  462. package/library/skills/vfx-lightning/_building-blocks/additive-billboard-particles.md +37 -0
  463. package/library/skills/vfx-lightning/resource.yaml +33 -0
  464. package/{skills/visual-effects/recipes/magic-glow → library/skills/vfx-magic-glow}/SKILL.md +31 -11
  465. package/library/skills/vfx-magic-glow/_building-blocks/additive-billboard-particles.md +37 -0
  466. package/library/skills/vfx-magic-glow/resource.yaml +34 -0
  467. package/{skills/visual-effects/recipes/muzzle-flash → library/skills/vfx-muzzle-flash}/SKILL.md +29 -9
  468. package/library/skills/vfx-muzzle-flash/_building-blocks/additive-billboard-particles.md +37 -0
  469. package/library/skills/vfx-muzzle-flash/_building-blocks/trauma-shake-snippet.md +53 -0
  470. package/library/skills/vfx-muzzle-flash/resource.yaml +35 -0
  471. package/{skills/visual-effects/recipes/smoke → library/skills/vfx-smoke}/SKILL.md +35 -9
  472. package/library/skills/vfx-smoke/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
  473. package/library/skills/vfx-smoke/resource.yaml +32 -0
  474. package/{skills/visual-effects/recipes/water-ripple → library/skills/vfx-water-ripple}/SKILL.md +31 -9
  475. package/library/skills/vfx-water-ripple/_building-blocks/additive-billboard-particles.md +37 -0
  476. package/library/skills/vfx-water-ripple/resource.yaml +31 -0
  477. package/library/skills/voice-line/resource.yaml +27 -0
  478. package/library/skills/world-building-3d/SKILL.md +105 -0
  479. package/library/skills/world-building-3d/references/spatial-tools.md +50 -0
  480. package/library/skills/world-building-3d/resource.yaml +44 -0
  481. package/library/skills/world-building-3d/tests/spec.md +48 -0
  482. package/{skills/workflow → library/skills}/writing-plans/SKILL.md +19 -14
  483. package/library/skills/writing-plans/resource.yaml +23 -0
  484. package/{skills/workflow → library/skills}/writing-skills/SKILL.md +38 -44
  485. package/library/skills/writing-skills/resource.yaml +29 -0
  486. package/{skills/workflow → library/skills}/writing-skills/testing-skills-with-subagents.md +13 -14
  487. package/library/templates/2d-brario-platformer/resource.yaml +21 -0
  488. package/library/templates/2d-dungeon-roguelike/resource.yaml +23 -0
  489. package/library/templates/2d-grid-puzzle/resource.yaml +21 -0
  490. package/library/templates/2d-plants-and-zombies-tower-defense/resource.yaml +21 -0
  491. package/library/templates/2d-platformer/resource.yaml +24 -0
  492. package/library/templates/2d-rpg/resource.yaml +21 -0
  493. package/library/templates/2d-vampire-survivor-roguelike/resource.yaml +21 -0
  494. package/library/templates/3d-basic/resource.yaml +16 -0
  495. package/library/templates/3d-city-kit/resource.yaml +24 -0
  496. package/library/templates/3d-fps-old-school/resource.yaml +21 -0
  497. package/library/templates/3d-fps-simple-animated-npc/resource.yaml +21 -0
  498. package/library/templates/3d-lan-multiplayer-starter/resource.yaml +22 -0
  499. package/library/templates/3d-open-world-explore-tps/resource.yaml +21 -0
  500. package/library/templates/3d-procedural-road-world/resource.yaml +21 -0
  501. package/library/templates/3d-racing-game/resource.yaml +21 -0
  502. package/library/templates/3d-royale-clash-type/resource.yaml +21 -0
  503. package/library/templates/3d-third-person-controller/resource.yaml +21 -0
  504. package/library/templates/3d-voxel-sandbox/resource.yaml +24 -0
  505. package/library/templates/README.md +94 -0
  506. package/library/templates/empty/resource.yaml +16 -0
  507. package/library/tools/add-node/resource.yaml +60 -0
  508. package/library/tools/align-distribute-3d/resource.yaml +87 -0
  509. package/library/tools/api-docs/resource.yaml +57 -0
  510. package/library/tools/batch/resource.yaml +52 -0
  511. package/library/tools/camera-bookmark/resource.yaml +73 -0
  512. package/library/tools/check-job/resource.yaml +45 -0
  513. package/library/tools/clear-console/resource.yaml +40 -0
  514. package/library/tools/connect-signal/resource.yaml +63 -0
  515. package/library/tools/create-debug-report/resource.yaml +67 -0
  516. package/library/tools/create-scene/resource.yaml +59 -0
  517. package/library/tools/creator-config/resource.yaml +63 -0
  518. package/library/tools/creator-publish/resource.yaml +73 -0
  519. package/library/tools/creator-releases/resource.yaml +53 -0
  520. package/library/tools/fabricate-3d/resource.yaml +108 -0
  521. package/library/tools/game-control/resource.yaml +84 -0
  522. package/library/tools/game-input/resource.yaml +159 -0
  523. package/library/tools/game-probe/resource.yaml +90 -0
  524. package/library/tools/generate-3d/resource.yaml +112 -0
  525. package/library/tools/generate-audio/resource.yaml +80 -0
  526. package/library/tools/generate-image/resource.yaml +62 -0
  527. package/library/tools/generate-motion/resource.yaml +66 -0
  528. package/library/tools/generate-video/resource.yaml +66 -0
  529. package/library/tools/get-agent-playbook/resource.yaml +40 -0
  530. package/library/tools/get-asset/resource.yaml +42 -0
  531. package/library/tools/get-asset-download-url/resource.yaml +52 -0
  532. package/library/tools/get-console/resource.yaml +69 -0
  533. package/library/tools/get-debugger-errors/resource.yaml +56 -0
  534. package/library/tools/get-debugger-warnings/resource.yaml +52 -0
  535. package/library/tools/get-diagnostics/resource.yaml +42 -0
  536. package/library/tools/get-project-context/resource.yaml +45 -0
  537. package/library/tools/get-runtime-tree/resource.yaml +62 -0
  538. package/library/tools/get-scene-tree/resource.yaml +52 -0
  539. package/library/tools/get-script-errors/resource.yaml +45 -0
  540. package/library/tools/get-studio-workflow/resource.yaml +43 -0
  541. package/library/tools/import-asset/resource.yaml +73 -0
  542. package/library/tools/import-asset-by-id/resource.yaml +56 -0
  543. package/library/tools/import-from-url/resource.yaml +51 -0
  544. package/library/tools/import-from-url-batch/resource.yaml +60 -0
  545. package/library/tools/import-hdri/resource.yaml +69 -0
  546. package/library/tools/input-map-bind/resource.yaml +52 -0
  547. package/library/tools/inspect-node/resource.yaml +46 -0
  548. package/library/tools/inspect-resource/resource.yaml +45 -0
  549. package/library/tools/inspect-runtime-node/resource.yaml +54 -0
  550. package/library/tools/instantiate-scene/resource.yaml +62 -0
  551. package/library/tools/is-running/resource.yaml +40 -0
  552. package/library/tools/library-feedback/resource.yaml +89 -0
  553. package/library/tools/list-my-assets/resource.yaml +56 -0
  554. package/library/tools/navigation-probe/resource.yaml +85 -0
  555. package/library/tools/open/resource.yaml +80 -0
  556. package/library/tools/open-main-scene/resource.yaml +40 -0
  557. package/library/tools/open-scene/resource.yaml +46 -0
  558. package/library/tools/play/resource.yaml +91 -0
  559. package/library/tools/project-setting/resource.yaml +53 -0
  560. package/library/tools/read-file/resource.yaml +47 -0
  561. package/library/tools/read-library/resource.yaml +67 -0
  562. package/library/tools/recent-events/resource.yaml +71 -0
  563. package/library/tools/remove-node/resource.yaml +51 -0
  564. package/library/tools/replace-node/resource.yaml +57 -0
  565. package/library/tools/replace-text/resource.yaml +61 -0
  566. package/library/tools/run-editor-script/resource.yaml +61 -0
  567. package/library/tools/run-script/resource.yaml +73 -0
  568. package/library/tools/runtime-animate/resource.yaml +140 -0
  569. package/library/tools/runtime-call/resource.yaml +74 -0
  570. package/library/tools/runtime-set/resource.yaml +80 -0
  571. package/library/tools/runtime-spawn/resource.yaml +95 -0
  572. package/library/tools/save-scene/resource.yaml +50 -0
  573. package/library/tools/screenshot/resource.yaml +112 -0
  574. package/library/tools/search-assets/resource.yaml +67 -0
  575. package/library/tools/search-library/resource.yaml +81 -0
  576. package/library/tools/select-node/resource.yaml +48 -0
  577. package/library/tools/set-prop/resource.yaml +64 -0
  578. package/library/tools/set-resource-property/resource.yaml +66 -0
  579. package/library/tools/slice-asset-sheet/resource.yaml +47 -0
  580. package/library/tools/snap-to-surface/resource.yaml +90 -0
  581. package/library/tools/snapshot-diff/resource.yaml +58 -0
  582. package/library/tools/starcast/resource.yaml +120 -0
  583. package/library/tools/start-game-task/resource.yaml +91 -0
  584. package/library/tools/stop/resource.yaml +51 -0
  585. package/library/tools/test-placement/resource.yaml +109 -0
  586. package/library/tools/ui-actions/resource.yaml +77 -0
  587. package/library/tools/ui-activate/resource.yaml +88 -0
  588. package/library/tools/ui-screenshot/resource.yaml +63 -0
  589. package/library/tools/ui-tree/resource.yaml +69 -0
  590. package/library/tools/wait-for-event/resource.yaml +84 -0
  591. package/library/tools/world-snapshot/resource.yaml +60 -0
  592. package/library/tools/write-file/resource.yaml +54 -0
  593. package/package.json +22 -16
  594. package/registry/generated/aliases.json +207 -0
  595. package/registry/generated/counts.json +12 -0
  596. package/registry/generated/gemini-extension.json +122 -0
  597. package/registry/generated/index.json +7709 -0
  598. package/registry/generated/marketplace.claude.json +44 -0
  599. package/registry/generated/mcp.json +13 -0
  600. package/registry/generated/plugin.claude.json +135 -0
  601. package/registry/generated/plugin.codex.json +144 -0
  602. package/registry/generated/plugin.cursor.json +134 -0
  603. package/registry/generated/plugin.factory.json +117 -0
  604. package/registry/generated/skills-registry.json +851 -0
  605. package/registry/generated/templates-registry.json +455 -0
  606. package/registry/schemas/allowed-hosts.json +19 -0
  607. package/registry/schemas/collection.schema.json +68 -0
  608. package/registry/schemas/domains.json +96 -0
  609. package/registry/schemas/example.schema.json +11 -0
  610. package/registry/schemas/reference.schema.json +10 -0
  611. package/registry/schemas/resource.schema.json +154 -0
  612. package/registry/schemas/skill.schema.json +14 -0
  613. package/registry/schemas/template.schema.json +46 -0
  614. package/registry/schemas/tool.schema.json +61 -0
  615. package/_persona/summer/SKILL.md +0 -113
  616. package/dist/bin/postinstall.d.ts +0 -2
  617. package/dist/bin/postinstall.js +0 -3
  618. package/dist/commands/cloud.d.ts +0 -2
  619. package/dist/commands/cloud.js +0 -80
  620. package/dist/commands/create.d.ts +0 -3
  621. package/dist/commands/create.js +0 -171
  622. package/dist/commands/install.d.ts +0 -19
  623. package/dist/commands/install.js +0 -194
  624. package/dist/commands/list.js +0 -67
  625. package/dist/commands/logout.js +0 -13
  626. package/dist/commands/logs.d.ts +0 -2
  627. package/dist/commands/logs.js +0 -19
  628. package/dist/commands/open.d.ts +0 -2
  629. package/dist/commands/open.js +0 -32
  630. package/dist/commands/orchestrator.d.ts +0 -8
  631. package/dist/commands/orchestrator.js +0 -143
  632. package/dist/commands/run.d.ts +0 -2
  633. package/dist/commands/run.js +0 -167
  634. package/dist/commands/status.js +0 -46
  635. package/dist/lib/banner.d.ts +0 -4
  636. package/dist/lib/banner.js +0 -122
  637. package/dist/lib/cloud/api.d.ts +0 -79
  638. package/dist/lib/cloud/api.js +0 -107
  639. package/dist/lib/cloud/apply.d.ts +0 -32
  640. package/dist/lib/cloud/apply.js +0 -294
  641. package/dist/lib/cloud/checkpoint.d.ts +0 -26
  642. package/dist/lib/cloud/checkpoint.js +0 -142
  643. package/dist/lib/cloud/conflicts.d.ts +0 -55
  644. package/dist/lib/cloud/conflicts.js +0 -131
  645. package/dist/lib/cloud/containment.d.ts +0 -8
  646. package/dist/lib/cloud/containment.js +0 -52
  647. package/dist/lib/cloud/diff.d.ts +0 -39
  648. package/dist/lib/cloud/diff.js +0 -138
  649. package/dist/lib/cloud/engine-bridge.d.ts +0 -34
  650. package/dist/lib/cloud/engine-bridge.js +0 -139
  651. package/dist/lib/cloud/hash-cache.d.ts +0 -23
  652. package/dist/lib/cloud/hash-cache.js +0 -44
  653. package/dist/lib/cloud/hash.d.ts +0 -10
  654. package/dist/lib/cloud/hash.js +0 -111
  655. package/dist/lib/cloud/http.d.ts +0 -17
  656. package/dist/lib/cloud/http.js +0 -47
  657. package/dist/lib/cloud/lock-path.d.ts +0 -1
  658. package/dist/lib/cloud/lock-path.js +0 -5
  659. package/dist/lib/cloud/lock.d.ts +0 -14
  660. package/dist/lib/cloud/lock.js +0 -143
  661. package/dist/lib/cloud/manifest.d.ts +0 -6
  662. package/dist/lib/cloud/manifest.js +0 -41
  663. package/dist/lib/cloud/paths.d.ts +0 -20
  664. package/dist/lib/cloud/paths.js +0 -90
  665. package/dist/lib/cloud/project-godot-merge.d.ts +0 -32
  666. package/dist/lib/cloud/project-godot-merge.js +0 -185
  667. package/dist/lib/cloud/rules.d.ts +0 -39
  668. package/dist/lib/cloud/rules.js +0 -159
  669. package/dist/lib/cloud/sync.d.ts +0 -21
  670. package/dist/lib/cloud/sync.js +0 -518
  671. package/dist/lib/cloud/transfer.d.ts +0 -23
  672. package/dist/lib/cloud/transfer.js +0 -184
  673. package/dist/lib/cloud/types.d.ts +0 -62
  674. package/dist/lib/cloud/types.js +0 -1
  675. package/dist/lib/cloud/validate-path.d.ts +0 -23
  676. package/dist/lib/cloud/validate-path.js +0 -103
  677. package/dist/lib/engine.d.ts +0 -51
  678. package/dist/lib/game-task-plan.d.ts +0 -42
  679. package/dist/lib/project-memory.d.ts +0 -33
  680. package/dist/lib/public-surface-paths.d.ts +0 -13
  681. package/dist/lib/public-surface-paths.js +0 -42
  682. package/dist/lib/remote-templates.d.ts +0 -25
  683. package/dist/lib/remote-templates.js +0 -86
  684. package/dist/lib/skills-registry.d.ts +0 -572
  685. package/dist/lib/skills-registry.js +0 -1061
  686. package/dist/lib/version-check.d.ts +0 -106
  687. package/dist/mcp/tools/cloud-tools.js +0 -42
  688. package/references/mcp-tools-reference.md +0 -199
  689. package/references/template-registry.md +0 -73
  690. package/skills/README.md +0 -103
  691. package/skills/scene-and-project/summer-cloud/SKILL.md +0 -92
  692. package/skills/workflow/brainstorming/scripts/frame-template.html +0 -214
  693. package/skills/workflow/brainstorming/scripts/helper.js +0 -88
  694. package/skills/workflow/brainstorming/scripts/server.cjs +0 -354
  695. package/skills/workflow/brainstorming/scripts/start-server.sh +0 -148
  696. package/skills/workflow/brainstorming/scripts/stop-server.sh +0 -56
  697. package/skills/workflow/brainstorming/visual-companion.md +0 -287
  698. package/skills/workflow/gameskill/SKILL.md +0 -120
  699. package/skills/workflow/investigating-bugs/CREATION-LOG.md +0 -119
  700. package/skills/workflow/investigating-bugs/condition-based-waiting-example.ts +0 -158
  701. package/skills/workflow/investigating-bugs/find-polluter.sh +0 -63
  702. package/skills/workflow/investigating-bugs/test-academic.md +0 -14
  703. package/skills/workflow/investigating-bugs/test-pressure-1.md +0 -58
  704. package/skills/workflow/investigating-bugs/test-pressure-2.md +0 -68
  705. package/skills/workflow/investigating-bugs/test-pressure-3.md +0 -69
  706. package/skills/workflow/mcpupdate/SKILL.md +0 -134
  707. package/skills/workflow/skill-create/SKILL.md +0 -153
  708. package/skills/workflow/writing-skills/anthropic-best-practices.md +0 -1150
  709. package/skills/workflow/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -189
  710. package/skills/workflow/writing-skills/graphviz-conventions.dot +0 -172
  711. package/skills/workflow/writing-skills/persuasion-principles.md +0 -187
  712. package/skills/workflow/writing-skills/render-graphs.js +0 -168
  713. /package/dist/{commands → cli/commands}/config.d.ts +0 -0
  714. /package/dist/{commands → cli/commands}/debug.d.ts +0 -0
  715. /package/dist/{commands → cli/commands}/list.d.ts +0 -0
  716. /package/dist/{commands → cli/commands}/login.d.ts +0 -0
  717. /package/dist/{commands → cli/commands}/plan.d.ts +0 -0
  718. /package/dist/{commands → cli/commands}/publish.d.ts +0 -0
  719. /package/dist/{commands → cli/commands}/releases.d.ts +0 -0
  720. /package/dist/{commands → cli/commands}/setup.d.ts +0 -0
  721. /package/dist/{commands → cli/commands}/skills.d.ts +0 -0
  722. /package/dist/{lib → core}/log-filters.d.ts +0 -0
  723. /package/dist/{lib → core}/mcp-log.d.ts +0 -0
  724. /package/dist/{lib → core}/store.d.ts +0 -0
  725. /package/dist/{lib → core}/summer-compatibility.d.ts +0 -0
  726. /package/dist/{lib → core}/telemetry.d.ts +0 -0
  727. /package/dist/{lib/mcp-boot-notice.js → mcp/boot-notice.js} +0 -0
  728. /package/dist/{commands/mcp.d.ts → mcp/command.d.ts} +0 -0
  729. /package/{references → library/references/collaborative-protocol}/collaborative-protocol.md +0 -0
  730. /package/{references → library/references/gd-style}/gd-style.md +0 -0
  731. /package/{skills/audio → library/skills}/ambient-bed/SKILL.md +0 -0
  732. /package/{skills/gameplay-mechanics → library/skills}/auto-fire-targeting/SKILL.md +0 -0
  733. /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/SKILL.md +0 -0
  734. /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/reference.md +0 -0
  735. /package/{skills/workflow → library/skills}/investigating-bugs/defense-in-depth.md +0 -0
  736. /package/{skills/audio → library/skills}/music-track/SKILL.md +0 -0
  737. /package/{skills/scene-and-project → library/skills}/play/SKILL.md +0 -0
  738. /package/{skills/visual-effects → library/skills/vfx-dissolve}/_building-blocks/noise-3d-fbm.gdshaderinc +0 -0
  739. /package/{skills/visual-effects → library/skills/vfx-fire}/_building-blocks/additive-billboard-particles.md +0 -0
  740. /package/{skills/visual-effects → library/skills/vfx-lightning}/_building-blocks/trauma-shake-snippet.md +0 -0
  741. /package/{skills/audio → library/skills}/voice-line/SKILL.md +0 -0
  742. /package/{skills/workflow → library/skills}/writing-plans/plan-document-reviewer-prompt.md +0 -0
@@ -0,0 +1,62 @@
1
+ import { Command } from "commander";
2
+ import { getAuthToken, getUserInfo, hasEnvAuthToken } from "../../core/auth.js";
3
+ import { resolveGatewayUrl } from "../../core/config.js";
4
+ import { getApiToken, getApiPort, checkEngineHealth } from "../../core/engine.js";
5
+ export const statusCommand = new Command("status")
6
+ .description("Check Summer Engine status, connection, and auth state")
7
+ .action(async () => {
8
+ await runStatus(console.log);
9
+ });
10
+ export async function runStatus(log) {
11
+ log("Summer Engine Status\n");
12
+ const authToken = await getAuthToken();
13
+ if (!authToken) {
14
+ log(" Auth: Not logged in");
15
+ log(" Run: npx -y summer-engine@latest login");
16
+ log(` Or: ${await loginPageHint()}`);
17
+ }
18
+ else if (hasEnvAuthToken()) {
19
+ // The env credential is what every gateway call uses; a stored identity
20
+ // (if any) is not the one in effect, so it is not printed.
21
+ log(" Auth: SUMMER_TOKEN (env) — logout does not affect it");
22
+ }
23
+ else {
24
+ log(` Auth: Logged in${await storedIdentitySuffix()}`);
25
+ }
26
+ const apiToken = await getApiToken();
27
+ const port = await getApiPort();
28
+ if (!apiToken) {
29
+ log(" Engine: Not running (no api-token found)");
30
+ log("\n To start: summer run");
31
+ return;
32
+ }
33
+ log(" API Token: Found (~/.summer/api-token)");
34
+ log(` Port: ${port}`);
35
+ const health = await checkEngineHealth(port);
36
+ if (!health) {
37
+ log(" Engine: Not responding (may have closed since last launch)");
38
+ log("\n To start: summer run");
39
+ return;
40
+ }
41
+ // /api/health carries no project name/path/scene (see EngineHealth in
42
+ // core/engine.ts); summer_get_project_context is the read for those.
43
+ log(` Engine: Running (v${health.version})`);
44
+ }
45
+ /** A corrupt user.json must not take `summer status` down with it. */
46
+ async function storedIdentitySuffix() {
47
+ try {
48
+ const userInfo = await getUserInfo();
49
+ return userInfo?.email ? ` as ${userInfo.email}` : "";
50
+ }
51
+ catch (error) {
52
+ return ` (identity unreadable: ${error instanceof Error ? error.message : String(error)})`;
53
+ }
54
+ }
55
+ async function loginPageHint() {
56
+ try {
57
+ return `${await resolveGatewayUrl()}/login`;
58
+ }
59
+ catch (error) {
60
+ return `(gateway.url is invalid: ${error instanceof Error ? error.message : String(error)})`;
61
+ }
62
+ }
@@ -0,0 +1,11 @@
1
+ import { Command } from "commander";
2
+ import { type ToolDispatchEntry } from "../../core/capabilities/tool-dispatch.js";
3
+ /** Resolve a name through the compiled registry index when it exists —
4
+ * accepts full ids ("tool/add-node") and legacy aliases, returning the slug
5
+ * the dispatch table knows. Returns null when the index is absent or the
6
+ * name is not a tool resource. */
7
+ export declare function resolveViaRegistryIndex(name: string, root?: string): string | null;
8
+ export declare function resolveToolForCli(name: string): ToolDispatchEntry | null;
9
+ export declare function parseJsonArgs(raw: string | undefined): Record<string, unknown>;
10
+ export declare function formatToolList(entries: readonly ToolDispatchEntry[]): string;
11
+ export declare const toolCommand: Command;
@@ -0,0 +1,121 @@
1
+ /**
2
+ * summer tool — CLI parity passthrough for every library tool resource.
3
+ *
4
+ * Dispatches through the shared registry in
5
+ * src/core/capabilities/tool-dispatch.ts (the same core capabilities, engine
6
+ * client, and gateway endpoints the MCP surface uses; contract §2: cli never
7
+ * imports mcp). Name resolution prefers the dispatch table and, when the
8
+ * compiled registry exists (registry/generated/index.json), also resolves
9
+ * library ids and legacy aliases through it.
10
+ */
11
+ import { existsSync, readFileSync } from "node:fs";
12
+ import { join } from "node:path";
13
+ import { PACKAGE_ROOT } from "../../core/package-root.js";
14
+ import { Command, Option } from "commander";
15
+ import { ToolDispatchError, ToolResultError, dispatchTool, listToolDispatches, resolveToolDispatch, } from "../../core/capabilities/tool-dispatch.js";
16
+ import { c } from "../../core/format.js";
17
+ /** Resolve a name through the compiled registry index when it exists —
18
+ * accepts full ids ("tool/add-node") and legacy aliases, returning the slug
19
+ * the dispatch table knows. Returns null when the index is absent or the
20
+ * name is not a tool resource. */
21
+ export function resolveViaRegistryIndex(name, root = PACKAGE_ROOT) {
22
+ const indexPath = join(root, "registry", "generated", "index.json");
23
+ if (!existsSync(indexPath))
24
+ return null;
25
+ let resources;
26
+ try {
27
+ const parsed = JSON.parse(readFileSync(indexPath, "utf8"));
28
+ resources = Array.isArray(parsed.resources) ? parsed.resources : [];
29
+ }
30
+ catch {
31
+ return null;
32
+ }
33
+ const needle = name.trim();
34
+ for (const resource of resources) {
35
+ if (resource.kind !== "tool" || typeof resource.id !== "string")
36
+ continue;
37
+ const matches = resource.id === needle ||
38
+ resource.id === `tool/${needle}` ||
39
+ (Array.isArray(resource.aliases) && resource.aliases.includes(needle));
40
+ if (matches)
41
+ return resource.id.replace(/^tool\//, "");
42
+ }
43
+ return null;
44
+ }
45
+ export function resolveToolForCli(name) {
46
+ const direct = resolveToolDispatch(name);
47
+ if (direct)
48
+ return direct;
49
+ const viaRegistry = resolveViaRegistryIndex(name);
50
+ return viaRegistry ? resolveToolDispatch(viaRegistry) : null;
51
+ }
52
+ export function parseJsonArgs(raw) {
53
+ if (raw === undefined)
54
+ return {};
55
+ let parsed;
56
+ try {
57
+ parsed = JSON.parse(raw);
58
+ }
59
+ catch (err) {
60
+ throw new ToolDispatchError(`--args must be valid JSON: ${err instanceof Error ? err.message : String(err)}`);
61
+ }
62
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
63
+ throw new ToolDispatchError("--args must be a JSON object of tool arguments");
64
+ }
65
+ return parsed;
66
+ }
67
+ export function formatToolList(entries) {
68
+ const width = Math.max(...entries.map((entry) => entry.slug.length));
69
+ const lines = [...entries]
70
+ .sort((a, b) => a.slug.localeCompare(b.slug))
71
+ .map((entry) => ` ${entry.slug.padEnd(width)} ${entry.summary}${entry.engineRequired ? c.dim(" [engine]") : ""}`);
72
+ return [
73
+ c.bold(`Summer tools (${entries.length})`),
74
+ ...lines,
75
+ "",
76
+ c.dim("[engine] needs the Summer Engine app running with the project open."),
77
+ c.dim(`Run one: summer tool <name> --args '{"arg": "value"}'`),
78
+ ].join("\n");
79
+ }
80
+ export const toolCommand = new Command("tool")
81
+ .description("Run any Summer tool from the CLI — same implementations as the MCP surface")
82
+ .argument("[name]", "Tool name: library slug (add-node) or MCP alias (summer_add_node)")
83
+ .option("--args <json>", "Tool arguments as a JSON object (matches the tool's input_schema)")
84
+ .addOption(new Option("--json <args>", "Deprecated alias of --args").hideHelp())
85
+ .option("--list", "List every tool with a one-line summary")
86
+ .action(async (name, options) => {
87
+ if (options.list || name === undefined) {
88
+ console.log(formatToolList(listToolDispatches()));
89
+ if (name === undefined && !options.list) {
90
+ console.log("");
91
+ console.log(c.dim("Pass a tool name to run one."));
92
+ }
93
+ return;
94
+ }
95
+ const entry = resolveToolForCli(name);
96
+ if (!entry) {
97
+ throw new ToolDispatchError(`Unknown tool "${name}". Run 'summer tool --list' to see all ${listToolDispatches().length} tools.`);
98
+ }
99
+ if (options.json !== undefined && options.args === undefined) {
100
+ console.error("Note: 'summer tool --json <args>' is deprecated; use --args <json>.");
101
+ }
102
+ const args = parseJsonArgs(options.args ?? options.json);
103
+ let result;
104
+ try {
105
+ result = await dispatchTool(entry.slug, args);
106
+ }
107
+ catch (err) {
108
+ // A structured failure — any engine receipt the MCP face would mark
109
+ // isError, engine_lacks_op, a library/navigation miss — is printed whole
110
+ // (stdout, exit 1) so callers read ok/error/failure_reason instead of
111
+ // scraping a sentence. Argument and connection errors stay plain text on
112
+ // stderr (thrown; the program's catch exits 1).
113
+ if (err instanceof ToolResultError) {
114
+ console.log(JSON.stringify(err.result, null, 2));
115
+ process.exitCode = 1;
116
+ return;
117
+ }
118
+ throw err;
119
+ }
120
+ console.log(JSON.stringify(result, null, 2));
121
+ });
@@ -0,0 +1,6 @@
1
+ import { Command } from "commander";
2
+ /**
3
+ * Build and run the summer CLI. The `mcp` command is injected by the bin
4
+ * entry (the composition root) so the cli layer never imports from src/mcp.
5
+ */
6
+ export declare function runCli(mcpCommand: Command): void;
@@ -0,0 +1,89 @@
1
+ import { Command } from "commander";
2
+ import { loginCommand } from "./commands/login.js";
3
+ import { logoutCommand } from "./commands/logout.js";
4
+ import { statusCommand } from "./commands/status.js";
5
+ import { runCommand } from "./commands/run.js";
6
+ import { openCommand } from "./commands/open.js";
7
+ import { installCommand } from "./commands/install.js";
8
+ import { createCommand } from "./commands/create.js";
9
+ import { listCommand } from "./commands/list.js";
10
+ import { memoryCommand } from "./commands/memory.js";
11
+ import { skillsCommand } from "./commands/skills.js";
12
+ import { setupCommand } from "./commands/setup.js";
13
+ import { doctorCommand } from "./commands/doctor.js";
14
+ import { planCommand } from "./commands/plan.js";
15
+ import { debugCommand } from "./commands/debug.js";
16
+ import { configCommand } from "./commands/config.js";
17
+ import { publishCommand } from "./commands/publish.js";
18
+ import { releasesCommand } from "./commands/releases.js";
19
+ import { eventsCommand } from "./commands/events.js";
20
+ import { toolCommand } from "./commands/tool.js";
21
+ import { getBanner } from "./banner.js";
22
+ import { runRootAction } from "./root-action.js";
23
+ import { c, sym } from "../core/format.js";
24
+ import { TOOLKIT_VERSION as version } from "../core/version.js";
25
+ /**
26
+ * Build and run the summer CLI. The `mcp` command is injected by the bin
27
+ * entry (the composition root) so the cli layer never imports from src/mcp.
28
+ */
29
+ export function runCli(mcpCommand) {
30
+ const program = new Command();
31
+ program
32
+ .name("summer")
33
+ .description("CLI and MCP tools for Summer Engine — the AI-native game engine")
34
+ .version(version)
35
+ .action((_opts, command) => {
36
+ runRootAction(command.args, () => printIntro(version));
37
+ });
38
+ program.addCommand(installCommand);
39
+ program.addCommand(loginCommand);
40
+ program.addCommand(logoutCommand);
41
+ program.addCommand(statusCommand);
42
+ program.addCommand(runCommand);
43
+ program.addCommand(openCommand);
44
+ program.addCommand(createCommand);
45
+ program.addCommand(listCommand);
46
+ program.addCommand(memoryCommand);
47
+ program.addCommand(skillsCommand);
48
+ program.addCommand(mcpCommand);
49
+ program.addCommand(setupCommand);
50
+ program.addCommand(doctorCommand);
51
+ program.addCommand(debugCommand);
52
+ program.addCommand(planCommand);
53
+ program.addCommand(configCommand);
54
+ program.addCommand(publishCommand);
55
+ program.addCommand(releasesCommand);
56
+ program.addCommand(eventsCommand);
57
+ program.addCommand(toolCommand);
58
+ program.parseAsync().catch((err) => {
59
+ console.error(err instanceof Error ? err.message : String(err));
60
+ process.exit(1);
61
+ });
62
+ }
63
+ function printIntro(version) {
64
+ console.log("");
65
+ console.log(getBanner());
66
+ console.log("");
67
+ console.log(` ${sym.arrow()} ${c.bold("Summer Engine")} ${c.dim("v" + version)} ${c.dim("·")} AI-native game engine`);
68
+ console.log("");
69
+ console.log(` ${c.bold("Setup wizard")}`);
70
+ console.log(` Open Claude Code, Cursor, Codex, Copilot, Devin Desktop (formerly Windsurf), or another supported agent and paste:`);
71
+ console.log(` ${c.brand("\"Install Summer Engine and let's make a game.\"")}`);
72
+ console.log("");
73
+ console.log(` ${c.bold("Manual commands")}`);
74
+ console.log(` ${c.dim("$")} npx -y summer-engine@latest setup claude-code --yes`);
75
+ console.log(` ${c.dim("$")} npx -y summer-engine@latest create 3d-basic my-game`);
76
+ console.log(` ${c.dim("$")} npx -y summer-engine@latest plan make a small arena shooter`);
77
+ console.log(` ${c.dim("$")} npx -y summer-engine@latest debug "player crashes on pickup"`);
78
+ console.log(` ${c.dim("$")} npx -y summer-engine@latest memory`);
79
+ console.log(` ${c.dim("$")} npx -y summer-engine@latest doctor`);
80
+ console.log("");
81
+ console.log(` ${c.bold("Slash commands")} ${c.dim("(in your AI agent)")}`);
82
+ console.log(` ${c.brand("/summer debug")} ${c.dim("Create a support-ready debug report")}`);
83
+ console.log(` ${c.brand("/debug")} ${c.dim("Triage and fix a bug end-to-end")}`);
84
+ console.log(` ${c.brand("/play")} ${c.dim("Run the game and report state")}`);
85
+ console.log("");
86
+ console.log(` ${c.dim("Docs:")} https://summerengine.com/docs`);
87
+ console.log(` ${c.dim("Source:")} https://github.com/summerengine/summer`);
88
+ console.log("");
89
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Root `summer` invocation. Commander routes an unknown subcommand
3
+ * (`summer bogus`) to the program action with the stray word as an operand,
4
+ * so a bare-intro action would print the banner and exit 0. Agents probe
5
+ * commands by exit code — an unknown command must fail.
6
+ */
7
+ export declare function runRootAction(operands: readonly string[], printIntro: () => void): void;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Root `summer` invocation. Commander routes an unknown subcommand
3
+ * (`summer bogus`) to the program action with the stray word as an operand,
4
+ * so a bare-intro action would print the banner and exit 0. Agents probe
5
+ * commands by exit code — an unknown command must fail.
6
+ */
7
+ export function runRootAction(operands, printIntro) {
8
+ if (operands.length > 0) {
9
+ console.error(`error: unknown command '${operands[0]}'`);
10
+ console.error("Run 'summer --help' to see the available commands.");
11
+ process.exitCode = 1;
12
+ return;
13
+ }
14
+ printIntro();
15
+ }
@@ -1,4 +1,6 @@
1
- import { type EngineSelection } from "./engine.js";
1
+ import { type DiscoverEngineOptions, type EngineSelection } from "./engine.js";
2
+ import type { EngineCapabilities } from "./capability-skew.js";
3
+ import { type PlayDeterminism } from "./capabilities/play-determinism.js";
2
4
  export type EngineSnapshot = {
3
5
  ok: boolean;
4
6
  localPath?: string;
@@ -48,13 +50,52 @@ type EngineTargetIdentity = {
48
50
  projectId?: string;
49
51
  projectIdHash?: string;
50
52
  };
53
+ /** Query parameters of GET /api/events/poll (the engine's events channel). */
54
+ export type EventsPollParams = {
55
+ /** Deliver events with seq > since. Omitted = live only (from the newest
56
+ * seq at request time); 0 = replay the whole retained ring. A value beyond
57
+ * the newest seq is clamped by the engine so the caller resyncs. */
58
+ since?: number;
59
+ /** Allow-list of event kinds (op.applied, play.started, ...); omitted or
60
+ * empty = every kind. */
61
+ kinds?: string[];
62
+ /** Max ms the engine holds the request before answering with zero events
63
+ * (engine default 25000, cap 60000; 0 = answer immediately). */
64
+ wait?: number;
65
+ /** Max events per answer (engine default 100, cap 500); the answer says
66
+ * truncated:true when the page was full. */
67
+ limit?: number;
68
+ };
69
+ /** rebind() could not re-read engine health; the session identity is unchanged. */
70
+ export declare class EngineRebindError extends Error {
71
+ constructor(message: string);
72
+ }
51
73
  export declare class EngineApiClient {
52
74
  private port;
53
75
  private token;
54
76
  private targetIdentity;
55
77
  private selection;
78
+ private registryDiscovery;
79
+ private lastHealth;
56
80
  constructor(port: number, token: string, targetIdentity?: EngineTargetIdentity | string, selection?: EngineSelection | null);
57
- static connect(selection?: EngineSelection): Promise<EngineApiClient>;
81
+ /**
82
+ * With a selection (the MCP server: --project / --instance / its cwd) the
83
+ * registry decides — resolveEngineConnection. Without one (the CLI face):
84
+ * SUMMER_ENGINE_PROJECT / SUMMER_ENGINE_INSTANCE_ID when set (same names the
85
+ * MCP server reads), else the global pointer (~/.summer/api-token + api-port)
86
+ * when it names an engine that answers /api/health — today's behaviour,
87
+ * unchanged — else the instance registry (discoverRegistryConnection), so an
88
+ * editor launched `--summer-no-publish` or a second editor is still found.
89
+ * The pointer is read through getApiPort/getApiToken/checkEngineHealth so
90
+ * tests that stub those readers never touch the real ~/.summer. `discovery`
91
+ * is a test seam (fake ~/.summer, cwd, env).
92
+ */
93
+ static connect(selection?: EngineSelection, discovery?: DiscoverEngineOptions): Promise<EngineApiClient>;
94
+ /** The engine's capability advert from the last health read (connect or
95
+ * rebind), or undefined when the engine predates the advert. */
96
+ getEngineCapabilities(): EngineCapabilities | undefined;
97
+ /** Engine version string from the last health read, for skew messages. */
98
+ getEngineVersion(): string | undefined;
58
99
  /** The projectIdHash this session is bound to (undefined if none was reported
59
100
  * at connect — e.g. no project open yet). */
60
101
  getBoundProjectIdHash(): string | undefined;
@@ -64,6 +105,10 @@ export declare class EngineApiClient {
64
105
  * switch (the deliberate escape hatch after an identity_mismatch). Returns the
65
106
  * new bound hash. The direct health probe is intentionally unscoped, so it can
66
107
  * reach the current engine even when bound requests would be rejected.
108
+ *
109
+ * Throws EngineRebindError when the health probe fails: the previous identity
110
+ * is kept, and reporting it as "the rebound hash" would tell the agent a
111
+ * switch it never followed had succeeded.
67
112
  */
68
113
  rebind(): Promise<string | undefined>;
69
114
  /** Identity to attach to a MUTATING command's options so the engine can reject
@@ -86,14 +131,39 @@ export declare class EngineApiClient {
86
131
  * state instead of pretending the accepted operation did not apply.
87
132
  */
88
133
  private _requestQueued;
134
+ /**
135
+ * The post-submission half of _requestQueued: classify an already-fetched
136
+ * response (200 legacy / 202 queued / 429 backpressure) and, for 202, poll
137
+ * the accepted requestId to its terminal receipt. Split out so a caller that
138
+ * has to inspect the raw status first (gameSnapshot's 409 bridge check) can
139
+ * feed its ONE response in here instead of issuing a second request.
140
+ */
141
+ private _resolveQueuedResponse;
89
142
  health(): Promise<unknown>;
90
- executeOps(ops: Record<string, unknown>[], options?: Record<string, unknown>): Promise<unknown>;
143
+ /**
144
+ * One long-poll of GET /api/events/poll (the engine's events channel). The
145
+ * engine answers on the first event matching `kinds` with seq > `since`, or
146
+ * after `wait` ms with `timed_out:true`; a 2xx is the poll envelope
147
+ * {ok, events:[{seq, kind, ts, data}], next_seq, last_seq, since, truncated,
148
+ * timed_out}. Identity-gated like every other route: the bound project rides
149
+ * in the query, so a wrong project answers 409 identity_mismatch.
150
+ *
151
+ * The three answers this route documents — 404 (no channel on this build),
152
+ * 409 (identity mismatch), 503 (bus not started) — come back as a STRUCTURED
153
+ * failure {ok:false, http_status, ...body} so both faces classify them (a
154
+ * terminalState keeps its standard message and rebind hint; the events
155
+ * capability rewrites a 404 into engine_lacks_events). Anything else throws
156
+ * like every other request, so a stale-token 401/403 still triggers
157
+ * withEngine's reconnect-and-retry.
158
+ */
159
+ pollEvents(params?: EventsPollParams, timeoutMs?: number): Promise<unknown>;
160
+ executeOps(ops: Record<string, unknown>[], options?: Record<string, unknown>, timeoutMs?: number): Promise<unknown>;
91
161
  /**
92
162
  * Mutation path for MCP file tools. Unlike legacy executeOps callers, this
93
163
  * fails closed when health did not provide a complete target identity. The
94
164
  * bound hash is stamped last so a caller cannot override it in options.
95
165
  */
96
- executeIdentityBoundOps(ops: Record<string, unknown>[], options?: Record<string, unknown>): Promise<unknown>;
166
+ executeIdentityBoundOps(ops: Record<string, unknown>[], options?: Record<string, unknown>, timeoutMs?: number): Promise<unknown>;
97
167
  readProjectFile(path: string, maxBytes?: number): Promise<unknown>;
98
168
  getSceneState(scenePath?: string, options?: {
99
169
  depth?: number;
@@ -104,7 +174,7 @@ export declare class EngineApiClient {
104
174
  inspectNode(path: string): Promise<unknown>;
105
175
  inspectResource(path: string): Promise<unknown>;
106
176
  getScriptErrors(path: string): Promise<unknown>;
107
- play(scene?: string): Promise<unknown>;
177
+ play(scene?: string, determinism?: PlayDeterminism): Promise<unknown>;
108
178
  stop(): Promise<unknown>;
109
179
  readFile(path: string, maxBytes?: number): Promise<unknown>;
110
180
  getFsTree(root?: string, limit?: number): Promise<unknown>;
@@ -115,14 +185,12 @@ export declare class EngineApiClient {
115
185
  * Used by viewport/game snapshots and by scenePreview. */
116
186
  private _parseSnapshotResponse;
117
187
  /**
118
- * Probe /api/snapshot/game for the structural 409 `bridge_required` shape
119
- * (tool_net_thread.cpp:495-503). Returns a structured failure only when the
120
- * engine actually answers 409 with `bridge_required` / `unsupported_transport`;
121
- * ANY other status (200/202/other) returns null so the caller proceeds to the
122
- * normal queued path — so the moment the engine starts answering over HTTP
123
- * (P4.4), game capture just works with no code change here.
188
+ * Turn a 409 from /api/snapshot/game into a structured failure. The engine's
189
+ * structural refusal carries `bridge_required` / `unsupported_transport`
190
+ * (tool_net_thread.cpp:495-503); a 409 without that shape is surfaced as a
191
+ * plain error rather than silently claiming "bridge required".
124
192
  */
125
- private _detectBridgeRequired;
193
+ private _bridgeRequiredFromResponse;
126
194
  viewportSnapshot(): Promise<EngineSnapshot>;
127
195
  gameSnapshot(): Promise<EngineSnapshot>;
128
196
  /**
@@ -134,15 +202,38 @@ export declare class EngineApiClient {
134
202
  * name `node_path`); an unresolvable node fails with failure_reason
135
203
  * "node_not_found". framing "auto" is an alias of "iso"; the engine also
136
204
  * accepts "top"/"front"/"back"/"left"/"right" and echoes the resolved framing.
137
- * The result carries image_base64 + mime (+ width/height) plus the P4.3
138
- * confession fields (scene_has_camera / scene_had_light /
205
+ * framing "camera" renders through the scene's current/first Camera3D — or
206
+ * the Camera3D named by `cameraPath` — with the scene's REAL WorldEnvironment
207
+ * instead of the flat preview substitute; the engine echoes the resolved
208
+ * framing, so an older build that ignores the value is detectable by the
209
+ * caller. The result carries image_base64 + mime (+ width/height) plus the
210
+ * P4.3 confession fields (scene_has_camera / scene_had_light /
139
211
  * used_synthetic_camera) and framing / framed_node / render_retries.
212
+ *
213
+ * Perception additions (engine scene-scripting contracts): framing "free" takes
214
+ * `cameraPosition` / `cameraLookAt` (Godot "Vector3(x, y, z)" literals) and
215
+ * `fov`; framing "bookmark:<name>" resolves the pose from the project's
216
+ * camera bookmarks (fov overrides the bookmark's). `marks` draws the
217
+ * Set-of-Mark overlay (numbered tags + boxes over the largest visible
218
+ * VisualInstance3D nodes), capped by `maxMarks`. The result adds
219
+ * framing_source / camera_pose / bookmark and marks / marks_skipped /
220
+ * marks_candidates / marks_truncated / max_marks (all kept in `metadata`).
221
+ * Older engines resolve the new framings to a preset and echo THAT — the
222
+ * caller compares the echo against what it asked for.
140
223
  */
141
224
  scenePreview(input?: {
142
225
  scenePath?: string;
143
- framing?: "auto" | "iso" | "top" | "front" | "back" | "left" | "right";
226
+ /** A preset ("auto" | "iso" | "top" | "front" | "back" | "left" | "right" |
227
+ * "camera"), "free", or "bookmark:<name>". */
228
+ framing?: string;
144
229
  size?: [number, number];
145
230
  nodePath?: string;
231
+ cameraPath?: string;
232
+ cameraPosition?: string;
233
+ cameraLookAt?: string;
234
+ fov?: number;
235
+ marks?: boolean;
236
+ maxMarks?: number;
146
237
  }): Promise<EngineSnapshot>;
147
238
  getPort(): number;
148
239
  /**