summer-engine 2.8.2 → 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 +131 -44
  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 +138 -24
  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/library/skills/host-authoritative-state/resource.yaml +28 -0
  367. package/{skills/2d-assets → library/skills}/instantiate-asset-pack/SKILL.md +10 -12
  368. package/library/skills/instantiate-asset-pack/resource.yaml +29 -0
  369. package/{skills/workflow → library/skills}/investigating-bugs/SKILL.md +4 -4
  370. package/{skills/workflow → library/skills}/investigating-bugs/condition-based-waiting.md +8 -8
  371. package/library/skills/investigating-bugs/resource.yaml +24 -0
  372. package/{skills/workflow → library/skills}/investigating-bugs/root-cause-tracing.md +1 -7
  373. package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +164 -0
  374. package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +35 -0
  375. package/{skills/scene-and-project → library/skills}/make-game/SKILL.md +22 -22
  376. package/library/skills/make-game/resource.yaml +35 -0
  377. package/library/skills/music-track/resource.yaml +28 -0
  378. package/library/skills/navigate-summer/SKILL.md +61 -0
  379. package/library/skills/navigate-summer/resource.yaml +35 -0
  380. package/{skills/scene-and-project → library/skills}/new-project/SKILL.md +10 -10
  381. package/library/skills/new-project/resource.yaml +28 -0
  382. package/{skills/3d-assets → library/skills}/organic-model/SKILL.md +16 -16
  383. package/library/skills/organic-model/resource.yaml +32 -0
  384. package/{skills/multiplayer-and-networking → library/skills}/peer-to-peer-multiplayer/SKILL.md +2 -2
  385. package/library/skills/peer-to-peer-multiplayer/resource.yaml +28 -0
  386. package/{skills/2d-assets → library/skills}/pixel-art/SKILL.md +13 -13
  387. package/library/skills/pixel-art/resource.yaml +31 -0
  388. package/library/skills/play/resource.yaml +26 -0
  389. package/{skills/workflow → library/skills}/playtesting-a-feature/SKILL.md +41 -22
  390. package/library/skills/playtesting-a-feature/resource.yaml +31 -0
  391. package/{skills/animation → library/skills}/procedural-animation/SKILL.md +25 -10
  392. package/library/skills/procedural-animation/resource.yaml +33 -0
  393. package/{skills/3d-assets → library/skills}/prop-model/SKILL.md +13 -13
  394. package/library/skills/prop-model/resource.yaml +33 -0
  395. package/library/skills/psx-retro-rendering/SKILL.md +416 -0
  396. package/library/skills/psx-retro-rendering/resource.yaml +36 -0
  397. package/library/skills/realtime-wet-surfaces/SKILL.md +189 -0
  398. package/library/skills/realtime-wet-surfaces/resource.yaml +31 -0
  399. package/{skills/deployment → library/skills}/remote-deploy/SKILL.md +3 -3
  400. package/library/skills/remote-deploy/resource.yaml +23 -0
  401. package/{skills/animation → library/skills}/retarget/SKILL.md +15 -14
  402. package/library/skills/retarget/resource.yaml +33 -0
  403. package/library/skills/running-in-the-cloud/SKILL.md +103 -0
  404. package/library/skills/running-in-the-cloud/resource.yaml +33 -0
  405. package/{skills/scene-and-project → library/skills}/scene-composition/SKILL.md +8 -0
  406. package/library/skills/scene-composition/resource.yaml +27 -0
  407. package/library/skills/scene-hierarchy-design/SKILL.md +102 -0
  408. package/library/skills/scene-hierarchy-design/resource.yaml +31 -0
  409. package/library/skills/scene-scripting/SKILL.md +764 -0
  410. package/library/skills/scene-scripting/resource.yaml +58 -0
  411. package/{skills/level-design → library/skills}/scene-to-level/SKILL.md +16 -17
  412. package/library/skills/scene-to-level/resource.yaml +33 -0
  413. package/library/skills/setup-multiplayer/resource.yaml +28 -0
  414. package/library/skills/skill-create/SKILL.md +138 -0
  415. package/library/skills/skill-create/resource.yaml +25 -0
  416. package/{skills/workflow → library/skills}/skill-improve/SKILL.md +2 -2
  417. package/library/skills/skill-improve/resource.yaml +25 -0
  418. package/{skills/workflow → library/skills}/skill-test/SKILL.md +4 -4
  419. package/library/skills/skill-test/resource.yaml +26 -0
  420. package/library/skills/skintokens-auto-rigging/SKILL.md +200 -0
  421. package/library/skills/skintokens-auto-rigging/resource.yaml +38 -0
  422. package/{skills/2d-assets → library/skills}/skybox-panorama/SKILL.md +8 -8
  423. package/library/skills/skybox-panorama/resource.yaml +28 -0
  424. package/{skills/audio → library/skills}/sound-effect/SKILL.md +2 -2
  425. package/library/skills/sound-effect/resource.yaml +27 -0
  426. package/library/skills/spatial-placement/SKILL.md +74 -0
  427. package/library/skills/spatial-placement/resource.yaml +42 -0
  428. package/library/skills/spatial-placement/tests/spec.md +65 -0
  429. package/{skills/2d-assets → library/skills}/sprite-sheet/SKILL.md +12 -12
  430. package/library/skills/sprite-sheet/resource.yaml +32 -0
  431. package/{skills/2d-assets → library/skills}/tileable-texture/SKILL.md +9 -9
  432. package/library/skills/tileable-texture/resource.yaml +31 -0
  433. package/{skills/video → library/skills}/trailer-shot/SKILL.md +1 -1
  434. package/library/skills/trailer-shot/resource.yaml +27 -0
  435. package/{skills/performance → library/skills}/tune-performance/SKILL.md +6 -6
  436. package/library/skills/tune-performance/resource.yaml +31 -0
  437. package/library/skills/ui-basics/resource.yaml +25 -0
  438. package/{skills/2d-assets → library/skills}/ui-graphics/SKILL.md +11 -11
  439. package/library/skills/ui-graphics/resource.yaml +29 -0
  440. package/{skills/2d-assets → library/skills}/use-widget-asset/SKILL.md +4 -4
  441. package/library/skills/use-widget-asset/resource.yaml +29 -0
  442. package/{skills/workflow → library/skills}/using-summer/SKILL.md +12 -9
  443. package/library/skills/using-summer/resource.yaml +41 -0
  444. package/{skills/3d-assets → library/skills}/vehicle-model/SKILL.md +18 -18
  445. package/library/skills/vehicle-model/resource.yaml +34 -0
  446. package/{skills/workflow → library/skills}/verification-before-completion/SKILL.md +10 -10
  447. package/library/skills/verification-before-completion/resource.yaml +23 -0
  448. package/library/skills/verifying-scenes/SKILL.md +98 -0
  449. package/library/skills/verifying-scenes/resource.yaml +42 -0
  450. package/{skills/visual-effects/recipes/dissolve → library/skills/vfx-dissolve}/SKILL.md +31 -11
  451. package/library/skills/vfx-dissolve/resource.yaml +33 -0
  452. package/{skills/visual-effects/recipes/fire → library/skills/vfx-fire}/SKILL.md +43 -12
  453. package/library/skills/vfx-fire/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
  454. package/library/skills/vfx-fire/resource.yaml +35 -0
  455. package/{skills/visual-effects/recipes/hit-spark → library/skills/vfx-hit-spark}/SKILL.md +16 -10
  456. package/library/skills/vfx-hit-spark/_building-blocks/additive-billboard-particles.md +37 -0
  457. package/library/skills/vfx-hit-spark/resource.yaml +34 -0
  458. package/{skills/visual-effects/recipes/lightning → library/skills/vfx-lightning}/SKILL.md +24 -11
  459. package/library/skills/vfx-lightning/_building-blocks/additive-billboard-particles.md +37 -0
  460. package/library/skills/vfx-lightning/resource.yaml +33 -0
  461. package/{skills/visual-effects/recipes/magic-glow → library/skills/vfx-magic-glow}/SKILL.md +31 -11
  462. package/library/skills/vfx-magic-glow/_building-blocks/additive-billboard-particles.md +37 -0
  463. package/library/skills/vfx-magic-glow/resource.yaml +34 -0
  464. package/{skills/visual-effects/recipes/muzzle-flash → library/skills/vfx-muzzle-flash}/SKILL.md +29 -9
  465. package/library/skills/vfx-muzzle-flash/_building-blocks/additive-billboard-particles.md +37 -0
  466. package/library/skills/vfx-muzzle-flash/_building-blocks/trauma-shake-snippet.md +53 -0
  467. package/library/skills/vfx-muzzle-flash/resource.yaml +35 -0
  468. package/{skills/visual-effects/recipes/smoke → library/skills/vfx-smoke}/SKILL.md +35 -9
  469. package/library/skills/vfx-smoke/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
  470. package/library/skills/vfx-smoke/resource.yaml +32 -0
  471. package/{skills/visual-effects/recipes/water-ripple → library/skills/vfx-water-ripple}/SKILL.md +31 -9
  472. package/library/skills/vfx-water-ripple/_building-blocks/additive-billboard-particles.md +37 -0
  473. package/library/skills/vfx-water-ripple/resource.yaml +31 -0
  474. package/library/skills/voice-line/resource.yaml +27 -0
  475. package/library/skills/world-building-3d/SKILL.md +105 -0
  476. package/library/skills/world-building-3d/references/spatial-tools.md +50 -0
  477. package/library/skills/world-building-3d/resource.yaml +44 -0
  478. package/library/skills/world-building-3d/tests/spec.md +48 -0
  479. package/{skills/workflow → library/skills}/writing-plans/SKILL.md +19 -14
  480. package/library/skills/writing-plans/resource.yaml +23 -0
  481. package/{skills/workflow → library/skills}/writing-skills/SKILL.md +38 -44
  482. package/library/skills/writing-skills/resource.yaml +29 -0
  483. package/{skills/workflow → library/skills}/writing-skills/testing-skills-with-subagents.md +13 -14
  484. package/library/templates/2d-brario-platformer/resource.yaml +21 -0
  485. package/library/templates/2d-dungeon-roguelike/resource.yaml +23 -0
  486. package/library/templates/2d-grid-puzzle/resource.yaml +21 -0
  487. package/library/templates/2d-plants-and-zombies-tower-defense/resource.yaml +21 -0
  488. package/library/templates/2d-platformer/resource.yaml +24 -0
  489. package/library/templates/2d-rpg/resource.yaml +21 -0
  490. package/library/templates/2d-vampire-survivor-roguelike/resource.yaml +21 -0
  491. package/library/templates/3d-basic/resource.yaml +16 -0
  492. package/library/templates/3d-city-kit/resource.yaml +24 -0
  493. package/library/templates/3d-fps-old-school/resource.yaml +21 -0
  494. package/library/templates/3d-fps-simple-animated-npc/resource.yaml +21 -0
  495. package/library/templates/3d-lan-multiplayer-starter/resource.yaml +22 -0
  496. package/library/templates/3d-open-world-explore-tps/resource.yaml +21 -0
  497. package/library/templates/3d-procedural-road-world/resource.yaml +21 -0
  498. package/library/templates/3d-racing-game/resource.yaml +21 -0
  499. package/library/templates/3d-royale-clash-type/resource.yaml +21 -0
  500. package/library/templates/3d-third-person-controller/resource.yaml +21 -0
  501. package/library/templates/3d-voxel-sandbox/resource.yaml +24 -0
  502. package/library/templates/README.md +94 -0
  503. package/library/templates/empty/resource.yaml +16 -0
  504. package/library/tools/add-node/resource.yaml +60 -0
  505. package/library/tools/align-distribute-3d/resource.yaml +87 -0
  506. package/library/tools/api-docs/resource.yaml +57 -0
  507. package/library/tools/batch/resource.yaml +52 -0
  508. package/library/tools/camera-bookmark/resource.yaml +73 -0
  509. package/library/tools/check-job/resource.yaml +45 -0
  510. package/library/tools/clear-console/resource.yaml +40 -0
  511. package/library/tools/connect-signal/resource.yaml +63 -0
  512. package/library/tools/create-debug-report/resource.yaml +67 -0
  513. package/library/tools/create-scene/resource.yaml +59 -0
  514. package/library/tools/creator-config/resource.yaml +63 -0
  515. package/library/tools/creator-publish/resource.yaml +73 -0
  516. package/library/tools/creator-releases/resource.yaml +53 -0
  517. package/library/tools/fabricate-3d/resource.yaml +108 -0
  518. package/library/tools/game-control/resource.yaml +84 -0
  519. package/library/tools/game-input/resource.yaml +159 -0
  520. package/library/tools/game-probe/resource.yaml +90 -0
  521. package/library/tools/generate-3d/resource.yaml +112 -0
  522. package/library/tools/generate-audio/resource.yaml +80 -0
  523. package/library/tools/generate-image/resource.yaml +62 -0
  524. package/library/tools/generate-motion/resource.yaml +66 -0
  525. package/library/tools/generate-video/resource.yaml +66 -0
  526. package/library/tools/get-agent-playbook/resource.yaml +40 -0
  527. package/library/tools/get-asset/resource.yaml +42 -0
  528. package/library/tools/get-asset-download-url/resource.yaml +52 -0
  529. package/library/tools/get-console/resource.yaml +69 -0
  530. package/library/tools/get-debugger-errors/resource.yaml +56 -0
  531. package/library/tools/get-debugger-warnings/resource.yaml +52 -0
  532. package/library/tools/get-diagnostics/resource.yaml +42 -0
  533. package/library/tools/get-project-context/resource.yaml +45 -0
  534. package/library/tools/get-runtime-tree/resource.yaml +62 -0
  535. package/library/tools/get-scene-tree/resource.yaml +52 -0
  536. package/library/tools/get-script-errors/resource.yaml +45 -0
  537. package/library/tools/get-studio-workflow/resource.yaml +43 -0
  538. package/library/tools/import-asset/resource.yaml +73 -0
  539. package/library/tools/import-asset-by-id/resource.yaml +56 -0
  540. package/library/tools/import-from-url/resource.yaml +51 -0
  541. package/library/tools/import-from-url-batch/resource.yaml +60 -0
  542. package/library/tools/import-hdri/resource.yaml +69 -0
  543. package/library/tools/input-map-bind/resource.yaml +52 -0
  544. package/library/tools/inspect-node/resource.yaml +46 -0
  545. package/library/tools/inspect-resource/resource.yaml +45 -0
  546. package/library/tools/inspect-runtime-node/resource.yaml +54 -0
  547. package/library/tools/instantiate-scene/resource.yaml +62 -0
  548. package/library/tools/is-running/resource.yaml +40 -0
  549. package/library/tools/library-feedback/resource.yaml +89 -0
  550. package/library/tools/list-my-assets/resource.yaml +56 -0
  551. package/library/tools/navigation-probe/resource.yaml +85 -0
  552. package/library/tools/open/resource.yaml +80 -0
  553. package/library/tools/open-main-scene/resource.yaml +40 -0
  554. package/library/tools/open-scene/resource.yaml +46 -0
  555. package/library/tools/play/resource.yaml +91 -0
  556. package/library/tools/project-setting/resource.yaml +53 -0
  557. package/library/tools/read-file/resource.yaml +47 -0
  558. package/library/tools/read-library/resource.yaml +67 -0
  559. package/library/tools/recent-events/resource.yaml +71 -0
  560. package/library/tools/remove-node/resource.yaml +51 -0
  561. package/library/tools/replace-node/resource.yaml +57 -0
  562. package/library/tools/replace-text/resource.yaml +61 -0
  563. package/library/tools/run-editor-script/resource.yaml +61 -0
  564. package/library/tools/run-script/resource.yaml +73 -0
  565. package/library/tools/runtime-animate/resource.yaml +140 -0
  566. package/library/tools/runtime-call/resource.yaml +74 -0
  567. package/library/tools/runtime-set/resource.yaml +80 -0
  568. package/library/tools/runtime-spawn/resource.yaml +95 -0
  569. package/library/tools/save-scene/resource.yaml +50 -0
  570. package/library/tools/screenshot/resource.yaml +112 -0
  571. package/library/tools/search-assets/resource.yaml +67 -0
  572. package/library/tools/search-library/resource.yaml +81 -0
  573. package/library/tools/select-node/resource.yaml +48 -0
  574. package/library/tools/set-prop/resource.yaml +64 -0
  575. package/library/tools/set-resource-property/resource.yaml +66 -0
  576. package/library/tools/slice-asset-sheet/resource.yaml +47 -0
  577. package/library/tools/snap-to-surface/resource.yaml +90 -0
  578. package/library/tools/snapshot-diff/resource.yaml +58 -0
  579. package/library/tools/starcast/resource.yaml +120 -0
  580. package/library/tools/start-game-task/resource.yaml +91 -0
  581. package/library/tools/stop/resource.yaml +51 -0
  582. package/library/tools/test-placement/resource.yaml +109 -0
  583. package/library/tools/ui-actions/resource.yaml +77 -0
  584. package/library/tools/ui-activate/resource.yaml +88 -0
  585. package/library/tools/ui-screenshot/resource.yaml +63 -0
  586. package/library/tools/ui-tree/resource.yaml +69 -0
  587. package/library/tools/wait-for-event/resource.yaml +84 -0
  588. package/library/tools/world-snapshot/resource.yaml +60 -0
  589. package/library/tools/write-file/resource.yaml +54 -0
  590. package/package.json +22 -16
  591. package/registry/generated/aliases.json +207 -0
  592. package/registry/generated/counts.json +12 -0
  593. package/registry/generated/gemini-extension.json +122 -0
  594. package/registry/generated/index.json +7709 -0
  595. package/registry/generated/marketplace.claude.json +44 -0
  596. package/registry/generated/mcp.json +13 -0
  597. package/registry/generated/plugin.claude.json +135 -0
  598. package/registry/generated/plugin.codex.json +144 -0
  599. package/registry/generated/plugin.cursor.json +134 -0
  600. package/registry/generated/plugin.factory.json +117 -0
  601. package/registry/generated/skills-registry.json +851 -0
  602. package/registry/generated/templates-registry.json +455 -0
  603. package/registry/schemas/allowed-hosts.json +19 -0
  604. package/registry/schemas/collection.schema.json +68 -0
  605. package/registry/schemas/domains.json +96 -0
  606. package/registry/schemas/example.schema.json +11 -0
  607. package/registry/schemas/reference.schema.json +10 -0
  608. package/registry/schemas/resource.schema.json +154 -0
  609. package/registry/schemas/skill.schema.json +14 -0
  610. package/registry/schemas/template.schema.json +46 -0
  611. package/registry/schemas/tool.schema.json +61 -0
  612. package/_persona/summer/SKILL.md +0 -113
  613. package/dist/bin/postinstall.d.ts +0 -2
  614. package/dist/bin/postinstall.js +0 -3
  615. package/dist/commands/cloud.d.ts +0 -2
  616. package/dist/commands/cloud.js +0 -80
  617. package/dist/commands/create.d.ts +0 -3
  618. package/dist/commands/create.js +0 -171
  619. package/dist/commands/install.d.ts +0 -19
  620. package/dist/commands/install.js +0 -194
  621. package/dist/commands/list.js +0 -67
  622. package/dist/commands/logout.js +0 -13
  623. package/dist/commands/logs.d.ts +0 -2
  624. package/dist/commands/logs.js +0 -19
  625. package/dist/commands/open.d.ts +0 -2
  626. package/dist/commands/open.js +0 -32
  627. package/dist/commands/orchestrator.d.ts +0 -8
  628. package/dist/commands/orchestrator.js +0 -143
  629. package/dist/commands/run.d.ts +0 -2
  630. package/dist/commands/run.js +0 -167
  631. package/dist/commands/status.js +0 -46
  632. package/dist/lib/banner.d.ts +0 -4
  633. package/dist/lib/banner.js +0 -122
  634. package/dist/lib/cloud/api.d.ts +0 -79
  635. package/dist/lib/cloud/api.js +0 -107
  636. package/dist/lib/cloud/apply.d.ts +0 -32
  637. package/dist/lib/cloud/apply.js +0 -294
  638. package/dist/lib/cloud/checkpoint.d.ts +0 -26
  639. package/dist/lib/cloud/checkpoint.js +0 -142
  640. package/dist/lib/cloud/conflicts.d.ts +0 -55
  641. package/dist/lib/cloud/conflicts.js +0 -131
  642. package/dist/lib/cloud/containment.d.ts +0 -8
  643. package/dist/lib/cloud/containment.js +0 -52
  644. package/dist/lib/cloud/diff.d.ts +0 -39
  645. package/dist/lib/cloud/diff.js +0 -138
  646. package/dist/lib/cloud/engine-bridge.d.ts +0 -34
  647. package/dist/lib/cloud/engine-bridge.js +0 -139
  648. package/dist/lib/cloud/hash-cache.d.ts +0 -23
  649. package/dist/lib/cloud/hash-cache.js +0 -44
  650. package/dist/lib/cloud/hash.d.ts +0 -10
  651. package/dist/lib/cloud/hash.js +0 -111
  652. package/dist/lib/cloud/http.d.ts +0 -17
  653. package/dist/lib/cloud/http.js +0 -47
  654. package/dist/lib/cloud/lock-path.d.ts +0 -1
  655. package/dist/lib/cloud/lock-path.js +0 -5
  656. package/dist/lib/cloud/lock.d.ts +0 -14
  657. package/dist/lib/cloud/lock.js +0 -143
  658. package/dist/lib/cloud/manifest.d.ts +0 -6
  659. package/dist/lib/cloud/manifest.js +0 -41
  660. package/dist/lib/cloud/paths.d.ts +0 -20
  661. package/dist/lib/cloud/paths.js +0 -90
  662. package/dist/lib/cloud/project-godot-merge.d.ts +0 -32
  663. package/dist/lib/cloud/project-godot-merge.js +0 -185
  664. package/dist/lib/cloud/rules.d.ts +0 -39
  665. package/dist/lib/cloud/rules.js +0 -159
  666. package/dist/lib/cloud/sync.d.ts +0 -21
  667. package/dist/lib/cloud/sync.js +0 -518
  668. package/dist/lib/cloud/transfer.d.ts +0 -23
  669. package/dist/lib/cloud/transfer.js +0 -184
  670. package/dist/lib/cloud/types.d.ts +0 -62
  671. package/dist/lib/cloud/types.js +0 -1
  672. package/dist/lib/cloud/validate-path.d.ts +0 -23
  673. package/dist/lib/cloud/validate-path.js +0 -103
  674. package/dist/lib/engine.d.ts +0 -51
  675. package/dist/lib/game-task-plan.d.ts +0 -42
  676. package/dist/lib/project-memory.d.ts +0 -33
  677. package/dist/lib/public-surface-paths.d.ts +0 -13
  678. package/dist/lib/public-surface-paths.js +0 -42
  679. package/dist/lib/remote-templates.d.ts +0 -25
  680. package/dist/lib/remote-templates.js +0 -86
  681. package/dist/lib/skills-registry.d.ts +0 -572
  682. package/dist/lib/skills-registry.js +0 -1061
  683. package/dist/lib/version-check.d.ts +0 -106
  684. package/dist/mcp/tools/cloud-tools.js +0 -42
  685. package/references/mcp-tools-reference.md +0 -199
  686. package/references/template-registry.md +0 -73
  687. package/skills/README.md +0 -103
  688. package/skills/scene-and-project/summer-cloud/SKILL.md +0 -92
  689. package/skills/workflow/brainstorming/scripts/frame-template.html +0 -214
  690. package/skills/workflow/brainstorming/scripts/helper.js +0 -88
  691. package/skills/workflow/brainstorming/scripts/server.cjs +0 -354
  692. package/skills/workflow/brainstorming/scripts/start-server.sh +0 -148
  693. package/skills/workflow/brainstorming/scripts/stop-server.sh +0 -56
  694. package/skills/workflow/brainstorming/visual-companion.md +0 -287
  695. package/skills/workflow/gameskill/SKILL.md +0 -120
  696. package/skills/workflow/investigating-bugs/CREATION-LOG.md +0 -119
  697. package/skills/workflow/investigating-bugs/condition-based-waiting-example.ts +0 -158
  698. package/skills/workflow/investigating-bugs/find-polluter.sh +0 -63
  699. package/skills/workflow/investigating-bugs/test-academic.md +0 -14
  700. package/skills/workflow/investigating-bugs/test-pressure-1.md +0 -58
  701. package/skills/workflow/investigating-bugs/test-pressure-2.md +0 -68
  702. package/skills/workflow/investigating-bugs/test-pressure-3.md +0 -69
  703. package/skills/workflow/mcpupdate/SKILL.md +0 -134
  704. package/skills/workflow/skill-create/SKILL.md +0 -153
  705. package/skills/workflow/writing-skills/anthropic-best-practices.md +0 -1150
  706. package/skills/workflow/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -189
  707. package/skills/workflow/writing-skills/graphviz-conventions.dot +0 -172
  708. package/skills/workflow/writing-skills/persuasion-principles.md +0 -187
  709. package/skills/workflow/writing-skills/render-graphs.js +0 -168
  710. /package/dist/{commands → cli/commands}/config.d.ts +0 -0
  711. /package/dist/{commands → cli/commands}/debug.d.ts +0 -0
  712. /package/dist/{commands → cli/commands}/list.d.ts +0 -0
  713. /package/dist/{commands → cli/commands}/login.d.ts +0 -0
  714. /package/dist/{commands → cli/commands}/plan.d.ts +0 -0
  715. /package/dist/{commands → cli/commands}/publish.d.ts +0 -0
  716. /package/dist/{commands → cli/commands}/releases.d.ts +0 -0
  717. /package/dist/{commands → cli/commands}/setup.d.ts +0 -0
  718. /package/dist/{commands → cli/commands}/skills.d.ts +0 -0
  719. /package/dist/{lib → core}/log-filters.d.ts +0 -0
  720. /package/dist/{lib → core}/mcp-log.d.ts +0 -0
  721. /package/dist/{lib → core}/store.d.ts +0 -0
  722. /package/dist/{lib → core}/summer-compatibility.d.ts +0 -0
  723. /package/dist/{lib → core}/telemetry.d.ts +0 -0
  724. /package/dist/{lib/mcp-boot-notice.js → mcp/boot-notice.js} +0 -0
  725. /package/dist/{commands/mcp.d.ts → mcp/command.d.ts} +0 -0
  726. /package/{references → library/references/collaborative-protocol}/collaborative-protocol.md +0 -0
  727. /package/{references → library/references/gd-style}/gd-style.md +0 -0
  728. /package/{skills/audio → library/skills}/ambient-bed/SKILL.md +0 -0
  729. /package/{skills/gameplay-mechanics → library/skills}/auto-fire-targeting/SKILL.md +0 -0
  730. /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/SKILL.md +0 -0
  731. /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/reference.md +0 -0
  732. /package/{skills/multiplayer-and-networking → library/skills}/host-authoritative-state/SKILL.md +0 -0
  733. /package/{skills/workflow → library/skills}/investigating-bugs/defense-in-depth.md +0 -0
  734. /package/{skills/audio → library/skills}/music-track/SKILL.md +0 -0
  735. /package/{skills/scene-and-project → library/skills}/play/SKILL.md +0 -0
  736. /package/{skills/multiplayer-and-networking → library/skills}/setup-multiplayer/SKILL.md +0 -0
  737. /package/{skills/ui-and-ux → library/skills}/ui-basics/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
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Poly Haven HDRI import (tool/import-hdri). Shared by the MCP tool
3
+ * (summer_import_hdri) and the CLI dispatcher (`summer tool import-hdri`).
4
+ *
5
+ * Talks to Poly Haven's public API — no key, no Summer account, CC0 catalog —
6
+ * then downloads the chosen .hdr/.exr THROUGH the engine's import pipeline
7
+ * (ImportFromUrl) so the result is a usable res:// texture. Every value read
8
+ * from the API is treated as untrusted data: ids must be slugs, download URLs
9
+ * must point back at Poly Haven over https.
10
+ */
11
+ import { z } from "zod";
12
+ export declare const HDRI_RESOLUTIONS: readonly ["1k", "2k", "4k"];
13
+ export type HdriResolution = (typeof HDRI_RESOLUTIONS)[number];
14
+ /** Refuse downloads above this unless the caller opts in: a 16k .exr is
15
+ * hundreds of MB pulled through the engine on a user's machine. */
16
+ export declare const HDRI_MAX_DOWNLOAD_BYTES: number;
17
+ /**
18
+ * The one input contract for summer_import_hdri, shared by the MCP tool (pass
19
+ * `.shape` to server.tool) and the CLI dispatcher (`summer tool import-hdri`)
20
+ * so an off-ladder resolution is rejected on both faces.
21
+ */
22
+ export declare const importHdriArgsSchema: z.ZodObject<{
23
+ query: z.ZodOptional<z.ZodString>;
24
+ assetId: z.ZodOptional<z.ZodString>;
25
+ resolution: z.ZodDefault<z.ZodEnum<["1k", "2k", "4k"]>>;
26
+ allow_large: z.ZodDefault<z.ZodBoolean>;
27
+ }, "strip", z.ZodTypeAny, {
28
+ resolution: "1k" | "2k" | "4k";
29
+ allow_large: boolean;
30
+ query?: string | undefined;
31
+ assetId?: string | undefined;
32
+ }, {
33
+ query?: string | undefined;
34
+ assetId?: string | undefined;
35
+ resolution?: "1k" | "2k" | "4k" | undefined;
36
+ allow_large?: boolean | undefined;
37
+ }>;
38
+ export interface ImportHdriArgs {
39
+ query?: string;
40
+ assetId?: string;
41
+ resolution?: HdriResolution;
42
+ /** Opt in to files above HDRI_MAX_DOWNLOAD_BYTES. */
43
+ allow_large?: boolean;
44
+ }
45
+ /** The engine surface this capability needs: one ImportFromUrl op. */
46
+ export interface HdriImportEngine {
47
+ executeOps(ops: Record<string, unknown>[]): Promise<unknown>;
48
+ }
49
+ export interface ImportHdriResult {
50
+ success: true;
51
+ assetId: string;
52
+ name?: string;
53
+ resolution: string;
54
+ resolutionNote?: string;
55
+ format: string;
56
+ importedTo: string;
57
+ license: string;
58
+ alternates?: Array<{
59
+ id: string;
60
+ name?: string;
61
+ }>;
62
+ nextStep: string;
63
+ applyScript: string;
64
+ }
65
+ export type ImportHdriErrorCode = "bad_args" | "no_results" | "no_hdri_file" | "file_too_large" | "import_failed" | "hdri_import_failed";
66
+ export declare class ImportHdriError extends Error {
67
+ readonly code: ImportHdriErrorCode;
68
+ readonly hint?: string | undefined;
69
+ constructor(code: ImportHdriErrorCode, message: string, hint?: string | undefined);
70
+ }
71
+ /** Poly Haven asset ids are lowercase slugs. Anything else in an API response
72
+ * is rejected before it can reach a URL or res:// path. */
73
+ export declare function isSafePolyHavenId(id: string): boolean;
74
+ /** Only accept download URLs that point back at Poly Haven over https, with
75
+ * no embedded credentials (https://user:pw@polyhaven.com/... parses to the
76
+ * right hostname but is not a URL we should ever hand to the engine). */
77
+ export declare function isPolyHavenDownloadUrl(rawUrl: string): boolean;
78
+ /**
79
+ * The summer_run_script body that wires an imported HDRI as the sky. Plain
80
+ * GDScript against WorldEnvironment using only the baseline ctx helpers
81
+ * (get_scene_root / set_owner_recursive / report) — `ctx.ensure_environment`
82
+ * is not part of any shipped engine's ctx API and must not be relied on.
83
+ */
84
+ export declare function hdriApplySnippet(importedPath: string): string;
85
+ /**
86
+ * Search (or pick by id), choose a file, import through the engine. Throws
87
+ * ImportHdriError with a stable code for every failure the caller should
88
+ * surface as data; unexpected transport errors propagate as plain Errors.
89
+ */
90
+ export declare function importPolyHavenHdri(args: ImportHdriArgs, engine: () => Promise<HdriImportEngine>): Promise<ImportHdriResult>;
@@ -0,0 +1,250 @@
1
+ /**
2
+ * Poly Haven HDRI import (tool/import-hdri). Shared by the MCP tool
3
+ * (summer_import_hdri) and the CLI dispatcher (`summer tool import-hdri`).
4
+ *
5
+ * Talks to Poly Haven's public API — no key, no Summer account, CC0 catalog —
6
+ * then downloads the chosen .hdr/.exr THROUGH the engine's import pipeline
7
+ * (ImportFromUrl) so the result is a usable res:// texture. Every value read
8
+ * from the API is treated as untrusted data: ids must be slugs, download URLs
9
+ * must point back at Poly Haven over https.
10
+ */
11
+ import { z } from "zod";
12
+ const POLYHAVEN_API_URL = "https://api.polyhaven.com";
13
+ const POLYHAVEN_USER_AGENT = "summer-engine-cli";
14
+ export const HDRI_RESOLUTIONS = ["1k", "2k", "4k"];
15
+ /** Refuse downloads above this unless the caller opts in: a 16k .exr is
16
+ * hundreds of MB pulled through the engine on a user's machine. */
17
+ export const HDRI_MAX_DOWNLOAD_BYTES = 64 * 1024 * 1024;
18
+ /**
19
+ * The one input contract for summer_import_hdri, shared by the MCP tool (pass
20
+ * `.shape` to server.tool) and the CLI dispatcher (`summer tool import-hdri`)
21
+ * so an off-ladder resolution is rejected on both faces.
22
+ */
23
+ export const importHdriArgsSchema = z.object({
24
+ query: z.string().optional(),
25
+ assetId: z.string().optional(),
26
+ resolution: z.enum(HDRI_RESOLUTIONS).default("2k"),
27
+ allow_large: z
28
+ .boolean()
29
+ .default(false)
30
+ .describe(`Allow files above ${HDRI_MAX_DOWNLOAD_BYTES / (1024 * 1024)} MB.`),
31
+ });
32
+ export class ImportHdriError extends Error {
33
+ code;
34
+ hint;
35
+ constructor(code, message, hint) {
36
+ super(message);
37
+ this.code = code;
38
+ this.hint = hint;
39
+ this.name = "ImportHdriError";
40
+ }
41
+ }
42
+ /** Poly Haven asset ids are lowercase slugs. Anything else in an API response
43
+ * is rejected before it can reach a URL or res:// path. */
44
+ export function isSafePolyHavenId(id) {
45
+ return /^[a-z0-9_-]{1,100}$/.test(id);
46
+ }
47
+ /** Only accept download URLs that point back at Poly Haven over https, with
48
+ * no embedded credentials (https://user:pw@polyhaven.com/... parses to the
49
+ * right hostname but is not a URL we should ever hand to the engine). */
50
+ export function isPolyHavenDownloadUrl(rawUrl) {
51
+ try {
52
+ const parsed = new URL(rawUrl);
53
+ return (parsed.protocol === "https:" &&
54
+ parsed.username === "" &&
55
+ parsed.password === "" &&
56
+ (parsed.hostname === "polyhaven.com" ||
57
+ parsed.hostname.endsWith(".polyhaven.com") ||
58
+ parsed.hostname === "polyhaven.org" ||
59
+ parsed.hostname.endsWith(".polyhaven.org")));
60
+ }
61
+ catch {
62
+ return false;
63
+ }
64
+ }
65
+ async function polyHavenGetJson(endpoint) {
66
+ const res = await fetch(`${POLYHAVEN_API_URL}${endpoint}`, {
67
+ headers: { "User-Agent": POLYHAVEN_USER_AGENT },
68
+ signal: AbortSignal.timeout(20_000),
69
+ });
70
+ if (!res.ok) {
71
+ throw new Error(`Poly Haven API request failed (${res.status}) for ${endpoint}`);
72
+ }
73
+ return (await res.json());
74
+ }
75
+ /** The Poly Haven API has no text-search endpoint; /assets?type=hdris returns
76
+ * the full HDRI catalog keyed by id. Score entries against the query terms. */
77
+ function scorePolyHavenEntry(id, entry, terms) {
78
+ const name = typeof entry.name === "string" ? entry.name.toLowerCase() : "";
79
+ const tags = Array.isArray(entry.tags)
80
+ ? entry.tags.filter((tag) => typeof tag === "string").map((tag) => tag.toLowerCase())
81
+ : [];
82
+ const categories = Array.isArray(entry.categories)
83
+ ? entry.categories
84
+ .filter((category) => typeof category === "string")
85
+ .map((category) => category.toLowerCase())
86
+ : [];
87
+ let score = 0;
88
+ for (const term of terms) {
89
+ if (id.includes(term))
90
+ score += 4;
91
+ if (name.includes(term))
92
+ score += 4;
93
+ if (tags.some((tag) => tag === term))
94
+ score += 3;
95
+ else if (tags.some((tag) => tag.includes(term)))
96
+ score += 2;
97
+ if (categories.some((category) => category === term))
98
+ score += 3;
99
+ else if (categories.some((category) => category.includes(term)))
100
+ score += 1;
101
+ }
102
+ return score;
103
+ }
104
+ function pickHdriFile(files, requested) {
105
+ const hdri = files.hdri;
106
+ if (!hdri || typeof hdri !== "object")
107
+ return null;
108
+ // Prefer the requested resolution, then step DOWN, then step up.
109
+ const ladder = ["1k", "2k", "4k", "8k", "16k"];
110
+ const start = ladder.indexOf(requested);
111
+ const candidates = start === -1
112
+ ? ladder
113
+ : [
114
+ ladder[start],
115
+ ...ladder.slice(0, start).reverse(),
116
+ ...ladder.slice(start + 1),
117
+ ];
118
+ for (const resolution of candidates) {
119
+ const byFormat = hdri[resolution];
120
+ if (!byFormat || typeof byFormat !== "object")
121
+ continue;
122
+ for (const format of ["hdr", "exr"]) {
123
+ const file = byFormat[format];
124
+ if (file && typeof file.url === "string" && isPolyHavenDownloadUrl(file.url)) {
125
+ return { resolution, format, url: file.url, size: file.size };
126
+ }
127
+ }
128
+ }
129
+ return null;
130
+ }
131
+ /**
132
+ * The summer_run_script body that wires an imported HDRI as the sky. Plain
133
+ * GDScript against WorldEnvironment using only the baseline ctx helpers
134
+ * (get_scene_root / set_owner_recursive / report) — `ctx.ensure_environment`
135
+ * is not part of any shipped engine's ctx API and must not be relied on.
136
+ */
137
+ export function hdriApplySnippet(importedPath) {
138
+ return [
139
+ "func run(ctx):",
140
+ " var root = ctx.get_scene_root()",
141
+ " var env: WorldEnvironment = null",
142
+ ' var found = root.find_children("*", "WorldEnvironment", true, false)',
143
+ " if found.size() > 0:",
144
+ " env = found[0]",
145
+ " else:",
146
+ " env = WorldEnvironment.new()",
147
+ ' env.name = "WorldEnvironment"',
148
+ " root.add_child(env)",
149
+ " ctx.set_owner_recursive(env)",
150
+ " var e: Environment = env.environment",
151
+ " if e == null:",
152
+ " e = Environment.new()",
153
+ " env.environment = e",
154
+ " var mat := PanoramaSkyMaterial.new()",
155
+ ` mat.panorama = load("${importedPath}")`,
156
+ " var sky := Sky.new()",
157
+ " sky.sky_material = mat",
158
+ " e.background_mode = Environment.BG_SKY",
159
+ " e.sky = sky",
160
+ " e.ambient_light_source = Environment.AMBIENT_SOURCE_BG",
161
+ " e.reflected_light_source = Environment.REFLECTION_SOURCE_BG",
162
+ ` ctx.report("sky", "${importedPath}")`,
163
+ ].join("\n");
164
+ }
165
+ /**
166
+ * Search (or pick by id), choose a file, import through the engine. Throws
167
+ * ImportHdriError with a stable code for every failure the caller should
168
+ * surface as data; unexpected transport errors propagate as plain Errors.
169
+ */
170
+ export async function importPolyHavenHdri(args, engine) {
171
+ const resolution = args.resolution ?? "2k";
172
+ const query = args.query?.trim() ?? "";
173
+ if (!args.assetId && !query) {
174
+ throw new ImportHdriError("bad_args", "Pass query (to search) or assetId (exact Poly Haven id).");
175
+ }
176
+ let chosenId = args.assetId?.trim() ?? "";
177
+ let chosenName;
178
+ let alternates = [];
179
+ if (chosenId) {
180
+ if (!isSafePolyHavenId(chosenId)) {
181
+ throw new ImportHdriError("bad_args", "assetId must be a Poly Haven slug (lowercase letters, digits, _ or -).");
182
+ }
183
+ }
184
+ else {
185
+ const catalog = await polyHavenGetJson("/assets?type=hdris");
186
+ const terms = query
187
+ .toLowerCase()
188
+ .split(/[^a-z0-9]+/)
189
+ .filter((term) => term.length > 1);
190
+ const scored = Object.entries(catalog)
191
+ .filter(([id]) => isSafePolyHavenId(id))
192
+ .map(([id, entry]) => ({
193
+ id,
194
+ entry,
195
+ score: scorePolyHavenEntry(id, entry ?? {}, terms),
196
+ }))
197
+ .filter((candidate) => candidate.score > 0)
198
+ .sort((a, b) => b.score - a.score);
199
+ if (scored.length === 0) {
200
+ throw new ImportHdriError("no_results", `No Poly Haven HDRI matched "${query}". Try broader terms like 'sunset', 'studio', 'night', 'forest'.`);
201
+ }
202
+ chosenId = scored[0].id;
203
+ chosenName =
204
+ typeof scored[0].entry?.name === "string" ? scored[0].entry.name : undefined;
205
+ alternates = scored.slice(1, 5).map((candidate) => ({
206
+ id: candidate.id,
207
+ name: typeof candidate.entry?.name === "string" ? candidate.entry.name : undefined,
208
+ }));
209
+ }
210
+ const files = await polyHavenGetJson(`/files/${encodeURIComponent(chosenId)}`);
211
+ const file = pickHdriFile(files, resolution);
212
+ if (!file) {
213
+ throw new ImportHdriError("no_hdri_file", `Poly Haven asset "${chosenId}" has no downloadable .hdr/.exr — is it an HDRI id?`);
214
+ }
215
+ if (typeof file.size === "number" &&
216
+ file.size > HDRI_MAX_DOWNLOAD_BYTES &&
217
+ args.allow_large !== true) {
218
+ const mb = (bytes) => (bytes / (1024 * 1024)).toFixed(1);
219
+ throw new ImportHdriError("file_too_large", `Poly Haven "${chosenId}" at ${file.resolution} is ${mb(file.size)} MB, above the ` +
220
+ `${mb(HDRI_MAX_DOWNLOAD_BYTES)} MB ceiling for an engine-side download.`, "Pick a lower resolution, or pass allow_large:true to download it anyway.");
221
+ }
222
+ const importedPath = `res://sky/${chosenId}_${file.resolution}.${file.format}`;
223
+ const client = await engine();
224
+ const importResult = await client.executeOps([
225
+ { op: "ImportFromUrl", url: file.url, path: importedPath },
226
+ ]);
227
+ const receipts = importResult?.results ?? [];
228
+ const failure = receipts.find((receipt) => receipt?.ok === false);
229
+ if (importResult?.status === "error" || failure) {
230
+ throw new ImportHdriError("import_failed", failure?.error || "Could not import the HDRI. Check engine logs.", "Make sure Summer Engine is running with the project loaded.");
231
+ }
232
+ return {
233
+ success: true,
234
+ assetId: chosenId,
235
+ name: chosenName,
236
+ resolution: file.resolution,
237
+ resolutionNote: file.resolution === resolution
238
+ ? undefined
239
+ : `Requested ${resolution} was not available; imported ${file.resolution} instead.`,
240
+ format: file.format,
241
+ importedTo: importedPath,
242
+ license: "CC0 (Poly Haven) — free for any use, no attribution required.",
243
+ alternates: alternates.length > 0 ? alternates : undefined,
244
+ nextStep: "Wire it into the environment with summer_run_script using this exact script " +
245
+ "(needs an engine with RunSceneScript; on an older engine run the same body through " +
246
+ "summer_run_editor_script), then verify with summer_screenshot framing:\"camera\" " +
247
+ "(preset framings substitute the environment):",
248
+ applyScript: hdriApplySnippet(importedPath),
249
+ };
250
+ }
@@ -0,0 +1,24 @@
1
+ import { z } from "zod";
2
+ /** Shared MCP/CLI image request contract; optional flags preserve omission. */
3
+ export declare const imageGenerationArgsSchema: z.ZodObject<{
4
+ prompt: z.ZodString;
5
+ model: z.ZodDefault<z.ZodString>;
6
+ style: z.ZodDefault<z.ZodString>;
7
+ referenceImageUrl: z.ZodOptional<z.ZodString>;
8
+ removeBackground: z.ZodOptional<z.ZodBoolean>;
9
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ prompt: string;
12
+ model: string;
13
+ style: string;
14
+ options?: Record<string, any> | undefined;
15
+ referenceImageUrl?: string | undefined;
16
+ removeBackground?: boolean | undefined;
17
+ }, {
18
+ prompt: string;
19
+ options?: Record<string, any> | undefined;
20
+ model?: string | undefined;
21
+ style?: string | undefined;
22
+ referenceImageUrl?: string | undefined;
23
+ removeBackground?: boolean | undefined;
24
+ }>;
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ /** Shared MCP/CLI image request contract; optional flags preserve omission. */
3
+ export const imageGenerationArgsSchema = z.object({
4
+ prompt: z.string().describe("Description of the image to generate"),
5
+ model: z
6
+ .string()
7
+ .default("nano-banana-2")
8
+ .describe("Model name or full provider ID"),
9
+ style: z
10
+ .string()
11
+ .default("realistic")
12
+ .describe("Style preset: realistic, cartoon, anime, or 'none' to skip"),
13
+ referenceImageUrl: z
14
+ .string()
15
+ .optional()
16
+ .describe("Source image URL for img2img / edit mode. The prompt describes how to transform this image."),
17
+ removeBackground: z.boolean().optional().describe("Remove the background server-side and return an alpha PNG for sprites, icons, or isolated objects."),
18
+ options: z
19
+ .record(z.any())
20
+ .optional()
21
+ .describe("Provider-specific params (guidance_scale, seed, image_size, negative_prompt, etc.)"),
22
+ });
@@ -0,0 +1,156 @@
1
+ /**
2
+ * `summer open` / `summer_open` — one behavior, two faces (CONTRACT §3).
3
+ *
4
+ * Resolve a target (id, intent phrase, res:// path or summerengine.com path)
5
+ * against the product map (./targets.ts), then either open it — the browser
6
+ * for web targets (through /login?returnUrl= when login is required and the
7
+ * CLI is not logged in), the running Summer Engine via the local API for
8
+ * editor targets — or, with `open: false`, return what would open without
9
+ * opening.
10
+ *
11
+ * Editor targets are FORWARDED, not implemented here: when the engine
12
+ * advertises `capabilities.navigation` the tool sends the one-table op
13
+ * `Navigate { target, ...args }`; on an engine that predates it the few ids the
14
+ * original ops can serve (scene, node, script, file, the three docks) use those
15
+ * ops and everything else answers `engine_lacks_op`. See NAVIGATION-PLAN.md.
16
+ *
17
+ * Both faces call runOpen(); the CLI (tool-dispatch + `summer open`) and the
18
+ * MCP tool (src/mcp/tools/navigation-tools.ts) only differ in how the engine
19
+ * client and the browser launcher are supplied.
20
+ */
21
+ import { z } from "zod";
22
+ import type { EngineCapabilities } from "../../capability-skew.js";
23
+ import { type EditorTargetMeta, type NavParam, type NavSurface, type NavTarget } from "./targets.js";
24
+ export type OpenSurface = "auto" | NavSurface;
25
+ /** The ONE argument shape both faces validate with (mirrors
26
+ * library/tools/open/resource.yaml input_schema; parity-tested). */
27
+ export declare const openArgsShape: {
28
+ target: z.ZodOptional<z.ZodString>;
29
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
30
+ surface: z.ZodOptional<z.ZodEnum<["auto", "web", "editor"]>>;
31
+ open: z.ZodOptional<z.ZodBoolean>;
32
+ };
33
+ export declare const openArgsSchema: z.ZodObject<{
34
+ target: z.ZodOptional<z.ZodString>;
35
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
36
+ surface: z.ZodOptional<z.ZodEnum<["auto", "web", "editor"]>>;
37
+ open: z.ZodOptional<z.ZodBoolean>;
38
+ }, "strict", z.ZodTypeAny, {
39
+ params?: Record<string, string> | undefined;
40
+ target?: string | undefined;
41
+ surface?: "web" | "editor" | "auto" | undefined;
42
+ open?: boolean | undefined;
43
+ }, {
44
+ params?: Record<string, string> | undefined;
45
+ target?: string | undefined;
46
+ surface?: "web" | "editor" | "auto" | undefined;
47
+ open?: boolean | undefined;
48
+ }>;
49
+ export type OpenArgs = z.infer<typeof openArgsSchema>;
50
+ export type OpenAction = "opened" | "printed" | "listed" | "ambiguous" | "unsupported" | "engine_not_running" | "engine_error" | "not_found" | "invalid_params" | "open_failed" | "blocked_origin";
51
+ export interface OpenMatch {
52
+ id: string;
53
+ surface: NavSurface;
54
+ title: string;
55
+ score: number;
56
+ }
57
+ export type EditorAvailability = "available" | "legacy" | "unavailable" | "unknown";
58
+ export interface OpenTargetSummary {
59
+ id: string;
60
+ surface: NavSurface;
61
+ title: string;
62
+ description: string;
63
+ requires: NavTarget["requires"];
64
+ params?: readonly NavParam[];
65
+ /** Editor rows: whether the connected engine can open it. `legacy` = served by
66
+ * a pre-Navigate op; `unknown` = engine not reachable when listing. */
67
+ availability?: EditorAvailability;
68
+ }
69
+ export interface OpenResult {
70
+ ok: boolean;
71
+ action: OpenAction;
72
+ target?: OpenTargetSummary;
73
+ /** Web: the destination URL. */
74
+ url?: string;
75
+ /** Web: the login deep link when the target requires login. */
76
+ login_url?: string;
77
+ /** Web: whether this CLI holds a Summer login token (a hint; the browser may still ask). */
78
+ logged_in?: boolean;
79
+ /** Web: the URL actually launched (url or login_url). */
80
+ opened_url?: string;
81
+ /** Web: the path was not in the map but is on an allowed origin. */
82
+ unmapped?: boolean;
83
+ /** Editor: the op that was (or would be) sent. */
84
+ op?: Record<string, unknown>;
85
+ /** Editor: engine state. */
86
+ engine?: {
87
+ running: boolean;
88
+ version?: string;
89
+ navigation?: boolean;
90
+ error?: string;
91
+ };
92
+ /** Editor: the raw engine receipt on success. */
93
+ receipt?: unknown;
94
+ /** Structured failure class for ok:false results (engine_lacks_op, …). */
95
+ failure_reason?: string;
96
+ matches?: OpenMatch[];
97
+ targets?: OpenTargetSummary[];
98
+ hint?: string;
99
+ }
100
+ /** The slice of the engine client the tool needs (EngineApiClient satisfies it). */
101
+ export interface OpenEngineClient {
102
+ executeOps(ops: Array<Record<string, unknown>>): Promise<unknown>;
103
+ getProjectState(prefix?: string): Promise<unknown>;
104
+ getEngineVersion?(): string | undefined;
105
+ getEngineCapabilities?(): EngineCapabilities | undefined;
106
+ }
107
+ export interface OpenDeps {
108
+ /** Connect to the running engine; MUST throw when it is not reachable. */
109
+ engine(): Promise<OpenEngineClient>;
110
+ openUrl(url: string): Promise<unknown>;
111
+ isLoggedIn(): Promise<boolean>;
112
+ gatewayUrl(): Promise<string>;
113
+ docsOrigin?: string;
114
+ }
115
+ /** The only origins this tool ever opens a browser on: summerengine.com and its
116
+ * subdomains, plus loopback for local web development. A configured gateway
117
+ * (SUMMER_GATEWAY_URL / gateway.url) that points anywhere else is refused —
118
+ * the API calls may go there, a browser launch never does. */
119
+ export declare function isAllowedNavigationOrigin(origin: string): boolean;
120
+ /** A project resource path the engine may be asked to open: `res://` plus a
121
+ * plain relative path — no parent segments, no backslashes, no percent
122
+ * escapes, nothing that could name a file outside the project. Returns the
123
+ * problem, or null when the path is acceptable. */
124
+ export declare function resPathProblem(value: string): string | null;
125
+ export declare function tokenize(text: string): string[];
126
+ /** Rank every target for a free-text query. Exported for tests. */
127
+ export declare function rankTargets(query: string, surface?: OpenSurface): OpenMatch[];
128
+ type Resolution = {
129
+ kind: "target";
130
+ target: NavTarget;
131
+ params: Record<string, string>;
132
+ } | {
133
+ kind: "url";
134
+ url: string;
135
+ } | {
136
+ kind: "ambiguous";
137
+ matches: OpenMatch[];
138
+ } | {
139
+ kind: "not_found";
140
+ matches: OpenMatch[];
141
+ hint: string;
142
+ };
143
+ export declare function unsafeRedirectParam(pathWithQuery: string): string | null;
144
+ export declare function resolveTarget(rawTarget: string, params: Record<string, string>, surface: OpenSurface): Resolution;
145
+ /** Fill a web path template. `{slot}` required, `[/{slot}]` optional. */
146
+ export declare function renderWebPath(template: string, params: Record<string, string>, declared?: readonly NavParam[]): string;
147
+ /** The one-table op: Navigate { target, ...args }. */
148
+ export declare function buildNavigateOp(meta: EditorTargetMeta, params: Record<string, string>): Record<string, unknown>;
149
+ /** The pre-Navigate op for engines that predate the table (only some rows have one). */
150
+ export declare function buildLegacyOp(meta: EditorTargetMeta, params: Record<string, string>): Record<string, unknown> | null;
151
+ /** Which ids the connected engine can open. undefined = engine predates the advert. */
152
+ export declare function advertisedNavigation(client: OpenEngineClient): Set<string> | undefined;
153
+ export declare function editorAvailability(meta: EditorTargetMeta, advertised: Set<string> | undefined): EditorAvailability;
154
+ export declare function listTargets(surface?: OpenSurface, advertised?: Set<string> | undefined | "unknown"): OpenTargetSummary[];
155
+ export declare function runOpen(args: OpenArgs, deps: OpenDeps): Promise<OpenResult>;
156
+ export {};