summer-engine 2.8.2 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (790) 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 +149 -44
  11. package/CLAUDE.md +4 -2
  12. package/GEMINI.md +7 -53
  13. package/NOTICE +31 -0
  14. package/README.md +161 -393
  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/cli/commands/setup.js +158 -0
  49. package/dist/{commands → cli/commands}/skills.js +121 -251
  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 +55 -0
  167. package/dist/core/skills-registry.js +106 -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/installer/agent-config.d.ts +63 -0
  188. package/dist/installer/agent-config.js +540 -0
  189. package/dist/installer/agent-table.d.ts +103 -0
  190. package/dist/installer/agent-table.js +584 -0
  191. package/dist/installer/legacy-skills.d.ts +26 -0
  192. package/dist/installer/legacy-skills.js +53 -0
  193. package/dist/installer/setup.d.ts +76 -0
  194. package/dist/installer/setup.js +148 -0
  195. package/dist/installer/skill-locations.d.ts +36 -0
  196. package/dist/installer/skill-locations.js +91 -0
  197. package/dist/installer/version-check.d.ts +178 -0
  198. package/dist/installer/version-check.js +479 -0
  199. package/dist/{lib/mcp-boot-notice.d.ts → mcp/boot-notice.d.ts} +1 -1
  200. package/dist/{commands/mcp.js → mcp/command.js} +18 -6
  201. package/dist/mcp/server.d.ts +23 -3
  202. package/dist/mcp/server.js +122 -28
  203. package/dist/mcp/tools/asset-tools.js +62 -142
  204. package/dist/mcp/tools/creator-tools.js +5 -23
  205. package/dist/mcp/tools/debug-tools.js +61 -18
  206. package/dist/mcp/tools/event-tools.d.ts +14 -0
  207. package/dist/mcp/tools/event-tools.js +41 -0
  208. package/dist/mcp/tools/fabricate-tools.d.ts +2 -0
  209. package/dist/mcp/tools/fabricate-tools.js +28 -0
  210. package/dist/mcp/tools/feedback-tools.d.ts +77 -0
  211. package/dist/mcp/tools/feedback-tools.js +88 -0
  212. package/dist/mcp/tools/file-tools.js +6 -53
  213. package/dist/mcp/tools/generate-tools.js +37 -63
  214. package/dist/mcp/tools/library-tools.d.ts +11 -0
  215. package/dist/mcp/tools/library-tools.js +42 -0
  216. package/dist/mcp/tools/navigation-tools.d.ts +7 -0
  217. package/dist/mcp/tools/navigation-tools.js +37 -0
  218. package/dist/mcp/tools/perception-tools.d.ts +20 -0
  219. package/dist/mcp/tools/perception-tools.js +146 -0
  220. package/dist/mcp/tools/project-tools.d.ts +14 -0
  221. package/dist/mcp/tools/project-tools.js +72 -281
  222. package/dist/mcp/tools/runtime-tools.d.ts +2 -0
  223. package/dist/mcp/tools/runtime-tools.js +92 -0
  224. package/dist/mcp/tools/scene-tools.d.ts +3 -0
  225. package/dist/mcp/tools/scene-tools.js +68 -119
  226. package/dist/mcp/tools/script-tools.d.ts +3 -0
  227. package/dist/mcp/tools/script-tools.js +118 -0
  228. package/dist/mcp/tools/spatial-tools.d.ts +2 -0
  229. package/dist/mcp/tools/spatial-tools.js +485 -0
  230. package/dist/mcp/tools/text-json.d.ts +8 -0
  231. package/dist/mcp/tools/text-json.js +12 -0
  232. package/dist/mcp/tools/{cloud-tools.d.ts → ui-tools.d.ts} +1 -1
  233. package/dist/mcp/tools/ui-tools.js +82 -0
  234. package/dist/mcp/tools/visual-tools.d.ts +2 -7
  235. package/dist/mcp/tools/visual-tools.js +383 -101
  236. package/dist/mcp/tools/with-engine.d.ts +9 -15
  237. package/dist/mcp/tools/with-engine.js +60 -96
  238. package/dist/project-memory/project-manifest.d.ts +36 -0
  239. package/dist/project-memory/project-manifest.js +50 -0
  240. package/dist/project-memory/project-memory.d.ts +57 -0
  241. package/dist/{lib → project-memory}/project-memory.js +46 -0
  242. package/gemini-extension.json +103 -2
  243. package/hooks/hooks-cursor.json +2 -2
  244. package/hooks/hooks.json +2 -1
  245. package/hooks/pre-commit-doctor.sh +45 -39
  246. package/hooks/run-hook.cmd +30 -23
  247. package/hooks/run-hook.sh +20 -0
  248. package/hooks/session-start.sh +18 -7
  249. package/integrations/README.md +99 -0
  250. package/integrations/amp/README.md +12 -0
  251. package/integrations/amp/manifest-target.json +3 -0
  252. package/integrations/antigravity/README.md +12 -0
  253. package/integrations/antigravity/manifest-target.json +3 -0
  254. package/integrations/claude/README.md +19 -0
  255. package/integrations/claude/manifest-target.json +16 -0
  256. package/integrations/claude-desktop/README.md +12 -0
  257. package/integrations/claude-desktop/manifest-target.json +3 -0
  258. package/integrations/cline/README.md +12 -0
  259. package/integrations/cline/manifest-target.json +3 -0
  260. package/integrations/cline-cli/README.md +12 -0
  261. package/integrations/cline-cli/manifest-target.json +3 -0
  262. package/integrations/codex/README.md +15 -0
  263. package/integrations/codex/manifest-target.json +5 -0
  264. package/integrations/copilot-jetbrains/README.md +12 -0
  265. package/integrations/copilot-jetbrains/manifest-target.json +3 -0
  266. package/integrations/crush/README.md +12 -0
  267. package/integrations/crush/manifest-target.json +3 -0
  268. package/integrations/cursor/README.md +16 -0
  269. package/integrations/cursor/manifest-target.json +5 -0
  270. package/integrations/factory/README.md +26 -0
  271. package/integrations/factory/manifest-target.json +5 -0
  272. package/integrations/gemini/README.md +26 -0
  273. package/integrations/gemini/manifest-target.json +5 -0
  274. package/integrations/github-copilot/README.md +12 -0
  275. package/integrations/github-copilot/manifest-target.json +3 -0
  276. package/integrations/goose/README.md +12 -0
  277. package/integrations/goose/manifest-target.json +3 -0
  278. package/integrations/grok-build/README.md +12 -0
  279. package/integrations/grok-build/manifest-target.json +3 -0
  280. package/integrations/hermes/README.md +12 -0
  281. package/integrations/hermes/manifest-target.json +3 -0
  282. package/integrations/junie/README.md +12 -0
  283. package/integrations/junie/manifest-target.json +3 -0
  284. package/integrations/kilo-code/README.md +12 -0
  285. package/integrations/kilo-code/manifest-target.json +3 -0
  286. package/integrations/kimi-code/README.md +12 -0
  287. package/integrations/kimi-code/manifest-target.json +3 -0
  288. package/integrations/kiro/README.md +12 -0
  289. package/integrations/kiro/manifest-target.json +3 -0
  290. package/integrations/lm-studio/README.md +12 -0
  291. package/integrations/lm-studio/manifest-target.json +3 -0
  292. package/integrations/mistral-vibe/README.md +12 -0
  293. package/integrations/mistral-vibe/manifest-target.json +3 -0
  294. package/integrations/opencode/README.md +12 -0
  295. package/integrations/opencode/manifest-target.json +3 -0
  296. package/integrations/qoder/README.md +12 -0
  297. package/integrations/qoder/manifest-target.json +3 -0
  298. package/integrations/qwen-code/README.md +12 -0
  299. package/integrations/qwen-code/manifest-target.json +3 -0
  300. package/integrations/roo-code/README.md +14 -0
  301. package/integrations/roo-code/manifest-target.json +3 -0
  302. package/integrations/rovo-dev/README.md +12 -0
  303. package/integrations/rovo-dev/manifest-target.json +3 -0
  304. package/integrations/trae/README.md +12 -0
  305. package/integrations/trae/manifest-target.json +3 -0
  306. package/integrations/visual-studio/README.md +12 -0
  307. package/integrations/visual-studio/manifest-target.json +3 -0
  308. package/integrations/vscode-copilot/README.md +12 -0
  309. package/integrations/vscode-copilot/manifest-target.json +3 -0
  310. package/integrations/warp/README.md +12 -0
  311. package/integrations/warp/manifest-target.json +3 -0
  312. package/integrations/windsurf/README.md +12 -0
  313. package/integrations/windsurf/manifest-target.json +3 -0
  314. package/integrations/zed/README.md +12 -0
  315. package/integrations/zed/manifest-target.json +3 -0
  316. package/library/references/collaborative-protocol/resource.yaml +24 -0
  317. package/library/references/gd-style/resource.yaml +24 -0
  318. package/{references → library/references/godot-version}/godot-version.md +6 -6
  319. package/library/references/godot-version/resource.yaml +22 -0
  320. package/library/references/headless-routing/headless-routing.md +46 -0
  321. package/library/references/headless-routing/resource.yaml +24 -0
  322. package/library/references/mcp-fresh-chat-playbook/mcp-fresh-chat-playbook.md +49 -0
  323. package/library/references/mcp-fresh-chat-playbook/resource.yaml +23 -0
  324. package/library/references/mcp-tools-reference/mcp-tools-reference.md +271 -0
  325. package/library/references/mcp-tools-reference/resource.yaml +17 -0
  326. package/library/references/product-map/product-map.md +103 -0
  327. package/library/references/product-map/resource.yaml +33 -0
  328. package/{references → library/references/public-surface-language}/public-surface-language.md +5 -7
  329. package/library/references/public-surface-language/resource.yaml +17 -0
  330. package/library/references/summer-folder/resource.yaml +20 -0
  331. package/{references → library/references/summer-folder}/summer-folder.md +22 -21
  332. package/{skills/rendering-and-lighting → library/skills}/3d-lighting/SKILL.md +15 -11
  333. package/library/skills/3d-lighting/resource.yaml +27 -0
  334. package/library/skills/README.md +242 -0
  335. package/{skills/audio → library/skills}/adaptive-music/SKILL.md +1 -1
  336. package/library/skills/adaptive-music/resource.yaml +28 -0
  337. package/library/skills/agent-playtesting/SKILL.md +148 -0
  338. package/library/skills/agent-playtesting/resource.yaml +52 -0
  339. package/library/skills/ambient-bed/resource.yaml +24 -0
  340. package/{skills/video → library/skills}/animated-loop/SKILL.md +1 -1
  341. package/library/skills/animated-loop/resource.yaml +27 -0
  342. package/{skills/animation → library/skills}/animation-tree/SKILL.md +29 -14
  343. package/library/skills/animation-tree/resource.yaml +33 -0
  344. package/{skills/rendering-and-lighting → library/skills}/art-direction/SKILL.md +3 -3
  345. package/library/skills/art-direction/resource.yaml +29 -0
  346. package/{skills/asset-pipeline → library/skills}/asset-strategy/SKILL.md +44 -44
  347. package/library/skills/asset-strategy/resource.yaml +63 -0
  348. package/{skills/audio → library/skills}/audio-direction/SKILL.md +7 -7
  349. package/library/skills/audio-direction/resource.yaml +32 -0
  350. package/library/skills/auto-fire-targeting/resource.yaml +22 -0
  351. package/{skills/scene-and-project → library/skills}/brainstorm-game/SKILL.md +8 -8
  352. package/library/skills/brainstorm-game/resource.yaml +30 -0
  353. package/{skills/workflow → library/skills}/brainstorming/SKILL.md +2 -22
  354. package/library/skills/brainstorming/resource.yaml +23 -0
  355. package/{skills/workflow → library/skills}/brainstorming/spec-document-reviewer-prompt.md +1 -1
  356. package/{skills/scene-and-project → library/skills}/browse-templates/SKILL.md +18 -18
  357. package/library/skills/browse-templates/resource.yaml +23 -0
  358. package/library/skills/celeste-momentum-platforming/SKILL.md +366 -0
  359. package/library/skills/celeste-momentum-platforming/resource.yaml +33 -0
  360. package/library/skills/character-animation-wiring/SKILL.md +249 -0
  361. package/library/skills/character-animation-wiring/resource.yaml +39 -0
  362. package/{skills/3d-assets → library/skills}/character-model/SKILL.md +25 -25
  363. package/library/skills/character-model/resource.yaml +36 -0
  364. package/{skills/2d-assets → library/skills}/character-portrait/SKILL.md +14 -14
  365. package/library/skills/character-portrait/resource.yaml +30 -0
  366. package/{skills/video → library/skills}/cinematic-cutscene/SKILL.md +2 -2
  367. package/library/skills/cinematic-cutscene/resource.yaml +29 -0
  368. package/{skills/2d-assets → library/skills}/concept-art/SKILL.md +15 -15
  369. package/library/skills/concept-art/resource.yaml +34 -0
  370. package/{skills/2d-assets → library/skills}/create-asset-sheet/SKILL.md +8 -8
  371. package/library/skills/create-asset-sheet/resource.yaml +33 -0
  372. package/{skills/debugging → library/skills}/debug/SKILL.md +3 -3
  373. package/library/skills/debug/resource.yaml +31 -0
  374. package/{skills/workflow → library/skills}/debugging-game-feel/SKILL.md +11 -11
  375. package/library/skills/debugging-game-feel/resource.yaml +25 -0
  376. package/{skills/level-design → library/skills}/design-level/SKILL.md +6 -6
  377. package/library/skills/design-level/resource.yaml +31 -0
  378. package/{skills/gameplay-mechanics → library/skills}/design-mechanic/SKILL.md +3 -3
  379. package/library/skills/design-mechanic/resource.yaml +31 -0
  380. package/{skills/ai-and-npcs → library/skills}/design-npc/SKILL.md +7 -3
  381. package/library/skills/design-npc/resource.yaml +29 -0
  382. package/{skills/workflow → library/skills}/diagnosing-perf-regressions/SKILL.md +10 -10
  383. package/library/skills/diagnosing-perf-regressions/resource.yaml +25 -0
  384. package/{skills/workflow → library/skills}/dispatching-parallel-agents/SKILL.md +8 -8
  385. package/library/skills/dispatching-parallel-agents/resource.yaml +23 -0
  386. package/library/skills/driving-the-editor-ui/SKILL.md +85 -0
  387. package/library/skills/driving-the-editor-ui/resource.yaml +46 -0
  388. package/{skills/3d-assets → library/skills}/environment-kit/SKILL.md +11 -11
  389. package/library/skills/environment-kit/resource.yaml +29 -0
  390. package/{skills/deployment → library/skills}/export-and-ship/SKILL.md +5 -5
  391. package/library/skills/export-and-ship/resource.yaml +32 -0
  392. package/library/skills/fabricating-assets/SKILL.md +195 -0
  393. package/library/skills/fabricating-assets/resource.yaml +52 -0
  394. package/{skills/animation → library/skills}/facial-and-lipsync/SKILL.md +23 -11
  395. package/library/skills/facial-and-lipsync/resource.yaml +36 -0
  396. package/{skills/character-controllers → library/skills}/fps-controller/SKILL.md +8 -4
  397. package/library/skills/fps-controller/resource.yaml +29 -0
  398. package/{skills/visual-effects → library/skills}/game-feel/SKILL.md +7 -7
  399. package/library/skills/game-feel/resource.yaml +27 -0
  400. package/library/skills/gameskill/SKILL.md +64 -0
  401. package/library/skills/gameskill/resource.yaml +22 -0
  402. package/library/skills/gdscript-patterns/resource.yaml +23 -0
  403. package/{skills/animation → library/skills}/generate-motion/SKILL.md +16 -16
  404. package/library/skills/generate-motion/resource.yaml +34 -0
  405. package/library/skills/godogen-visual-proof-game-generation/SKILL.md +223 -0
  406. package/library/skills/godogen-visual-proof-game-generation/resource.yaml +33 -0
  407. package/{skills/workflow → library/skills}/headless-scripting/SKILL.md +14 -7
  408. package/library/skills/headless-scripting/resource.yaml +26 -0
  409. package/library/skills/host-authoritative-state/resource.yaml +28 -0
  410. package/{skills/2d-assets → library/skills}/instantiate-asset-pack/SKILL.md +10 -12
  411. package/library/skills/instantiate-asset-pack/resource.yaml +29 -0
  412. package/{skills/workflow → library/skills}/investigating-bugs/SKILL.md +4 -4
  413. package/{skills/workflow → library/skills}/investigating-bugs/condition-based-waiting.md +8 -8
  414. package/library/skills/investigating-bugs/resource.yaml +24 -0
  415. package/{skills/workflow → library/skills}/investigating-bugs/root-cause-tracing.md +1 -7
  416. package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +164 -0
  417. package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +35 -0
  418. package/{skills/scene-and-project → library/skills}/make-game/SKILL.md +22 -22
  419. package/library/skills/make-game/resource.yaml +35 -0
  420. package/library/skills/music-track/resource.yaml +28 -0
  421. package/library/skills/navigate-summer/SKILL.md +61 -0
  422. package/library/skills/navigate-summer/resource.yaml +35 -0
  423. package/{skills/scene-and-project → library/skills}/new-project/SKILL.md +10 -10
  424. package/library/skills/new-project/resource.yaml +28 -0
  425. package/{skills/3d-assets → library/skills}/organic-model/SKILL.md +16 -16
  426. package/library/skills/organic-model/resource.yaml +32 -0
  427. package/{skills/multiplayer-and-networking → library/skills}/peer-to-peer-multiplayer/SKILL.md +2 -2
  428. package/library/skills/peer-to-peer-multiplayer/resource.yaml +28 -0
  429. package/{skills/2d-assets → library/skills}/pixel-art/SKILL.md +13 -13
  430. package/library/skills/pixel-art/resource.yaml +31 -0
  431. package/library/skills/play/resource.yaml +26 -0
  432. package/{skills/workflow → library/skills}/playtesting-a-feature/SKILL.md +41 -22
  433. package/library/skills/playtesting-a-feature/resource.yaml +31 -0
  434. package/{skills/animation → library/skills}/procedural-animation/SKILL.md +25 -10
  435. package/library/skills/procedural-animation/resource.yaml +33 -0
  436. package/{skills/3d-assets → library/skills}/prop-model/SKILL.md +13 -13
  437. package/library/skills/prop-model/resource.yaml +33 -0
  438. package/library/skills/psx-retro-rendering/SKILL.md +416 -0
  439. package/library/skills/psx-retro-rendering/resource.yaml +36 -0
  440. package/library/skills/realtime-wet-surfaces/SKILL.md +189 -0
  441. package/library/skills/realtime-wet-surfaces/resource.yaml +31 -0
  442. package/{skills/deployment → library/skills}/remote-deploy/SKILL.md +3 -3
  443. package/library/skills/remote-deploy/resource.yaml +23 -0
  444. package/{skills/animation → library/skills}/retarget/SKILL.md +15 -14
  445. package/library/skills/retarget/resource.yaml +33 -0
  446. package/library/skills/running-in-the-cloud/SKILL.md +103 -0
  447. package/library/skills/running-in-the-cloud/resource.yaml +33 -0
  448. package/{skills/scene-and-project → library/skills}/scene-composition/SKILL.md +8 -0
  449. package/library/skills/scene-composition/resource.yaml +27 -0
  450. package/library/skills/scene-hierarchy-design/SKILL.md +102 -0
  451. package/library/skills/scene-hierarchy-design/resource.yaml +31 -0
  452. package/library/skills/scene-scripting/SKILL.md +764 -0
  453. package/library/skills/scene-scripting/resource.yaml +58 -0
  454. package/{skills/level-design → library/skills}/scene-to-level/SKILL.md +16 -17
  455. package/library/skills/scene-to-level/resource.yaml +33 -0
  456. package/library/skills/setup-multiplayer/resource.yaml +28 -0
  457. package/library/skills/skill-create/SKILL.md +138 -0
  458. package/library/skills/skill-create/resource.yaml +25 -0
  459. package/{skills/workflow → library/skills}/skill-improve/SKILL.md +2 -2
  460. package/library/skills/skill-improve/resource.yaml +25 -0
  461. package/{skills/workflow → library/skills}/skill-test/SKILL.md +4 -4
  462. package/library/skills/skill-test/resource.yaml +26 -0
  463. package/library/skills/skintokens-auto-rigging/SKILL.md +200 -0
  464. package/library/skills/skintokens-auto-rigging/resource.yaml +38 -0
  465. package/{skills/2d-assets → library/skills}/skybox-panorama/SKILL.md +8 -8
  466. package/library/skills/skybox-panorama/resource.yaml +28 -0
  467. package/{skills/audio → library/skills}/sound-effect/SKILL.md +2 -2
  468. package/library/skills/sound-effect/resource.yaml +27 -0
  469. package/library/skills/spatial-placement/SKILL.md +74 -0
  470. package/library/skills/spatial-placement/resource.yaml +42 -0
  471. package/library/skills/spatial-placement/tests/spec.md +65 -0
  472. package/{skills/2d-assets → library/skills}/sprite-sheet/SKILL.md +12 -12
  473. package/library/skills/sprite-sheet/resource.yaml +32 -0
  474. package/{skills/2d-assets → library/skills}/tileable-texture/SKILL.md +9 -9
  475. package/library/skills/tileable-texture/resource.yaml +31 -0
  476. package/{skills/video → library/skills}/trailer-shot/SKILL.md +1 -1
  477. package/library/skills/trailer-shot/resource.yaml +27 -0
  478. package/{skills/performance → library/skills}/tune-performance/SKILL.md +6 -6
  479. package/library/skills/tune-performance/resource.yaml +31 -0
  480. package/library/skills/ui-basics/resource.yaml +25 -0
  481. package/{skills/2d-assets → library/skills}/ui-graphics/SKILL.md +11 -11
  482. package/library/skills/ui-graphics/resource.yaml +29 -0
  483. package/{skills/2d-assets → library/skills}/use-widget-asset/SKILL.md +4 -4
  484. package/library/skills/use-widget-asset/resource.yaml +29 -0
  485. package/{skills/workflow → library/skills}/using-summer/SKILL.md +12 -9
  486. package/library/skills/using-summer/resource.yaml +41 -0
  487. package/{skills/3d-assets → library/skills}/vehicle-model/SKILL.md +18 -18
  488. package/library/skills/vehicle-model/resource.yaml +34 -0
  489. package/{skills/workflow → library/skills}/verification-before-completion/SKILL.md +10 -10
  490. package/library/skills/verification-before-completion/resource.yaml +23 -0
  491. package/library/skills/verifying-scenes/SKILL.md +98 -0
  492. package/library/skills/verifying-scenes/resource.yaml +42 -0
  493. package/{skills/visual-effects/recipes/dissolve → library/skills/vfx-dissolve}/SKILL.md +31 -11
  494. package/library/skills/vfx-dissolve/resource.yaml +33 -0
  495. package/{skills/visual-effects/recipes/fire → library/skills/vfx-fire}/SKILL.md +43 -12
  496. package/library/skills/vfx-fire/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
  497. package/library/skills/vfx-fire/resource.yaml +35 -0
  498. package/{skills/visual-effects/recipes/hit-spark → library/skills/vfx-hit-spark}/SKILL.md +16 -10
  499. package/library/skills/vfx-hit-spark/_building-blocks/additive-billboard-particles.md +37 -0
  500. package/library/skills/vfx-hit-spark/resource.yaml +34 -0
  501. package/{skills/visual-effects/recipes/lightning → library/skills/vfx-lightning}/SKILL.md +24 -11
  502. package/library/skills/vfx-lightning/_building-blocks/additive-billboard-particles.md +37 -0
  503. package/library/skills/vfx-lightning/resource.yaml +33 -0
  504. package/{skills/visual-effects/recipes/magic-glow → library/skills/vfx-magic-glow}/SKILL.md +31 -11
  505. package/library/skills/vfx-magic-glow/_building-blocks/additive-billboard-particles.md +37 -0
  506. package/library/skills/vfx-magic-glow/resource.yaml +34 -0
  507. package/{skills/visual-effects/recipes/muzzle-flash → library/skills/vfx-muzzle-flash}/SKILL.md +29 -9
  508. package/library/skills/vfx-muzzle-flash/_building-blocks/additive-billboard-particles.md +37 -0
  509. package/library/skills/vfx-muzzle-flash/_building-blocks/trauma-shake-snippet.md +53 -0
  510. package/library/skills/vfx-muzzle-flash/resource.yaml +35 -0
  511. package/{skills/visual-effects/recipes/smoke → library/skills/vfx-smoke}/SKILL.md +35 -9
  512. package/library/skills/vfx-smoke/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
  513. package/library/skills/vfx-smoke/resource.yaml +32 -0
  514. package/{skills/visual-effects/recipes/water-ripple → library/skills/vfx-water-ripple}/SKILL.md +31 -9
  515. package/library/skills/vfx-water-ripple/_building-blocks/additive-billboard-particles.md +37 -0
  516. package/library/skills/vfx-water-ripple/resource.yaml +31 -0
  517. package/library/skills/voice-line/resource.yaml +27 -0
  518. package/library/skills/world-building-3d/SKILL.md +105 -0
  519. package/library/skills/world-building-3d/references/spatial-tools.md +50 -0
  520. package/library/skills/world-building-3d/resource.yaml +44 -0
  521. package/library/skills/world-building-3d/tests/spec.md +48 -0
  522. package/{skills/workflow → library/skills}/writing-plans/SKILL.md +19 -14
  523. package/library/skills/writing-plans/resource.yaml +23 -0
  524. package/{skills/workflow → library/skills}/writing-skills/SKILL.md +38 -44
  525. package/library/skills/writing-skills/resource.yaml +29 -0
  526. package/{skills/workflow → library/skills}/writing-skills/testing-skills-with-subagents.md +13 -14
  527. package/library/templates/2d-brario-platformer/resource.yaml +21 -0
  528. package/library/templates/2d-dungeon-roguelike/resource.yaml +23 -0
  529. package/library/templates/2d-grid-puzzle/resource.yaml +21 -0
  530. package/library/templates/2d-plants-and-zombies-tower-defense/resource.yaml +21 -0
  531. package/library/templates/2d-platformer/resource.yaml +24 -0
  532. package/library/templates/2d-rpg/resource.yaml +21 -0
  533. package/library/templates/2d-vampire-survivor-roguelike/resource.yaml +21 -0
  534. package/library/templates/3d-basic/resource.yaml +16 -0
  535. package/library/templates/3d-city-kit/resource.yaml +24 -0
  536. package/library/templates/3d-fps-old-school/resource.yaml +21 -0
  537. package/library/templates/3d-fps-simple-animated-npc/resource.yaml +21 -0
  538. package/library/templates/3d-lan-multiplayer-starter/resource.yaml +22 -0
  539. package/library/templates/3d-open-world-explore-tps/resource.yaml +21 -0
  540. package/library/templates/3d-procedural-road-world/resource.yaml +21 -0
  541. package/library/templates/3d-racing-game/resource.yaml +21 -0
  542. package/library/templates/3d-royale-clash-type/resource.yaml +21 -0
  543. package/library/templates/3d-third-person-controller/resource.yaml +21 -0
  544. package/library/templates/3d-voxel-sandbox/resource.yaml +24 -0
  545. package/library/templates/README.md +94 -0
  546. package/library/templates/empty/resource.yaml +16 -0
  547. package/library/tools/add-node/resource.yaml +60 -0
  548. package/library/tools/align-distribute-3d/resource.yaml +87 -0
  549. package/library/tools/api-docs/resource.yaml +57 -0
  550. package/library/tools/batch/resource.yaml +52 -0
  551. package/library/tools/camera-bookmark/resource.yaml +73 -0
  552. package/library/tools/check-job/resource.yaml +45 -0
  553. package/library/tools/clear-console/resource.yaml +40 -0
  554. package/library/tools/connect-signal/resource.yaml +63 -0
  555. package/library/tools/create-debug-report/resource.yaml +67 -0
  556. package/library/tools/create-scene/resource.yaml +59 -0
  557. package/library/tools/creator-config/resource.yaml +63 -0
  558. package/library/tools/creator-publish/resource.yaml +73 -0
  559. package/library/tools/creator-releases/resource.yaml +53 -0
  560. package/library/tools/fabricate-3d/resource.yaml +108 -0
  561. package/library/tools/game-control/resource.yaml +84 -0
  562. package/library/tools/game-input/resource.yaml +159 -0
  563. package/library/tools/game-probe/resource.yaml +90 -0
  564. package/library/tools/generate-3d/resource.yaml +112 -0
  565. package/library/tools/generate-audio/resource.yaml +80 -0
  566. package/library/tools/generate-image/resource.yaml +62 -0
  567. package/library/tools/generate-motion/resource.yaml +66 -0
  568. package/library/tools/generate-video/resource.yaml +66 -0
  569. package/library/tools/get-agent-playbook/resource.yaml +40 -0
  570. package/library/tools/get-asset/resource.yaml +42 -0
  571. package/library/tools/get-asset-download-url/resource.yaml +52 -0
  572. package/library/tools/get-console/resource.yaml +69 -0
  573. package/library/tools/get-debugger-errors/resource.yaml +56 -0
  574. package/library/tools/get-debugger-warnings/resource.yaml +52 -0
  575. package/library/tools/get-diagnostics/resource.yaml +42 -0
  576. package/library/tools/get-project-context/resource.yaml +45 -0
  577. package/library/tools/get-runtime-tree/resource.yaml +62 -0
  578. package/library/tools/get-scene-tree/resource.yaml +52 -0
  579. package/library/tools/get-script-errors/resource.yaml +45 -0
  580. package/library/tools/get-studio-workflow/resource.yaml +43 -0
  581. package/library/tools/import-asset/resource.yaml +73 -0
  582. package/library/tools/import-asset-by-id/resource.yaml +56 -0
  583. package/library/tools/import-from-url/resource.yaml +51 -0
  584. package/library/tools/import-from-url-batch/resource.yaml +60 -0
  585. package/library/tools/import-hdri/resource.yaml +69 -0
  586. package/library/tools/input-map-bind/resource.yaml +52 -0
  587. package/library/tools/inspect-node/resource.yaml +46 -0
  588. package/library/tools/inspect-resource/resource.yaml +45 -0
  589. package/library/tools/inspect-runtime-node/resource.yaml +54 -0
  590. package/library/tools/instantiate-scene/resource.yaml +62 -0
  591. package/library/tools/is-running/resource.yaml +40 -0
  592. package/library/tools/library-feedback/resource.yaml +89 -0
  593. package/library/tools/list-my-assets/resource.yaml +56 -0
  594. package/library/tools/navigation-probe/resource.yaml +85 -0
  595. package/library/tools/open/resource.yaml +80 -0
  596. package/library/tools/open-main-scene/resource.yaml +40 -0
  597. package/library/tools/open-scene/resource.yaml +46 -0
  598. package/library/tools/play/resource.yaml +91 -0
  599. package/library/tools/project-setting/resource.yaml +53 -0
  600. package/library/tools/read-file/resource.yaml +47 -0
  601. package/library/tools/read-library/resource.yaml +67 -0
  602. package/library/tools/recent-events/resource.yaml +71 -0
  603. package/library/tools/remove-node/resource.yaml +51 -0
  604. package/library/tools/replace-node/resource.yaml +57 -0
  605. package/library/tools/replace-text/resource.yaml +61 -0
  606. package/library/tools/run-editor-script/resource.yaml +61 -0
  607. package/library/tools/run-script/resource.yaml +73 -0
  608. package/library/tools/runtime-animate/resource.yaml +140 -0
  609. package/library/tools/runtime-call/resource.yaml +74 -0
  610. package/library/tools/runtime-set/resource.yaml +80 -0
  611. package/library/tools/runtime-spawn/resource.yaml +95 -0
  612. package/library/tools/save-scene/resource.yaml +50 -0
  613. package/library/tools/screenshot/resource.yaml +112 -0
  614. package/library/tools/search-assets/resource.yaml +67 -0
  615. package/library/tools/search-library/resource.yaml +81 -0
  616. package/library/tools/select-node/resource.yaml +48 -0
  617. package/library/tools/set-prop/resource.yaml +64 -0
  618. package/library/tools/set-resource-property/resource.yaml +66 -0
  619. package/library/tools/slice-asset-sheet/resource.yaml +47 -0
  620. package/library/tools/snap-to-surface/resource.yaml +90 -0
  621. package/library/tools/snapshot-diff/resource.yaml +58 -0
  622. package/library/tools/starcast/resource.yaml +120 -0
  623. package/library/tools/start-game-task/resource.yaml +91 -0
  624. package/library/tools/stop/resource.yaml +51 -0
  625. package/library/tools/test-placement/resource.yaml +109 -0
  626. package/library/tools/ui-actions/resource.yaml +77 -0
  627. package/library/tools/ui-activate/resource.yaml +88 -0
  628. package/library/tools/ui-screenshot/resource.yaml +63 -0
  629. package/library/tools/ui-tree/resource.yaml +69 -0
  630. package/library/tools/wait-for-event/resource.yaml +84 -0
  631. package/library/tools/world-snapshot/resource.yaml +60 -0
  632. package/library/tools/write-file/resource.yaml +54 -0
  633. package/package.json +21 -15
  634. package/registry/generated/aliases.json +207 -0
  635. package/registry/generated/counts.json +12 -0
  636. package/registry/generated/gemini-extension.json +122 -0
  637. package/registry/generated/index.json +7709 -0
  638. package/registry/generated/marketplace.claude.json +44 -0
  639. package/registry/generated/mcp.json +13 -0
  640. package/registry/generated/plugin.claude.json +135 -0
  641. package/registry/generated/plugin.codex.json +144 -0
  642. package/registry/generated/plugin.cursor.json +134 -0
  643. package/registry/generated/plugin.factory.json +117 -0
  644. package/registry/generated/skills-index.md +242 -0
  645. package/registry/generated/skills-registry.json +1249 -0
  646. package/registry/generated/templates-registry.json +455 -0
  647. package/registry/schemas/allowed-hosts.json +19 -0
  648. package/registry/schemas/collection.schema.json +68 -0
  649. package/registry/schemas/domains.json +96 -0
  650. package/registry/schemas/example.schema.json +11 -0
  651. package/registry/schemas/reference.schema.json +10 -0
  652. package/registry/schemas/resource.schema.json +154 -0
  653. package/registry/schemas/skill.schema.json +14 -0
  654. package/registry/schemas/template.schema.json +46 -0
  655. package/registry/schemas/tool.schema.json +61 -0
  656. package/_persona/summer/SKILL.md +0 -113
  657. package/dist/bin/postinstall.d.ts +0 -2
  658. package/dist/bin/postinstall.js +0 -3
  659. package/dist/commands/cloud.d.ts +0 -2
  660. package/dist/commands/cloud.js +0 -80
  661. package/dist/commands/create.d.ts +0 -3
  662. package/dist/commands/create.js +0 -171
  663. package/dist/commands/install.d.ts +0 -19
  664. package/dist/commands/install.js +0 -194
  665. package/dist/commands/list.js +0 -67
  666. package/dist/commands/logout.js +0 -13
  667. package/dist/commands/logs.d.ts +0 -2
  668. package/dist/commands/logs.js +0 -19
  669. package/dist/commands/open.d.ts +0 -2
  670. package/dist/commands/open.js +0 -32
  671. package/dist/commands/orchestrator.d.ts +0 -8
  672. package/dist/commands/orchestrator.js +0 -143
  673. package/dist/commands/run.d.ts +0 -2
  674. package/dist/commands/run.js +0 -167
  675. package/dist/commands/setup.js +0 -217
  676. package/dist/commands/status.js +0 -46
  677. package/dist/lib/agent-config.d.ts +0 -39
  678. package/dist/lib/agent-config.js +0 -626
  679. package/dist/lib/banner.d.ts +0 -4
  680. package/dist/lib/banner.js +0 -122
  681. package/dist/lib/cloud/api.d.ts +0 -79
  682. package/dist/lib/cloud/api.js +0 -107
  683. package/dist/lib/cloud/apply.d.ts +0 -32
  684. package/dist/lib/cloud/apply.js +0 -294
  685. package/dist/lib/cloud/checkpoint.d.ts +0 -26
  686. package/dist/lib/cloud/checkpoint.js +0 -142
  687. package/dist/lib/cloud/conflicts.d.ts +0 -55
  688. package/dist/lib/cloud/conflicts.js +0 -131
  689. package/dist/lib/cloud/containment.d.ts +0 -8
  690. package/dist/lib/cloud/containment.js +0 -52
  691. package/dist/lib/cloud/diff.d.ts +0 -39
  692. package/dist/lib/cloud/diff.js +0 -138
  693. package/dist/lib/cloud/engine-bridge.d.ts +0 -34
  694. package/dist/lib/cloud/engine-bridge.js +0 -139
  695. package/dist/lib/cloud/hash-cache.d.ts +0 -23
  696. package/dist/lib/cloud/hash-cache.js +0 -44
  697. package/dist/lib/cloud/hash.d.ts +0 -10
  698. package/dist/lib/cloud/hash.js +0 -111
  699. package/dist/lib/cloud/http.d.ts +0 -17
  700. package/dist/lib/cloud/http.js +0 -47
  701. package/dist/lib/cloud/lock-path.d.ts +0 -1
  702. package/dist/lib/cloud/lock-path.js +0 -5
  703. package/dist/lib/cloud/lock.d.ts +0 -14
  704. package/dist/lib/cloud/lock.js +0 -143
  705. package/dist/lib/cloud/manifest.d.ts +0 -6
  706. package/dist/lib/cloud/manifest.js +0 -41
  707. package/dist/lib/cloud/paths.d.ts +0 -20
  708. package/dist/lib/cloud/paths.js +0 -90
  709. package/dist/lib/cloud/project-godot-merge.d.ts +0 -32
  710. package/dist/lib/cloud/project-godot-merge.js +0 -185
  711. package/dist/lib/cloud/rules.d.ts +0 -39
  712. package/dist/lib/cloud/rules.js +0 -159
  713. package/dist/lib/cloud/sync.d.ts +0 -21
  714. package/dist/lib/cloud/sync.js +0 -518
  715. package/dist/lib/cloud/transfer.d.ts +0 -23
  716. package/dist/lib/cloud/transfer.js +0 -184
  717. package/dist/lib/cloud/types.d.ts +0 -62
  718. package/dist/lib/cloud/types.js +0 -1
  719. package/dist/lib/cloud/validate-path.d.ts +0 -23
  720. package/dist/lib/cloud/validate-path.js +0 -103
  721. package/dist/lib/engine.d.ts +0 -51
  722. package/dist/lib/game-task-plan.d.ts +0 -42
  723. package/dist/lib/project-memory.d.ts +0 -33
  724. package/dist/lib/public-surface-paths.d.ts +0 -13
  725. package/dist/lib/public-surface-paths.js +0 -42
  726. package/dist/lib/remote-templates.d.ts +0 -25
  727. package/dist/lib/remote-templates.js +0 -86
  728. package/dist/lib/skills-registry.d.ts +0 -572
  729. package/dist/lib/skills-registry.js +0 -1061
  730. package/dist/lib/version-check.d.ts +0 -106
  731. package/dist/lib/version-check.js +0 -338
  732. package/dist/mcp/tools/cloud-tools.js +0 -42
  733. package/references/mcp-tools-reference.md +0 -199
  734. package/references/template-registry.md +0 -73
  735. package/skills/README.md +0 -103
  736. package/skills/scene-and-project/summer-cloud/SKILL.md +0 -92
  737. package/skills/workflow/brainstorming/scripts/frame-template.html +0 -214
  738. package/skills/workflow/brainstorming/scripts/helper.js +0 -88
  739. package/skills/workflow/brainstorming/scripts/server.cjs +0 -354
  740. package/skills/workflow/brainstorming/scripts/start-server.sh +0 -148
  741. package/skills/workflow/brainstorming/scripts/stop-server.sh +0 -56
  742. package/skills/workflow/brainstorming/visual-companion.md +0 -287
  743. package/skills/workflow/gameskill/SKILL.md +0 -120
  744. package/skills/workflow/investigating-bugs/CREATION-LOG.md +0 -119
  745. package/skills/workflow/investigating-bugs/condition-based-waiting-example.ts +0 -158
  746. package/skills/workflow/investigating-bugs/find-polluter.sh +0 -63
  747. package/skills/workflow/investigating-bugs/test-academic.md +0 -14
  748. package/skills/workflow/investigating-bugs/test-pressure-1.md +0 -58
  749. package/skills/workflow/investigating-bugs/test-pressure-2.md +0 -68
  750. package/skills/workflow/investigating-bugs/test-pressure-3.md +0 -69
  751. package/skills/workflow/mcpupdate/SKILL.md +0 -134
  752. package/skills/workflow/skill-create/SKILL.md +0 -153
  753. package/skills/workflow/writing-skills/anthropic-best-practices.md +0 -1150
  754. package/skills/workflow/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -189
  755. package/skills/workflow/writing-skills/graphviz-conventions.dot +0 -172
  756. package/skills/workflow/writing-skills/persuasion-principles.md +0 -187
  757. package/skills/workflow/writing-skills/render-graphs.js +0 -168
  758. /package/dist/{commands → cli/commands}/config.d.ts +0 -0
  759. /package/dist/{commands → cli/commands}/debug.d.ts +0 -0
  760. /package/dist/{commands → cli/commands}/list.d.ts +0 -0
  761. /package/dist/{commands → cli/commands}/login.d.ts +0 -0
  762. /package/dist/{commands → cli/commands}/plan.d.ts +0 -0
  763. /package/dist/{commands → cli/commands}/publish.d.ts +0 -0
  764. /package/dist/{commands → cli/commands}/releases.d.ts +0 -0
  765. /package/dist/{commands → cli/commands}/setup.d.ts +0 -0
  766. /package/dist/{commands → cli/commands}/skills.d.ts +0 -0
  767. /package/dist/{lib → core}/log-filters.d.ts +0 -0
  768. /package/dist/{lib → core}/mcp-log.d.ts +0 -0
  769. /package/dist/{lib → core}/store.d.ts +0 -0
  770. /package/dist/{lib → core}/summer-compatibility.d.ts +0 -0
  771. /package/dist/{lib → core}/telemetry.d.ts +0 -0
  772. /package/dist/{lib/mcp-boot-notice.js → mcp/boot-notice.js} +0 -0
  773. /package/dist/{commands/mcp.d.ts → mcp/command.d.ts} +0 -0
  774. /package/{references → library/references/collaborative-protocol}/collaborative-protocol.md +0 -0
  775. /package/{references → library/references/gd-style}/gd-style.md +0 -0
  776. /package/{skills/audio → library/skills}/ambient-bed/SKILL.md +0 -0
  777. /package/{skills/gameplay-mechanics → library/skills}/auto-fire-targeting/SKILL.md +0 -0
  778. /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/SKILL.md +0 -0
  779. /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/reference.md +0 -0
  780. /package/{skills/multiplayer-and-networking → library/skills}/host-authoritative-state/SKILL.md +0 -0
  781. /package/{skills/workflow → library/skills}/investigating-bugs/defense-in-depth.md +0 -0
  782. /package/{skills/audio → library/skills}/music-track/SKILL.md +0 -0
  783. /package/{skills/scene-and-project → library/skills}/play/SKILL.md +0 -0
  784. /package/{skills/multiplayer-and-networking → library/skills}/setup-multiplayer/SKILL.md +0 -0
  785. /package/{skills/ui-and-ux → library/skills}/ui-basics/SKILL.md +0 -0
  786. /package/{skills/visual-effects → library/skills/vfx-dissolve}/_building-blocks/noise-3d-fbm.gdshaderinc +0 -0
  787. /package/{skills/visual-effects → library/skills/vfx-fire}/_building-blocks/additive-billboard-particles.md +0 -0
  788. /package/{skills/visual-effects → library/skills/vfx-lightning}/_building-blocks/trauma-shake-snippet.md +0 -0
  789. /package/{skills/audio → library/skills}/voice-line/SKILL.md +0 -0
  790. /package/{skills/workflow → library/skills}/writing-plans/plan-document-reviewer-prompt.md +0 -0
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Editor UI control (editor UI control) — op builders shared by the MCP tools
3
+ * (src/mcp/tools/ui-tools.ts) and the CLI dispatcher (`summer tool ui-*`) so
4
+ * both faces validate the same arguments, send the same op, and render the
5
+ * engine's failure taxonomy the same way.
6
+ *
7
+ * Seven engine ops (modules/1summer_engine/editor/ops/ui_ops.cpp, frozen in
8
+ * doc/SUMMER/SCENE_SCRIPTING_CONTRACTS.md "Wave L") behind four tools:
9
+ *
10
+ * summer_ui_actions mode:"list" -> UiListActions (read)
11
+ * mode:"invoke" -> UiInvoke (mutates)
12
+ * summer_ui_tree root:<grammar>-> UiTree (read)
13
+ * root:"dialogs"-> UiDialogs (read)
14
+ * summer_ui_activate action:press|toggle|focus|select_tab|set_text|set_value
15
+ * -> UiActivate (mutates)
16
+ * action:"dismiss_dialog" -> UiDismissDialog (mutates)
17
+ * summer_ui_screenshot -> UiScreenshot (read)
18
+ *
19
+ * Doctrine (research/agent-platform/04-total-control.md §1): the agent drives
20
+ * the editor BY NAME. Dedicated scene/perception tools first; a named action
21
+ * (UiInvoke) second; the structured Control tree + activation third; pixels
22
+ * last. There is no coordinate-click op anywhere in this surface.
23
+ *
24
+ * All seven ops are synchronous and batchable (none is single-only). The
25
+ * three mutating ops travel identity-bound so a project switch under the
26
+ * session is rejected before anything runs; the reads go out plain.
27
+ */
28
+ import { z } from "zod";
29
+ export declare const UI_LIST_ACTIONS_MAX_LIMIT = 2000;
30
+ export declare const UI_TREE_MAX_DEPTH = 32;
31
+ export declare const UI_TREE_MAX_LIMIT = 5000;
32
+ export declare const UI_SCREENSHOT_MIN_SIZE = 16;
33
+ export declare const UI_SCREENSHOT_MAX_SIZE = 4096;
34
+ export declare const UI_ACTIVATE_ACTIONS: readonly ["press", "toggle", "focus", "select_tab", "set_text", "set_value", "dismiss_dialog"];
35
+ export type UiActivateAction = (typeof UI_ACTIVATE_ACTIONS)[number];
36
+ /** The synthetic UiActivate target for the 2D/3D/Script/Game/AssetLib switch. */
37
+ export declare const UI_MAIN_SCREEN_PATH = "main_screen";
38
+ /** The root value that turns summer_ui_tree into a UiDialogs read. */
39
+ export declare const UI_TREE_DIALOGS_ROOT = "dialogs";
40
+ /**
41
+ * The engine's deny-list, verbatim from the frozen contract. NOT enforced
42
+ * client-side — the engine is the authority and answers `denied_action` — but
43
+ * named here so descriptions and the skill teach the agent what not to try.
44
+ */
45
+ export declare const UI_DENIED_ACTIONS: readonly string[];
46
+ export declare const UI_ACTIONS_FALLBACK = "use the dedicated tools for the same outcome (summer_project_setting for settings, summer_open_scene / summer_save_scene for scenes, summer_select_node for selection) or ask the user to click the menu item";
47
+ export declare const UI_TREE_FALLBACK = "ask the user what the editor shows, or read scene state with summer_get_scene_tree / summer_inspect_node instead";
48
+ export declare const UI_ACTIVATE_FALLBACK = "ask the user to click, switch, or dismiss it in the editor; scene changes still go through the scene tools and summer_run_editor_script";
49
+ export declare const UI_SCREENSHOT_FALLBACK = "use summer_screenshot for the viewport/scene/game frame, or ask the user for a screenshot of the editor window";
50
+ export declare const uiActionsArgsSchema: z.ZodObject<{
51
+ mode: z.ZodEnum<["list", "invoke"]>;
52
+ filter: z.ZodOptional<z.ZodString>;
53
+ limit: z.ZodOptional<z.ZodNumber>;
54
+ action_name: z.ZodOptional<z.ZodString>;
55
+ }, "strip", z.ZodTypeAny, {
56
+ mode: "list" | "invoke";
57
+ filter?: string | undefined;
58
+ limit?: number | undefined;
59
+ action_name?: string | undefined;
60
+ }, {
61
+ mode: "list" | "invoke";
62
+ filter?: string | undefined;
63
+ limit?: number | undefined;
64
+ action_name?: string | undefined;
65
+ }>;
66
+ export declare const uiTreeArgsSchema: z.ZodObject<{
67
+ root: z.ZodOptional<z.ZodString>;
68
+ depth: z.ZodOptional<z.ZodNumber>;
69
+ limit: z.ZodOptional<z.ZodNumber>;
70
+ visible_only: z.ZodOptional<z.ZodBoolean>;
71
+ }, "strip", z.ZodTypeAny, {
72
+ limit?: number | undefined;
73
+ depth?: number | undefined;
74
+ root?: string | undefined;
75
+ visible_only?: boolean | undefined;
76
+ }, {
77
+ limit?: number | undefined;
78
+ depth?: number | undefined;
79
+ root?: string | undefined;
80
+ visible_only?: boolean | undefined;
81
+ }>;
82
+ export declare const uiActivateArgsSchema: z.ZodObject<{
83
+ action: z.ZodOptional<z.ZodEnum<["press", "toggle", "focus", "select_tab", "set_text", "set_value", "dismiss_dialog"]>>;
84
+ path: z.ZodOptional<z.ZodString>;
85
+ value: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
86
+ index: z.ZodOptional<z.ZodNumber>;
87
+ submit: z.ZodOptional<z.ZodBoolean>;
88
+ title: z.ZodOptional<z.ZodString>;
89
+ button: z.ZodOptional<z.ZodString>;
90
+ }, "strip", z.ZodTypeAny, {
91
+ title?: string | undefined;
92
+ path?: string | undefined;
93
+ value?: string | number | undefined;
94
+ action?: "focus" | "press" | "toggle" | "select_tab" | "set_text" | "set_value" | "dismiss_dialog" | undefined;
95
+ button?: string | undefined;
96
+ index?: number | undefined;
97
+ submit?: boolean | undefined;
98
+ }, {
99
+ title?: string | undefined;
100
+ path?: string | undefined;
101
+ value?: string | number | undefined;
102
+ action?: "focus" | "press" | "toggle" | "select_tab" | "set_text" | "set_value" | "dismiss_dialog" | undefined;
103
+ button?: string | undefined;
104
+ index?: number | undefined;
105
+ submit?: boolean | undefined;
106
+ }>;
107
+ export declare const uiScreenshotArgsSchema: z.ZodObject<{
108
+ root: z.ZodOptional<z.ZodString>;
109
+ max_size: z.ZodOptional<z.ZodNumber>;
110
+ }, "strip", z.ZodTypeAny, {
111
+ root?: string | undefined;
112
+ max_size?: number | undefined;
113
+ }, {
114
+ root?: string | undefined;
115
+ max_size?: number | undefined;
116
+ }>;
117
+ export type UiActionsArgs = z.infer<typeof uiActionsArgsSchema>;
118
+ export type UiTreeArgs = z.infer<typeof uiTreeArgsSchema>;
119
+ export type UiActivateArgs = z.infer<typeof uiActivateArgsSchema>;
120
+ export type UiScreenshotArgs = z.infer<typeof uiScreenshotArgsSchema>;
121
+ export interface BuiltUiOp {
122
+ /** The op payload, ready for executeOps / executeIdentityBoundOps. */
123
+ op: Record<string, unknown>;
124
+ /** The engine op kind — what the capability pre-flight checks. */
125
+ kind: string;
126
+ /** What the engine_lacks_op result tells the model to do instead. */
127
+ fallback: string;
128
+ /** True for UiInvoke / UiActivate / UiDismissDialog: travel identity-bound. */
129
+ mutates: boolean;
130
+ }
131
+ /** summer_ui_actions -> UiListActions (mode:list) | UiInvoke (mode:invoke). */
132
+ export declare function buildUiActionsOp(args: UiActionsArgs): BuiltUiOp;
133
+ /** summer_ui_tree -> UiTree | UiDialogs (root:"dialogs"). */
134
+ export declare function buildUiTreeOp(args: UiTreeArgs): BuiltUiOp;
135
+ /** summer_ui_activate -> UiActivate | UiDismissDialog (action:"dismiss_dialog"). */
136
+ export declare function buildUiActivateOp(args: UiActivateArgs): BuiltUiOp;
137
+ /** summer_ui_screenshot -> UiScreenshot. */
138
+ export declare function buildUiScreenshotOp(args: UiScreenshotArgs): BuiltUiOp;
139
+ /** The slice of EngineApiClient the UI ops need; structural so tests pass mocks. */
140
+ export interface UiOpClient {
141
+ executeOps(ops: Record<string, unknown>[], options?: Record<string, unknown>, timeoutMs?: number): Promise<unknown>;
142
+ executeIdentityBoundOps(ops: Record<string, unknown>[], options?: Record<string, unknown>, timeoutMs?: number): Promise<unknown>;
143
+ }
144
+ /** Send one built UI op: mutating ops identity-bound, reads plain. */
145
+ export declare function executeUiOp(client: UiOpClient, built: BuiltUiOp): Promise<unknown>;
146
+ /**
147
+ * Fold the failed op's detail fields and the next step into the envelope's
148
+ * error string. Leaves non-UI failures, successes, and old-engine "unknown
149
+ * op" answers untouched (withOldEngineHint owns those).
150
+ */
151
+ export declare function withUiFailureDetails(result: unknown): unknown;
152
+ export interface UiScreenshotImage {
153
+ base64: string;
154
+ mime: string;
155
+ width?: number;
156
+ height?: number;
157
+ bytes?: number;
158
+ scale?: number;
159
+ root?: string;
160
+ root_path?: string;
161
+ renderer?: string;
162
+ display_server?: string;
163
+ source_rect?: {
164
+ x?: number;
165
+ y?: number;
166
+ w?: number;
167
+ h?: number;
168
+ };
169
+ /** The op result minus the image payload — safe to print or log. */
170
+ receipt: Record<string, unknown>;
171
+ }
172
+ /**
173
+ * Pull the PNG out of a successful UiScreenshot envelope. Returns null when
174
+ * the result carries no image (callers fall back to text — never emit a
175
+ * broken image block).
176
+ */
177
+ export declare function uiScreenshotImage(result: unknown): UiScreenshotImage | null;
178
+ /** The one-line caption both faces print under a captured frame. */
179
+ export declare function uiScreenshotCaption(image: UiScreenshotImage): string;
@@ -0,0 +1,423 @@
1
+ /**
2
+ * Editor UI control (editor UI control) — op builders shared by the MCP tools
3
+ * (src/mcp/tools/ui-tools.ts) and the CLI dispatcher (`summer tool ui-*`) so
4
+ * both faces validate the same arguments, send the same op, and render the
5
+ * engine's failure taxonomy the same way.
6
+ *
7
+ * Seven engine ops (modules/1summer_engine/editor/ops/ui_ops.cpp, frozen in
8
+ * doc/SUMMER/SCENE_SCRIPTING_CONTRACTS.md "Wave L") behind four tools:
9
+ *
10
+ * summer_ui_actions mode:"list" -> UiListActions (read)
11
+ * mode:"invoke" -> UiInvoke (mutates)
12
+ * summer_ui_tree root:<grammar>-> UiTree (read)
13
+ * root:"dialogs"-> UiDialogs (read)
14
+ * summer_ui_activate action:press|toggle|focus|select_tab|set_text|set_value
15
+ * -> UiActivate (mutates)
16
+ * action:"dismiss_dialog" -> UiDismissDialog (mutates)
17
+ * summer_ui_screenshot -> UiScreenshot (read)
18
+ *
19
+ * Doctrine (research/agent-platform/04-total-control.md §1): the agent drives
20
+ * the editor BY NAME. Dedicated scene/perception tools first; a named action
21
+ * (UiInvoke) second; the structured Control tree + activation third; pixels
22
+ * last. There is no coordinate-click op anywhere in this surface.
23
+ *
24
+ * All seven ops are synchronous and batchable (none is single-only). The
25
+ * three mutating ops travel identity-bound so a project switch under the
26
+ * session is rejected before anything runs; the reads go out plain.
27
+ */
28
+ import { z } from "zod";
29
+ import { ToolInputError } from "../tool-errors.js";
30
+ // ---------------------------------------------------------------------------
31
+ // Engine-side clamps, mirrored so the client never sends an out-of-range value
32
+ // and the two faces agree on what "default" means.
33
+ // ---------------------------------------------------------------------------
34
+ export const UI_LIST_ACTIONS_MAX_LIMIT = 2000;
35
+ export const UI_TREE_MAX_DEPTH = 32;
36
+ export const UI_TREE_MAX_LIMIT = 5000;
37
+ export const UI_SCREENSHOT_MIN_SIZE = 16;
38
+ export const UI_SCREENSHOT_MAX_SIZE = 4096;
39
+ export const UI_ACTIVATE_ACTIONS = [
40
+ "press",
41
+ "toggle",
42
+ "focus",
43
+ "select_tab",
44
+ "set_text",
45
+ "set_value",
46
+ "dismiss_dialog",
47
+ ];
48
+ /** The synthetic UiActivate target for the 2D/3D/Script/Game/AssetLib switch. */
49
+ export const UI_MAIN_SCREEN_PATH = "main_screen";
50
+ /** The root value that turns summer_ui_tree into a UiDialogs read. */
51
+ export const UI_TREE_DIALOGS_ROOT = "dialogs";
52
+ /**
53
+ * The engine's deny-list, verbatim from the frozen contract. NOT enforced
54
+ * client-side — the engine is the authority and answers `denied_action` — but
55
+ * named here so descriptions and the skill teach the agent what not to try.
56
+ */
57
+ export const UI_DENIED_ACTIONS = [
58
+ "editor/file_quit",
59
+ "editor/quit_to_project_list",
60
+ "editor/reload_current_project",
61
+ "scene_tree/delete_no_confirm",
62
+ "project_manager/*",
63
+ ];
64
+ // ---------------------------------------------------------------------------
65
+ // What each tool tells the model to do when the engine lacks its op.
66
+ // ---------------------------------------------------------------------------
67
+ export const UI_ACTIONS_FALLBACK = "use the dedicated tools for the same outcome (summer_project_setting for settings, summer_open_scene / summer_save_scene for scenes, summer_select_node for selection) or ask the user to click the menu item";
68
+ export const UI_TREE_FALLBACK = "ask the user what the editor shows, or read scene state with summer_get_scene_tree / summer_inspect_node instead";
69
+ export const UI_ACTIVATE_FALLBACK = "ask the user to click, switch, or dismiss it in the editor; scene changes still go through the scene tools and summer_run_editor_script";
70
+ export const UI_SCREENSHOT_FALLBACK = "use summer_screenshot for the viewport/scene/game frame, or ask the user for a screenshot of the editor window";
71
+ // ---------------------------------------------------------------------------
72
+ // Shared zod contracts (pass `.shape` to server.tool; parseToolArgs on the CLI)
73
+ // ---------------------------------------------------------------------------
74
+ export const uiActionsArgsSchema = z.object({
75
+ mode: z
76
+ .enum(["list", "invoke"])
77
+ .describe("'list' enumerates the editor's named actions (UiListActions, a read). 'invoke' runs ONE named action exactly as its menu item / shortcut would (UiInvoke, mutates editor state)."),
78
+ filter: z
79
+ .string()
80
+ .optional()
81
+ .describe("mode:'list' only. Case-insensitive substring over action name and label, e.g. 'project_settings', 'save', 'spatial_editor', 'bottom_panel'."),
82
+ limit: z
83
+ .number()
84
+ .int()
85
+ .positive()
86
+ .optional()
87
+ .describe("mode:'list' only. Maximum actions returned (engine default 200, max 2000). The result carries total + truncated — never assume a capped list is complete."),
88
+ action_name: z
89
+ .string()
90
+ .optional()
91
+ .describe("mode:'invoke' only (required there). The exact action name from a 'list' result — the stable shortcut path such as 'editor/project_settings', 'editor/save_scene', 'spatial_editor/focus_selection'. Palette-only commands are accepted too."),
92
+ });
93
+ export const uiTreeArgsSchema = z.object({
94
+ root: z
95
+ .string()
96
+ .optional()
97
+ .describe("Where to start. 'main' (default) = the whole editor chrome; 'window' = the SceneTree root incl. every sub-window; 'dock:<title|id>' = one dock (ids file_system | scene_tree | inspector, or any dock title, case-insensitive); 'dialog:<title>' = one visible window (exact wins, one substring match accepted); 'path:<node path>' = a path from an earlier result. 'dialogs' = list every visible dialog/popup with its blocking flag and buttons instead of a tree (UiDialogs)."),
98
+ depth: z
99
+ .number()
100
+ .int()
101
+ .positive()
102
+ .optional()
103
+ .describe("Tree depth (engine default 4, max 32). Plain Nodes between Controls do not consume depth."),
104
+ limit: z
105
+ .number()
106
+ .int()
107
+ .positive()
108
+ .optional()
109
+ .describe("Maximum Control nodes emitted (engine default 500, max 5000). The result carries truncated + child_count so a cut is visible."),
110
+ visible_only: z
111
+ .boolean()
112
+ .optional()
113
+ .describe("Default true. false also emits hidden controls — readable, but summer_ui_activate refuses them with not_visible."),
114
+ });
115
+ export const uiActivateArgsSchema = z.object({
116
+ action: z
117
+ .enum(UI_ACTIVATE_ACTIONS)
118
+ .optional()
119
+ .describe("Default 'press'. press = synthetic left click on a button / ItemList item / PopupMenu item (index); toggle = flip a toggle-mode button; focus = grab_focus on any control; select_tab = TabContainer/TabBar by value (title) or index — and the synthetic path 'main_screen' switches the 2D/3D/Script/Game/AssetLib editor by value or index; set_text = LineEdit/TextEdit text (submit:true also emits text_submitted); set_value = Range (SpinBox/Slider) number; dismiss_dialog = close a visible dialog by path or title (UiDismissDialog)."),
120
+ path: z
121
+ .string()
122
+ .optional()
123
+ .describe("A control `path` from summer_ui_tree (required for every action except dismiss_dialog, which may use title instead), or 'main_screen' with action:'select_tab'. Auto-named paths (@Panel@123) are stable within a session only — re-read the tree rather than persist them."),
124
+ value: z
125
+ .union([z.string(), z.number()])
126
+ .optional()
127
+ .describe("select_tab: tab title (or the main-screen editor name: '2D', '3D', 'Script', 'Game', 'AssetLib'); set_text: the text; set_value: the number."),
128
+ index: z
129
+ .number()
130
+ .int()
131
+ .nonnegative()
132
+ .optional()
133
+ .describe("select_tab: tab index; press on an ItemList / PopupMenu: item index."),
134
+ submit: z
135
+ .boolean()
136
+ .optional()
137
+ .describe("set_text on a LineEdit only: also emit text_submitted (the Enter key), e.g. to run a search box."),
138
+ title: z
139
+ .string()
140
+ .optional()
141
+ .describe("dismiss_dialog only: a visible window title (case-insensitive; exact wins, one substring match accepted, otherwise ambiguous_dialog) — from summer_ui_tree root:'dialogs'."),
142
+ button: z
143
+ .string()
144
+ .optional()
145
+ .describe("dismiss_dialog only. 'cancel' (default — the safe close: cancel button / hide / OS close request), 'ok', or the exact text of a button in the dialog's row. Buttons whose label quits or reloads the editor are denied by the engine."),
146
+ });
147
+ export const uiScreenshotArgsSchema = z.object({
148
+ root: z
149
+ .string()
150
+ .optional()
151
+ .describe("Same grammar as summer_ui_tree root — 'window' (default; the whole editor window), 'main', 'dock:<title|id>', 'dialog:<title>', 'path:<node path>'. A Control or embedded dialog is cropped out of the root viewport texture; a native OS sub-window is not in it (native_subwindow)."),
152
+ max_size: z
153
+ .number()
154
+ .int()
155
+ .optional()
156
+ .describe("Longest edge in pixels after downscale (engine default 1024, clamped 16-4096). Smaller is cheaper to look at; the result reports scale."),
157
+ });
158
+ function clampInt(value, min, max) {
159
+ return Math.min(max, Math.max(min, Math.round(value)));
160
+ }
161
+ function finite(value) {
162
+ return typeof value === "number" && Number.isFinite(value);
163
+ }
164
+ function nonEmpty(value) {
165
+ return typeof value === "string" && value.trim().length > 0;
166
+ }
167
+ /** summer_ui_actions -> UiListActions (mode:list) | UiInvoke (mode:invoke). */
168
+ export function buildUiActionsOp(args) {
169
+ if (args.mode === "list") {
170
+ if (nonEmpty(args.action_name)) {
171
+ throw new ToolInputError(`mode:'list' does not take action_name (got '${args.action_name.trim()}'). To run that action, call again with mode:'invoke'; to find its exact name, use mode:'list' with filter.`);
172
+ }
173
+ const op = { op: "UiListActions" };
174
+ if (nonEmpty(args.filter))
175
+ op.filter = args.filter.trim();
176
+ if (finite(args.limit))
177
+ op.limit = clampInt(args.limit, 1, UI_LIST_ACTIONS_MAX_LIMIT);
178
+ return { op, kind: "UiListActions", fallback: UI_ACTIONS_FALLBACK, mutates: false };
179
+ }
180
+ if (args.mode === "invoke") {
181
+ if (!nonEmpty(args.action_name)) {
182
+ throw new ToolInputError("mode:'invoke' requires action_name — the exact name from a mode:'list' result (e.g. 'editor/project_settings'). Nothing was sent.");
183
+ }
184
+ if (nonEmpty(args.filter) || finite(args.limit)) {
185
+ throw new ToolInputError("mode:'invoke' does not take filter or limit — those belong to mode:'list'. Pass only action_name.");
186
+ }
187
+ return {
188
+ op: { op: "UiInvoke", action: args.action_name.trim() },
189
+ kind: "UiInvoke",
190
+ fallback: UI_ACTIONS_FALLBACK,
191
+ mutates: true,
192
+ };
193
+ }
194
+ throw new ToolInputError("mode must be 'list' or 'invoke'.");
195
+ }
196
+ /** summer_ui_tree -> UiTree | UiDialogs (root:"dialogs"). */
197
+ export function buildUiTreeOp(args) {
198
+ const root = nonEmpty(args.root) ? args.root.trim() : undefined;
199
+ if (root !== undefined && root.toLowerCase() === UI_TREE_DIALOGS_ROOT) {
200
+ // depth / limit / visible_only are tree filters; UiDialogs has none.
201
+ return { op: { op: "UiDialogs" }, kind: "UiDialogs", fallback: UI_TREE_FALLBACK, mutates: false };
202
+ }
203
+ const op = { op: "UiTree" };
204
+ if (root !== undefined)
205
+ op.root = root;
206
+ if (finite(args.depth))
207
+ op.depth = clampInt(args.depth, 1, UI_TREE_MAX_DEPTH);
208
+ if (finite(args.limit))
209
+ op.limit = clampInt(args.limit, 1, UI_TREE_MAX_LIMIT);
210
+ if (typeof args.visible_only === "boolean")
211
+ op.visible_only = args.visible_only;
212
+ return { op, kind: "UiTree", fallback: UI_TREE_FALLBACK, mutates: false };
213
+ }
214
+ /** summer_ui_activate -> UiActivate | UiDismissDialog (action:"dismiss_dialog"). */
215
+ export function buildUiActivateOp(args) {
216
+ const action = args.action ?? "press";
217
+ if (!UI_ACTIVATE_ACTIONS.includes(action)) {
218
+ throw new ToolInputError(`action must be one of ${UI_ACTIVATE_ACTIONS.join(", ")}.`);
219
+ }
220
+ if (action === "dismiss_dialog") {
221
+ const path = nonEmpty(args.path) ? args.path.trim() : undefined;
222
+ const title = nonEmpty(args.title) ? args.title.trim() : undefined;
223
+ if (!path && !title) {
224
+ throw new ToolInputError("action:'dismiss_dialog' needs a target: path (from summer_ui_tree root:'dialogs') or title. Nothing was sent.");
225
+ }
226
+ const op = { op: "UiDismissDialog" };
227
+ if (path)
228
+ op.path = path;
229
+ if (title)
230
+ op.title = title;
231
+ if (nonEmpty(args.button))
232
+ op.button = args.button.trim();
233
+ return { op, kind: "UiDismissDialog", fallback: UI_ACTIVATE_FALLBACK, mutates: true };
234
+ }
235
+ if (nonEmpty(args.title) || nonEmpty(args.button)) {
236
+ throw new ToolInputError(`title and button belong to action:'dismiss_dialog' (got action:'${action}'). To close a dialog, call again with action:'dismiss_dialog'; otherwise pass the control's path.`);
237
+ }
238
+ if (!nonEmpty(args.path)) {
239
+ throw new ToolInputError(`action:'${action}' requires path — a control path from summer_ui_tree (or 'main_screen' with select_tab). Nothing was sent.`);
240
+ }
241
+ const path = args.path.trim();
242
+ const op = { op: "UiActivate", path, action };
243
+ // `value` provided at all (an explicit "" is a legitimate set_text — clear
244
+ // the field); `value` usable as a tab/title lookup (non-empty).
245
+ const provided = args.value !== undefined && args.value !== null;
246
+ const hasValue = provided && !(typeof args.value === "string" && args.value.length === 0);
247
+ const hasIndex = finite(args.index);
248
+ switch (action) {
249
+ case "select_tab":
250
+ if (!hasValue && !hasIndex) {
251
+ throw new ToolInputError("action:'select_tab' needs value (tab title, or the main-screen editor name such as '3D') or index. Nothing was sent.");
252
+ }
253
+ break;
254
+ case "set_text":
255
+ if (!provided) {
256
+ throw new ToolInputError("action:'set_text' needs value (the text to set; '' clears the field). Nothing was sent.");
257
+ }
258
+ // The engine takes a String; a number is stringified rather than refused.
259
+ op.value = String(args.value);
260
+ if (typeof args.submit === "boolean")
261
+ op.submit = args.submit;
262
+ break;
263
+ case "set_value": {
264
+ const numeric = typeof args.value === "number" ? args.value : Number(args.value);
265
+ if (!hasValue || !Number.isFinite(numeric)) {
266
+ throw new ToolInputError(`action:'set_value' needs a finite number in value (got ${JSON.stringify(args.value)}). Nothing was sent.`);
267
+ }
268
+ op.value = numeric;
269
+ break;
270
+ }
271
+ default:
272
+ break;
273
+ }
274
+ if (action !== "set_text" && action !== "set_value" && hasValue)
275
+ op.value = args.value;
276
+ if (hasIndex)
277
+ op.index = clampInt(args.index, 0, Number.MAX_SAFE_INTEGER);
278
+ return { op, kind: "UiActivate", fallback: UI_ACTIVATE_FALLBACK, mutates: true };
279
+ }
280
+ /** summer_ui_screenshot -> UiScreenshot. */
281
+ export function buildUiScreenshotOp(args) {
282
+ const op = { op: "UiScreenshot" };
283
+ if (nonEmpty(args.root))
284
+ op.root = args.root.trim();
285
+ if (finite(args.max_size))
286
+ op.max_size = clampInt(args.max_size, UI_SCREENSHOT_MIN_SIZE, UI_SCREENSHOT_MAX_SIZE);
287
+ return { op, kind: "UiScreenshot", fallback: UI_SCREENSHOT_FALLBACK, mutates: false };
288
+ }
289
+ /** Send one built UI op: mutating ops identity-bound, reads plain. */
290
+ export function executeUiOp(client, built) {
291
+ return built.mutates ? client.executeIdentityBoundOps([built.op]) : client.executeOps([built.op]);
292
+ }
293
+ function names(value, keys = ["name", "title", "text", "path"]) {
294
+ if (!Array.isArray(value))
295
+ return [];
296
+ const out = [];
297
+ for (const entry of value) {
298
+ if (typeof entry === "string")
299
+ out.push(entry);
300
+ else if (entry && typeof entry === "object") {
301
+ const record = entry;
302
+ const hit = keys.map((key) => record[key]).find((candidate) => typeof candidate === "string" && candidate.length > 0);
303
+ if (typeof hit === "string")
304
+ out.push(hit);
305
+ }
306
+ }
307
+ return out;
308
+ }
309
+ function windowRef(value) {
310
+ if (!value || typeof value !== "object")
311
+ return "";
312
+ const record = value;
313
+ const title = typeof record.title === "string" ? record.title : "";
314
+ const cls = typeof record.class === "string" ? record.class : "";
315
+ const path = typeof record.path === "string" ? record.path : "";
316
+ return `'${title}'${cls ? ` (${cls}` : ""}${path ? `${cls ? ", " : " ("}path ${path}` : ""}${cls || path ? ")" : ""}`;
317
+ }
318
+ function list(label, items) {
319
+ return items.length ? ` ${label}: ${items.join(", ")}.` : "";
320
+ }
321
+ const MODAL_OPEN_HINT = "Read it with summer_ui_tree root:'dialogs', then clear it with summer_ui_activate action:'dismiss_dialog' (path from that result; button 'cancel' unless the user asked to confirm) and retry.";
322
+ /** Per-failure_reason: the detail fields to surface and the next step. */
323
+ const UI_FAILURE_HINTS = {
324
+ unknown_action: (f) => `Unknown action.${list("Close matches", names(f.close_matches))} Find the exact name with summer_ui_actions mode:'list' filter:'<part of the name or label>' and invoke that.`,
325
+ denied_action: (f) => `Denied by the editor's safety list (quit, quit to project list, reload project, delete without confirmation, project-manager actions)${typeof f.reason === "string" && f.reason ? ` — ${f.reason}` : ""}. Do not retry it and do not route around it through summer_ui_activate: the same names and button labels are denied there. Tell the user what you were asked to do and let them do it.`,
326
+ modal_open: (f) => `A modal dialog is blocking editor input: ${windowRef(f.blocking_dialog)}. ${MODAL_OPEN_HINT}`,
327
+ not_handled: () => "invoked:true but handled:false — the event was dispatched and no live receiver took it (the owning editor or plugin is hidden, or the context does not apply: spatial_editor/* needs the 3D main screen). Switch context first (summer_ui_activate path:'main_screen' action:'select_tab' value:'3D'), read back current_tab, then retry.",
328
+ editor_unavailable: () => "The editor UI is not available on this engine instance (no editor node — a headless worker or a game-only process). UI ops need the desktop editor.",
329
+ unknown_root: (f) => `Unknown root.${list("Docks", names(f.available_docks))}${list("Dock ids", names(f.dock_ids))} Use 'main', 'window', 'dock:<title|id>', 'dialog:<title>', 'path:<node path>', or 'dialogs'.`,
330
+ not_found: (f) => `Target not found.${list("Visible windows", names(f.visible_titles))} Paths and auto-names are stable within a session only — re-read summer_ui_tree (root:'dialogs' for windows) and use the path it returns now.`,
331
+ ambiguous_dialog: (f) => `More than one visible window matches.${list("Candidates", names(f.candidates))} Pass the exact title, or the path from summer_ui_tree root:'dialogs'.`,
332
+ not_visible: () => "The control exists but is hidden — it appears in summer_ui_tree visible_only:false and cannot be activated. Reveal its dock/tab first (summer_ui_actions or select_tab), re-read the tree, then retry.",
333
+ disabled: () => "The control is disabled. Read its state (enabled:false) with summer_ui_tree and satisfy the precondition the editor is waiting for before retrying.",
334
+ unsupported_control: (f) => `That control class is not driven by this action.${list("Supported here", names(f.supported_actions))} A MenuBar is reached by name through summer_ui_actions mode:'invoke', not by pressing it.`,
335
+ unsupported_action: () => `action must be one of ${UI_ACTIVATE_ACTIONS.join(", ")}; the engine refused this one for the control's class (see supported_actions in unsupported_control).`,
336
+ obscured: (f) => `Another control is on top of the target at its centre${typeof f.hit_control === "string" ? `: ${f.hit_control}` : ""}${typeof f.hit_class === "string" ? ` (${f.hit_class})` : ""}. Usually a dialog or popup — check summer_ui_tree root:'dialogs' and dismiss it, or activate the covering control instead.`,
337
+ no_activation_path: () => "Neither hover nor keyboard focus reached this button (multi-window editor with the pointer over another window, and the button takes no focus). Invoke the equivalent named action with summer_ui_actions mode:'invoke' instead.",
338
+ denied_path: () => "File-dialog paths that leave the project are refused ('..', user://, ~, or an absolute path outside the project root). Use a res:// path or a bare file name.",
339
+ tab_not_found: (f) => `No such tab.${list("Tabs", names(f.tabs))} Pass one of those as value, or an index.`,
340
+ index_out_of_range: (f) => `index is out of range${finite(f.item_count) ? ` (item_count ${f.item_count})` : ""}. Re-read the control with summer_ui_tree root:'path:<path>' and use an index it lists.`,
341
+ missing_value: () => "This action needs value (select_tab title, set_text text, set_value number) — pass it and retry.",
342
+ not_selected: () => "The main-screen switch was refused (a scene change is in progress, or that editor's button is hidden). Wait a moment, retry, and read back state.current_tab — never assume the switch happened.",
343
+ button_not_found: (f) => `No such button in the dialog's row.${list("Buttons", names(f.buttons))} Pass 'ok', 'cancel', or one of those texts.`,
344
+ missing_target: () => "Pass path (from summer_ui_tree root:'dialogs') or title to name the dialog.",
345
+ no_renderer: () => "This editor has no renderer (headless / dummy rendering driver), so no pixels exist to capture — nothing was drawn. Use summer_ui_tree for the structured view of the same UI; real pixels need the editor under a display (Linux: --xvfb).",
346
+ texture_unavailable: () => "The root viewport texture could not be read this frame. Retry once; if it persists, use summer_ui_tree for the structured view.",
347
+ zero_size: () => "The target has a zero-sized rect (collapsed or not laid out yet). Screenshot root:'window' or read it with summer_ui_tree.",
348
+ native_subwindow: () => "That window is a native OS sub-window; the root viewport texture does not contain it. Screenshot root:'window' for the main editor, or read the dialog with summer_ui_tree root:'dialog:<title>'.",
349
+ encode_failed: () => "PNG encoding failed on the engine side. Retry with a smaller max_size.",
350
+ };
351
+ /**
352
+ * Fold the failed op's detail fields and the next step into the envelope's
353
+ * error string. Leaves non-UI failures, successes, and old-engine "unknown
354
+ * op" answers untouched (withOldEngineHint owns those).
355
+ */
356
+ export function withUiFailureDetails(result) {
357
+ if (!result || typeof result !== "object")
358
+ return result;
359
+ const envelope = result;
360
+ const failed = envelope.results?.find((entry) => entry && entry.ok === false);
361
+ const reason = (typeof envelope.failure_reason === "string" && envelope.failure_reason) ||
362
+ (typeof envelope.failureReason === "string" && envelope.failureReason) ||
363
+ failed?.failure_reason ||
364
+ failed?.failureReason;
365
+ if (typeof reason !== "string")
366
+ return result;
367
+ const render = UI_FAILURE_HINTS[reason];
368
+ if (!render)
369
+ return result;
370
+ const engineError = (typeof failed?.error === "string" && failed.error) ||
371
+ (typeof envelope.error === "string" && envelope.error) ||
372
+ reason;
373
+ if (/unknown op/i.test(engineError))
374
+ return result;
375
+ const detail = failed ?? {};
376
+ return { ...envelope, error: `${render(detail)} Engine said: ${engineError}` };
377
+ }
378
+ /**
379
+ * Pull the PNG out of a successful UiScreenshot envelope. Returns null when
380
+ * the result carries no image (callers fall back to text — never emit a
381
+ * broken image block).
382
+ */
383
+ export function uiScreenshotImage(result) {
384
+ if (!result || typeof result !== "object")
385
+ return null;
386
+ const envelope = result;
387
+ const entry = envelope.results?.find((candidate) => candidate && candidate.op === "UiScreenshot") ?? envelope.results?.[0];
388
+ if (!entry || typeof entry.image_base64 !== "string" || entry.image_base64.length === 0)
389
+ return null;
390
+ const { image_base64, ...receipt } = entry;
391
+ const num = (value) => (finite(value) ? value : undefined);
392
+ return {
393
+ base64: image_base64,
394
+ mime: typeof entry.mime === "string" && entry.mime ? entry.mime : "image/png",
395
+ width: num(entry.width),
396
+ height: num(entry.height),
397
+ bytes: num(entry.bytes),
398
+ scale: num(entry.scale),
399
+ root: typeof entry.root === "string" ? entry.root : undefined,
400
+ root_path: typeof entry.root_path === "string" ? entry.root_path : undefined,
401
+ renderer: typeof entry.renderer === "string" ? entry.renderer : undefined,
402
+ display_server: typeof entry.display_server === "string" ? entry.display_server : undefined,
403
+ source_rect: entry.source_rect && typeof entry.source_rect === "object"
404
+ ? entry.source_rect
405
+ : undefined,
406
+ receipt,
407
+ };
408
+ }
409
+ /** The one-line caption both faces print under a captured frame. */
410
+ export function uiScreenshotCaption(image) {
411
+ const dims = image.width && image.height ? `${image.width}x${image.height} px` : "unknown size";
412
+ const parts = [
413
+ `root '${image.root ?? "window"}'${image.root_path ? ` (${image.root_path})` : ""}`,
414
+ dims,
415
+ image.scale !== undefined && image.scale !== 1 ? `scale ${image.scale}` : null,
416
+ image.source_rect
417
+ ? `source rect ${image.source_rect.x ?? 0},${image.source_rect.y ?? 0} ${image.source_rect.w ?? "?"}x${image.source_rect.h ?? "?"}`
418
+ : null,
419
+ image.renderer ? `renderer ${image.renderer}` : null,
420
+ ].filter((part) => typeof part === "string" && part.length > 0);
421
+ return (`Editor UI screenshot — ${parts.join(", ")}. Captured from the editor's root viewport texture, never the OS screen. ` +
422
+ "Review the image above and describe what you actually see. Pixels prove appearance only: for a control's exact state (checked, current_tab, text, enabled) read summer_ui_tree — and when a scene looks wrong, fix it with the scene tools, not by clicking.");
423
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Godot Variant.Type names for the raw integers the engine's inspector
3
+ * endpoint returns (E2E 2026-09-03 F-14: `summer_inspect_node` props carry
4
+ * `type: 2`, `type: 20`, ... — StateProvider writes `pd["type"] = pi.type`, the
5
+ * Variant::Type enum value, and nothing else).
6
+ *
7
+ * Order verified against summerengine core/variant/variant.h `enum Type`
8
+ * (Godot 4.x; VARIANT_MAX = 39). Names are the @GlobalScope `TYPE_*` constants
9
+ * agents see in GDScript (`typeof()`, `Variant.Type`), so a reader can match
10
+ * them against the class reference without a lookup table.
11
+ */
12
+ export declare const VARIANT_TYPE_NAMES: readonly string[];
13
+ /** `TYPE_*` name for a Variant.Type integer; undefined for anything outside
14
+ * the table (a future engine enum, or a value that was never a type). */
15
+ export declare function variantTypeName(type: unknown): string | undefined;
16
+ /**
17
+ * Add `type_name` next to every integer `type` in an inspector payload's
18
+ * `props` list (top level or under `data`), keeping the integer. Shape-
19
+ * tolerant: anything that is not the expected shape passes through untouched,
20
+ * and the input is never mutated.
21
+ */
22
+ export declare function annotateVariantTypes<T>(payload: T): T;