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
@@ -1,19 +0,0 @@
1
- import { Command } from "commander";
2
- /** Guard a download URL from the releases endpoint. A missing/empty URL (an
3
- * outdated or misconfigured endpoint) otherwise becomes a cryptic
4
- * fetch(undefined) failure — surface it clearly with a manual fallback. */
5
- export declare function requireDownloadUrl(value: string | undefined, label: string): string;
6
- /** Verify a downloaded file's sha256 against the expected hash from the releases
7
- * endpoint. Skipped when no expected hash is published. Catches a truncated or
8
- * corrupted download (a ~1GB install over a flaky network) before it becomes a
9
- * confusing DMG-mount / installer failure downstream. */
10
- export declare function verifyChecksum(actual: string, expected: string | undefined, label: string): void;
11
- /** Velopack Setup.exe install args. Velopack is NOT NSIS: silent install is
12
- * `--silent` and a custom directory is `--installto <dir>` (per Velopack's
13
- * setup.exe CLI). The old NSIS flags (/S, /D=) are rejected by the Velopack
14
- * installer with "unexpected argument '/S' found" — this is the wizard bug. */
15
- export declare function windowsInstallerArgs(customPath?: string): string;
16
- export declare const installCommand: Command;
17
- export declare function downloadFile(url: string, dest: string): Promise<{
18
- sha256: string;
19
- }>;
@@ -1,194 +0,0 @@
1
- import { Command } from "commander";
2
- import { execSync } from "child_process";
3
- import { createHash } from "crypto";
4
- import { createWriteStream, existsSync, mkdirSync } from "fs";
5
- import { pipeline } from "stream/promises";
6
- import { Readable } from "stream";
7
- import { tmpdir, platform } from "os";
8
- import { join } from "path";
9
- const RELEASES_URL = "https://www.summerengine.com/api/desktop/releases";
10
- /** Guard a download URL from the releases endpoint. A missing/empty URL (an
11
- * outdated or misconfigured endpoint) otherwise becomes a cryptic
12
- * fetch(undefined) failure — surface it clearly with a manual fallback. */
13
- export function requireDownloadUrl(value, label) {
14
- if (!value || value.trim().length === 0) {
15
- throw new Error(`Release info is missing the ${label} download URL — the releases endpoint may be ` +
16
- `outdated. Download manually from https://summerengine.com/download`);
17
- }
18
- return value;
19
- }
20
- /** Verify a downloaded file's sha256 against the expected hash from the releases
21
- * endpoint. Skipped when no expected hash is published. Catches a truncated or
22
- * corrupted download (a ~1GB install over a flaky network) before it becomes a
23
- * confusing DMG-mount / installer failure downstream. */
24
- export function verifyChecksum(actual, expected, label) {
25
- if (!expected || expected.trim().length === 0)
26
- return; // nothing published to verify against
27
- if (actual.toLowerCase() !== expected.toLowerCase()) {
28
- throw new Error(`${label} checksum mismatch — the download was corrupted or incomplete ` +
29
- `(expected ${expected.slice(0, 12)}…, got ${actual.slice(0, 12)}…). Re-run \`summer install\`.`);
30
- }
31
- }
32
- /** Velopack Setup.exe install args. Velopack is NOT NSIS: silent install is
33
- * `--silent` and a custom directory is `--installto <dir>` (per Velopack's
34
- * setup.exe CLI). The old NSIS flags (/S, /D=) are rejected by the Velopack
35
- * installer with "unexpected argument '/S' found" — this is the wizard bug. */
36
- export function windowsInstallerArgs(customPath) {
37
- return customPath ? `--silent --installto "${customPath}"` : "--silent";
38
- }
39
- export const installCommand = new Command("install")
40
- .description("Download and install Summer Engine")
41
- .option("--path <dir>", "Custom install directory")
42
- .action(async (opts) => {
43
- const os = platform();
44
- if (os !== "darwin" && os !== "win32") {
45
- console.error("Linux support is coming soon.\n" +
46
- "For now, download from: https://summerengine.com/download");
47
- process.exit(1);
48
- }
49
- console.log("Fetching latest release info...");
50
- let releases;
51
- try {
52
- const res = await fetch(RELEASES_URL, { signal: AbortSignal.timeout(10000) });
53
- if (!res.ok)
54
- throw new Error(`HTTP ${res.status}`);
55
- releases = (await res.json());
56
- }
57
- catch (err) {
58
- console.error("Could not fetch release info. Download manually from:\n" +
59
- " https://summerengine.com/download");
60
- process.exit(1);
61
- }
62
- if (os === "darwin") {
63
- await installMac(releases, opts.path);
64
- }
65
- else {
66
- await installWindows(releases, opts.path);
67
- }
68
- });
69
- async function installMac(releases, customPath) {
70
- const info = releases.latest.macos;
71
- if (!info) {
72
- console.error("No macOS release found.");
73
- process.exit(1);
74
- }
75
- const dmgUrl = requireDownloadUrl(info.dmg_url, "macOS DMG");
76
- console.log(`Latest version: ${info.version}`);
77
- const destApp = customPath || "/Applications/Summer.app";
78
- if (existsSync(destApp)) {
79
- console.log(`Summer Engine already installed at ${destApp}`);
80
- console.log("Updating to latest version...");
81
- }
82
- const dmgPath = join(tmpdir(), `Summer-v${info.version}.dmg`);
83
- console.log(`Downloading Summer Engine v${info.version} (~1 GB, includes bundled Git + runtime)...`);
84
- try {
85
- const { sha256 } = await downloadFile(dmgUrl, dmgPath);
86
- verifyChecksum(sha256, info.dmg_sha256, "DMG");
87
- }
88
- catch (err) {
89
- try {
90
- execSync(`rm -f "${dmgPath}"`, { stdio: "ignore" });
91
- }
92
- catch { /* best effort */ }
93
- console.error(err instanceof Error ? err.message : String(err));
94
- process.exit(1);
95
- }
96
- console.log("Mounting DMG...");
97
- const mountOutput = execSync(`hdiutil attach "${dmgPath}" -nobrowse -noverify -noautoopen`, {
98
- encoding: "utf-8",
99
- });
100
- const mountPoint = mountOutput
101
- .split("\n")
102
- .filter((line) => line.includes("/Volumes/"))
103
- .map((line) => line.trim().split("\t").pop()?.trim())
104
- .find(Boolean);
105
- if (!mountPoint) {
106
- console.error("Failed to find mount point. Install manually from the DMG.");
107
- process.exit(1);
108
- }
109
- try {
110
- console.log("Installing to " + destApp + "...");
111
- execSync(`rm -rf "${destApp}"`, { stdio: "ignore" });
112
- execSync(`cp -R "${mountPoint}/Summer.app" "${destApp}"`);
113
- console.log("Done!");
114
- }
115
- finally {
116
- execSync(`hdiutil detach "${mountPoint}" -quiet`, { stdio: "ignore" });
117
- try {
118
- execSync(`rm "${dmgPath}"`, { stdio: "ignore" });
119
- }
120
- catch { }
121
- }
122
- console.log(`\nSummer Engine v${info.version} installed to ${destApp}`);
123
- console.log("\nNext steps:");
124
- console.log(" summer login # Sign in to your account");
125
- console.log(" summer run # Launch the engine");
126
- }
127
- async function installWindows(releases, customPath) {
128
- const info = releases.latest.windows;
129
- if (!info) {
130
- console.error("No Windows release found.");
131
- process.exit(1);
132
- }
133
- const exeUrl = requireDownloadUrl(info.url, "Windows installer");
134
- console.log(`Latest version: ${info.version}`);
135
- const exePath = join(tmpdir(), `Summer-v${info.version}.exe`);
136
- console.log(`Downloading Summer Engine v${info.version} (~1 GB, includes bundled Git + runtime)...`);
137
- try {
138
- const { sha256 } = await downloadFile(exeUrl, exePath);
139
- verifyChecksum(sha256, info.sha256, "installer");
140
- }
141
- catch (err) {
142
- try {
143
- execSync(`del "${exePath}"`, { stdio: "ignore" });
144
- }
145
- catch { /* best effort */ }
146
- console.error(err instanceof Error ? err.message : String(err));
147
- process.exit(1);
148
- }
149
- console.log("Running installer...");
150
- try {
151
- execSync(`"${exePath}" ${windowsInstallerArgs(customPath)}`, {
152
- stdio: "inherit",
153
- });
154
- }
155
- catch {
156
- console.error("Installer failed. Try running it manually:\n " + exePath);
157
- process.exit(1);
158
- }
159
- try {
160
- execSync(`del "${exePath}"`, { stdio: "ignore" });
161
- }
162
- catch { }
163
- console.log(`\nSummer Engine v${info.version} installed!`);
164
- console.log("\nNext steps:");
165
- console.log(" summer login # Sign in to your account");
166
- console.log(" summer run # Launch the engine");
167
- }
168
- export async function downloadFile(url, dest) {
169
- const res = await fetch(url);
170
- if (!res.ok || !res.body) {
171
- throw new Error(`Download failed: HTTP ${res.status}`);
172
- }
173
- const dir = join(dest, "..");
174
- if (!existsSync(dir))
175
- mkdirSync(dir, { recursive: true });
176
- const fileStream = createWriteStream(dest);
177
- const readable = Readable.fromWeb(res.body);
178
- // Hash while streaming (the 'data' listener and the pipe both see every chunk
179
- // in flowing mode), so we get integrity for free without a second read pass.
180
- const hash = createHash("sha256");
181
- let downloaded = 0;
182
- const total = parseInt(res.headers.get("content-length") || "0", 10);
183
- readable.on("data", (chunk) => {
184
- hash.update(chunk);
185
- downloaded += chunk.length;
186
- if (total > 0) {
187
- const pct = Math.round((downloaded / total) * 100);
188
- process.stdout.write(`\r ${pct}% (${(downloaded / 1024 / 1024).toFixed(1)}MB)`);
189
- }
190
- });
191
- await pipeline(readable, fileStream);
192
- process.stdout.write("\n");
193
- return { sha256: hash.digest("hex") };
194
- }
@@ -1,67 +0,0 @@
1
- import { Command } from "commander";
2
- import { readdirSync, existsSync } from "fs";
3
- import { join } from "path";
4
- import { fetchRemoteTemplates } from "../lib/remote-templates.js";
5
- export const listCommand = new Command("list")
6
- .description("List available templates or local projects")
7
- .argument("<what>", "'templates' or 'projects'")
8
- .action(async (what) => {
9
- if (what === "templates") {
10
- await listTemplates();
11
- }
12
- else if (what === "projects") {
13
- listProjects();
14
- }
15
- else {
16
- console.error(`Unknown: '${what}'. Use 'templates' or 'projects'.`);
17
- process.exit(1);
18
- }
19
- });
20
- async function listTemplates() {
21
- console.log("Built-in templates (no download required):\n");
22
- console.log(" empty Empty 3D project with just a root node");
23
- console.log(" 3d-basic 3D scene with camera, light, and floor");
24
- console.log("\nCommunity templates from github.com/SummerEngine:\n");
25
- try {
26
- const remote = await fetchRemoteTemplates();
27
- if (remote.length === 0) {
28
- console.log(" (none yet)");
29
- }
30
- else {
31
- const padTo = Math.max(...remote.map((t) => t.slug.length), 16);
32
- for (const t of remote) {
33
- const desc = t.description || `(no description) ${t.url}`;
34
- console.log(` ${t.slug.padEnd(padTo)} ${desc}`);
35
- }
36
- }
37
- }
38
- catch (err) {
39
- console.log(` (could not reach GitHub: ${err.message})`);
40
- console.log(" Built-ins above still work offline.");
41
- }
42
- console.log("\nCreate a project: summer create <name> [project-dir]");
43
- console.log("Example: summer create 3d-third-person-controller my-game");
44
- }
45
- function listProjects() {
46
- const cwd = process.cwd();
47
- const entries = readdirSync(cwd, { withFileTypes: true });
48
- const projects = [];
49
- for (const entry of entries) {
50
- if (entry.isDirectory()) {
51
- const projectFile = join(cwd, entry.name, "project.godot");
52
- if (existsSync(projectFile)) {
53
- projects.push(entry.name);
54
- }
55
- }
56
- }
57
- if (projects.length === 0) {
58
- console.log("No Summer Engine projects found in current directory.");
59
- console.log("\nCreate one: summer create 3d-basic my-game");
60
- return;
61
- }
62
- console.log(`Projects in ${cwd}:\n`);
63
- for (const p of projects) {
64
- console.log(` ${p}/`);
65
- }
66
- console.log(`\nOpen a project: summer run <name>`);
67
- }
@@ -1,13 +0,0 @@
1
- import { Command } from "commander";
2
- import { clearAuthCredentials } from "../lib/auth.js";
3
- export const logoutCommand = new Command("logout")
4
- .description("Sign out and clear stored auth tokens")
5
- .action(async () => {
6
- const removed = await clearAuthCredentials();
7
- if (removed > 0) {
8
- console.log("Logged out. Auth tokens cleared.");
9
- }
10
- else {
11
- console.log("Already logged out (no tokens found).");
12
- }
13
- });
@@ -1,2 +0,0 @@
1
- import { Command } from "commander";
2
- export declare const logsCommand: Command;
@@ -1,19 +0,0 @@
1
- import { Command } from "commander";
2
- import { readCreatorLogs } from "../lib/creator.js";
3
- export const logsCommand = new Command("logs")
4
- .description("Read creator runtime logs")
5
- .option("--project-id <id>", "Creator project ID")
6
- .option("--release <id>", "Restrict logs to one release")
7
- .option("--limit <count>", "Maximum log entries to return", "100")
8
- .action(async (opts) => {
9
- const limit = Number.parseInt(opts.limit, 10);
10
- if (!Number.isInteger(limit) || limit < 1 || limit > 1000) {
11
- throw new Error("--limit must be between 1 and 1000. Recovery: pass a whole number in that range.");
12
- }
13
- await readCreatorLogs({
14
- projectId: opts.projectId,
15
- releaseId: opts.release,
16
- limit,
17
- face: "cli",
18
- });
19
- });
@@ -1,2 +0,0 @@
1
- import { Command } from "commander";
2
- export declare const openCommand: Command;
@@ -1,32 +0,0 @@
1
- import { Command } from "commander";
2
- import { existsSync } from "fs";
3
- import { resolve } from "path";
4
- import { getApiPort, checkEngineHealth } from "../lib/engine.js";
5
- export const openCommand = new Command("open")
6
- .description("Open a project in Summer Engine")
7
- .argument("<path>", "Path to project directory (must contain project.godot)")
8
- .action(async (projectPath) => {
9
- const fullPath = resolve(projectPath);
10
- if (!existsSync(fullPath)) {
11
- console.error(`Directory not found: ${fullPath}`);
12
- process.exit(1);
13
- }
14
- if (!existsSync(`${fullPath}/project.godot`)) {
15
- console.error(`No project.godot found in ${fullPath}\n` +
16
- "This doesn't look like a Summer Engine project.\n" +
17
- "Create one with: summer create 3d-basic my-game");
18
- process.exit(1);
19
- }
20
- const port = await getApiPort();
21
- const health = await checkEngineHealth(port);
22
- if (!health) {
23
- console.log("Engine not running. Launching with this project...");
24
- // Import dynamically to avoid circular deps
25
- const { runCommand } = await import("./run.js");
26
- await runCommand.parseAsync(["node", "summer", fullPath], { from: "user" });
27
- return;
28
- }
29
- console.log(`Opening project: ${fullPath}`);
30
- console.log("Note: To switch projects, close the current one in Summer Engine first,\n" +
31
- "then run: summer run " + fullPath);
32
- });
@@ -1,8 +0,0 @@
1
- /**
2
- * CLI command: summer agent
3
- * Launches the web app locally with direct engine execution enabled.
4
- * The web app handles all AI logic (prompts, tools, RAG, billing).
5
- * This command just starts it with LOCAL_ENGINE_PORT set.
6
- */
7
- import { Command } from "commander";
8
- export declare const orchestratorCommand: Command;
@@ -1,143 +0,0 @@
1
- /**
2
- * CLI command: summer agent
3
- * Launches the web app locally with direct engine execution enabled.
4
- * The web app handles all AI logic (prompts, tools, RAG, billing).
5
- * This command just starts it with LOCAL_ENGINE_PORT set.
6
- */
7
- import { Command } from "commander";
8
- import { spawn } from "node:child_process";
9
- import { readFile, access, writeFile } from "node:fs/promises";
10
- import { join, resolve, dirname } from "node:path";
11
- import { homedir } from "node:os";
12
- import { getApiToken, getApiPort, checkEngineHealth } from "../lib/engine.js";
13
- import { getSummerDir } from "../lib/auth.js";
14
- async function findWebAppPath() {
15
- // 1. Check env var
16
- if (process.env.SUMMER_WEB_APP_PATH) {
17
- return process.env.SUMMER_WEB_APP_PATH;
18
- }
19
- // 2. Check ~/.summer/web-app-path
20
- try {
21
- const stored = (await readFile(join(getSummerDir(), "web-app-path"), "utf-8")).trim();
22
- if (stored) {
23
- await access(join(stored, "package.json"));
24
- return stored;
25
- }
26
- }
27
- catch {
28
- // Not stored yet
29
- }
30
- // 3. Search common sibling locations
31
- const cliDir = dirname(dirname(dirname(new URL(import.meta.url).pathname)));
32
- const searchPaths = [
33
- resolve(cliDir, "../../publicsummerengine"), // sibling in development/
34
- resolve(cliDir, "../../../publicsummerengine"), // one level up
35
- resolve(homedir(), "development/publicsummerengine"),
36
- ];
37
- for (const candidate of searchPaths) {
38
- try {
39
- await access(join(candidate, "package.json"));
40
- const pkg = JSON.parse(await readFile(join(candidate, "package.json"), "utf-8"));
41
- if (pkg.name && pkg.name.includes("summer")) {
42
- // Store for future use
43
- try {
44
- await writeFile(join(getSummerDir(), "web-app-path"), candidate, "utf-8");
45
- }
46
- catch {
47
- // Non-critical
48
- }
49
- return candidate;
50
- }
51
- }
52
- catch {
53
- continue;
54
- }
55
- }
56
- return null;
57
- }
58
- async function loadEnvFile() {
59
- const envVars = {};
60
- try {
61
- const envPath = join(getSummerDir(), "env");
62
- const content = await readFile(envPath, "utf-8");
63
- for (const line of content.split("\n")) {
64
- const trimmed = line.trim();
65
- if (!trimmed || trimmed.startsWith("#"))
66
- continue;
67
- const eqIdx = trimmed.indexOf("=");
68
- if (eqIdx > 0) {
69
- envVars[trimmed.slice(0, eqIdx)] = trimmed.slice(eqIdx + 1);
70
- }
71
- }
72
- }
73
- catch {
74
- // No env file — user will need to have env vars set
75
- }
76
- return envVars;
77
- }
78
- export const orchestratorCommand = new Command("agent")
79
- .description("Start the web app locally with direct engine execution. " +
80
- "Tools call localhost:6550 instead of the Redis bridge.")
81
- .option("-p, --port <number>", "Web app port", "3000")
82
- .option("--web-path <path>", "Path to publicsummerengine (auto-detected if not set)")
83
- .option("--dev", "Run in dev mode (pnpm dev) instead of production")
84
- .action(async (opts) => {
85
- const port = parseInt(opts.port, 10);
86
- // 1. Verify engine is running
87
- const enginePort = await getApiPort();
88
- const engineToken = await getApiToken();
89
- const health = await checkEngineHealth(enginePort);
90
- if (!health) {
91
- console.error("Summer Engine is not running. Open Summer Engine first.");
92
- process.exit(1);
93
- }
94
- console.log(`Engine running on port ${enginePort} | project: ${health.project_name ?? "unknown"}`);
95
- // 2. Find web app
96
- const webAppPath = opts.webPath ?? (await findWebAppPath());
97
- if (!webAppPath) {
98
- console.error("Could not find publicsummerengine. Set --web-path or SUMMER_WEB_APP_PATH.");
99
- process.exit(1);
100
- }
101
- console.log(`Web app: ${webAppPath}`);
102
- // 3. Load env vars from ~/.summer/env
103
- const storedEnv = await loadEnvFile();
104
- // 4. Build env for the web app
105
- const childEnv = {
106
- ...process.env,
107
- ...storedEnv,
108
- LOCAL_ENGINE_PORT: String(enginePort),
109
- LOCAL_ENGINE_TOKEN: engineToken ?? "",
110
- PORT: String(port),
111
- };
112
- // 5. Start the web app
113
- const cmd = opts.dev ? "pnpm" : "pnpm";
114
- const args = opts.dev ? ["dev", "--port", String(port)] : ["start", "--port", String(port)];
115
- console.log(`\nStarting web app (${opts.dev ? "dev" : "production"} mode) on port ${port}...`);
116
- console.log(` LOCAL_ENGINE_PORT=${enginePort}`);
117
- console.log(` Tools will execute via localhost:${enginePort} (direct, no bridge)\n`);
118
- const child = spawn(cmd, args, {
119
- cwd: webAppPath,
120
- env: childEnv,
121
- stdio: "inherit",
122
- });
123
- // Write agent port for engine to discover
124
- try {
125
- await writeFile(join(getSummerDir(), "agent-port"), String(port), "utf-8");
126
- }
127
- catch {
128
- // Non-critical
129
- }
130
- child.on("error", (err) => {
131
- console.error("Failed to start web app:", err.message);
132
- process.exit(1);
133
- });
134
- child.on("exit", (code) => {
135
- process.exit(code ?? 0);
136
- });
137
- // Graceful shutdown
138
- const shutdown = () => {
139
- child.kill("SIGTERM");
140
- };
141
- process.on("SIGINT", shutdown);
142
- process.on("SIGTERM", shutdown);
143
- });
@@ -1,2 +0,0 @@
1
- import { Command } from "commander";
2
- export declare const runCommand: Command;
@@ -1,167 +0,0 @@
1
- import { Command } from "commander";
2
- import { spawn } from "child_process";
3
- import { existsSync } from "fs";
4
- import { mkdir, readFile, rm, writeFile } from "fs/promises";
5
- import { platform } from "os";
6
- import { join, resolve } from "path";
7
- import { getSummerDir } from "../lib/auth.js";
8
- import { getApiPort, checkEngineHealth } from "../lib/engine.js";
9
- const MAC_PATHS = [
10
- "/Applications/Summer.app/Contents/MacOS/Summer",
11
- `${process.env.HOME}/Applications/Summer.app/Contents/MacOS/Summer`,
12
- ];
13
- const WIN_PATHS = [
14
- `${process.env.LOCALAPPDATA}\\SummerEngine\\current\\Summer.exe`,
15
- `${process.env.LOCALAPPDATA}\\Programs\\Summer Engine\\Summer.exe`,
16
- `${process.env.PROGRAMFILES}\\Summer Engine\\Summer.exe`,
17
- ];
18
- const LAUNCH_LOCK_STALE_MS = 60_000;
19
- const LAUNCH_LOCK_WAIT_MS = 15_000;
20
- function findEngineBinary() {
21
- const paths = platform() === "darwin" ? MAC_PATHS : WIN_PATHS;
22
- for (const p of paths) {
23
- if (existsSync(p))
24
- return p;
25
- }
26
- return null;
27
- }
28
- function isProcessAlive(pid) {
29
- if (!Number.isInteger(pid) || pid <= 0)
30
- return false;
31
- try {
32
- process.kill(pid, 0);
33
- return true;
34
- }
35
- catch (error) {
36
- const code = error.code;
37
- return code === "EPERM";
38
- }
39
- }
40
- async function removeStaleLaunchLock(lockDir) {
41
- const ownerPath = join(lockDir, "owner.json");
42
- try {
43
- const raw = await readFile(ownerPath, "utf-8");
44
- const owner = JSON.parse(raw);
45
- const pid = typeof owner.pid === "number" ? owner.pid : 0;
46
- const createdAt = typeof owner.createdAt === "number" ? owner.createdAt : 0;
47
- const staleByTime = Date.now() - createdAt > LAUNCH_LOCK_STALE_MS;
48
- const staleByPid = !isProcessAlive(pid);
49
- if (!staleByTime && !staleByPid) {
50
- return false;
51
- }
52
- }
53
- catch {
54
- // Broken owner metadata should not permanently block launches.
55
- }
56
- await rm(lockDir, { recursive: true, force: true });
57
- return true;
58
- }
59
- async function withLaunchLock(fn) {
60
- const summerDir = getSummerDir();
61
- await mkdir(summerDir, { recursive: true, mode: 0o700 });
62
- const lockDir = join(summerDir, "launch.lock");
63
- const ownerPath = join(lockDir, "owner.json");
64
- const startedAt = Date.now();
65
- while (true) {
66
- try {
67
- await mkdir(lockDir, { mode: 0o700 });
68
- try {
69
- await writeFile(ownerPath, JSON.stringify({ pid: process.pid, createdAt: Date.now() }, null, 2), { encoding: "utf-8", mode: 0o600 });
70
- return await fn();
71
- }
72
- finally {
73
- await rm(lockDir, { recursive: true, force: true });
74
- }
75
- }
76
- catch (error) {
77
- const code = error.code;
78
- if (code !== "EEXIST") {
79
- throw error;
80
- }
81
- if (await removeStaleLaunchLock(lockDir)) {
82
- continue;
83
- }
84
- if (Date.now() - startedAt > LAUNCH_LOCK_WAIT_MS) {
85
- throw new Error("Another `summer run` launch is still in progress. Try again in a few seconds.");
86
- }
87
- await sleep(100);
88
- }
89
- }
90
- }
91
- export const runCommand = new Command("run")
92
- .description("Launch Summer Engine, optionally opening a project")
93
- .argument("[path]", "Path to a project directory (must contain project.godot)")
94
- .action(async (projectPath) => {
95
- const fullProjectPath = projectPath ? resolve(projectPath) : null;
96
- if (fullProjectPath) {
97
- if (!existsSync(fullProjectPath)) {
98
- console.error(`Directory not found: ${fullProjectPath}`);
99
- process.exit(1);
100
- }
101
- if (!existsSync(join(fullProjectPath, "project.godot"))) {
102
- console.error(`No project.godot found in ${fullProjectPath}\n` +
103
- "This doesn't look like a Summer Engine project.");
104
- process.exit(1);
105
- }
106
- }
107
- await withLaunchLock(async () => {
108
- const port = await getApiPort();
109
- const health = await checkEngineHealth(port);
110
- if (health) {
111
- const runningProjectPath = health.project_path
112
- ? resolve(health.project_path)
113
- : null;
114
- if (!fullProjectPath || runningProjectPath === fullProjectPath) {
115
- console.log(`Summer Engine is already running (v${health.version}) on port ${port}`);
116
- if (health.project_name) {
117
- console.log(` Project: ${health.project_name}`);
118
- }
119
- if (health.project_path) {
120
- console.log(` Path: ${health.project_path}`);
121
- }
122
- return;
123
- }
124
- console.log(`Summer Engine is already running (v${health.version}) on port ${port}`);
125
- console.log(` Current project: ${health.project_path ?? health.project_name ?? "unknown"}`);
126
- console.error(`Refusing to launch a second editor for: ${fullProjectPath}\n` +
127
- "Close or switch the current Summer Engine project first, then run this command again.");
128
- process.exitCode = 1;
129
- return;
130
- }
131
- const binary = findEngineBinary();
132
- if (!binary) {
133
- console.error("Summer Engine not found. Install it first:\n" +
134
- " summer install\n" +
135
- " or download from https://summerengine.com/download");
136
- process.exitCode = 1;
137
- return;
138
- }
139
- const args = ["--editor"];
140
- if (fullProjectPath) {
141
- args.unshift("--path", fullProjectPath);
142
- }
143
- console.log("Launching Summer Engine...");
144
- const child = spawn(binary, args, { detached: true, stdio: "ignore" });
145
- child.unref();
146
- // Wait for engine to start responding
147
- const startTime = Date.now();
148
- const timeout = 20000;
149
- while (Date.now() - startTime < timeout) {
150
- await sleep(500);
151
- const newPort = await getApiPort();
152
- const h = await checkEngineHealth(newPort);
153
- if (h) {
154
- console.log(`Summer Engine running (v${h.version}) on port ${newPort}`);
155
- if (h.project_name) {
156
- console.log(` Project: ${h.project_name}`);
157
- }
158
- return;
159
- }
160
- }
161
- console.log("Summer Engine launched but API not responding yet.\n" +
162
- "It may still be loading. Run 'summer status' to check.");
163
- });
164
- });
165
- function sleep(ms) {
166
- return new Promise((resolve) => setTimeout(resolve, ms));
167
- }