summer-engine 2.8.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (742) hide show
  1. package/.claude-plugin/marketplace.json +27 -7
  2. package/.claude-plugin/plugin.json +99 -83
  3. package/.codex-plugin/plugin.json +112 -82
  4. package/.cursor-plugin/plugin.json +119 -83
  5. package/.factory-plugin/plugin.json +100 -3
  6. package/.mcp.json +6 -1
  7. package/.opencode/INSTALL.md +7 -4
  8. package/.opencode/plugins/summer.js +31 -18
  9. package/AGENTS.md +107 -34
  10. package/CHANGELOG.md +134 -41
  11. package/CLAUDE.md +4 -2
  12. package/GEMINI.md +7 -53
  13. package/NOTICE +31 -0
  14. package/README.md +159 -391
  15. package/assets/api-docs.json.gz +0 -0
  16. package/assets/autopilot/README.md +20 -6
  17. package/assets/autopilot/autopilot.gd +80 -26
  18. package/assets/autopilot/run.sh +132 -7
  19. package/assets/navigation/web-routes.json +719 -0
  20. package/commands/gameskill.md +10 -108
  21. package/commands/summer.md +72 -4
  22. package/dist/bin/summer.js +6 -87
  23. package/dist/cli/banner.d.ts +1 -0
  24. package/dist/cli/banner.js +33 -0
  25. package/dist/{commands → cli/commands}/config.js +1 -1
  26. package/dist/cli/commands/create.d.ts +30 -0
  27. package/dist/cli/commands/create.js +212 -0
  28. package/dist/{commands → cli/commands}/debug.js +2 -2
  29. package/dist/cli/commands/doctor.d.ts +2 -0
  30. package/dist/cli/commands/doctor.js +18 -0
  31. package/dist/cli/commands/events.d.ts +57 -0
  32. package/dist/cli/commands/events.js +158 -0
  33. package/dist/cli/commands/install.d.ts +50 -0
  34. package/dist/cli/commands/install.js +447 -0
  35. package/dist/cli/commands/list.js +72 -0
  36. package/dist/{commands → cli/commands}/login.js +33 -17
  37. package/dist/{commands → cli/commands}/logout.d.ts +1 -0
  38. package/dist/cli/commands/logout.js +19 -0
  39. package/dist/{commands → cli/commands}/memory.d.ts +1 -8
  40. package/dist/{commands → cli/commands}/memory.js +20 -11
  41. package/dist/cli/commands/open.d.ts +45 -0
  42. package/dist/cli/commands/open.js +216 -0
  43. package/dist/{commands → cli/commands}/plan.js +2 -2
  44. package/dist/{commands → cli/commands}/publish.js +1 -1
  45. package/dist/{commands → cli/commands}/releases.js +1 -1
  46. package/dist/cli/commands/run.d.ts +19 -0
  47. package/dist/cli/commands/run.js +255 -0
  48. package/dist/{commands → cli/commands}/setup.js +43 -89
  49. package/dist/{commands → cli/commands}/skills.js +85 -222
  50. package/dist/{commands → cli/commands}/status.d.ts +1 -0
  51. package/dist/cli/commands/status.js +62 -0
  52. package/dist/cli/commands/tool.d.ts +11 -0
  53. package/dist/cli/commands/tool.js +121 -0
  54. package/dist/cli/index.d.ts +6 -0
  55. package/dist/cli/index.js +89 -0
  56. package/dist/cli/root-action.d.ts +7 -0
  57. package/dist/cli/root-action.js +15 -0
  58. package/dist/{lib → core}/api-client.d.ts +106 -15
  59. package/dist/{lib → core}/api-client.js +267 -75
  60. package/dist/{lib → core}/async-op-lifecycle.d.ts +3 -4
  61. package/dist/{lib → core}/async-op-lifecycle.js +3 -4
  62. package/dist/{lib → core}/auth.d.ts +14 -6
  63. package/dist/{lib → core}/auth.js +56 -40
  64. package/dist/core/capabilities/agent-playbook.d.ts +20 -0
  65. package/dist/core/capabilities/agent-playbook.js +218 -0
  66. package/dist/core/capabilities/api-docs.d.ts +36 -0
  67. package/dist/core/capabilities/api-docs.js +118 -0
  68. package/dist/core/capabilities/asset-import.d.ts +49 -0
  69. package/dist/core/capabilities/asset-import.js +134 -0
  70. package/dist/core/capabilities/camera-view.d.ts +98 -0
  71. package/dist/core/capabilities/camera-view.js +222 -0
  72. package/dist/core/capabilities/capture.d.ts +63 -0
  73. package/dist/core/capabilities/capture.js +67 -0
  74. package/dist/core/capabilities/console-read.d.ts +17 -0
  75. package/dist/core/capabilities/console-read.js +21 -0
  76. package/dist/{lib → core/capabilities}/creator.d.ts +1 -29
  77. package/dist/{lib → core/capabilities}/creator.js +14 -33
  78. package/dist/{lib → core/capabilities}/debug-report.d.ts +1 -1
  79. package/dist/{lib → core/capabilities}/debug-report.js +12 -31
  80. package/dist/{commands → core/capabilities}/doctor.d.ts +7 -2
  81. package/dist/{commands → core/capabilities}/doctor.js +47 -73
  82. package/dist/core/capabilities/engine-fallbacks.d.ts +26 -0
  83. package/dist/core/capabilities/engine-fallbacks.js +36 -0
  84. package/dist/core/capabilities/engine-ops.d.ts +33 -0
  85. package/dist/core/capabilities/engine-ops.js +145 -0
  86. package/dist/core/capabilities/engine-receipt.d.ts +53 -0
  87. package/dist/core/capabilities/engine-receipt.js +134 -0
  88. package/dist/core/capabilities/events.d.ts +200 -0
  89. package/dist/core/capabilities/events.js +383 -0
  90. package/dist/core/capabilities/fabricate-mesh.d.ts +111 -0
  91. package/dist/core/capabilities/fabricate-mesh.js +165 -0
  92. package/dist/core/capabilities/frame-quality.d.ts +71 -0
  93. package/dist/core/capabilities/frame-quality.js +449 -0
  94. package/dist/core/capabilities/game-task-plan.d.ts +66 -0
  95. package/dist/{lib → core/capabilities}/game-task-plan.js +59 -8
  96. package/dist/core/capabilities/hdri-import.d.ts +90 -0
  97. package/dist/core/capabilities/hdri-import.js +250 -0
  98. package/dist/core/capabilities/image-generation.d.ts +24 -0
  99. package/dist/core/capabilities/image-generation.js +22 -0
  100. package/dist/core/capabilities/navigation/open.d.ts +156 -0
  101. package/dist/core/capabilities/navigation/open.js +567 -0
  102. package/dist/core/capabilities/navigation/render-product-map.d.ts +1 -0
  103. package/dist/core/capabilities/navigation/render-product-map.js +84 -0
  104. package/dist/core/capabilities/navigation/targets.d.ts +87 -0
  105. package/dist/core/capabilities/navigation/targets.js +250 -0
  106. package/dist/core/capabilities/play-determinism.d.ts +35 -0
  107. package/dist/core/capabilities/play-determinism.js +86 -0
  108. package/dist/core/capabilities/project-context.d.ts +114 -0
  109. package/dist/core/capabilities/project-context.js +249 -0
  110. package/dist/core/capabilities/runtime-control.d.ts +540 -0
  111. package/dist/core/capabilities/runtime-control.js +1011 -0
  112. package/dist/core/capabilities/scene-kind.d.ts +19 -0
  113. package/dist/core/capabilities/scene-kind.js +137 -0
  114. package/dist/core/capabilities/scene-script.d.ts +38 -0
  115. package/dist/core/capabilities/scene-script.js +45 -0
  116. package/dist/core/capabilities/tool-dispatch.d.ts +42 -0
  117. package/dist/core/capabilities/tool-dispatch.js +1490 -0
  118. package/dist/core/capabilities/ui-control.d.ts +179 -0
  119. package/dist/core/capabilities/ui-control.js +423 -0
  120. package/dist/core/capabilities/variant-types.d.ts +22 -0
  121. package/dist/core/capabilities/variant-types.js +101 -0
  122. package/dist/core/capability-skew.d.ts +205 -0
  123. package/dist/core/capability-skew.js +386 -0
  124. package/dist/{lib → core}/config.d.ts +11 -1
  125. package/dist/{lib → core}/config.js +13 -2
  126. package/dist/core/embeddings.d.ts +78 -0
  127. package/dist/core/embeddings.js +166 -0
  128. package/dist/core/engine-install.d.ts +105 -0
  129. package/dist/core/engine-install.js +190 -0
  130. package/dist/core/engine.d.ts +94 -0
  131. package/dist/{lib → core}/engine.js +74 -28
  132. package/dist/core/feedback/client.d.ts +88 -0
  133. package/dist/core/feedback/client.js +182 -0
  134. package/dist/{lib → core}/format.d.ts +0 -1
  135. package/dist/{lib → core}/format.js +1 -1
  136. package/dist/core/headless/connection.d.ts +86 -0
  137. package/dist/core/headless/connection.js +97 -0
  138. package/dist/core/headless/editor-connection.d.ts +26 -0
  139. package/dist/core/headless/editor-connection.js +81 -0
  140. package/dist/core/headless/mcp-routing.d.ts +38 -0
  141. package/dist/core/headless/mcp-routing.js +83 -0
  142. package/dist/core/headless/registry.d.ts +91 -0
  143. package/dist/core/headless/registry.js +226 -0
  144. package/dist/core/headless/resolve.d.ts +46 -0
  145. package/dist/core/headless/resolve.js +75 -0
  146. package/dist/core/headless/spawn.d.ts +46 -0
  147. package/dist/core/headless/spawn.js +205 -0
  148. package/dist/core/headless/worker-connection.d.ts +96 -0
  149. package/dist/core/headless/worker-connection.js +353 -0
  150. package/dist/core/headless/worker-engine-client.d.ts +58 -0
  151. package/dist/core/headless/worker-engine-client.js +246 -0
  152. package/dist/core/launch-posture.d.ts +170 -0
  153. package/dist/core/launch-posture.js +317 -0
  154. package/dist/core/library-read.d.ts +73 -0
  155. package/dist/core/library-read.js +279 -0
  156. package/dist/core/library-search.d.ts +143 -0
  157. package/dist/core/library-search.js +301 -0
  158. package/dist/{lib → core}/log-filters.js +4 -2
  159. package/dist/{lib → core}/mcp-log.js +2 -17
  160. package/dist/core/package-root.d.ts +9 -0
  161. package/dist/core/package-root.js +11 -0
  162. package/dist/core/redact.d.ts +20 -0
  163. package/dist/core/redact.js +64 -0
  164. package/dist/core/registry-search.d.ts +167 -0
  165. package/dist/core/registry-search.js +358 -0
  166. package/dist/core/skills-registry.d.ts +47 -0
  167. package/dist/core/skills-registry.js +83 -0
  168. package/dist/{lib → core}/store.js +11 -7
  169. package/dist/{lib → core}/summer-compatibility.js +3 -3
  170. package/dist/{lib → core}/telemetry.js +5 -2
  171. package/dist/core/templates.d.ts +98 -0
  172. package/dist/core/templates.js +241 -0
  173. package/dist/core/tool-errors.d.ts +30 -0
  174. package/dist/core/tool-errors.js +40 -0
  175. package/dist/core/trajectory.d.ts +80 -0
  176. package/dist/core/trajectory.js +307 -0
  177. package/dist/core/util/http.d.ts +13 -0
  178. package/dist/core/util/http.js +28 -0
  179. package/dist/core/util/json.d.ts +12 -0
  180. package/dist/core/util/json.js +21 -0
  181. package/dist/core/util/process.d.ts +3 -0
  182. package/dist/core/util/process.js +13 -0
  183. package/dist/core/util/sleep.d.ts +1 -0
  184. package/dist/core/util/sleep.js +3 -0
  185. package/dist/core/version.d.ts +3 -0
  186. package/dist/core/version.js +5 -0
  187. package/dist/{lib → installer}/agent-config.d.ts +20 -1
  188. package/dist/{lib → installer}/agent-config.js +148 -23
  189. package/dist/installer/legacy-skills.d.ts +26 -0
  190. package/dist/installer/legacy-skills.js +53 -0
  191. package/dist/installer/setup.d.ts +76 -0
  192. package/dist/installer/setup.js +146 -0
  193. package/dist/installer/skill-locations.d.ts +45 -0
  194. package/dist/installer/skill-locations.js +170 -0
  195. package/dist/installer/version-check.d.ts +174 -0
  196. package/dist/{lib → installer}/version-check.js +173 -42
  197. package/dist/{lib/mcp-boot-notice.d.ts → mcp/boot-notice.d.ts} +1 -1
  198. package/dist/{commands/mcp.js → mcp/command.js} +18 -6
  199. package/dist/mcp/server.d.ts +23 -3
  200. package/dist/mcp/server.js +122 -28
  201. package/dist/mcp/tools/asset-tools.js +62 -142
  202. package/dist/mcp/tools/creator-tools.js +5 -23
  203. package/dist/mcp/tools/debug-tools.js +61 -18
  204. package/dist/mcp/tools/event-tools.d.ts +14 -0
  205. package/dist/mcp/tools/event-tools.js +41 -0
  206. package/dist/mcp/tools/fabricate-tools.d.ts +2 -0
  207. package/dist/mcp/tools/fabricate-tools.js +28 -0
  208. package/dist/mcp/tools/feedback-tools.d.ts +77 -0
  209. package/dist/mcp/tools/feedback-tools.js +88 -0
  210. package/dist/mcp/tools/file-tools.js +6 -53
  211. package/dist/mcp/tools/generate-tools.js +37 -63
  212. package/dist/mcp/tools/library-tools.d.ts +11 -0
  213. package/dist/mcp/tools/library-tools.js +42 -0
  214. package/dist/mcp/tools/navigation-tools.d.ts +7 -0
  215. package/dist/mcp/tools/navigation-tools.js +37 -0
  216. package/dist/mcp/tools/perception-tools.d.ts +20 -0
  217. package/dist/mcp/tools/perception-tools.js +146 -0
  218. package/dist/mcp/tools/project-tools.d.ts +14 -0
  219. package/dist/mcp/tools/project-tools.js +72 -281
  220. package/dist/mcp/tools/runtime-tools.d.ts +2 -0
  221. package/dist/mcp/tools/runtime-tools.js +92 -0
  222. package/dist/mcp/tools/scene-tools.d.ts +3 -0
  223. package/dist/mcp/tools/scene-tools.js +68 -119
  224. package/dist/mcp/tools/script-tools.d.ts +3 -0
  225. package/dist/mcp/tools/script-tools.js +118 -0
  226. package/dist/mcp/tools/spatial-tools.d.ts +2 -0
  227. package/dist/mcp/tools/spatial-tools.js +485 -0
  228. package/dist/mcp/tools/text-json.d.ts +8 -0
  229. package/dist/mcp/tools/text-json.js +12 -0
  230. package/dist/mcp/tools/{cloud-tools.d.ts → ui-tools.d.ts} +1 -1
  231. package/dist/mcp/tools/ui-tools.js +82 -0
  232. package/dist/mcp/tools/visual-tools.d.ts +2 -7
  233. package/dist/mcp/tools/visual-tools.js +383 -101
  234. package/dist/mcp/tools/with-engine.d.ts +9 -15
  235. package/dist/mcp/tools/with-engine.js +60 -96
  236. package/dist/project-memory/project-manifest.d.ts +36 -0
  237. package/dist/project-memory/project-manifest.js +50 -0
  238. package/dist/project-memory/project-memory.d.ts +57 -0
  239. package/dist/{lib → project-memory}/project-memory.js +46 -0
  240. package/gemini-extension.json +103 -2
  241. package/hooks/hooks-cursor.json +2 -2
  242. package/hooks/hooks.json +2 -1
  243. package/hooks/pre-commit-doctor.sh +45 -39
  244. package/hooks/run-hook.cmd +30 -23
  245. package/hooks/run-hook.sh +20 -0
  246. package/hooks/session-start.sh +18 -7
  247. package/integrations/README.md +70 -0
  248. package/integrations/claude/README.md +19 -0
  249. package/integrations/claude/manifest-target.json +16 -0
  250. package/integrations/cline/README.md +13 -0
  251. package/integrations/cline/manifest-target.json +3 -0
  252. package/integrations/codex/README.md +15 -0
  253. package/integrations/codex/manifest-target.json +5 -0
  254. package/integrations/cursor/README.md +16 -0
  255. package/integrations/cursor/manifest-target.json +5 -0
  256. package/integrations/factory/README.md +26 -0
  257. package/integrations/factory/manifest-target.json +5 -0
  258. package/integrations/gemini/README.md +26 -0
  259. package/integrations/gemini/manifest-target.json +5 -0
  260. package/integrations/github-copilot/README.md +12 -0
  261. package/integrations/github-copilot/manifest-target.json +3 -0
  262. package/integrations/kilo-code/README.md +16 -0
  263. package/integrations/kilo-code/manifest-target.json +3 -0
  264. package/integrations/lm-studio/README.md +12 -0
  265. package/integrations/lm-studio/manifest-target.json +3 -0
  266. package/integrations/opencode/README.md +15 -0
  267. package/integrations/opencode/manifest-target.json +3 -0
  268. package/integrations/roo-code/README.md +13 -0
  269. package/integrations/roo-code/manifest-target.json +3 -0
  270. package/integrations/vscode-copilot/README.md +12 -0
  271. package/integrations/vscode-copilot/manifest-target.json +3 -0
  272. package/integrations/windsurf/README.md +13 -0
  273. package/integrations/windsurf/manifest-target.json +3 -0
  274. package/library/references/collaborative-protocol/resource.yaml +24 -0
  275. package/library/references/gd-style/resource.yaml +24 -0
  276. package/{references → library/references/godot-version}/godot-version.md +6 -6
  277. package/library/references/godot-version/resource.yaml +22 -0
  278. package/library/references/headless-routing/headless-routing.md +46 -0
  279. package/library/references/headless-routing/resource.yaml +24 -0
  280. package/library/references/mcp-fresh-chat-playbook/mcp-fresh-chat-playbook.md +49 -0
  281. package/library/references/mcp-fresh-chat-playbook/resource.yaml +23 -0
  282. package/library/references/mcp-tools-reference/mcp-tools-reference.md +271 -0
  283. package/library/references/mcp-tools-reference/resource.yaml +17 -0
  284. package/library/references/product-map/product-map.md +103 -0
  285. package/library/references/product-map/resource.yaml +33 -0
  286. package/{references → library/references/public-surface-language}/public-surface-language.md +5 -7
  287. package/library/references/public-surface-language/resource.yaml +17 -0
  288. package/library/references/summer-folder/resource.yaml +20 -0
  289. package/{references → library/references/summer-folder}/summer-folder.md +22 -21
  290. package/{skills/rendering-and-lighting → library/skills}/3d-lighting/SKILL.md +15 -11
  291. package/library/skills/3d-lighting/resource.yaml +27 -0
  292. package/{skills/audio → library/skills}/adaptive-music/SKILL.md +1 -1
  293. package/library/skills/adaptive-music/resource.yaml +28 -0
  294. package/library/skills/agent-playtesting/SKILL.md +148 -0
  295. package/library/skills/agent-playtesting/resource.yaml +52 -0
  296. package/library/skills/ambient-bed/resource.yaml +24 -0
  297. package/{skills/video → library/skills}/animated-loop/SKILL.md +1 -1
  298. package/library/skills/animated-loop/resource.yaml +27 -0
  299. package/{skills/animation → library/skills}/animation-tree/SKILL.md +29 -14
  300. package/library/skills/animation-tree/resource.yaml +33 -0
  301. package/{skills/rendering-and-lighting → library/skills}/art-direction/SKILL.md +3 -3
  302. package/library/skills/art-direction/resource.yaml +29 -0
  303. package/{skills/asset-pipeline → library/skills}/asset-strategy/SKILL.md +44 -44
  304. package/library/skills/asset-strategy/resource.yaml +63 -0
  305. package/{skills/audio → library/skills}/audio-direction/SKILL.md +7 -7
  306. package/library/skills/audio-direction/resource.yaml +32 -0
  307. package/library/skills/auto-fire-targeting/resource.yaml +22 -0
  308. package/{skills/scene-and-project → library/skills}/brainstorm-game/SKILL.md +8 -8
  309. package/library/skills/brainstorm-game/resource.yaml +30 -0
  310. package/{skills/workflow → library/skills}/brainstorming/SKILL.md +2 -22
  311. package/library/skills/brainstorming/resource.yaml +23 -0
  312. package/{skills/workflow → library/skills}/brainstorming/spec-document-reviewer-prompt.md +1 -1
  313. package/{skills/scene-and-project → library/skills}/browse-templates/SKILL.md +18 -18
  314. package/library/skills/browse-templates/resource.yaml +23 -0
  315. package/library/skills/celeste-momentum-platforming/SKILL.md +366 -0
  316. package/library/skills/celeste-momentum-platforming/resource.yaml +33 -0
  317. package/library/skills/character-animation-wiring/SKILL.md +249 -0
  318. package/library/skills/character-animation-wiring/resource.yaml +39 -0
  319. package/{skills/3d-assets → library/skills}/character-model/SKILL.md +25 -25
  320. package/library/skills/character-model/resource.yaml +36 -0
  321. package/{skills/2d-assets → library/skills}/character-portrait/SKILL.md +14 -14
  322. package/library/skills/character-portrait/resource.yaml +30 -0
  323. package/{skills/video → library/skills}/cinematic-cutscene/SKILL.md +2 -2
  324. package/library/skills/cinematic-cutscene/resource.yaml +29 -0
  325. package/{skills/2d-assets → library/skills}/concept-art/SKILL.md +15 -15
  326. package/library/skills/concept-art/resource.yaml +34 -0
  327. package/{skills/2d-assets → library/skills}/create-asset-sheet/SKILL.md +8 -8
  328. package/library/skills/create-asset-sheet/resource.yaml +33 -0
  329. package/{skills/debugging → library/skills}/debug/SKILL.md +3 -3
  330. package/library/skills/debug/resource.yaml +31 -0
  331. package/{skills/workflow → library/skills}/debugging-game-feel/SKILL.md +11 -11
  332. package/library/skills/debugging-game-feel/resource.yaml +25 -0
  333. package/{skills/level-design → library/skills}/design-level/SKILL.md +6 -6
  334. package/library/skills/design-level/resource.yaml +31 -0
  335. package/{skills/gameplay-mechanics → library/skills}/design-mechanic/SKILL.md +3 -3
  336. package/library/skills/design-mechanic/resource.yaml +31 -0
  337. package/{skills/ai-and-npcs → library/skills}/design-npc/SKILL.md +7 -3
  338. package/library/skills/design-npc/resource.yaml +29 -0
  339. package/{skills/workflow → library/skills}/diagnosing-perf-regressions/SKILL.md +10 -10
  340. package/library/skills/diagnosing-perf-regressions/resource.yaml +25 -0
  341. package/{skills/workflow → library/skills}/dispatching-parallel-agents/SKILL.md +8 -8
  342. package/library/skills/dispatching-parallel-agents/resource.yaml +23 -0
  343. package/library/skills/driving-the-editor-ui/SKILL.md +85 -0
  344. package/library/skills/driving-the-editor-ui/resource.yaml +46 -0
  345. package/{skills/3d-assets → library/skills}/environment-kit/SKILL.md +11 -11
  346. package/library/skills/environment-kit/resource.yaml +29 -0
  347. package/{skills/deployment → library/skills}/export-and-ship/SKILL.md +5 -5
  348. package/library/skills/export-and-ship/resource.yaml +32 -0
  349. package/library/skills/fabricating-assets/SKILL.md +195 -0
  350. package/library/skills/fabricating-assets/resource.yaml +52 -0
  351. package/{skills/animation → library/skills}/facial-and-lipsync/SKILL.md +23 -11
  352. package/library/skills/facial-and-lipsync/resource.yaml +36 -0
  353. package/{skills/character-controllers → library/skills}/fps-controller/SKILL.md +8 -4
  354. package/library/skills/fps-controller/resource.yaml +29 -0
  355. package/{skills/visual-effects → library/skills}/game-feel/SKILL.md +7 -7
  356. package/library/skills/game-feel/resource.yaml +27 -0
  357. package/library/skills/gameskill/SKILL.md +64 -0
  358. package/library/skills/gameskill/resource.yaml +22 -0
  359. package/library/skills/gdscript-patterns/resource.yaml +23 -0
  360. package/{skills/animation → library/skills}/generate-motion/SKILL.md +16 -16
  361. package/library/skills/generate-motion/resource.yaml +34 -0
  362. package/library/skills/godogen-visual-proof-game-generation/SKILL.md +223 -0
  363. package/library/skills/godogen-visual-proof-game-generation/resource.yaml +33 -0
  364. package/{skills/workflow → library/skills}/headless-scripting/SKILL.md +14 -7
  365. package/library/skills/headless-scripting/resource.yaml +26 -0
  366. package/{skills/multiplayer-and-networking → library/skills}/host-authoritative-state/SKILL.md +1 -1
  367. package/library/skills/host-authoritative-state/resource.yaml +28 -0
  368. package/{skills/2d-assets → library/skills}/instantiate-asset-pack/SKILL.md +10 -12
  369. package/library/skills/instantiate-asset-pack/resource.yaml +29 -0
  370. package/{skills/workflow → library/skills}/investigating-bugs/SKILL.md +4 -4
  371. package/{skills/workflow → library/skills}/investigating-bugs/condition-based-waiting.md +8 -8
  372. package/library/skills/investigating-bugs/resource.yaml +24 -0
  373. package/{skills/workflow → library/skills}/investigating-bugs/root-cause-tracing.md +1 -7
  374. package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +164 -0
  375. package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +35 -0
  376. package/{skills/scene-and-project → library/skills}/make-game/SKILL.md +23 -23
  377. package/library/skills/make-game/resource.yaml +35 -0
  378. package/library/skills/music-track/resource.yaml +28 -0
  379. package/library/skills/navigate-summer/SKILL.md +61 -0
  380. package/library/skills/navigate-summer/resource.yaml +35 -0
  381. package/{skills/scene-and-project → library/skills}/new-project/SKILL.md +10 -10
  382. package/library/skills/new-project/resource.yaml +28 -0
  383. package/{skills/3d-assets → library/skills}/organic-model/SKILL.md +16 -16
  384. package/library/skills/organic-model/resource.yaml +32 -0
  385. package/{skills/multiplayer-and-networking → library/skills}/peer-to-peer-multiplayer/SKILL.md +2 -2
  386. package/library/skills/peer-to-peer-multiplayer/resource.yaml +28 -0
  387. package/{skills/2d-assets → library/skills}/pixel-art/SKILL.md +13 -13
  388. package/library/skills/pixel-art/resource.yaml +31 -0
  389. package/library/skills/play/resource.yaml +26 -0
  390. package/{skills/workflow → library/skills}/playtesting-a-feature/SKILL.md +41 -22
  391. package/library/skills/playtesting-a-feature/resource.yaml +31 -0
  392. package/{skills/animation → library/skills}/procedural-animation/SKILL.md +25 -10
  393. package/library/skills/procedural-animation/resource.yaml +33 -0
  394. package/{skills/3d-assets → library/skills}/prop-model/SKILL.md +13 -13
  395. package/library/skills/prop-model/resource.yaml +33 -0
  396. package/library/skills/psx-retro-rendering/SKILL.md +416 -0
  397. package/library/skills/psx-retro-rendering/resource.yaml +36 -0
  398. package/library/skills/realtime-wet-surfaces/SKILL.md +189 -0
  399. package/library/skills/realtime-wet-surfaces/resource.yaml +31 -0
  400. package/{skills/deployment → library/skills}/remote-deploy/SKILL.md +3 -3
  401. package/library/skills/remote-deploy/resource.yaml +23 -0
  402. package/{skills/animation → library/skills}/retarget/SKILL.md +15 -14
  403. package/library/skills/retarget/resource.yaml +33 -0
  404. package/library/skills/running-in-the-cloud/SKILL.md +103 -0
  405. package/library/skills/running-in-the-cloud/resource.yaml +33 -0
  406. package/{skills/scene-and-project → library/skills}/scene-composition/SKILL.md +9 -1
  407. package/library/skills/scene-composition/resource.yaml +27 -0
  408. package/library/skills/scene-hierarchy-design/SKILL.md +102 -0
  409. package/library/skills/scene-hierarchy-design/resource.yaml +31 -0
  410. package/library/skills/scene-scripting/SKILL.md +764 -0
  411. package/library/skills/scene-scripting/resource.yaml +58 -0
  412. package/{skills/level-design → library/skills}/scene-to-level/SKILL.md +16 -17
  413. package/library/skills/scene-to-level/resource.yaml +33 -0
  414. package/{skills/multiplayer-and-networking → library/skills}/setup-multiplayer/SKILL.md +1 -1
  415. package/library/skills/setup-multiplayer/resource.yaml +28 -0
  416. package/library/skills/skill-create/SKILL.md +138 -0
  417. package/library/skills/skill-create/resource.yaml +25 -0
  418. package/{skills/workflow → library/skills}/skill-improve/SKILL.md +2 -2
  419. package/library/skills/skill-improve/resource.yaml +25 -0
  420. package/{skills/workflow → library/skills}/skill-test/SKILL.md +4 -4
  421. package/library/skills/skill-test/resource.yaml +26 -0
  422. package/library/skills/skintokens-auto-rigging/SKILL.md +200 -0
  423. package/library/skills/skintokens-auto-rigging/resource.yaml +38 -0
  424. package/{skills/2d-assets → library/skills}/skybox-panorama/SKILL.md +8 -8
  425. package/library/skills/skybox-panorama/resource.yaml +28 -0
  426. package/{skills/audio → library/skills}/sound-effect/SKILL.md +2 -2
  427. package/library/skills/sound-effect/resource.yaml +27 -0
  428. package/library/skills/spatial-placement/SKILL.md +74 -0
  429. package/library/skills/spatial-placement/resource.yaml +42 -0
  430. package/library/skills/spatial-placement/tests/spec.md +65 -0
  431. package/{skills/2d-assets → library/skills}/sprite-sheet/SKILL.md +12 -12
  432. package/library/skills/sprite-sheet/resource.yaml +32 -0
  433. package/{skills/2d-assets → library/skills}/tileable-texture/SKILL.md +9 -9
  434. package/library/skills/tileable-texture/resource.yaml +31 -0
  435. package/{skills/video → library/skills}/trailer-shot/SKILL.md +1 -1
  436. package/library/skills/trailer-shot/resource.yaml +27 -0
  437. package/{skills/performance → library/skills}/tune-performance/SKILL.md +6 -6
  438. package/library/skills/tune-performance/resource.yaml +31 -0
  439. package/{skills/ui-and-ux → library/skills}/ui-basics/SKILL.md +1 -1
  440. package/library/skills/ui-basics/resource.yaml +25 -0
  441. package/{skills/2d-assets → library/skills}/ui-graphics/SKILL.md +11 -11
  442. package/library/skills/ui-graphics/resource.yaml +29 -0
  443. package/{skills/2d-assets → library/skills}/use-widget-asset/SKILL.md +4 -4
  444. package/library/skills/use-widget-asset/resource.yaml +29 -0
  445. package/{skills/workflow → library/skills}/using-summer/SKILL.md +12 -9
  446. package/library/skills/using-summer/resource.yaml +41 -0
  447. package/{skills/3d-assets → library/skills}/vehicle-model/SKILL.md +18 -18
  448. package/library/skills/vehicle-model/resource.yaml +34 -0
  449. package/{skills/workflow → library/skills}/verification-before-completion/SKILL.md +10 -10
  450. package/library/skills/verification-before-completion/resource.yaml +23 -0
  451. package/library/skills/verifying-scenes/SKILL.md +98 -0
  452. package/library/skills/verifying-scenes/resource.yaml +42 -0
  453. package/{skills/visual-effects/recipes/dissolve → library/skills/vfx-dissolve}/SKILL.md +31 -11
  454. package/library/skills/vfx-dissolve/resource.yaml +33 -0
  455. package/{skills/visual-effects/recipes/fire → library/skills/vfx-fire}/SKILL.md +43 -12
  456. package/library/skills/vfx-fire/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
  457. package/library/skills/vfx-fire/resource.yaml +35 -0
  458. package/{skills/visual-effects/recipes/hit-spark → library/skills/vfx-hit-spark}/SKILL.md +16 -10
  459. package/library/skills/vfx-hit-spark/_building-blocks/additive-billboard-particles.md +37 -0
  460. package/library/skills/vfx-hit-spark/resource.yaml +34 -0
  461. package/{skills/visual-effects/recipes/lightning → library/skills/vfx-lightning}/SKILL.md +24 -11
  462. package/library/skills/vfx-lightning/_building-blocks/additive-billboard-particles.md +37 -0
  463. package/library/skills/vfx-lightning/resource.yaml +33 -0
  464. package/{skills/visual-effects/recipes/magic-glow → library/skills/vfx-magic-glow}/SKILL.md +31 -11
  465. package/library/skills/vfx-magic-glow/_building-blocks/additive-billboard-particles.md +37 -0
  466. package/library/skills/vfx-magic-glow/resource.yaml +34 -0
  467. package/{skills/visual-effects/recipes/muzzle-flash → library/skills/vfx-muzzle-flash}/SKILL.md +29 -9
  468. package/library/skills/vfx-muzzle-flash/_building-blocks/additive-billboard-particles.md +37 -0
  469. package/library/skills/vfx-muzzle-flash/_building-blocks/trauma-shake-snippet.md +53 -0
  470. package/library/skills/vfx-muzzle-flash/resource.yaml +35 -0
  471. package/{skills/visual-effects/recipes/smoke → library/skills/vfx-smoke}/SKILL.md +35 -9
  472. package/library/skills/vfx-smoke/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
  473. package/library/skills/vfx-smoke/resource.yaml +32 -0
  474. package/{skills/visual-effects/recipes/water-ripple → library/skills/vfx-water-ripple}/SKILL.md +31 -9
  475. package/library/skills/vfx-water-ripple/_building-blocks/additive-billboard-particles.md +37 -0
  476. package/library/skills/vfx-water-ripple/resource.yaml +31 -0
  477. package/library/skills/voice-line/resource.yaml +27 -0
  478. package/library/skills/world-building-3d/SKILL.md +105 -0
  479. package/library/skills/world-building-3d/references/spatial-tools.md +50 -0
  480. package/library/skills/world-building-3d/resource.yaml +44 -0
  481. package/library/skills/world-building-3d/tests/spec.md +48 -0
  482. package/{skills/workflow → library/skills}/writing-plans/SKILL.md +19 -14
  483. package/library/skills/writing-plans/resource.yaml +23 -0
  484. package/{skills/workflow → library/skills}/writing-skills/SKILL.md +38 -44
  485. package/library/skills/writing-skills/resource.yaml +29 -0
  486. package/{skills/workflow → library/skills}/writing-skills/testing-skills-with-subagents.md +13 -14
  487. package/library/templates/2d-brario-platformer/resource.yaml +21 -0
  488. package/library/templates/2d-dungeon-roguelike/resource.yaml +23 -0
  489. package/library/templates/2d-grid-puzzle/resource.yaml +21 -0
  490. package/library/templates/2d-plants-and-zombies-tower-defense/resource.yaml +21 -0
  491. package/library/templates/2d-platformer/resource.yaml +24 -0
  492. package/library/templates/2d-rpg/resource.yaml +21 -0
  493. package/library/templates/2d-vampire-survivor-roguelike/resource.yaml +21 -0
  494. package/library/templates/3d-basic/resource.yaml +16 -0
  495. package/library/templates/3d-city-kit/resource.yaml +24 -0
  496. package/library/templates/3d-fps-old-school/resource.yaml +21 -0
  497. package/library/templates/3d-fps-simple-animated-npc/resource.yaml +21 -0
  498. package/library/templates/3d-lan-multiplayer-starter/resource.yaml +22 -0
  499. package/library/templates/3d-open-world-explore-tps/resource.yaml +21 -0
  500. package/library/templates/3d-procedural-road-world/resource.yaml +21 -0
  501. package/library/templates/3d-racing-game/resource.yaml +21 -0
  502. package/library/templates/3d-royale-clash-type/resource.yaml +21 -0
  503. package/library/templates/3d-third-person-controller/resource.yaml +21 -0
  504. package/library/templates/3d-voxel-sandbox/resource.yaml +24 -0
  505. package/library/templates/README.md +94 -0
  506. package/library/templates/empty/resource.yaml +16 -0
  507. package/library/tools/add-node/resource.yaml +60 -0
  508. package/library/tools/align-distribute-3d/resource.yaml +87 -0
  509. package/library/tools/api-docs/resource.yaml +57 -0
  510. package/library/tools/batch/resource.yaml +52 -0
  511. package/library/tools/camera-bookmark/resource.yaml +73 -0
  512. package/library/tools/check-job/resource.yaml +45 -0
  513. package/library/tools/clear-console/resource.yaml +40 -0
  514. package/library/tools/connect-signal/resource.yaml +63 -0
  515. package/library/tools/create-debug-report/resource.yaml +67 -0
  516. package/library/tools/create-scene/resource.yaml +59 -0
  517. package/library/tools/creator-config/resource.yaml +63 -0
  518. package/library/tools/creator-publish/resource.yaml +73 -0
  519. package/library/tools/creator-releases/resource.yaml +53 -0
  520. package/library/tools/fabricate-3d/resource.yaml +108 -0
  521. package/library/tools/game-control/resource.yaml +84 -0
  522. package/library/tools/game-input/resource.yaml +159 -0
  523. package/library/tools/game-probe/resource.yaml +90 -0
  524. package/library/tools/generate-3d/resource.yaml +112 -0
  525. package/library/tools/generate-audio/resource.yaml +80 -0
  526. package/library/tools/generate-image/resource.yaml +62 -0
  527. package/library/tools/generate-motion/resource.yaml +66 -0
  528. package/library/tools/generate-video/resource.yaml +66 -0
  529. package/library/tools/get-agent-playbook/resource.yaml +40 -0
  530. package/library/tools/get-asset/resource.yaml +42 -0
  531. package/library/tools/get-asset-download-url/resource.yaml +52 -0
  532. package/library/tools/get-console/resource.yaml +69 -0
  533. package/library/tools/get-debugger-errors/resource.yaml +56 -0
  534. package/library/tools/get-debugger-warnings/resource.yaml +52 -0
  535. package/library/tools/get-diagnostics/resource.yaml +42 -0
  536. package/library/tools/get-project-context/resource.yaml +45 -0
  537. package/library/tools/get-runtime-tree/resource.yaml +62 -0
  538. package/library/tools/get-scene-tree/resource.yaml +52 -0
  539. package/library/tools/get-script-errors/resource.yaml +45 -0
  540. package/library/tools/get-studio-workflow/resource.yaml +43 -0
  541. package/library/tools/import-asset/resource.yaml +73 -0
  542. package/library/tools/import-asset-by-id/resource.yaml +56 -0
  543. package/library/tools/import-from-url/resource.yaml +51 -0
  544. package/library/tools/import-from-url-batch/resource.yaml +60 -0
  545. package/library/tools/import-hdri/resource.yaml +69 -0
  546. package/library/tools/input-map-bind/resource.yaml +52 -0
  547. package/library/tools/inspect-node/resource.yaml +46 -0
  548. package/library/tools/inspect-resource/resource.yaml +45 -0
  549. package/library/tools/inspect-runtime-node/resource.yaml +54 -0
  550. package/library/tools/instantiate-scene/resource.yaml +62 -0
  551. package/library/tools/is-running/resource.yaml +40 -0
  552. package/library/tools/library-feedback/resource.yaml +89 -0
  553. package/library/tools/list-my-assets/resource.yaml +56 -0
  554. package/library/tools/navigation-probe/resource.yaml +85 -0
  555. package/library/tools/open/resource.yaml +80 -0
  556. package/library/tools/open-main-scene/resource.yaml +40 -0
  557. package/library/tools/open-scene/resource.yaml +46 -0
  558. package/library/tools/play/resource.yaml +91 -0
  559. package/library/tools/project-setting/resource.yaml +53 -0
  560. package/library/tools/read-file/resource.yaml +47 -0
  561. package/library/tools/read-library/resource.yaml +67 -0
  562. package/library/tools/recent-events/resource.yaml +71 -0
  563. package/library/tools/remove-node/resource.yaml +51 -0
  564. package/library/tools/replace-node/resource.yaml +57 -0
  565. package/library/tools/replace-text/resource.yaml +61 -0
  566. package/library/tools/run-editor-script/resource.yaml +61 -0
  567. package/library/tools/run-script/resource.yaml +73 -0
  568. package/library/tools/runtime-animate/resource.yaml +140 -0
  569. package/library/tools/runtime-call/resource.yaml +74 -0
  570. package/library/tools/runtime-set/resource.yaml +80 -0
  571. package/library/tools/runtime-spawn/resource.yaml +95 -0
  572. package/library/tools/save-scene/resource.yaml +50 -0
  573. package/library/tools/screenshot/resource.yaml +112 -0
  574. package/library/tools/search-assets/resource.yaml +67 -0
  575. package/library/tools/search-library/resource.yaml +81 -0
  576. package/library/tools/select-node/resource.yaml +48 -0
  577. package/library/tools/set-prop/resource.yaml +64 -0
  578. package/library/tools/set-resource-property/resource.yaml +66 -0
  579. package/library/tools/slice-asset-sheet/resource.yaml +47 -0
  580. package/library/tools/snap-to-surface/resource.yaml +90 -0
  581. package/library/tools/snapshot-diff/resource.yaml +58 -0
  582. package/library/tools/starcast/resource.yaml +120 -0
  583. package/library/tools/start-game-task/resource.yaml +91 -0
  584. package/library/tools/stop/resource.yaml +51 -0
  585. package/library/tools/test-placement/resource.yaml +109 -0
  586. package/library/tools/ui-actions/resource.yaml +77 -0
  587. package/library/tools/ui-activate/resource.yaml +88 -0
  588. package/library/tools/ui-screenshot/resource.yaml +63 -0
  589. package/library/tools/ui-tree/resource.yaml +69 -0
  590. package/library/tools/wait-for-event/resource.yaml +84 -0
  591. package/library/tools/world-snapshot/resource.yaml +60 -0
  592. package/library/tools/write-file/resource.yaml +54 -0
  593. package/package.json +22 -16
  594. package/registry/generated/aliases.json +207 -0
  595. package/registry/generated/counts.json +12 -0
  596. package/registry/generated/gemini-extension.json +122 -0
  597. package/registry/generated/index.json +7709 -0
  598. package/registry/generated/marketplace.claude.json +44 -0
  599. package/registry/generated/mcp.json +13 -0
  600. package/registry/generated/plugin.claude.json +135 -0
  601. package/registry/generated/plugin.codex.json +144 -0
  602. package/registry/generated/plugin.cursor.json +134 -0
  603. package/registry/generated/plugin.factory.json +117 -0
  604. package/registry/generated/skills-registry.json +851 -0
  605. package/registry/generated/templates-registry.json +455 -0
  606. package/registry/schemas/allowed-hosts.json +19 -0
  607. package/registry/schemas/collection.schema.json +68 -0
  608. package/registry/schemas/domains.json +96 -0
  609. package/registry/schemas/example.schema.json +11 -0
  610. package/registry/schemas/reference.schema.json +10 -0
  611. package/registry/schemas/resource.schema.json +154 -0
  612. package/registry/schemas/skill.schema.json +14 -0
  613. package/registry/schemas/template.schema.json +46 -0
  614. package/registry/schemas/tool.schema.json +61 -0
  615. package/_persona/summer/SKILL.md +0 -113
  616. package/dist/bin/postinstall.d.ts +0 -2
  617. package/dist/bin/postinstall.js +0 -3
  618. package/dist/commands/cloud.d.ts +0 -2
  619. package/dist/commands/cloud.js +0 -80
  620. package/dist/commands/create.d.ts +0 -3
  621. package/dist/commands/create.js +0 -171
  622. package/dist/commands/install.d.ts +0 -19
  623. package/dist/commands/install.js +0 -194
  624. package/dist/commands/list.js +0 -67
  625. package/dist/commands/logout.js +0 -13
  626. package/dist/commands/logs.d.ts +0 -2
  627. package/dist/commands/logs.js +0 -19
  628. package/dist/commands/open.d.ts +0 -2
  629. package/dist/commands/open.js +0 -32
  630. package/dist/commands/orchestrator.d.ts +0 -8
  631. package/dist/commands/orchestrator.js +0 -143
  632. package/dist/commands/run.d.ts +0 -2
  633. package/dist/commands/run.js +0 -167
  634. package/dist/commands/status.js +0 -46
  635. package/dist/lib/banner.d.ts +0 -4
  636. package/dist/lib/banner.js +0 -122
  637. package/dist/lib/cloud/api.d.ts +0 -79
  638. package/dist/lib/cloud/api.js +0 -107
  639. package/dist/lib/cloud/apply.d.ts +0 -32
  640. package/dist/lib/cloud/apply.js +0 -294
  641. package/dist/lib/cloud/checkpoint.d.ts +0 -26
  642. package/dist/lib/cloud/checkpoint.js +0 -142
  643. package/dist/lib/cloud/conflicts.d.ts +0 -55
  644. package/dist/lib/cloud/conflicts.js +0 -131
  645. package/dist/lib/cloud/containment.d.ts +0 -8
  646. package/dist/lib/cloud/containment.js +0 -52
  647. package/dist/lib/cloud/diff.d.ts +0 -39
  648. package/dist/lib/cloud/diff.js +0 -138
  649. package/dist/lib/cloud/engine-bridge.d.ts +0 -34
  650. package/dist/lib/cloud/engine-bridge.js +0 -139
  651. package/dist/lib/cloud/hash-cache.d.ts +0 -23
  652. package/dist/lib/cloud/hash-cache.js +0 -44
  653. package/dist/lib/cloud/hash.d.ts +0 -10
  654. package/dist/lib/cloud/hash.js +0 -111
  655. package/dist/lib/cloud/http.d.ts +0 -17
  656. package/dist/lib/cloud/http.js +0 -47
  657. package/dist/lib/cloud/lock-path.d.ts +0 -1
  658. package/dist/lib/cloud/lock-path.js +0 -5
  659. package/dist/lib/cloud/lock.d.ts +0 -14
  660. package/dist/lib/cloud/lock.js +0 -143
  661. package/dist/lib/cloud/manifest.d.ts +0 -6
  662. package/dist/lib/cloud/manifest.js +0 -41
  663. package/dist/lib/cloud/paths.d.ts +0 -20
  664. package/dist/lib/cloud/paths.js +0 -90
  665. package/dist/lib/cloud/project-godot-merge.d.ts +0 -32
  666. package/dist/lib/cloud/project-godot-merge.js +0 -185
  667. package/dist/lib/cloud/rules.d.ts +0 -39
  668. package/dist/lib/cloud/rules.js +0 -159
  669. package/dist/lib/cloud/sync.d.ts +0 -21
  670. package/dist/lib/cloud/sync.js +0 -518
  671. package/dist/lib/cloud/transfer.d.ts +0 -23
  672. package/dist/lib/cloud/transfer.js +0 -184
  673. package/dist/lib/cloud/types.d.ts +0 -62
  674. package/dist/lib/cloud/types.js +0 -1
  675. package/dist/lib/cloud/validate-path.d.ts +0 -23
  676. package/dist/lib/cloud/validate-path.js +0 -103
  677. package/dist/lib/engine.d.ts +0 -51
  678. package/dist/lib/game-task-plan.d.ts +0 -42
  679. package/dist/lib/project-memory.d.ts +0 -33
  680. package/dist/lib/public-surface-paths.d.ts +0 -13
  681. package/dist/lib/public-surface-paths.js +0 -42
  682. package/dist/lib/remote-templates.d.ts +0 -25
  683. package/dist/lib/remote-templates.js +0 -86
  684. package/dist/lib/skills-registry.d.ts +0 -572
  685. package/dist/lib/skills-registry.js +0 -1061
  686. package/dist/lib/version-check.d.ts +0 -106
  687. package/dist/mcp/tools/cloud-tools.js +0 -42
  688. package/references/mcp-tools-reference.md +0 -199
  689. package/references/template-registry.md +0 -73
  690. package/skills/README.md +0 -103
  691. package/skills/scene-and-project/summer-cloud/SKILL.md +0 -92
  692. package/skills/workflow/brainstorming/scripts/frame-template.html +0 -214
  693. package/skills/workflow/brainstorming/scripts/helper.js +0 -88
  694. package/skills/workflow/brainstorming/scripts/server.cjs +0 -354
  695. package/skills/workflow/brainstorming/scripts/start-server.sh +0 -148
  696. package/skills/workflow/brainstorming/scripts/stop-server.sh +0 -56
  697. package/skills/workflow/brainstorming/visual-companion.md +0 -287
  698. package/skills/workflow/gameskill/SKILL.md +0 -120
  699. package/skills/workflow/investigating-bugs/CREATION-LOG.md +0 -119
  700. package/skills/workflow/investigating-bugs/condition-based-waiting-example.ts +0 -158
  701. package/skills/workflow/investigating-bugs/find-polluter.sh +0 -63
  702. package/skills/workflow/investigating-bugs/test-academic.md +0 -14
  703. package/skills/workflow/investigating-bugs/test-pressure-1.md +0 -58
  704. package/skills/workflow/investigating-bugs/test-pressure-2.md +0 -68
  705. package/skills/workflow/investigating-bugs/test-pressure-3.md +0 -69
  706. package/skills/workflow/mcpupdate/SKILL.md +0 -134
  707. package/skills/workflow/skill-create/SKILL.md +0 -153
  708. package/skills/workflow/writing-skills/anthropic-best-practices.md +0 -1150
  709. package/skills/workflow/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -189
  710. package/skills/workflow/writing-skills/graphviz-conventions.dot +0 -172
  711. package/skills/workflow/writing-skills/persuasion-principles.md +0 -187
  712. package/skills/workflow/writing-skills/render-graphs.js +0 -168
  713. /package/dist/{commands → cli/commands}/config.d.ts +0 -0
  714. /package/dist/{commands → cli/commands}/debug.d.ts +0 -0
  715. /package/dist/{commands → cli/commands}/list.d.ts +0 -0
  716. /package/dist/{commands → cli/commands}/login.d.ts +0 -0
  717. /package/dist/{commands → cli/commands}/plan.d.ts +0 -0
  718. /package/dist/{commands → cli/commands}/publish.d.ts +0 -0
  719. /package/dist/{commands → cli/commands}/releases.d.ts +0 -0
  720. /package/dist/{commands → cli/commands}/setup.d.ts +0 -0
  721. /package/dist/{commands → cli/commands}/skills.d.ts +0 -0
  722. /package/dist/{lib → core}/log-filters.d.ts +0 -0
  723. /package/dist/{lib → core}/mcp-log.d.ts +0 -0
  724. /package/dist/{lib → core}/store.d.ts +0 -0
  725. /package/dist/{lib → core}/summer-compatibility.d.ts +0 -0
  726. /package/dist/{lib → core}/telemetry.d.ts +0 -0
  727. /package/dist/{lib/mcp-boot-notice.js → mcp/boot-notice.js} +0 -0
  728. /package/dist/{commands/mcp.d.ts → mcp/command.d.ts} +0 -0
  729. /package/{references → library/references/collaborative-protocol}/collaborative-protocol.md +0 -0
  730. /package/{references → library/references/gd-style}/gd-style.md +0 -0
  731. /package/{skills/audio → library/skills}/ambient-bed/SKILL.md +0 -0
  732. /package/{skills/gameplay-mechanics → library/skills}/auto-fire-targeting/SKILL.md +0 -0
  733. /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/SKILL.md +0 -0
  734. /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/reference.md +0 -0
  735. /package/{skills/workflow → library/skills}/investigating-bugs/defense-in-depth.md +0 -0
  736. /package/{skills/audio → library/skills}/music-track/SKILL.md +0 -0
  737. /package/{skills/scene-and-project → library/skills}/play/SKILL.md +0 -0
  738. /package/{skills/visual-effects → library/skills/vfx-dissolve}/_building-blocks/noise-3d-fbm.gdshaderinc +0 -0
  739. /package/{skills/visual-effects → library/skills/vfx-fire}/_building-blocks/additive-billboard-particles.md +0 -0
  740. /package/{skills/visual-effects → library/skills/vfx-lightning}/_building-blocks/trauma-shake-snippet.md +0 -0
  741. /package/{skills/audio → library/skills}/voice-line/SKILL.md +0 -0
  742. /package/{skills/workflow → library/skills}/writing-plans/plan-document-reviewer-prompt.md +0 -0
@@ -1,14 +0,0 @@
1
- export interface CloudLock {
2
- release(): Promise<void>;
3
- }
4
- type Face = "cli" | "mcp" | "engine";
5
- /**
6
- * Per-project sync mutex (spec 8.2). O_EXCL create, 30s heartbeat, stale only
7
- * by heartbeat age (120s). Two fixed races: the payload is written to the fd
8
- * before close and verified by token after create (a contender that reads an
9
- * empty just-created file treats parse failure as FRESH while the file is
10
- * young); takeover goes through an atomic rename so two waiters can never
11
- * both remove the same stale lock and both proceed.
12
- */
13
- export declare function acquireCloudLock(projectRoot: string, face?: Face): Promise<CloudLock>;
14
- export {};
@@ -1,143 +0,0 @@
1
- import { randomUUID } from "crypto";
2
- import { open, readFile, rename, rm, stat, writeFile } from "fs/promises";
3
- import { lockPath } from "./lock-path.js";
4
- const STALE_MS = 120_000;
5
- const WAIT_MS = 10_000;
6
- const HEARTBEAT_MS = 30_000;
7
- /**
8
- * Per-project sync mutex (spec 8.2). O_EXCL create, 30s heartbeat, stale only
9
- * by heartbeat age (120s). Two fixed races: the payload is written to the fd
10
- * before close and verified by token after create (a contender that reads an
11
- * empty just-created file treats parse failure as FRESH while the file is
12
- * young); takeover goes through an atomic rename so two waiters can never
13
- * both remove the same stale lock and both proceed.
14
- */
15
- export async function acquireCloudLock(projectRoot, face = "cli") {
16
- const path = lockPath(projectRoot);
17
- const started = Date.now();
18
- const token = randomUUID();
19
- while (Date.now() - started < WAIT_MS) {
20
- const acquired = await tryCreate(path, face, token);
21
- if (acquired)
22
- return acquired;
23
- if (await isStale(path)) {
24
- await takeoverStale(path);
25
- continue;
26
- }
27
- await sleep(250);
28
- }
29
- throw new Error("Summer Cloud sync already in progress");
30
- }
31
- async function tryCreate(path, face, token) {
32
- const startedAt = new Date().toISOString();
33
- let file;
34
- try {
35
- file = await open(path, "wx", 0o600);
36
- }
37
- catch {
38
- return null;
39
- }
40
- try {
41
- await file.writeFile(JSON.stringify(payload(face, token, startedAt)), { encoding: "utf8" });
42
- await file.sync();
43
- }
44
- finally {
45
- await file.close();
46
- }
47
- // Re-check ownership: a racing waiter may have taken the file over between
48
- // our create and write. If the token on disk is not ours, we lost.
49
- if (!(await ownsLock(path, token))) {
50
- return null;
51
- }
52
- const heartbeat = setInterval(() => {
53
- void writeFile(path, JSON.stringify(payload(face, token, startedAt)), { encoding: "utf8" }).catch(() => { });
54
- }, HEARTBEAT_MS);
55
- heartbeat.unref?.();
56
- return {
57
- async release() {
58
- clearInterval(heartbeat);
59
- if (await ownsLock(path, token)) {
60
- await rm(path, { force: true });
61
- }
62
- },
63
- };
64
- }
65
- function payload(face, token, startedAt) {
66
- return { pid: process.pid, face, token, startedAt, heartbeatAt: new Date().toISOString() };
67
- }
68
- async function ownsLock(path, token) {
69
- try {
70
- const raw = JSON.parse(await readFile(path, "utf8"));
71
- return raw.token === token;
72
- }
73
- catch {
74
- return false;
75
- }
76
- }
77
- async function isStale(path) {
78
- let raw;
79
- try {
80
- raw = await readFile(path, "utf8");
81
- }
82
- catch {
83
- // Gone already; the create loop will race for it.
84
- return false;
85
- }
86
- try {
87
- const parsed = JSON.parse(raw);
88
- const heartbeat = parsed.heartbeatAt ? Date.parse(parsed.heartbeatAt) : NaN;
89
- if (!Number.isFinite(heartbeat))
90
- throw new Error("no heartbeat");
91
- return Date.now() - heartbeat > STALE_MS;
92
- }
93
- catch {
94
- // Unparseable: probably a holder between open('wx') and write. Treat as
95
- // fresh while the file is young; stale only once the mtime ages out.
96
- try {
97
- const info = await stat(path);
98
- return Date.now() - info.mtimeMs > STALE_MS;
99
- }
100
- catch {
101
- return false;
102
- }
103
- }
104
- }
105
- async function takeoverStale(path) {
106
- // Atomic claim: only one waiter wins the rename; the loser's rename fails
107
- // with ENOENT and it simply retries the exclusive create.
108
- const claimed = `${path}.takeover.${process.pid}.${Date.now()}`;
109
- try {
110
- await rename(path, claimed);
111
- }
112
- catch {
113
- return;
114
- }
115
- // Verify what we actually grabbed. If it turned fresh under us (the holder
116
- // heartbeated between our staleness read and the rename), restore it
117
- // without ever clobbering a lock someone else created in the gap.
118
- try {
119
- const content = await readFile(claimed, "utf8");
120
- const parsed = JSON.parse(content);
121
- const heartbeat = parsed.heartbeatAt ? Date.parse(parsed.heartbeatAt) : NaN;
122
- if (Number.isFinite(heartbeat) && Date.now() - heartbeat <= STALE_MS) {
123
- try {
124
- const file = await open(path, "wx", 0o600);
125
- await file.writeFile(content, { encoding: "utf8" });
126
- await file.close();
127
- }
128
- catch {
129
- // Someone else already created a new lock; the displaced holder's
130
- // next heartbeat write will contend through ownsLock on release.
131
- }
132
- await rm(claimed, { force: true });
133
- return;
134
- }
135
- }
136
- catch {
137
- // Unparseable claimed file: it aged past staleness to get here; discard.
138
- }
139
- await rm(claimed, { force: true });
140
- }
141
- function sleep(ms) {
142
- return new Promise((resolve) => setTimeout(resolve, ms));
143
- }
@@ -1,6 +0,0 @@
1
- import type { CloudManifest } from "./types.js";
2
- export declare function sha256Hex(bytes: Buffer | Uint8Array | string): string;
3
- /** Spec 6.3: keys sorted bytewise (UTF-8), no whitespace, then gzip. */
4
- export declare function compareKeysBytewise(a: string, b: string): number;
5
- export declare function serializeManifest(manifest: CloudManifest): Buffer;
6
- export declare function parseManifest(bytes: Buffer, expectedProjectId?: string): CloudManifest;
@@ -1,41 +0,0 @@
1
- import { createHash } from "crypto";
2
- import { gunzipSync, gzipSync } from "zlib";
3
- import { findPathCollisions, validateCloudPath } from "./validate-path.js";
4
- export function sha256Hex(bytes) {
5
- return createHash("sha256").update(bytes).digest("hex");
6
- }
7
- /** Spec 6.3: keys sorted bytewise (UTF-8), no whitespace, then gzip. */
8
- export function compareKeysBytewise(a, b) {
9
- return Buffer.compare(Buffer.from(a, "utf8"), Buffer.from(b, "utf8"));
10
- }
11
- export function serializeManifest(manifest) {
12
- const files = Object.fromEntries(Object.entries(manifest.files).sort(([a], [b]) => compareKeysBytewise(a, b)));
13
- const document = {
14
- schemaVersion: manifest.schemaVersion,
15
- projectId: manifest.projectId,
16
- rulesVersion: manifest.rulesVersion,
17
- files,
18
- };
19
- return gzipSync(Buffer.from(JSON.stringify(document), "utf8"));
20
- }
21
- export function parseManifest(bytes, expectedProjectId) {
22
- const parsed = JSON.parse(gunzipSync(bytes).toString("utf8"));
23
- if (parsed.schemaVersion !== 1 || typeof parsed.projectId !== "string" || typeof parsed.files !== "object") {
24
- throw new Error("Invalid Summer Cloud manifest");
25
- }
26
- if (expectedProjectId && parsed.projectId !== expectedProjectId) {
27
- throw new Error("Manifest projectId mismatch");
28
- }
29
- const keys = Object.keys(parsed.files);
30
- for (const path of keys) {
31
- const valid = validateCloudPath(path);
32
- if (!valid.ok)
33
- throw new Error(`Invalid manifest path ${path}: ${valid.reason}`);
34
- }
35
- const collisions = findPathCollisions(keys);
36
- if (collisions.length) {
37
- const first = collisions[0];
38
- throw new Error(`Manifest path collision (${first.kind}): ${first.a} and ${first.b}`);
39
- }
40
- return parsed;
41
- }
@@ -1,20 +0,0 @@
1
- import type { BaseState, CloudBinding, PullJournal } from "./types.js";
2
- export declare function resolveProjectRoot(project?: string): string;
3
- export declare function bindingPath(projectRoot: string): string;
4
- export declare function localCloudDir(projectRoot: string): string;
5
- export declare function basePath(projectRoot: string): string;
6
- export declare function journalPath(projectRoot: string): string;
7
- export declare function hashCachePath(projectRoot: string): string;
8
- export declare function stagingDir(projectRoot: string): string;
9
- export declare function conflictsDir(projectRoot: string): string;
10
- export declare function ensureCloudDirs(projectRoot: string): Promise<void>;
11
- export declare function readBinding(projectRoot: string): Promise<CloudBinding | null>;
12
- export declare function writeBinding(projectRoot: string, binding: CloudBinding): Promise<void>;
13
- export declare function readBase(projectRoot: string): Promise<BaseState | null>;
14
- export declare function writeBase(projectRoot: string, base: BaseState): Promise<void>;
15
- export declare function readJournal(projectRoot: string): Promise<PullJournal | null>;
16
- export declare function writeJournal(projectRoot: string, journal: PullJournal): Promise<void>;
17
- export declare function removeJournal(projectRoot: string): Promise<void>;
18
- export declare function writeJsonAtomic(path: string, value: unknown): Promise<void>;
19
- export declare function projectDisplayName(projectRoot: string): Promise<string>;
20
- export declare function isCloudEnabled(projectRoot: string): boolean;
@@ -1,90 +0,0 @@
1
- import { mkdir, readFile, writeFile } from "fs/promises";
2
- import { existsSync } from "fs";
3
- import { basename, dirname, isAbsolute, join, resolve } from "path";
4
- export function resolveProjectRoot(project) {
5
- return resolve(project ? (isAbsolute(project) ? project : join(process.cwd(), project)) : process.cwd());
6
- }
7
- export function bindingPath(projectRoot) {
8
- return join(projectRoot, "summer-cloud.json");
9
- }
10
- export function localCloudDir(projectRoot) {
11
- return join(projectRoot, ".summer", "local", "cloud");
12
- }
13
- export function basePath(projectRoot) {
14
- return join(localCloudDir(projectRoot), "base.json");
15
- }
16
- export function journalPath(projectRoot) {
17
- return join(localCloudDir(projectRoot), "journal.json");
18
- }
19
- export function hashCachePath(projectRoot) {
20
- return join(localCloudDir(projectRoot), "hash-cache.json");
21
- }
22
- export function stagingDir(projectRoot) {
23
- return join(localCloudDir(projectRoot), "staging");
24
- }
25
- export function conflictsDir(projectRoot) {
26
- return join(localCloudDir(projectRoot), "conflicts");
27
- }
28
- export async function ensureCloudDirs(projectRoot) {
29
- await mkdir(stagingDir(projectRoot), { recursive: true, mode: 0o700 });
30
- await mkdir(conflictsDir(projectRoot), { recursive: true, mode: 0o700 });
31
- }
32
- export async function readBinding(projectRoot) {
33
- try {
34
- return JSON.parse(await readFile(bindingPath(projectRoot), "utf8"));
35
- }
36
- catch {
37
- return null;
38
- }
39
- }
40
- export async function writeBinding(projectRoot, binding) {
41
- await writeJsonAtomic(bindingPath(projectRoot), binding);
42
- }
43
- export async function readBase(projectRoot) {
44
- try {
45
- return JSON.parse(await readFile(basePath(projectRoot), "utf8"));
46
- }
47
- catch {
48
- return null;
49
- }
50
- }
51
- export async function writeBase(projectRoot, base) {
52
- await writeJsonAtomic(basePath(projectRoot), base);
53
- }
54
- export async function readJournal(projectRoot) {
55
- try {
56
- return JSON.parse(await readFile(journalPath(projectRoot), "utf8"));
57
- }
58
- catch {
59
- return null;
60
- }
61
- }
62
- export async function writeJournal(projectRoot, journal) {
63
- await writeJsonAtomic(journalPath(projectRoot), journal);
64
- }
65
- export async function removeJournal(projectRoot) {
66
- const { rm } = await import("fs/promises");
67
- await rm(journalPath(projectRoot), { force: true });
68
- }
69
- export async function writeJsonAtomic(path, value) {
70
- await mkdir(dirname(path), { recursive: true, mode: 0o700 });
71
- const tmp = `${path}.${process.pid}.${Date.now()}.tmp`;
72
- await writeFile(tmp, `${JSON.stringify(value, null, 2)}\n`, { encoding: "utf8", mode: 0o600 });
73
- const { rename } = await import("fs/promises");
74
- await rename(tmp, path);
75
- }
76
- export async function projectDisplayName(projectRoot) {
77
- try {
78
- const projectGodot = await readFile(join(projectRoot, "project.godot"), "utf8");
79
- const match = projectGodot.match(/^\s*config\/name\s*=\s*"([^"]+)"/m);
80
- if (match?.[1])
81
- return match[1];
82
- }
83
- catch {
84
- // Fall back to folder name.
85
- }
86
- return basename(projectRoot) || "Summer Project";
87
- }
88
- export function isCloudEnabled(projectRoot) {
89
- return existsSync(bindingPath(projectRoot));
90
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * Section+key 3-way merge for project.godot (spec 10.2). ConfigFile semantics:
3
- * keys added on either side are unioned; a key deleted on one side and
4
- * unchanged on the other stays deleted (a naive union would resurrect deleted
5
- * autoloads); keys changed on both sides take the CAS winner's (remote) value
6
- * and the losing value is surfaced in the sync notice. config_version comes
7
- * from the winner. Values can span multiple lines (Object(InputEventKey, ...))
8
- * so parsing uses a balanced-delimiter tokenizer, not line splitting.
9
- */
10
- export interface ParsedConfig {
11
- /** Section name ("" for the top section) to ordered key/value text map. */
12
- sections: Map<string, Map<string, string>>;
13
- /** Section order as encountered. */
14
- order: string[];
15
- }
16
- export declare class ConfigParseError extends Error {
17
- }
18
- export declare function parseGodotConfig(text: string): ParsedConfig;
19
- export declare function serializeGodotConfig(config: ParsedConfig): string;
20
- export interface GodotMergeResult {
21
- ok: boolean;
22
- merged: string;
23
- /** Both-changed keys where the remote value won; notices for the sync result. */
24
- losingValues: Array<{
25
- section: string;
26
- key: string;
27
- localValue: string;
28
- }>;
29
- /** Parse failure on any input: whole-file remote-wins fallback. */
30
- fallback: boolean;
31
- }
32
- export declare function mergeProjectGodot(baseText: string, localText: string, remoteText: string): GodotMergeResult;
@@ -1,185 +0,0 @@
1
- /**
2
- * Section+key 3-way merge for project.godot (spec 10.2). ConfigFile semantics:
3
- * keys added on either side are unioned; a key deleted on one side and
4
- * unchanged on the other stays deleted (a naive union would resurrect deleted
5
- * autoloads); keys changed on both sides take the CAS winner's (remote) value
6
- * and the losing value is surfaced in the sync notice. config_version comes
7
- * from the winner. Values can span multiple lines (Object(InputEventKey, ...))
8
- * so parsing uses a balanced-delimiter tokenizer, not line splitting.
9
- */
10
- export class ConfigParseError extends Error {
11
- }
12
- export function parseGodotConfig(text) {
13
- const sections = new Map();
14
- const order = [];
15
- let current = "";
16
- ensureSection(sections, order, current);
17
- let i = 0;
18
- const len = text.length;
19
- while (i < len) {
20
- // Skip whitespace and blank lines.
21
- while (i < len && (text[i] === " " || text[i] === "\t" || text[i] === "\r" || text[i] === "\n"))
22
- i += 1;
23
- if (i >= len)
24
- break;
25
- const ch = text[i];
26
- if (ch === ";" || ch === "#") {
27
- while (i < len && text[i] !== "\n")
28
- i += 1;
29
- continue;
30
- }
31
- if (ch === "[") {
32
- const close = text.indexOf("]", i);
33
- if (close === -1)
34
- throw new ConfigParseError("Unterminated section header");
35
- current = text.slice(i + 1, close).trim();
36
- ensureSection(sections, order, current);
37
- i = close + 1;
38
- continue;
39
- }
40
- // key=value. Key runs to the first unquoted '='.
41
- const eq = text.indexOf("=", i);
42
- const lineEnd = text.indexOf("\n", i);
43
- if (eq === -1 || (lineEnd !== -1 && lineEnd < eq)) {
44
- throw new ConfigParseError(`Expected key=value near offset ${i}`);
45
- }
46
- const key = text.slice(i, eq).trim();
47
- if (!key)
48
- throw new ConfigParseError(`Empty key near offset ${i}`);
49
- i = eq + 1;
50
- const { value, next } = readValue(text, i);
51
- sections.get(current).set(key, value.trim());
52
- i = next;
53
- }
54
- return { sections, order };
55
- }
56
- /**
57
- * Reads a Variant value starting at `start`, consuming across newlines while
58
- * any parenthesis, bracket, or brace is unbalanced or a string is open.
59
- */
60
- function readValue(text, start) {
61
- let depth = 0;
62
- let inString = false;
63
- let i = start;
64
- const len = text.length;
65
- while (i < len) {
66
- const ch = text[i];
67
- if (inString) {
68
- if (ch === "\\") {
69
- i += 2;
70
- continue;
71
- }
72
- if (ch === '"')
73
- inString = false;
74
- i += 1;
75
- continue;
76
- }
77
- if (ch === '"') {
78
- inString = true;
79
- i += 1;
80
- continue;
81
- }
82
- if (ch === "(" || ch === "[" || ch === "{")
83
- depth += 1;
84
- else if (ch === ")" || ch === "]" || ch === "}") {
85
- depth -= 1;
86
- if (depth < 0)
87
- throw new ConfigParseError(`Unbalanced delimiter at offset ${i}`);
88
- }
89
- else if (ch === "\n" && depth === 0) {
90
- return { value: text.slice(start, i), next: i + 1 };
91
- }
92
- i += 1;
93
- }
94
- if (inString || depth > 0)
95
- throw new ConfigParseError("Unterminated value");
96
- return { value: text.slice(start, i), next: i };
97
- }
98
- function ensureSection(sections, order, name) {
99
- if (!sections.has(name)) {
100
- sections.set(name, new Map());
101
- order.push(name);
102
- }
103
- }
104
- export function serializeGodotConfig(config) {
105
- const parts = [];
106
- for (const name of config.order) {
107
- const entries = config.sections.get(name);
108
- if (!entries || entries.size === 0) {
109
- if (name === "")
110
- continue;
111
- }
112
- if (name !== "") {
113
- parts.push(`[${name}]`);
114
- parts.push("");
115
- }
116
- for (const [key, value] of entries ?? []) {
117
- parts.push(`${key}=${value}`);
118
- }
119
- parts.push("");
120
- }
121
- return `${parts.join("\n").replace(/\n+$/, "")}\n`;
122
- }
123
- export function mergeProjectGodot(baseText, localText, remoteText) {
124
- let base;
125
- let local;
126
- let remote;
127
- try {
128
- base = parseGodotConfig(baseText);
129
- local = parseGodotConfig(localText);
130
- remote = parseGodotConfig(remoteText);
131
- }
132
- catch {
133
- // Parse failure on any of the three inputs: fall back to whole-file
134
- // remote-wins; the caller writes the local bytes as a conflict copy.
135
- return { ok: true, merged: remoteText, losingValues: [], fallback: true };
136
- }
137
- const merged = { sections: new Map(), order: [] };
138
- const losingValues = [];
139
- const sectionNames = [];
140
- for (const name of [...remote.order, ...local.order, ...base.order]) {
141
- if (!sectionNames.includes(name))
142
- sectionNames.push(name);
143
- }
144
- for (const section of sectionNames) {
145
- const b = base.sections.get(section) ?? new Map();
146
- const l = local.sections.get(section) ?? new Map();
147
- const r = remote.sections.get(section) ?? new Map();
148
- const keys = [];
149
- for (const key of [...r.keys(), ...l.keys(), ...b.keys()]) {
150
- if (!keys.includes(key))
151
- keys.push(key);
152
- }
153
- const out = new Map();
154
- for (const key of keys) {
155
- const bv = b.get(key);
156
- const lv = l.get(key);
157
- const rv = r.get(key);
158
- const resolved = mergeKey(bv, lv, rv);
159
- if (resolved.losing !== undefined) {
160
- losingValues.push({ section, key, localValue: resolved.losing });
161
- }
162
- if (resolved.value !== undefined)
163
- out.set(key, resolved.value);
164
- }
165
- if (out.size > 0 || section === "") {
166
- merged.sections.set(section, out);
167
- merged.order.push(section);
168
- }
169
- }
170
- return { ok: true, merged: serializeGodotConfig(merged), losingValues, fallback: false };
171
- }
172
- function mergeKey(base, local, remote) {
173
- if (local === remote)
174
- return { value: local };
175
- const localChanged = local !== base;
176
- const remoteChanged = remote !== base;
177
- if (localChanged && !remoteChanged)
178
- return { value: local };
179
- if (remoteChanged && !localChanged)
180
- return { value: remote };
181
- // Changed on both sides (including delete vs change): the CAS winner's
182
- // (remote) value wins at key granularity; deletion on the remote side wins
183
- // too. The losing local value is surfaced.
184
- return { value: remote, losing: local ?? "(deleted locally)" };
185
- }
@@ -1,39 +0,0 @@
1
- /**
2
- * Tracked-set rules (spec section 13). Full-project sync, single mode.
3
- * Hard excludes cannot be re-included; .summercloudignore can only exclude
4
- * further. The built-in rule set carries RULES_VERSION; manifests record the
5
- * rulesVersion that produced them so stale clients can operate restricted.
6
- */
7
- export declare const RULES_VERSION = 1;
8
- export declare function isHardExcludedDir(relPath: string, name: string): boolean;
9
- /**
10
- * Hard-excluded files. `siblings` is the set of basenames in the same
11
- * directory, used to detect Godot safe-save temps (name-XXXXXX with the base
12
- * file present).
13
- */
14
- export declare function isHardExcludedFile(relPath: string, name: string, siblings: ReadonlySet<string>): boolean;
15
- /** Godot safe-save writes `name-XXXXXX` (six trailing random chars) next to `name`. */
16
- export declare function isGodotSafeSaveTemp(name: string, siblings: ReadonlySet<string>): boolean;
17
- /** True when a manifest key falls under the built-in hard excludes. */
18
- export declare function isHardExcludedPath(path: string): boolean;
19
- export interface IgnoreRule {
20
- raw: string;
21
- /** Trailing slash: matches directories (and everything under them). */
22
- directory: boolean;
23
- /** Leading slash: anchored to the project root. */
24
- anchored: boolean;
25
- regex: RegExp;
26
- }
27
- export interface TrackedRules {
28
- rulesVersion: number;
29
- ignore: IgnoreRule[];
30
- }
31
- export declare function loadTrackedRules(projectRoot: string): Promise<TrackedRules>;
32
- export declare function parseIgnoreRules(raw: string): IgnoreRule[];
33
- export declare function isIgnoredByRules(path: string, isDirectory: boolean, rules: TrackedRules): boolean;
34
- /**
35
- * Deletion semantics (spec 13): a path may be marked deleted only if it
36
- * matches the CURRENT tracked rules AND is absent on disk. Paths that merely
37
- * stopped matching rules are carried forward unchanged.
38
- */
39
- export declare function isTrackedByCurrentRules(path: string, rules: TrackedRules): boolean;