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,142 +0,0 @@
1
- import { execFile } from "child_process";
2
- import { mkdir, readFile, rm, writeFile } from "fs/promises";
3
- import { existsSync } from "fs";
4
- import { join } from "path";
5
- import { promisify } from "util";
6
- import { localCloudDir } from "./paths.js";
7
- const execFileAsync = promisify(execFile);
8
- /** Timestamped refs (spec 11): refs/gitsummer/<projectId>/cloud-sync-<utcstamp>. */
9
- const KEEP_CHECKPOINTS = 20;
10
- export function summerGitDir(projectRoot) {
11
- return join(projectRoot, ".summer", "local", "git");
12
- }
13
- export async function isGitAvailable() {
14
- try {
15
- await execFileAsync("git", ["--version"]);
16
- return true;
17
- }
18
- catch {
19
- return false;
20
- }
21
- }
22
- async function git(projectRoot, args, env = {}) {
23
- const gitDir = summerGitDir(projectRoot);
24
- const { stdout } = await execFileAsync("git", ["--git-dir", gitDir, "--work-tree", projectRoot, "-c", "core.quotepath=false", "-c", "core.bare=false", ...args], {
25
- cwd: projectRoot,
26
- maxBuffer: 64 * 1024 * 1024,
27
- env: {
28
- ...process.env,
29
- GIT_AUTHOR_NAME: "Summer Cloud",
30
- GIT_AUTHOR_EMAIL: "cloud@summerengine.com",
31
- GIT_COMMITTER_NAME: "Summer Cloud",
32
- GIT_COMMITTER_EMAIL: "cloud@summerengine.com",
33
- ...env,
34
- },
35
- });
36
- return stdout.trim();
37
- }
38
- async function ensureBareRepo(projectRoot) {
39
- const gitDir = summerGitDir(projectRoot);
40
- if (!existsSync(join(gitDir, "HEAD"))) {
41
- await mkdir(join(projectRoot, ".summer", "local"), { recursive: true });
42
- await execFileAsync("git", ["init", "--bare", gitDir], { cwd: projectRoot });
43
- }
44
- await ensureExclude(gitDir);
45
- }
46
- /** Mirrors GitOps::_ensure_summergit_exclude so checkpoints skip SummerGit's own state. */
47
- async function ensureExclude(gitDir) {
48
- const excludePath = join(gitDir, "info", "exclude");
49
- const sentinelBegin = "# >>> Summer Engine BEGIN (do not edit between sentinels)";
50
- let existing = "";
51
- try {
52
- existing = await readFile(excludePath, "utf8");
53
- if (existing.includes(sentinelBegin))
54
- return;
55
- }
56
- catch {
57
- // info/ exists after git init --bare; file may not.
58
- }
59
- if (existing && !existing.endsWith("\n"))
60
- existing += "\n";
61
- existing += `${sentinelBegin}\n.summer/local/\n.godot/\n# <<< Summer Engine END\n`;
62
- await mkdir(join(gitDir, "info"), { recursive: true });
63
- await writeFile(excludePath, existing, "utf8");
64
- }
65
- function checkpointIndexFile(projectRoot) {
66
- return join(localCloudDir(projectRoot), "checkpoint-index");
67
- }
68
- export function checkpointStamp(date = new Date()) {
69
- return date.toISOString().replace(/[-:]/g, "").replace(/\.\d{3}Z$/, "Z");
70
- }
71
- /**
72
- * Full-tree SummerGit checkpoint before any destructive apply (spec 11).
73
- * Plumbing only: stage all into a private index, write-tree, commit-tree,
74
- * update-ref. Keeps the last KEEP_CHECKPOINTS refs.
75
- */
76
- export async function createCheckpoint(projectRoot, projectId) {
77
- if (!(await isGitAvailable())) {
78
- throw new Error("git is required for the pre-sync safety checkpoint and was not found on PATH. Install git (run summer doctor to verify), then retry.");
79
- }
80
- await ensureBareRepo(projectRoot);
81
- await mkdir(localCloudDir(projectRoot), { recursive: true, mode: 0o700 });
82
- // A private index file so checkpoints never fight the engine's own index.
83
- const indexFile = checkpointIndexFile(projectRoot);
84
- await rm(indexFile, { force: true });
85
- const env = { GIT_INDEX_FILE: indexFile };
86
- await git(projectRoot, ["add", "-A", "--", "."], env);
87
- const tree = await git(projectRoot, ["write-tree"], env);
88
- const stamp = checkpointStamp();
89
- const commit = await git(projectRoot, ["commit-tree", tree, "-m", `Summer Cloud pre-sync checkpoint ${stamp}`], env);
90
- const ref = `refs/gitsummer/${projectId}/cloud-sync-${stamp}`;
91
- await git(projectRoot, ["update-ref", ref, commit]);
92
- await rm(indexFile, { force: true });
93
- await pruneCheckpoints(projectRoot, projectId);
94
- return { ref, commit };
95
- }
96
- export async function listCheckpoints(projectRoot, projectId) {
97
- try {
98
- const out = await git(projectRoot, [
99
- "for-each-ref",
100
- "--format=%(refname)",
101
- `refs/gitsummer/${projectId}/`,
102
- ]);
103
- return out
104
- .split("\n")
105
- .map((line) => line.trim())
106
- .filter((ref) => ref.includes("/cloud-sync-"))
107
- .sort();
108
- }
109
- catch {
110
- return [];
111
- }
112
- }
113
- async function pruneCheckpoints(projectRoot, projectId) {
114
- const refs = await listCheckpoints(projectRoot, projectId);
115
- const excess = refs.slice(0, Math.max(0, refs.length - KEEP_CHECKPOINTS));
116
- for (const ref of excess) {
117
- await git(projectRoot, ["update-ref", "-d", ref]).catch(() => { });
118
- }
119
- }
120
- /**
121
- * Restores a checkpoint's bytes (spec 11). checkout-index restores bytes but
122
- * does not delete files a bad sync ADDED, so the result lists extraneous
123
- * files for the user or agent to remove.
124
- */
125
- export async function restoreCheckpoint(projectRoot, projectId, refOrStamp, currentTrackedFiles) {
126
- if (!(await isGitAvailable())) {
127
- throw new Error("git is required to restore checkpoints and was not found on PATH.");
128
- }
129
- const ref = refOrStamp.startsWith("refs/")
130
- ? refOrStamp
131
- : `refs/gitsummer/${projectId}/cloud-sync-${refOrStamp}`;
132
- const indexFile = checkpointIndexFile(projectRoot);
133
- await rm(indexFile, { force: true });
134
- const env = { GIT_INDEX_FILE: indexFile };
135
- await git(projectRoot, ["read-tree", ref], env);
136
- await git(projectRoot, ["checkout-index", "-a", "-f"], env);
137
- await rm(indexFile, { force: true });
138
- const inCheckpoint = new Set((await git(projectRoot, ["ls-tree", "-r", "--name-only", ref])).split("\n").filter(Boolean));
139
- const restoredFiles = [...inCheckpoint].sort();
140
- const extraneousFiles = currentTrackedFiles.filter((path) => !inCheckpoint.has(path)).sort();
141
- return { ref, restoredFiles, extraneousFiles };
142
- }
@@ -1,55 +0,0 @@
1
- /**
2
- * Conflict sets (spec 10.1). Losing bytes never enter the synced tree; they
3
- * live under .summer/local/cloud/conflicts/<utcstamp>/<original relative
4
- * path> plus meta.json, and the losing blob is also pushed to R2 (blob-only,
5
- * granted, unreferenced) so recovery survives the machine.
6
- */
7
- export interface ConflictEntry {
8
- path: string;
9
- localSha256?: string;
10
- remoteSha256?: string;
11
- winner: "remote" | "local";
12
- /** True when this entry is sidecar bytes kept for reference inside the set. */
13
- sidecar?: boolean;
14
- note?: string;
15
- }
16
- export interface ConflictMeta {
17
- schemaVersion: 1;
18
- stamp: string;
19
- projectId: string;
20
- baseVersion: number | null;
21
- targetVersion: number | null;
22
- entries: ConflictEntry[];
23
- }
24
- export declare class ConflictSetWriter {
25
- private readonly projectRoot;
26
- readonly stamp: string;
27
- private readonly projectId;
28
- private readonly baseVersion;
29
- private readonly targetVersion;
30
- private entries;
31
- private wrotePaths;
32
- constructor(projectRoot: string, stamp: string, projectId: string, baseVersion: number | null, targetVersion: number | null);
33
- get setDir(): string;
34
- /** Preserves the current on-disk bytes of `path` into the conflict set. */
35
- preserve(path: string, entry: Omit<ConflictEntry, "path">, sourcePath?: string): Promise<boolean>;
36
- hasEntries(): boolean;
37
- listEntries(): ConflictEntry[];
38
- finalize(): Promise<void>;
39
- }
40
- export declare function conflictStamp(date?: Date): string;
41
- export declare function listConflictSets(projectRoot: string): Promise<Array<{
42
- stamp: string;
43
- meta: ConflictMeta | null;
44
- }>>;
45
- /** Retention (spec 6.2): last 20 conflict sets or 30 days, whichever is more. */
46
- export declare function pruneConflictSets(projectRoot: string): Promise<void>;
47
- export interface ConflictRestoreResult {
48
- path: string;
49
- stamp: string;
50
- }
51
- /**
52
- * `summer cloud conflicts restore <path>`: copies the preserved bytes back
53
- * into the project tree as a fresh edit (next push syncs it normally).
54
- */
55
- export declare function restoreConflictPath(projectRoot: string, path: string, stamp?: string): Promise<ConflictRestoreResult>;
@@ -1,131 +0,0 @@
1
- import { copyFile, mkdir, readdir, readFile, rm, stat, writeFile } from "fs/promises";
2
- import { dirname, join } from "path";
3
- import { conflictsDir, writeJsonAtomic } from "./paths.js";
4
- import { containedProjectPath } from "./containment.js";
5
- const KEEP_SETS = 20;
6
- const KEEP_DAYS = 30;
7
- export class ConflictSetWriter {
8
- projectRoot;
9
- stamp;
10
- projectId;
11
- baseVersion;
12
- targetVersion;
13
- entries = [];
14
- wrotePaths = new Set();
15
- constructor(projectRoot, stamp, projectId, baseVersion, targetVersion) {
16
- this.projectRoot = projectRoot;
17
- this.stamp = stamp;
18
- this.projectId = projectId;
19
- this.baseVersion = baseVersion;
20
- this.targetVersion = targetVersion;
21
- }
22
- get setDir() {
23
- return join(conflictsDir(this.projectRoot), this.stamp);
24
- }
25
- /** Preserves the current on-disk bytes of `path` into the conflict set. */
26
- async preserve(path, entry, sourcePath) {
27
- const source = sourcePath ?? join(this.projectRoot, path);
28
- const target = join(this.setDir, path);
29
- try {
30
- await mkdir(dirname(target), { recursive: true, mode: 0o700 });
31
- await copyFile(source, target);
32
- }
33
- catch {
34
- return false; // Nothing local to preserve.
35
- }
36
- if (!this.wrotePaths.has(path)) {
37
- this.wrotePaths.add(path);
38
- this.entries.push({ path, ...entry });
39
- }
40
- return true;
41
- }
42
- hasEntries() {
43
- return this.entries.length > 0;
44
- }
45
- listEntries() {
46
- return [...this.entries];
47
- }
48
- async finalize() {
49
- if (!this.entries.length)
50
- return;
51
- const meta = {
52
- schemaVersion: 1,
53
- stamp: this.stamp,
54
- projectId: this.projectId,
55
- baseVersion: this.baseVersion,
56
- targetVersion: this.targetVersion,
57
- entries: this.entries,
58
- };
59
- await writeJsonAtomic(join(this.setDir, "meta.json"), meta);
60
- await pruneConflictSets(this.projectRoot);
61
- }
62
- }
63
- export function conflictStamp(date = new Date()) {
64
- return date.toISOString().replace(/[-:]/g, "").replace(/\.\d{3}Z$/, "Z");
65
- }
66
- export async function listConflictSets(projectRoot) {
67
- let names = [];
68
- try {
69
- names = (await readdir(conflictsDir(projectRoot), { withFileTypes: true }))
70
- .filter((entry) => entry.isDirectory())
71
- .map((entry) => entry.name)
72
- .sort();
73
- }
74
- catch {
75
- return [];
76
- }
77
- const sets = [];
78
- for (const stamp of names) {
79
- let meta = null;
80
- try {
81
- meta = JSON.parse(await readFile(join(conflictsDir(projectRoot), stamp, "meta.json"), "utf8"));
82
- }
83
- catch {
84
- meta = null;
85
- }
86
- sets.push({ stamp, meta });
87
- }
88
- return sets;
89
- }
90
- /** Retention (spec 6.2): last 20 conflict sets or 30 days, whichever is more. */
91
- export async function pruneConflictSets(projectRoot) {
92
- const sets = await listConflictSets(projectRoot);
93
- if (sets.length <= KEEP_SETS)
94
- return;
95
- const cutoffMs = Date.now() - KEEP_DAYS * 24 * 60 * 60 * 1000;
96
- const excess = sets.slice(0, sets.length - KEEP_SETS);
97
- for (const set of excess) {
98
- const dir = join(conflictsDir(projectRoot), set.stamp);
99
- try {
100
- const info = await stat(dir);
101
- if (info.mtimeMs >= cutoffMs)
102
- continue; // Younger than 30 days: keep.
103
- await rm(dir, { recursive: true, force: true });
104
- }
105
- catch {
106
- // Ignore unreadable sets.
107
- }
108
- }
109
- }
110
- /**
111
- * `summer cloud conflicts restore <path>`: copies the preserved bytes back
112
- * into the project tree as a fresh edit (next push syncs it normally).
113
- */
114
- export async function restoreConflictPath(projectRoot, path, stamp) {
115
- const sets = await listConflictSets(projectRoot);
116
- const candidates = (stamp ? sets.filter((set) => set.stamp === stamp) : sets).reverse();
117
- for (const set of candidates) {
118
- const source = join(conflictsDir(projectRoot), set.stamp, path);
119
- try {
120
- const bytes = await readFile(source);
121
- const target = await containedProjectPath(projectRoot, path);
122
- await mkdir(dirname(target), { recursive: true });
123
- await writeFile(target, bytes);
124
- return { path, stamp: set.stamp };
125
- }
126
- catch {
127
- continue;
128
- }
129
- }
130
- throw new Error(stamp ? `No preserved bytes for ${path} in conflict set ${stamp}` : `No preserved bytes found for ${path} in any conflict set`);
131
- }
@@ -1,8 +0,0 @@
1
- /**
2
- * Write containment (spec 9): after joining a manifest key to the project
3
- * root, resolve the parent chain and assert the final absolute path is
4
- * strictly inside the realpath of the project root; refuse to write through
5
- * any symlinked directory component; create nested parents per component so
6
- * a hostile manifest can never escape the project.
7
- */
8
- export declare function containedProjectPath(projectRoot: string, key: string): Promise<string>;
@@ -1,52 +0,0 @@
1
- import { lstat, mkdir, realpath } from "fs/promises";
2
- import { join, resolve, sep } from "path";
3
- import { validateCloudPath } from "./validate-path.js";
4
- /**
5
- * Write containment (spec 9): after joining a manifest key to the project
6
- * root, resolve the parent chain and assert the final absolute path is
7
- * strictly inside the realpath of the project root; refuse to write through
8
- * any symlinked directory component; create nested parents per component so
9
- * a hostile manifest can never escape the project.
10
- */
11
- export async function containedProjectPath(projectRoot, key) {
12
- const valid = validateCloudPath(key);
13
- if (!valid.ok) {
14
- throw new Error(`Refusing unsafe path ${key}: ${valid.reason}`);
15
- }
16
- const rootReal = await realpath(projectRoot);
17
- const segments = key.split("/");
18
- let current = rootReal;
19
- for (let i = 0; i < segments.length - 1; i += 1) {
20
- current = join(current, segments[i]);
21
- let info;
22
- try {
23
- info = await lstat(current);
24
- }
25
- catch {
26
- await mkdir(current);
27
- continue;
28
- }
29
- if (info.isSymbolicLink()) {
30
- throw new Error(`Refusing to write through symlinked directory component: ${current}`);
31
- }
32
- if (!info.isDirectory()) {
33
- throw new Error(`Path component is not a directory: ${current}`);
34
- }
35
- }
36
- const target = join(current, segments[segments.length - 1]);
37
- const normalizedRoot = rootReal.endsWith(sep) ? rootReal : rootReal + sep;
38
- if (!resolve(target).startsWith(normalizedRoot)) {
39
- throw new Error(`Path escapes project root: ${key}`);
40
- }
41
- try {
42
- const info = await lstat(target);
43
- if (info.isSymbolicLink()) {
44
- throw new Error(`Refusing to replace a symlink: ${key}`);
45
- }
46
- }
47
- catch (err) {
48
- if (err.code !== "ENOENT")
49
- throw err;
50
- }
51
- return target;
52
- }
@@ -1,39 +0,0 @@
1
- import type { CloudManifest, ManifestFile } from "./types.js";
2
- export type DecisionKind = "push" | "pull" | "delete-local" | "delete-remote" | "conflict-remote-wins" | "keep-local" | "converged";
3
- export interface PathDecision {
4
- path: string;
5
- kind: DecisionKind;
6
- base?: ManifestFile;
7
- local?: ManifestFile;
8
- remote?: ManifestFile;
9
- }
10
- export interface DiffPlan {
11
- decisions: PathDecision[];
12
- pushPaths: string[];
13
- pullPaths: string[];
14
- deleteLocalPaths: string[];
15
- deleteRemotePaths: string[];
16
- conflictPaths: string[];
17
- /** Row 14: local edit beat a remote delete; surfaced as a notice. */
18
- keepLocalPaths: string[];
19
- /** Row 15: remote edit beat a local delete; surfaced as a notice. */
20
- restoredRemotePaths: string[];
21
- }
22
- export declare function diffManifests(base: CloudManifest, local: CloudManifest, remote: CloudManifest): DiffPlan;
23
- /**
24
- * Sidecar pairing (spec 8.4): foo.png + foo.png.import and foo.gd + foo.gd.uid
25
- * diff, transfer, delete, and conflict-resolve as one atomic unit. When the
26
- * primary and its sidecar disagree about which side wins, the primary's
27
- * direction wins and the sidecar decision is recomputed under that direction.
28
- */
29
- export declare function sidecarPrimary(path: string): string | null;
30
- /**
31
- * Mass-deletion guardrail (spec 8.5). Confirmation required when deletions
32
- * exceed 10 files, reach 20% of the base, or cover the entire base.
33
- */
34
- export declare function assertDeleteGuard(plan: DiffPlan, baseFileCount: number, confirmDeletes?: boolean): void;
35
- /**
36
- * Hard abort (spec 8.5): base non-empty and the local tree reads as completely
37
- * empty (unmounted volume, wrong directory). No confirmation can override this.
38
- */
39
- export declare function assertNotEmptyLocalTree(baseFileCount: number, localFileCount: number): void;
@@ -1,138 +0,0 @@
1
- export function diffManifests(base, local, remote) {
2
- const paths = new Set([...Object.keys(base.files), ...Object.keys(local.files), ...Object.keys(remote.files)]);
3
- const decisions = [];
4
- for (const path of [...paths].sort()) {
5
- const b = base.files[path];
6
- const l = local.files[path];
7
- const r = remote.files[path];
8
- const kind = decide(b, l, r);
9
- decisions.push({ path, kind, base: b, local: l, remote: r });
10
- }
11
- pairSidecars(decisions);
12
- return planFromDecisions(decisions);
13
- }
14
- function planFromDecisions(decisions) {
15
- return {
16
- decisions,
17
- pushPaths: decisions.filter((d) => d.kind === "push").map((d) => d.path),
18
- pullPaths: decisions.filter((d) => d.kind === "pull").map((d) => d.path),
19
- deleteLocalPaths: decisions.filter((d) => d.kind === "delete-local").map((d) => d.path),
20
- deleteRemotePaths: decisions.filter((d) => d.kind === "delete-remote").map((d) => d.path),
21
- conflictPaths: decisions.filter((d) => d.kind === "conflict-remote-wins").map((d) => d.path),
22
- keepLocalPaths: decisions.filter((d) => d.kind === "keep-local").map((d) => d.path),
23
- restoredRemotePaths: decisions
24
- .filter((d) => d.kind === "pull" && d.base && !d.local && d.remote && !same(d.remote, d.base))
25
- .map((d) => d.path),
26
- };
27
- }
28
- function decide(base, local, remote) {
29
- if (same(local, remote))
30
- return "converged";
31
- if (!base && local && !remote)
32
- return "push";
33
- if (!base && !local && remote)
34
- return "pull";
35
- if (!base && local && remote)
36
- return same(local, remote) ? "converged" : "conflict-remote-wins";
37
- if (base && same(local, base) && remote && !same(remote, base))
38
- return "pull";
39
- if (base && local && !same(local, base) && same(remote, base))
40
- return "push";
41
- if (base && local && remote && same(local, remote))
42
- return "converged";
43
- if (base && local && remote && !same(local, base) && !same(remote, base))
44
- return "conflict-remote-wins";
45
- if (base && !local && same(remote, base))
46
- return "delete-remote";
47
- if (base && same(local, base) && !remote)
48
- return "delete-local";
49
- if (base && !local && remote && !same(remote, base))
50
- return "pull";
51
- if (base && local && !same(local, base) && !remote)
52
- return "keep-local";
53
- return "converged";
54
- }
55
- function same(a, b) {
56
- if (!a && !b)
57
- return true;
58
- if (!a || !b)
59
- return false;
60
- return a.sha256 === b.sha256 && a.size === b.size;
61
- }
62
- /**
63
- * Sidecar pairing (spec 8.4): foo.png + foo.png.import and foo.gd + foo.gd.uid
64
- * diff, transfer, delete, and conflict-resolve as one atomic unit. When the
65
- * primary and its sidecar disagree about which side wins, the primary's
66
- * direction wins and the sidecar decision is recomputed under that direction.
67
- */
68
- export function sidecarPrimary(path) {
69
- if (path.endsWith(".import"))
70
- return path.slice(0, -".import".length);
71
- if (path.endsWith(".uid"))
72
- return path.slice(0, -".uid".length);
73
- return null;
74
- }
75
- const REMOTE_WINS = new Set(["pull", "delete-local", "conflict-remote-wins"]);
76
- const LOCAL_WINS = new Set(["push", "delete-remote", "keep-local"]);
77
- function pairSidecars(decisions) {
78
- const byPath = new Map(decisions.map((d) => [d.path, d]));
79
- for (const sidecar of decisions) {
80
- const primaryPath = sidecarPrimary(sidecar.path);
81
- if (!primaryPath)
82
- continue;
83
- const primary = byPath.get(primaryPath);
84
- if (!primary)
85
- continue;
86
- // A converged sidecar (L == R) is compatible with either side and a
87
- // converged primary lets the sidecar act alone; only direction
88
- // disagreement inside the pair is overridden, with the primary winning.
89
- if (sidecar.kind === "converged" || primary.kind === "converged")
90
- continue;
91
- if (REMOTE_WINS.has(primary.kind) && !REMOTE_WINS.has(sidecar.kind)) {
92
- sidecar.kind = forceRemoteSide(sidecar);
93
- }
94
- else if (LOCAL_WINS.has(primary.kind) && !LOCAL_WINS.has(sidecar.kind)) {
95
- sidecar.kind = forceLocalSide(sidecar);
96
- }
97
- }
98
- }
99
- function forceRemoteSide(sidecar) {
100
- if (sidecar.remote && sidecar.local && !same(sidecar.local, sidecar.remote))
101
- return "conflict-remote-wins";
102
- if (sidecar.remote && !sidecar.local)
103
- return "pull";
104
- if (!sidecar.remote && sidecar.local)
105
- return "delete-local";
106
- return "converged";
107
- }
108
- function forceLocalSide(sidecar) {
109
- if (sidecar.local && !same(sidecar.local, sidecar.remote))
110
- return "push";
111
- if (!sidecar.local && sidecar.remote)
112
- return "delete-remote";
113
- return "converged";
114
- }
115
- /**
116
- * Mass-deletion guardrail (spec 8.5). Confirmation required when deletions
117
- * exceed 10 files, reach 20% of the base, or cover the entire base.
118
- */
119
- export function assertDeleteGuard(plan, baseFileCount, confirmDeletes) {
120
- const deletes = plan.deleteRemotePaths.length;
121
- if (!deletes)
122
- return;
123
- const tooMany = deletes > 10 ||
124
- (baseFileCount > 0 && deletes >= Math.ceil(baseFileCount * 0.2)) ||
125
- deletes === baseFileCount;
126
- if (tooMany && !confirmDeletes) {
127
- throw new Error(`Push would delete ${deletes} cloud files. Re-run with --confirm-deletes after verifying the project path.`);
128
- }
129
- }
130
- /**
131
- * Hard abort (spec 8.5): base non-empty and the local tree reads as completely
132
- * empty (unmounted volume, wrong directory). No confirmation can override this.
133
- */
134
- export function assertNotEmptyLocalTree(baseFileCount, localFileCount) {
135
- if (baseFileCount > 0 && localFileCount === 0) {
136
- throw new Error("Local project tree is empty but the sync base is not. This looks like an unmounted volume or wrong directory. Aborting sync; no confirmation can push this.");
137
- }
138
- }
@@ -1,34 +0,0 @@
1
- /**
2
- * Engine coordination (spec 8.6.1 and 8.7). All calls degrade gracefully: an
3
- * unreachable engine never blocks a sync; the stability check and conflict
4
- * routing cover the gaps.
5
- */
6
- /** sha256 hex of the stable .summer/local/.project_id (mirrors SummerEngineIdentity::project_id_hash). */
7
- export declare function readProjectIdHash(projectRoot: string): Promise<string | null>;
8
- export declare function readProjectPathMarker(projectRoot: string): Promise<string | null>;
9
- export declare function writeProjectPathMarker(projectRoot: string): Promise<void>;
10
- /**
11
- * Before hashing (spec 8.6.1): ask the running engine to flush dirty scenes
12
- * to disk so the walk hashes what the user actually sees.
13
- */
14
- export declare function saveDirtyScenesIfRunning(projectRoot: string): Promise<boolean>;
15
- /**
16
- * After apply (spec 8.7): tell the open editor that files changed underneath it.
17
- *
18
- * BOTH HALVES OF THIS ARE CURRENTLY DEAD, and the user-visible symptom is that
19
- * after a cloud pull the editor keeps showing the pre-pull bytes:
20
- *
21
- * - `ScanChanges` is not an engine op. The dispatch ladder
22
- * (modules/1summer_engine/editor/ops_executor.cpp:1060-1290) has 84 op kinds and
23
- * no ScanChanges branch, so this fails on EVERY build, not just older ones. The
24
- * engine-side capability exists as EditorFileSystem::scan_changes() but is
25
- * exposed neither as an op nor to GDScript, so there is no caller-reachable
26
- * rescan verb at all. O2 owns adding one.
27
- * - The scene reload depends on `session.scene`, which /api/health never returns
28
- * (see the note in lib/engine.ts), so it is always undefined and never fires.
29
- *
30
- * Until the engine exposes a rescan, say so out loud rather than swallowing it —
31
- * a stale editor that looks correct is exactly the failure this codebase is trying
32
- * to stop shipping.
33
- */
34
- export declare function notifyEngineAfterApply(projectRoot: string, appliedPaths: readonly string[]): Promise<void>;