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,105 @@
1
+ /**
2
+ * Where each platform's engine binary lives, shared by `summer install`,
3
+ * `summer run`, and `summer doctor` so they can never disagree about what
4
+ * "installed" means.
5
+ *
6
+ * Mac and Windows are installed by their platform installers into well-known
7
+ * locations. Linux has no installer: `summer install` places (or symlinks) the
8
+ * binary into ~/.summer/engine/, and SUMMER_ENGINE_BINARY points at a prebuilt
9
+ * binary directly — the path cloud containers that ship their own build use.
10
+ *
11
+ * The Linux install *resolution* logic (which source to install from, which
12
+ * release asset to pick, how to unpack it) also lives here so the CLI command
13
+ * stays commander wiring + process I/O only.
14
+ */
15
+ /** Env var naming the engine executable to launch and probe (absolute path).
16
+ * The ONE name shared with the autopilot scaffold (assets/autopilot/run.sh)
17
+ * and evals/mitl; `summer run --bin <path>` is its flag form. On macOS it is
18
+ * the executable inside the bundle (.../Summer.app/Contents/MacOS/Summer). */
19
+ export declare const ENGINE_BIN_ENV = "SUMMER_BIN";
20
+ /** Older name for the same override, documented for Linux cloud containers
21
+ * (`running-in-the-cloud`, CHANGELOG 3.0.0) and still honoured after
22
+ * ENGINE_BIN_ENV. `summer install` on Linux registers the binary it names. */
23
+ export declare const ENGINE_BINARY_ENV = "SUMMER_ENGINE_BINARY";
24
+ /** The explicit engine override in force — ENGINE_BIN_ENV first, then
25
+ * ENGINE_BINARY_ENV — or null when neither is set (blank counts as unset). */
26
+ export declare function engineBinaryOverride(env?: NodeJS.ProcessEnv): {
27
+ name: string;
28
+ path: string;
29
+ } | null;
30
+ /**
31
+ * Why an explicitly named engine path cannot be launched, or null when it can.
32
+ * A `.app` bundle is refused even when it exists: `summer run` spawns the
33
+ * executable directly, because `open` (the only way to launch a bundle)
34
+ * activates the app and defeats background launches, and a binary copied OUT
35
+ * of the bundle dies on its Sparkle @rpath — so the value has to be the
36
+ * executable inside the bundle.
37
+ */
38
+ export declare function describeEngineExecutableProblem(path: string, source: string): string | null;
39
+ /** Env var naming a direct artifact URL (tar.gz, zip, or raw binary) to install
40
+ * on Linux instead of the published release. */
41
+ export declare const ENGINE_URL_ENV = "SUMMER_ENGINE_URL";
42
+ /** The single executable name Linux release artifacts contain and installs
43
+ * register. Matches the release asset contents (.github/workflows/release.yml
44
+ * in the engine repository). */
45
+ export declare const LINUX_ENGINE_BINARY_NAME = "summer-linux-x86_64";
46
+ /**
47
+ * Where Linux release artifacts are published today: GitHub Releases on the
48
+ * engine repository (engine tags are v0.*; see .github/workflows/release.yml).
49
+ * This is the ONE place to change when Linux artifacts move to the desktop
50
+ * releases CDN — point it at an endpoint returning the same GitHub-style
51
+ * releases JSON (an array of { tag_name, draft, prerelease, assets:[{ name,
52
+ * browser_download_url }] }).
53
+ */
54
+ export declare const LINUX_RELEASES_API_URL = "https://api.github.com/repos/SummerEngine/SummerEngine/releases?per_page=30";
55
+ /** Release asset naming contract with .github/workflows/release.yml. */
56
+ export declare const LINUX_ASSET_PATTERN: RegExp;
57
+ export declare function linuxEngineInstallDir(): string;
58
+ export declare function macEnginePaths(env?: NodeJS.ProcessEnv): string[];
59
+ export declare function windowsEnginePaths(env?: NodeJS.ProcessEnv): string[];
60
+ export declare function linuxEnginePaths(): string[];
61
+ export declare function engineBinaryCandidates(os?: NodeJS.Platform, env?: NodeJS.ProcessEnv): string[];
62
+ /** First existing engine binary for this machine, or null. SUMMER_BIN /
63
+ * SUMMER_ENGINE_BINARY wins when set and present; a set-but-missing override
64
+ * falls through to the platform locations rather than reporting a phantom
65
+ * install (`summer run` is stricter: see resolveRunBinary). */
66
+ export declare function findEngineBinary(os?: NodeJS.Platform, env?: NodeJS.ProcessEnv): string | null;
67
+ export type LinuxInstallSource = {
68
+ kind: "binary";
69
+ path: string;
70
+ } | {
71
+ kind: "url";
72
+ url: string;
73
+ } | {
74
+ kind: "release";
75
+ apiUrl: string;
76
+ };
77
+ /**
78
+ * Resolution order for `summer install` on Linux:
79
+ * 1. SUMMER_ENGINE_BINARY — an existing engine binary on disk (the path cloud
80
+ * containers with a prebuilt engine use). Registered, nothing downloaded.
81
+ * 2. SUMMER_ENGINE_URL — any artifact URL: .tar.gz, .zip, or a raw executable.
82
+ * 3. The published Linux release artifact (LINUX_RELEASES_API_URL).
83
+ */
84
+ export declare function resolveLinuxInstallSource(env?: NodeJS.ProcessEnv): LinuxInstallSource;
85
+ export interface LinuxReleaseAsset {
86
+ version: string;
87
+ url: string;
88
+ /** Sibling "<asset>.sha256" download URL when the release published one. */
89
+ sha256Url?: string;
90
+ }
91
+ /**
92
+ * Newest published (non-draft, non-prerelease) release that actually carries a
93
+ * Linux artifact. Releases are shared between engine tags (v0.x) and CLI tags
94
+ * (v1.x, v2.x), and CLI releases have no engine binaries — so "latest release"
95
+ * is the wrong query and this scans instead.
96
+ */
97
+ export declare function pickLinuxReleaseAsset(releases: unknown): LinuxReleaseAsset;
98
+ /** How to unpack a downloaded Linux artifact, judged by its file name
99
+ * (query string ignored). Anything that is not a known archive is treated as
100
+ * the raw executable itself. */
101
+ export declare function linuxArchiveKind(nameOrUrl: string): "tar.gz" | "zip" | "binary";
102
+ /** Locate the engine executable inside an extracted artifact: the canonical
103
+ * name first, then the only file, then anything that looks like an engine
104
+ * build (covers artifacts packed straight from bin/). */
105
+ export declare function findExtractedEngineBinary(files: string[]): string | null;
@@ -0,0 +1,190 @@
1
+ import { existsSync, statSync } from "fs";
2
+ import { homedir, platform } from "os";
3
+ import { basename, join } from "path";
4
+ /**
5
+ * Where each platform's engine binary lives, shared by `summer install`,
6
+ * `summer run`, and `summer doctor` so they can never disagree about what
7
+ * "installed" means.
8
+ *
9
+ * Mac and Windows are installed by their platform installers into well-known
10
+ * locations. Linux has no installer: `summer install` places (or symlinks) the
11
+ * binary into ~/.summer/engine/, and SUMMER_ENGINE_BINARY points at a prebuilt
12
+ * binary directly — the path cloud containers that ship their own build use.
13
+ *
14
+ * The Linux install *resolution* logic (which source to install from, which
15
+ * release asset to pick, how to unpack it) also lives here so the CLI command
16
+ * stays commander wiring + process I/O only.
17
+ */
18
+ /** Env var naming the engine executable to launch and probe (absolute path).
19
+ * The ONE name shared with the autopilot scaffold (assets/autopilot/run.sh)
20
+ * and evals/mitl; `summer run --bin <path>` is its flag form. On macOS it is
21
+ * the executable inside the bundle (.../Summer.app/Contents/MacOS/Summer). */
22
+ export const ENGINE_BIN_ENV = "SUMMER_BIN";
23
+ /** Older name for the same override, documented for Linux cloud containers
24
+ * (`running-in-the-cloud`, CHANGELOG 3.0.0) and still honoured after
25
+ * ENGINE_BIN_ENV. `summer install` on Linux registers the binary it names. */
26
+ export const ENGINE_BINARY_ENV = "SUMMER_ENGINE_BINARY";
27
+ /** The explicit engine override in force — ENGINE_BIN_ENV first, then
28
+ * ENGINE_BINARY_ENV — or null when neither is set (blank counts as unset). */
29
+ export function engineBinaryOverride(env = process.env) {
30
+ for (const name of [ENGINE_BIN_ENV, ENGINE_BINARY_ENV]) {
31
+ const path = env[name]?.trim();
32
+ if (path)
33
+ return { name, path };
34
+ }
35
+ return null;
36
+ }
37
+ /**
38
+ * Why an explicitly named engine path cannot be launched, or null when it can.
39
+ * A `.app` bundle is refused even when it exists: `summer run` spawns the
40
+ * executable directly, because `open` (the only way to launch a bundle)
41
+ * activates the app and defeats background launches, and a binary copied OUT
42
+ * of the bundle dies on its Sparkle @rpath — so the value has to be the
43
+ * executable inside the bundle.
44
+ */
45
+ export function describeEngineExecutableProblem(path, source) {
46
+ const trimmed = path.replace(/[\\/]+$/, "");
47
+ if (/\.app$/i.test(basename(trimmed))) {
48
+ return (`${source} names the bundle ${trimmed}, not the engine executable. Pass the executable inside it: ` +
49
+ `${join(trimmed, "Contents", "MacOS", "Summer")}\n` +
50
+ "summer run spawns that executable directly: launching the .app would go through `open`, which activates " +
51
+ "the app and defeats background launches, and a binary copied out of the bundle dies on its Sparkle @rpath.");
52
+ }
53
+ if (!existsSync(trimmed)) {
54
+ return `${source} names ${trimmed}, but nothing exists there.`;
55
+ }
56
+ if (statSync(trimmed).isDirectory()) {
57
+ return `${source} names ${trimmed}, which is a directory, not the engine executable.`;
58
+ }
59
+ return null;
60
+ }
61
+ /** Env var naming a direct artifact URL (tar.gz, zip, or raw binary) to install
62
+ * on Linux instead of the published release. */
63
+ export const ENGINE_URL_ENV = "SUMMER_ENGINE_URL";
64
+ /** The single executable name Linux release artifacts contain and installs
65
+ * register. Matches the release asset contents (.github/workflows/release.yml
66
+ * in the engine repository). */
67
+ export const LINUX_ENGINE_BINARY_NAME = "summer-linux-x86_64";
68
+ /**
69
+ * Where Linux release artifacts are published today: GitHub Releases on the
70
+ * engine repository (engine tags are v0.*; see .github/workflows/release.yml).
71
+ * This is the ONE place to change when Linux artifacts move to the desktop
72
+ * releases CDN — point it at an endpoint returning the same GitHub-style
73
+ * releases JSON (an array of { tag_name, draft, prerelease, assets:[{ name,
74
+ * browser_download_url }] }).
75
+ */
76
+ export const LINUX_RELEASES_API_URL = "https://api.github.com/repos/SummerEngine/SummerEngine/releases?per_page=30";
77
+ /** Release asset naming contract with .github/workflows/release.yml. */
78
+ export const LINUX_ASSET_PATTERN = /^Summer-linux-x86_64.*\.tar\.gz$/;
79
+ export function linuxEngineInstallDir() {
80
+ return join(homedir(), ".summer", "engine");
81
+ }
82
+ export function macEnginePaths(env = process.env) {
83
+ return [
84
+ "/Applications/Summer.app/Contents/MacOS/Summer",
85
+ `${env.HOME}/Applications/Summer.app/Contents/MacOS/Summer`,
86
+ ];
87
+ }
88
+ export function windowsEnginePaths(env = process.env) {
89
+ return [
90
+ `${env.LOCALAPPDATA}\\SummerEngine\\current\\Summer.exe`,
91
+ `${env.LOCALAPPDATA}\\Programs\\Summer Engine\\Summer.exe`,
92
+ `${env.PROGRAMFILES}\\Summer Engine\\Summer.exe`,
93
+ ];
94
+ }
95
+ export function linuxEnginePaths() {
96
+ return [join(linuxEngineInstallDir(), LINUX_ENGINE_BINARY_NAME)];
97
+ }
98
+ export function engineBinaryCandidates(os = platform(), env = process.env) {
99
+ const override = engineBinaryOverride(env)?.path;
100
+ const platformPaths = os === "darwin"
101
+ ? macEnginePaths(env)
102
+ : os === "linux"
103
+ ? linuxEnginePaths()
104
+ : windowsEnginePaths(env);
105
+ return override ? [override, ...platformPaths] : platformPaths;
106
+ }
107
+ /** First existing engine binary for this machine, or null. SUMMER_BIN /
108
+ * SUMMER_ENGINE_BINARY wins when set and present; a set-but-missing override
109
+ * falls through to the platform locations rather than reporting a phantom
110
+ * install (`summer run` is stricter: see resolveRunBinary). */
111
+ export function findEngineBinary(os = platform(), env = process.env) {
112
+ for (const path of engineBinaryCandidates(os, env)) {
113
+ if (path && existsSync(path))
114
+ return path;
115
+ }
116
+ return null;
117
+ }
118
+ /**
119
+ * Resolution order for `summer install` on Linux:
120
+ * 1. SUMMER_ENGINE_BINARY — an existing engine binary on disk (the path cloud
121
+ * containers with a prebuilt engine use). Registered, nothing downloaded.
122
+ * 2. SUMMER_ENGINE_URL — any artifact URL: .tar.gz, .zip, or a raw executable.
123
+ * 3. The published Linux release artifact (LINUX_RELEASES_API_URL).
124
+ */
125
+ export function resolveLinuxInstallSource(env = process.env) {
126
+ const binary = env[ENGINE_BINARY_ENV]?.trim();
127
+ if (binary)
128
+ return { kind: "binary", path: binary };
129
+ const url = env[ENGINE_URL_ENV]?.trim();
130
+ if (url)
131
+ return { kind: "url", url };
132
+ return { kind: "release", apiUrl: LINUX_RELEASES_API_URL };
133
+ }
134
+ /**
135
+ * Newest published (non-draft, non-prerelease) release that actually carries a
136
+ * Linux artifact. Releases are shared between engine tags (v0.x) and CLI tags
137
+ * (v1.x, v2.x), and CLI releases have no engine binaries — so "latest release"
138
+ * is the wrong query and this scans instead.
139
+ */
140
+ export function pickLinuxReleaseAsset(releases) {
141
+ const list = Array.isArray(releases) ? releases : [];
142
+ for (const entry of list) {
143
+ if (!entry || typeof entry !== "object")
144
+ continue;
145
+ const release = entry;
146
+ if (release.draft === true || release.prerelease === true)
147
+ continue;
148
+ const assets = Array.isArray(release.assets) ? release.assets : [];
149
+ const named = assets.filter((asset) => Boolean(asset &&
150
+ typeof asset === "object" &&
151
+ typeof asset.name === "string" &&
152
+ typeof asset
153
+ .browser_download_url === "string"));
154
+ const artifact = named.find((asset) => LINUX_ASSET_PATTERN.test(asset.name));
155
+ if (!artifact)
156
+ continue;
157
+ const checksum = named.find((asset) => asset.name === `${artifact.name}.sha256`);
158
+ return {
159
+ version: typeof release.tag_name === "string" ? release.tag_name : "unknown",
160
+ url: artifact.browser_download_url,
161
+ ...(checksum ? { sha256Url: checksum.browser_download_url } : {}),
162
+ };
163
+ }
164
+ throw new Error("No published release carries a Linux engine artifact yet " +
165
+ `(looked for ${String(LINUX_ASSET_PATTERN)}). ` +
166
+ `Set ${ENGINE_URL_ENV} to a build artifact URL, or ${ENGINE_BINARY_ENV} to an existing binary, and re-run \`summer install\`.`);
167
+ }
168
+ /** How to unpack a downloaded Linux artifact, judged by its file name
169
+ * (query string ignored). Anything that is not a known archive is treated as
170
+ * the raw executable itself. */
171
+ export function linuxArchiveKind(nameOrUrl) {
172
+ const path = nameOrUrl.split(/[?#]/, 1)[0].toLowerCase();
173
+ if (path.endsWith(".tar.gz") || path.endsWith(".tgz"))
174
+ return "tar.gz";
175
+ if (path.endsWith(".zip"))
176
+ return "zip";
177
+ return "binary";
178
+ }
179
+ /** Locate the engine executable inside an extracted artifact: the canonical
180
+ * name first, then the only file, then anything that looks like an engine
181
+ * build (covers artifacts packed straight from bin/). */
182
+ export function findExtractedEngineBinary(files) {
183
+ const canonical = files.find((f) => basename(f) === LINUX_ENGINE_BINARY_NAME);
184
+ if (canonical)
185
+ return canonical;
186
+ if (files.length === 1)
187
+ return files[0];
188
+ return (files.find((f) => /godot\.linuxbsd\..*editor|summer.*linux/i.test(basename(f))) ??
189
+ null);
190
+ }
@@ -0,0 +1,94 @@
1
+ import { type EngineCapabilities } from "./capability-skew.js";
2
+ export interface EngineSelection {
3
+ instanceId?: string;
4
+ projectPath?: string;
5
+ cwd?: string;
6
+ }
7
+ export interface EngineDiscoveryOptions {
8
+ summerDir?: string;
9
+ nowMs?: number;
10
+ }
11
+ export interface DiscoverEngineOptions extends EngineDiscoveryOptions {
12
+ /** Working directory whose enclosing project (walk up to project.godot)
13
+ * breaks a tie between several live editors. Default: process.cwd(). */
14
+ cwd?: string;
15
+ /** Environment to read SUMMER_ENGINE_PROJECT / SUMMER_ENGINE_INSTANCE_ID
16
+ * from. Default: process.env. */
17
+ env?: NodeJS.ProcessEnv;
18
+ }
19
+ /** Env names the MCP server already honours for an explicit selection
20
+ * (src/mcp/server.ts startMcpServer). The CLI face reads the same two so a
21
+ * script can pin the editor without a per-command flag. */
22
+ export declare const ENGINE_PROJECT_ENV = "SUMMER_ENGINE_PROJECT";
23
+ export declare const ENGINE_INSTANCE_ENV = "SUMMER_ENGINE_INSTANCE_ID";
24
+ /** An explicit editor selection from the environment, or null when neither
25
+ * variable is set. */
26
+ export declare function engineSelectionFromEnv(env?: NodeJS.ProcessEnv): EngineSelection | null;
27
+ export interface EngineInstance {
28
+ schemaVersion: 1;
29
+ instanceId: string;
30
+ pid: number;
31
+ port: number;
32
+ token: string;
33
+ projectId?: string;
34
+ projectIdHash?: string;
35
+ resourceRoot: string;
36
+ projectName?: string;
37
+ heartbeatAt: number;
38
+ engineVersion?: string;
39
+ }
40
+ export interface EngineConnection {
41
+ port: number;
42
+ token: string;
43
+ health: EngineHealth;
44
+ instance?: EngineInstance;
45
+ selection: EngineSelection | null;
46
+ source: "registry" | "legacy";
47
+ }
48
+ export declare function getApiToken(summerDir?: string): Promise<string | null>;
49
+ export declare function getApiPort(summerDir?: string): Promise<number>;
50
+ export declare function findProjectRoot(startPath: string): Promise<string | null>;
51
+ export declare function listEngineInstances(nowMs?: number, summerDir?: string): Promise<EngineInstance[]>;
52
+ export declare function resolveEngineConnection(selection?: EngineSelection, options?: EngineDiscoveryOptions): Promise<EngineConnection>;
53
+ /**
54
+ * The registry half of no-selection discovery (the CLI face; see
55
+ * EngineApiClient.connect, which reads the global pointer first). Editors
56
+ * launched `--summer-no-publish`, or a second editor that never owned the
57
+ * pointer, exist only here. "Live" = pid alive + heartbeat fresh
58
+ * (listEngineInstances) + /api/health answers with the registered instanceId.
59
+ *
60
+ * exactly one live editor -> that connection
61
+ * several -> the one whose project encloses `cwd`, else an
62
+ * error listing them and how to pick one
63
+ * none -> null (the caller words the "not running" error,
64
+ * since only it knows whether a pointer existed)
65
+ *
66
+ * Reads only `summerDir` (default ~/.summer); never the pointer files.
67
+ */
68
+ export declare function discoverRegistryConnection(options?: DiscoverEngineOptions): Promise<EngineConnection | null>;
69
+ /** The no-selection "nothing reachable" error, worded by whether a pointer
70
+ * existed. Kept here so the CLI face and its tests share one text; the
71
+ * "no api-token found" phrase is what headless/resolve.ts keys on. */
72
+ export declare function engineNotRunningError(pointer: {
73
+ port: number;
74
+ token: string | null;
75
+ }, summerDir?: string): Error;
76
+ export interface EngineHealth {
77
+ ok: boolean;
78
+ engine: string;
79
+ version: string;
80
+ port: number;
81
+ pid?: number;
82
+ instanceId?: string;
83
+ projectId?: string;
84
+ projectIdHash?: string;
85
+ mainAliveMs?: number;
86
+ queueDepth?: number;
87
+ /** Advertised by newer engines only: dispatchable op kinds, single-only ops,
88
+ * protocol version. Absent on older builds — absence proves nothing. */
89
+ capabilities?: EngineCapabilities;
90
+ project_name?: string;
91
+ project_path?: string;
92
+ scene?: string;
93
+ }
94
+ export declare function checkEngineHealth(port: number): Promise<EngineHealth | null>;
@@ -1,10 +1,27 @@
1
1
  import { lstat, readFile, readdir, realpath, stat } from "fs/promises";
2
2
  import { dirname, join, resolve } from "path";
3
3
  import { getSummerDir } from "./auth.js";
4
+ import { asRecord, numberFrom, stringFrom } from "./util/json.js";
5
+ import { processIsAlive } from "./util/process.js";
6
+ import { parseEngineCapabilities, } from "./capability-skew.js";
4
7
  const DEFAULT_PORT = 6550;
5
8
  const INSTANCE_SCHEMA_VERSION = 1;
6
9
  const INSTANCE_STALE_MS = 180_000;
7
10
  const MAX_INSTANCE_FILE_BYTES = 64 * 1024;
11
+ /** Env names the MCP server already honours for an explicit selection
12
+ * (src/mcp/server.ts startMcpServer). The CLI face reads the same two so a
13
+ * script can pin the editor without a per-command flag. */
14
+ export const ENGINE_PROJECT_ENV = "SUMMER_ENGINE_PROJECT";
15
+ export const ENGINE_INSTANCE_ENV = "SUMMER_ENGINE_INSTANCE_ID";
16
+ /** An explicit editor selection from the environment, or null when neither
17
+ * variable is set. */
18
+ export function engineSelectionFromEnv(env = process.env) {
19
+ const instanceId = stringFromUnknown(env[ENGINE_INSTANCE_ENV]);
20
+ const projectPath = stringFromUnknown(env[ENGINE_PROJECT_ENV]);
21
+ if (!instanceId && !projectPath)
22
+ return null;
23
+ return { instanceId, projectPath };
24
+ }
8
25
  export async function getApiToken(summerDir = getSummerDir()) {
9
26
  try {
10
27
  const token = await readFile(join(summerDir, "api-token"), "utf-8");
@@ -29,22 +46,6 @@ function stringFromUnknown(value) {
29
46
  ? value.trim()
30
47
  : undefined;
31
48
  }
32
- function numberFromUnknown(value) {
33
- return typeof value === "number" && Number.isFinite(value)
34
- ? value
35
- : undefined;
36
- }
37
- function processIsAlive(pid) {
38
- if (!Number.isInteger(pid) || pid <= 0)
39
- return false;
40
- try {
41
- process.kill(pid, 0);
42
- return true;
43
- }
44
- catch (error) {
45
- return error.code === "EPERM";
46
- }
47
- }
48
49
  async function canonicalPath(path) {
49
50
  const absolute = resolve(path);
50
51
  try {
@@ -84,11 +85,11 @@ function parseEngineInstance(value) {
84
85
  if (!record || record.schemaVersion !== INSTANCE_SCHEMA_VERSION)
85
86
  return null;
86
87
  const instanceId = stringFromUnknown(record.instanceId);
87
- const pid = numberFromUnknown(record.pid);
88
- const port = numberFromUnknown(record.port);
88
+ const pid = numberFrom(record.pid);
89
+ const port = numberFrom(record.port);
89
90
  const token = stringFromUnknown(record.token);
90
91
  const resourceRoot = stringFromUnknown(record.resourceRoot);
91
- const heartbeatAt = numberFromUnknown(record.heartbeatAt);
92
+ const heartbeatAt = numberFrom(record.heartbeatAt);
92
93
  if (!instanceId ||
93
94
  !pid ||
94
95
  !Number.isInteger(pid) ||
@@ -255,16 +256,60 @@ export async function resolveEngineConnection(selection = {}, options = {}) {
255
256
  source: "legacy",
256
257
  };
257
258
  }
258
- function asRecord(value) {
259
- return value && typeof value === "object" && !Array.isArray(value)
260
- ? value
261
- : null;
262
- }
263
- function stringFrom(value) {
264
- return typeof value === "string" && value.length > 0 ? value : undefined;
259
+ /**
260
+ * The registry half of no-selection discovery (the CLI face; see
261
+ * EngineApiClient.connect, which reads the global pointer first). Editors
262
+ * launched `--summer-no-publish`, or a second editor that never owned the
263
+ * pointer, exist only here. "Live" = pid alive + heartbeat fresh
264
+ * (listEngineInstances) + /api/health answers with the registered instanceId.
265
+ *
266
+ * exactly one live editor -> that connection
267
+ * several -> the one whose project encloses `cwd`, else an
268
+ * error listing them and how to pick one
269
+ * none -> null (the caller words the "not running" error,
270
+ * since only it knows whether a pointer existed)
271
+ *
272
+ * Reads only `summerDir` (default ~/.summer); never the pointer files.
273
+ */
274
+ export async function discoverRegistryConnection(options = {}) {
275
+ const summerDir = options.summerDir ?? getSummerDir();
276
+ const registered = await listEngineInstances(options.nowMs ?? Date.now(), summerDir);
277
+ const live = [];
278
+ for (const instance of registered) {
279
+ try {
280
+ live.push(await connectionForInstance(instance, {}));
281
+ }
282
+ catch {
283
+ // Not answering, or a different editor now owns that port: not live.
284
+ }
285
+ }
286
+ if (live.length === 0)
287
+ return null;
288
+ if (live.length === 1)
289
+ return live[0];
290
+ const projectRoot = await findProjectRoot(options.cwd ?? process.cwd());
291
+ if (projectRoot) {
292
+ const canonicalRoot = await canonicalPath(projectRoot);
293
+ const matching = live.filter((connection) => connection.instance?.resourceRoot === canonicalRoot);
294
+ if (matching.length === 1)
295
+ return matching[0];
296
+ }
297
+ const instances = live.map((connection) => connection.instance);
298
+ throw new Error("Multiple Summer editors are running and none of them has the project for the current directory open. " +
299
+ "Run this from inside the project directory, or pick one: " +
300
+ `set ${ENGINE_PROJECT_ENV}=<project path> (or ${ENGINE_INSTANCE_ENV}=<id>); ` +
301
+ "for the MCP server pass `summer mcp --project <path>` (or `--instance <id>`).\n" +
302
+ formatInstances(instances));
265
303
  }
266
- function numberFrom(value) {
267
- return typeof value === "number" && Number.isFinite(value) ? value : undefined;
304
+ /** The no-selection "nothing reachable" error, worded by whether a pointer
305
+ * existed. Kept here so the CLI face and its tests share one text; the
306
+ * "no api-token found" phrase is what headless/resolve.ts keys on. */
307
+ export function engineNotRunningError(pointer, summerDir = getSummerDir()) {
308
+ const instancesDir = join(summerDir, "instances");
309
+ if (pointer.token) {
310
+ return new Error(`Summer Engine is not responding on port ${pointer.port} (stale api-token pointer) and no live editor is registered in ${instancesDir}. Make sure it's open.`);
311
+ }
312
+ return new Error(`Summer Engine is not running (no api-token found, no live editor registered in ${instancesDir}). Open Summer Engine first.`);
268
313
  }
269
314
  export async function checkEngineHealth(port) {
270
315
  try {
@@ -294,6 +339,7 @@ export async function checkEngineHealth(port) {
294
339
  projectIdHash: stringFrom(data.projectIdHash),
295
340
  mainAliveMs: numberFrom(data.mainAliveMs),
296
341
  queueDepth: numberFrom(data.queueDepth),
342
+ capabilities: parseEngineCapabilities(data.capabilities),
297
343
  project_name: stringFrom(data.project_name),
298
344
  project_path: stringFrom(data.project_path),
299
345
  scene: stringFrom(data.scene),
@@ -0,0 +1,88 @@
1
+ export declare function getFeedbackSessionId(): string;
2
+ /** Test-only seam. */
3
+ export declare function _resetFeedbackSessionForTests(): void;
4
+ /** Kill switches: send NOTHING when either is set to "1". */
5
+ export declare function isFeedbackDisabled(): boolean;
6
+ /**
7
+ * Anonymous install id: a random uuid persisted once in ~/.summer/.
8
+ * Falls back to an ephemeral uuid if the store is unreadable/unwritable —
9
+ * feedback must never fail because the store does.
10
+ */
11
+ export declare function getInstallId(): Promise<string>;
12
+ /**
13
+ * First-run notice gate: returns true exactly once per machine — the first
14
+ * time the feedback tool is ever called — and writes the marker so every
15
+ * later call returns false. That first call sends nothing (the notice must
16
+ * precede the first event). Errors → false (no notice beats a crash, and
17
+ * the disclosure also lives in the tool description).
18
+ */
19
+ export declare function consumeFirstRunNotice(): Promise<boolean>;
20
+ /** Every field a report POST carries, in one place so the tool description,
21
+ * the first-run notice and the tests cannot disagree about what is sent. */
22
+ export declare const FEEDBACK_FIELDS_SENT: string;
23
+ export declare const FIRST_RUN_NOTICE: string;
24
+ export interface LibraryFeedbackReport {
25
+ entry_id: string;
26
+ outcome: "worked" | "worked_with_fixes" | "wrong" | "outdated" | "incomplete" | "did_not_apply" | "misrouted";
27
+ note?: string;
28
+ deviation?: string;
29
+ }
30
+ export interface SendLibraryFeedbackInput {
31
+ reports: LibraryFeedbackReport[];
32
+ engine_version: string;
33
+ /** Self-reported model id of the reporting agent ("unknown" allowed). */
34
+ agent_model: string;
35
+ /**
36
+ * Host app identity ("name version", e.g. "claude-code 2.1.0") captured
37
+ * from the MCP initialize handshake by the server adapter — never
38
+ * self-reported by the agent. Omitted when the handshake carried none.
39
+ */
40
+ client?: string;
41
+ }
42
+ /**
43
+ * Why a batch was dropped — so an agent can tell a missing endpoint from a
44
+ * network blip (E2E 2026-09-03 F-03: production answered 404 and the tool
45
+ * said only `dropped: true`). Describes the RESPONSE only; nothing about it
46
+ * is sent anywhere.
47
+ */
48
+ export type FeedbackDropReason =
49
+ /** HTTP 404 — the gateway has no library-feedback route (deploy order). */
50
+ "endpoint_missing"
51
+ /** Any other 4xx — the gateway refused this batch (auth, schema, rate). */
52
+ | "rejected"
53
+ /** 5xx — the gateway failed; the route exists. */
54
+ | "server_error"
55
+ /** fetch threw: offline, DNS, TLS, or the 1s timeout. No response at all. */
56
+ | "network";
57
+ export interface SendLibraryFeedbackResult {
58
+ /** true ONLY when the gateway accepted the report (2xx) within the timeout. */
59
+ recorded: boolean;
60
+ /** present (true) only when disabled by env — nothing sent. */
61
+ disabled?: boolean;
62
+ /** present (true) only on the very first call ever made on this machine —
63
+ * nothing sent; `notice` explains and asks for a re-send. */
64
+ first_run?: boolean;
65
+ /** present (true) when the POST failed / timed out / was refused. There is
66
+ * no queue and no retry: the batch is gone. Honest, non-fatal. */
67
+ dropped?: boolean;
68
+ /** present alongside dropped — the HTTP status the gateway answered with;
69
+ * absent when the request never got a response (reason "network"). */
70
+ status?: number;
71
+ /** present alongside dropped — see FeedbackDropReason. */
72
+ reason?: FeedbackDropReason;
73
+ /** present only alongside first_run. */
74
+ notice?: string;
75
+ }
76
+ /** Classify a non-2xx response. Exported for tests. */
77
+ export declare function dropReasonForStatus(status: number): FeedbackDropReason;
78
+ /**
79
+ * Send one batched feedback report. Never throws. Blocks at most TIMEOUT_MS.
80
+ *
81
+ * Result matrix:
82
+ * - env kill switch → { recorded: false, disabled: true } (nothing sent)
83
+ * - first call on machine → { recorded: false, first_run: true, notice } (nothing sent)
84
+ * - gateway accepted (2xx) → { recorded: true }
85
+ * - non-2xx → { recorded: false, dropped: true, status, reason } (no retry exists)
86
+ * - fetch threw / timed out → { recorded: false, dropped: true, reason: "network" }
87
+ */
88
+ export declare function sendLibraryFeedback(input: SendLibraryFeedbackInput): Promise<SendLibraryFeedbackResult>;