@playdrop/playdrop-cli 0.16.16 → 0.17.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 (363) hide show
  1. package/config/client-meta.json +4 -4
  2. package/dist/apiClient.d.ts +1 -2
  3. package/dist/apiClient.js +1 -16
  4. package/dist/appUrls.js +4 -0
  5. package/dist/apps/build.d.ts +12 -4
  6. package/dist/apps/build.js +55 -22
  7. package/dist/apps/index.d.ts +2 -1
  8. package/dist/apps/index.js +4 -1
  9. package/dist/apps/loadCheck.d.ts +5 -1
  10. package/dist/apps/loadCheck.js +52 -18
  11. package/dist/apps/serverBuild.d.ts +17 -0
  12. package/dist/apps/serverBuild.js +155 -0
  13. package/dist/apps/staticHtml.d.ts +1 -0
  14. package/dist/apps/staticHtml.js +19 -10
  15. package/dist/apps/upload.d.ts +12 -2
  16. package/dist/apps/upload.js +127 -46
  17. package/dist/catalogue.d.ts +23 -1
  18. package/dist/catalogue.js +126 -100
  19. package/dist/commandContext.d.ts +6 -3
  20. package/dist/commandContext.js +108 -18
  21. package/dist/commands/build.js +0 -7
  22. package/dist/commands/captureListing.d.ts +3 -0
  23. package/dist/commands/captureListing.js +48 -4
  24. package/dist/commands/chat.d.ts +4 -0
  25. package/dist/commands/chat.js +133 -8
  26. package/dist/commands/check.js +34 -1
  27. package/dist/commands/create.js +30 -263
  28. package/dist/commands/dev.js +37 -3
  29. package/dist/commands/devBrowser.js +2 -2
  30. package/dist/commands/devGameServer.d.ts +16 -0
  31. package/dist/commands/devGameServer.js +237 -0
  32. package/dist/commands/devRuntimeAssets.d.ts +1 -0
  33. package/dist/commands/devRuntimeAssets.js +2 -0
  34. package/dist/commands/devServer.d.ts +3 -0
  35. package/dist/commands/devServer.js +111 -5
  36. package/dist/commands/generation.d.ts +33 -4
  37. package/dist/commands/generation.js +304 -115
  38. package/dist/commands/login.js +23 -7
  39. package/dist/commands/review.d.ts +1 -1
  40. package/dist/commands/review.js +68 -95
  41. package/dist/commands/source.d.ts +19 -0
  42. package/dist/commands/source.js +142 -0
  43. package/dist/commands/tweaks.js +5 -11
  44. package/dist/commands/upload-content.d.ts +1 -1
  45. package/dist/commands/upload-content.js +16 -12
  46. package/dist/commands/upload.d.ts +17 -1
  47. package/dist/commands/upload.js +47 -10
  48. package/dist/commands/worker/archive-staging.d.ts +1 -0
  49. package/dist/commands/worker/archive-staging.js +13 -2
  50. package/dist/commands/worker/e2e-fixtures.d.ts +32 -0
  51. package/dist/commands/worker/e2e-fixtures.js +466 -0
  52. package/dist/commands/worker/game-server-infra.d.ts +80 -0
  53. package/dist/commands/worker/game-server-infra.js +595 -0
  54. package/dist/commands/worker/game-source-git.d.ts +126 -0
  55. package/dist/commands/worker/game-source-git.js +780 -0
  56. package/dist/commands/worker/generation.d.ts +94 -0
  57. package/dist/commands/worker/generation.js +1458 -0
  58. package/dist/commands/worker/runtime.d.ts +8 -10
  59. package/dist/commands/worker/runtime.js +51 -45
  60. package/dist/commands/worker.d.ts +79 -19
  61. package/dist/commands/worker.js +1796 -419
  62. package/dist/config.d.ts +2 -0
  63. package/dist/config.js +16 -3
  64. package/dist/environment.d.ts +0 -1
  65. package/dist/environment.js +0 -8
  66. package/dist/index.js +92 -13
  67. package/dist/workerAppProject.d.ts +1 -1
  68. package/dist/workerAppProject.js +15 -2
  69. package/node_modules/@playdrop/api-client/dist/client.d.ts +72 -25
  70. package/node_modules/@playdrop/api-client/dist/client.d.ts.map +1 -1
  71. package/node_modules/@playdrop/api-client/dist/client.js +33 -0
  72. package/node_modules/@playdrop/api-client/dist/core/request.d.ts +1 -0
  73. package/node_modules/@playdrop/api-client/dist/core/request.d.ts.map +1 -1
  74. package/node_modules/@playdrop/api-client/dist/core/request.js +17 -11
  75. package/node_modules/@playdrop/api-client/dist/domains/agent-tasks.d.ts +51 -6
  76. package/node_modules/@playdrop/api-client/dist/domains/agent-tasks.d.ts.map +1 -1
  77. package/node_modules/@playdrop/api-client/dist/domains/agent-tasks.js +338 -41
  78. package/node_modules/@playdrop/api-client/dist/domains/ai.d.ts +24 -1
  79. package/node_modules/@playdrop/api-client/dist/domains/ai.d.ts.map +1 -1
  80. package/node_modules/@playdrop/api-client/dist/domains/ai.js +20 -0
  81. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts +13 -8
  82. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts.map +1 -1
  83. package/node_modules/@playdrop/api-client/dist/domains/apps.js +158 -90
  84. package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts +4 -0
  85. package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts.map +1 -1
  86. package/node_modules/@playdrop/api-client/dist/domains/assets.js +27 -0
  87. package/node_modules/@playdrop/api-client/dist/domains/chat.d.ts +35 -3
  88. package/node_modules/@playdrop/api-client/dist/domains/chat.d.ts.map +1 -1
  89. package/node_modules/@playdrop/api-client/dist/domains/chat.js +89 -7
  90. package/node_modules/@playdrop/api-client/dist/domains/player-meta.d.ts +2 -1
  91. package/node_modules/@playdrop/api-client/dist/domains/player-meta.d.ts.map +1 -1
  92. package/node_modules/@playdrop/api-client/dist/domains/player-meta.js +9 -0
  93. package/node_modules/@playdrop/api-client/dist/domains/playtrade.d.ts +1 -2
  94. package/node_modules/@playdrop/api-client/dist/domains/playtrade.d.ts.map +1 -1
  95. package/node_modules/@playdrop/api-client/dist/domains/playtrade.js +0 -11
  96. package/node_modules/@playdrop/api-client/dist/domains/social.d.ts +29 -0
  97. package/node_modules/@playdrop/api-client/dist/domains/social.d.ts.map +1 -0
  98. package/node_modules/@playdrop/api-client/dist/domains/social.js +79 -0
  99. package/node_modules/@playdrop/api-client/dist/index.d.ts +80 -29
  100. package/node_modules/@playdrop/api-client/dist/index.d.ts.map +1 -1
  101. package/node_modules/@playdrop/api-client/dist/index.js +217 -56
  102. package/node_modules/@playdrop/api-client/dist/runtime.d.ts +18 -0
  103. package/node_modules/@playdrop/api-client/dist/runtime.d.ts.map +1 -0
  104. package/node_modules/@playdrop/api-client/dist/runtime.js +54 -0
  105. package/node_modules/@playdrop/api-client/package.json +7 -0
  106. package/node_modules/@playdrop/config/client-meta.json +4 -4
  107. package/node_modules/@playdrop/config/dist/src/creator-plans.d.ts +11 -0
  108. package/node_modules/@playdrop/config/dist/src/creator-plans.d.ts.map +1 -1
  109. package/node_modules/@playdrop/config/dist/src/creator-plans.js +13 -1
  110. package/node_modules/@playdrop/config/dist/src/deployment.d.ts +0 -1
  111. package/node_modules/@playdrop/config/dist/src/deployment.d.ts.map +1 -1
  112. package/node_modules/@playdrop/config/dist/src/deployment.js +0 -8
  113. package/node_modules/@playdrop/config/dist/src/public-deployment.d.ts +0 -1
  114. package/node_modules/@playdrop/config/dist/src/public-deployment.d.ts.map +1 -1
  115. package/node_modules/@playdrop/config/dist/src/public-deployment.js +0 -8
  116. package/node_modules/@playdrop/config/dist/src/runtime-service-origins.d.ts +1 -1
  117. package/node_modules/@playdrop/config/dist/src/runtime-service-origins.js +2 -2
  118. package/node_modules/@playdrop/config/dist/src/server/logging.d.ts.map +1 -1
  119. package/node_modules/@playdrop/config/dist/src/server/logging.js +31 -2
  120. package/node_modules/@playdrop/config/dist/test/creator-plans.test.js +10 -0
  121. package/node_modules/@playdrop/config/dist/test/deployment.test.js +0 -4
  122. package/node_modules/@playdrop/config/dist/test/runtime-service-origins.test.js +2 -0
  123. package/node_modules/@playdrop/config/dist/tsconfig.tsbuildinfo +1 -1
  124. package/node_modules/@playdrop/config/package.json +6 -0
  125. package/node_modules/@playdrop/game-source-git/dist/src/archive.d.ts +9 -0
  126. package/node_modules/@playdrop/game-source-git/dist/src/archive.d.ts.map +1 -0
  127. package/node_modules/@playdrop/game-source-git/dist/src/archive.js +107 -0
  128. package/node_modules/@playdrop/game-source-git/dist/src/bundle-storage.d.ts +29 -0
  129. package/node_modules/@playdrop/game-source-git/dist/src/bundle-storage.d.ts.map +1 -0
  130. package/node_modules/@playdrop/game-source-git/dist/src/bundle-storage.js +64 -0
  131. package/node_modules/@playdrop/game-source-git/dist/src/export.d.ts +8 -0
  132. package/node_modules/@playdrop/game-source-git/dist/src/export.d.ts.map +1 -0
  133. package/node_modules/@playdrop/game-source-git/dist/src/export.js +25 -0
  134. package/node_modules/@playdrop/game-source-git/dist/src/git.d.ts +39 -0
  135. package/node_modules/@playdrop/game-source-git/dist/src/git.d.ts.map +1 -0
  136. package/node_modules/@playdrop/game-source-git/dist/src/git.js +195 -0
  137. package/node_modules/@playdrop/game-source-git/dist/src/ignore.d.ts +6 -0
  138. package/node_modules/@playdrop/game-source-git/dist/src/ignore.d.ts.map +1 -0
  139. package/node_modules/@playdrop/game-source-git/dist/src/ignore.js +51 -0
  140. package/node_modules/@playdrop/game-source-git/dist/src/index.d.ts +10 -0
  141. package/node_modules/@playdrop/game-source-git/dist/src/index.d.ts.map +1 -0
  142. package/node_modules/@playdrop/{boxel-core/dist/src/humanoid/r15 → game-source-git/dist/src}/index.js +9 -4
  143. package/node_modules/@playdrop/game-source-git/dist/src/lock.d.ts +17 -0
  144. package/node_modules/@playdrop/game-source-git/dist/src/lock.d.ts.map +1 -0
  145. package/node_modules/@playdrop/game-source-git/dist/src/lock.js +72 -0
  146. package/node_modules/@playdrop/game-source-git/dist/src/materialize.d.ts +10 -0
  147. package/node_modules/@playdrop/game-source-git/dist/src/materialize.d.ts.map +1 -0
  148. package/node_modules/@playdrop/game-source-git/dist/src/materialize.js +99 -0
  149. package/node_modules/@playdrop/game-source-git/dist/src/paths.d.ts +24 -0
  150. package/node_modules/@playdrop/game-source-git/dist/src/paths.d.ts.map +1 -0
  151. package/node_modules/@playdrop/game-source-git/dist/src/paths.js +207 -0
  152. package/node_modules/@playdrop/game-source-git/dist/src/repository.d.ts +66 -0
  153. package/node_modules/@playdrop/game-source-git/dist/src/repository.d.ts.map +1 -0
  154. package/node_modules/@playdrop/game-source-git/dist/src/repository.js +213 -0
  155. package/node_modules/@playdrop/game-source-git/dist/test/core.test.d.ts +2 -0
  156. package/node_modules/@playdrop/game-source-git/dist/test/core.test.d.ts.map +1 -0
  157. package/node_modules/@playdrop/game-source-git/dist/test/core.test.js +441 -0
  158. package/node_modules/@playdrop/game-source-git/dist/tsconfig.tsbuildinfo +1 -0
  159. package/node_modules/@playdrop/game-source-git/package.json +28 -0
  160. package/node_modules/@playdrop/types/dist/agent-task-terminal.d.ts +2 -2
  161. package/node_modules/@playdrop/types/dist/agent-task-terminal.d.ts.map +1 -1
  162. package/node_modules/@playdrop/types/dist/agent-task-terminal.js +15 -9
  163. package/node_modules/@playdrop/types/dist/api.d.ts +728 -164
  164. package/node_modules/@playdrop/types/dist/api.d.ts.map +1 -1
  165. package/node_modules/@playdrop/types/dist/api.js +60 -11
  166. package/node_modules/@playdrop/types/dist/asset-pack.d.ts +2 -0
  167. package/node_modules/@playdrop/types/dist/asset-pack.d.ts.map +1 -1
  168. package/node_modules/@playdrop/types/dist/asset.d.ts +22 -8
  169. package/node_modules/@playdrop/types/dist/asset.d.ts.map +1 -1
  170. package/node_modules/@playdrop/types/dist/asset.js +26 -26
  171. package/node_modules/@playdrop/types/dist/chat.d.ts +107 -3
  172. package/node_modules/@playdrop/types/dist/chat.d.ts.map +1 -1
  173. package/node_modules/@playdrop/types/dist/chat.js +33 -4
  174. package/node_modules/@playdrop/types/dist/index.d.ts +3 -0
  175. package/node_modules/@playdrop/types/dist/index.d.ts.map +1 -1
  176. package/node_modules/@playdrop/types/dist/index.js +7 -1
  177. package/node_modules/@playdrop/types/dist/public-cache-tags.d.ts +11 -0
  178. package/node_modules/@playdrop/types/dist/public-cache-tags.d.ts.map +1 -0
  179. package/node_modules/@playdrop/types/dist/public-cache-tags.js +78 -0
  180. package/node_modules/@playdrop/types/dist/realtime.d.ts +3 -15
  181. package/node_modules/@playdrop/types/dist/realtime.d.ts.map +1 -1
  182. package/node_modules/@playdrop/types/dist/social.d.ts +64 -0
  183. package/node_modules/@playdrop/types/dist/social.d.ts.map +1 -0
  184. package/node_modules/@playdrop/{boxel-three/dist/src/types.js → types/dist/social.js} +14 -2
  185. package/node_modules/@playdrop/types/dist/spritesheet.d.ts +51 -0
  186. package/node_modules/@playdrop/types/dist/spritesheet.d.ts.map +1 -0
  187. package/node_modules/@playdrop/types/dist/spritesheet.js +73 -0
  188. package/node_modules/@playdrop/types/dist/version.d.ts +86 -58
  189. package/node_modules/@playdrop/types/dist/version.d.ts.map +1 -1
  190. package/node_modules/@playdrop/types/dist/version.js +111 -0
  191. package/node_modules/@playdrop/types/package.json +14 -0
  192. package/node_modules/@playdrop/vox-three/dist/src/index.d.ts +1 -1
  193. package/node_modules/@playdrop/vox-three/dist/src/index.js +1 -1
  194. package/node_modules/@playdrop/vox-three/dist/src/index.js.map +1 -1
  195. package/node_modules/@playdrop/vox-three/dist/src/vox.d.ts +0 -3
  196. package/node_modules/@playdrop/vox-three/dist/src/vox.js +0 -110
  197. package/node_modules/@playdrop/vox-three/dist/src/vox.js.map +1 -1
  198. package/node_modules/@playdrop/vox-three/dist/test/vox.test.js +0 -18
  199. package/node_modules/@playdrop/vox-three/dist/test/vox.test.js.map +1 -1
  200. package/node_modules/@playdrop/vox-three/package.json +8 -4
  201. package/package.json +9 -11
  202. package/dist/assets/model-artifacts.d.ts +0 -8
  203. package/dist/assets/model-artifacts.js +0 -382
  204. package/dist/assets/model-worker.d.ts +0 -22
  205. package/dist/assets/model-worker.js +0 -123
  206. package/node_modules/@playdrop/ai-client/dist/index.d.ts +0 -441
  207. package/node_modules/@playdrop/ai-client/dist/index.d.ts.map +0 -1
  208. package/node_modules/@playdrop/ai-client/dist/index.js +0 -499
  209. package/node_modules/@playdrop/ai-client/package.json +0 -22
  210. package/node_modules/@playdrop/boxel-core/dist/src/entity-cleaner.d.ts +0 -13
  211. package/node_modules/@playdrop/boxel-core/dist/src/entity-cleaner.js +0 -141
  212. package/node_modules/@playdrop/boxel-core/dist/src/entity-cleaner.js.map +0 -1
  213. package/node_modules/@playdrop/boxel-core/dist/src/entity-utils.d.ts +0 -47
  214. package/node_modules/@playdrop/boxel-core/dist/src/entity-utils.js +0 -313
  215. package/node_modules/@playdrop/boxel-core/dist/src/entity-utils.js.map +0 -1
  216. package/node_modules/@playdrop/boxel-core/dist/src/format-utils.d.ts +0 -3
  217. package/node_modules/@playdrop/boxel-core/dist/src/format-utils.js +0 -36
  218. package/node_modules/@playdrop/boxel-core/dist/src/format-utils.js.map +0 -1
  219. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/geometry.d.ts +0 -23
  220. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/geometry.js +0 -11
  221. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/geometry.js.map +0 -1
  222. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/index.d.ts +0 -4
  223. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/index.js +0 -21
  224. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/index.js.map +0 -1
  225. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/common.d.ts +0 -4
  226. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/common.js +0 -24
  227. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/common.js.map +0 -1
  228. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/index.d.ts +0 -3
  229. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/index.js.map +0 -1
  230. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/textured-builder.d.ts +0 -3
  231. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/textured-builder.js +0 -387
  232. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/textured-builder.js.map +0 -1
  233. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/types.d.ts +0 -6
  234. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/types.js +0 -3
  235. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/types.js.map +0 -1
  236. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/voxel-builder.d.ts +0 -3
  237. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/voxel-builder.js +0 -373
  238. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/voxel-builder.js.map +0 -1
  239. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/builder.d.ts +0 -12
  240. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/builder.js +0 -215
  241. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/builder.js.map +0 -1
  242. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/index.d.ts +0 -4
  243. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/index.js +0 -18
  244. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/index.js.map +0 -1
  245. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/scanner.d.ts +0 -42
  246. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/scanner.js +0 -145
  247. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/scanner.js.map +0 -1
  248. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/artifacts.d.ts +0 -26
  249. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/artifacts.js +0 -65
  250. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/artifacts.js.map +0 -1
  251. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/face-map.d.ts +0 -33
  252. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/face-map.js +0 -175
  253. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/face-map.js.map +0 -1
  254. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/templates/humanoid_r15.json +0 -1517
  255. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/templates/humanoid_r6.json +0 -61
  256. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/templates/index.d.ts +0 -10
  257. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/templates/index.js +0 -23
  258. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/templates/index.js.map +0 -1
  259. package/node_modules/@playdrop/boxel-core/dist/src/index.d.ts +0 -19
  260. package/node_modules/@playdrop/boxel-core/dist/src/index.js +0 -36
  261. package/node_modules/@playdrop/boxel-core/dist/src/index.js.map +0 -1
  262. package/node_modules/@playdrop/boxel-core/dist/src/materials.d.ts +0 -26
  263. package/node_modules/@playdrop/boxel-core/dist/src/materials.js +0 -184
  264. package/node_modules/@playdrop/boxel-core/dist/src/materials.js.map +0 -1
  265. package/node_modules/@playdrop/boxel-core/dist/src/palette_tools.d.ts +0 -68
  266. package/node_modules/@playdrop/boxel-core/dist/src/palette_tools.js +0 -488
  267. package/node_modules/@playdrop/boxel-core/dist/src/palette_tools.js.map +0 -1
  268. package/node_modules/@playdrop/boxel-core/dist/src/serialization.d.ts +0 -4
  269. package/node_modules/@playdrop/boxel-core/dist/src/serialization.js +0 -380
  270. package/node_modules/@playdrop/boxel-core/dist/src/serialization.js.map +0 -1
  271. package/node_modules/@playdrop/boxel-core/dist/src/textures.d.ts +0 -29
  272. package/node_modules/@playdrop/boxel-core/dist/src/textures.js +0 -208
  273. package/node_modules/@playdrop/boxel-core/dist/src/textures.js.map +0 -1
  274. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/infer-face.d.ts +0 -9
  275. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/infer-face.js +0 -312
  276. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/infer-face.js.map +0 -1
  277. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/layer-mode.d.ts +0 -9
  278. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/layer-mode.js +0 -154
  279. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/layer-mode.js.map +0 -1
  280. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/merge-overlay.d.ts +0 -2
  281. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/merge-overlay.js +0 -121
  282. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/merge-overlay.js.map +0 -1
  283. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/slice.d.ts +0 -20
  284. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/slice.js +0 -389
  285. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/slice.js.map +0 -1
  286. package/node_modules/@playdrop/boxel-core/dist/src/transforms/upscale.d.ts +0 -3
  287. package/node_modules/@playdrop/boxel-core/dist/src/transforms/upscale.js +0 -206
  288. package/node_modules/@playdrop/boxel-core/dist/src/transforms/upscale.js.map +0 -1
  289. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/slice.d.ts +0 -12
  290. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/slice.js +0 -81
  291. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/slice.js.map +0 -1
  292. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/textured-to-voxel.d.ts +0 -12
  293. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/textured-to-voxel.js +0 -318
  294. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/textured-to-voxel.js.map +0 -1
  295. package/node_modules/@playdrop/boxel-core/dist/src/types.d.ts +0 -168
  296. package/node_modules/@playdrop/boxel-core/dist/src/types.js +0 -3
  297. package/node_modules/@playdrop/boxel-core/dist/src/types.js.map +0 -1
  298. package/node_modules/@playdrop/boxel-core/dist/src/validation.d.ts +0 -24
  299. package/node_modules/@playdrop/boxel-core/dist/src/validation.js +0 -620
  300. package/node_modules/@playdrop/boxel-core/dist/src/validation.js.map +0 -1
  301. package/node_modules/@playdrop/boxel-core/dist/src/voxels/greedy-mesher.d.ts +0 -11
  302. package/node_modules/@playdrop/boxel-core/dist/src/voxels/greedy-mesher.js +0 -135
  303. package/node_modules/@playdrop/boxel-core/dist/src/voxels/greedy-mesher.js.map +0 -1
  304. package/node_modules/@playdrop/boxel-core/dist/src/voxels.d.ts +0 -23
  305. package/node_modules/@playdrop/boxel-core/dist/src/voxels.js +0 -52
  306. package/node_modules/@playdrop/boxel-core/dist/src/voxels.js.map +0 -1
  307. package/node_modules/@playdrop/boxel-core/package.json +0 -19
  308. package/node_modules/@playdrop/boxel-three/dist/src/animations.d.ts +0 -4
  309. package/node_modules/@playdrop/boxel-three/dist/src/animations.js +0 -92
  310. package/node_modules/@playdrop/boxel-three/dist/src/builders.d.ts +0 -8
  311. package/node_modules/@playdrop/boxel-three/dist/src/builders.js +0 -363
  312. package/node_modules/@playdrop/boxel-three/dist/src/context.d.ts +0 -24
  313. package/node_modules/@playdrop/boxel-three/dist/src/context.js +0 -58
  314. package/node_modules/@playdrop/boxel-three/dist/src/exporters/glb.d.ts +0 -100
  315. package/node_modules/@playdrop/boxel-three/dist/src/exporters/glb.js +0 -927
  316. package/node_modules/@playdrop/boxel-three/dist/src/exporters/image.d.ts +0 -18
  317. package/node_modules/@playdrop/boxel-three/dist/src/exporters/image.js +0 -294
  318. package/node_modules/@playdrop/boxel-three/dist/src/index.d.ts +0 -17
  319. package/node_modules/@playdrop/boxel-three/dist/src/index.js +0 -64
  320. package/node_modules/@playdrop/boxel-three/dist/src/instantiate.d.ts +0 -40
  321. package/node_modules/@playdrop/boxel-three/dist/src/instantiate.js +0 -96
  322. package/node_modules/@playdrop/boxel-three/dist/src/nodes.d.ts +0 -8
  323. package/node_modules/@playdrop/boxel-three/dist/src/nodes.js +0 -88
  324. package/node_modules/@playdrop/boxel-three/dist/src/overlays.d.ts +0 -7
  325. package/node_modules/@playdrop/boxel-three/dist/src/overlays.js +0 -123
  326. package/node_modules/@playdrop/boxel-three/dist/src/primitives.d.ts +0 -4
  327. package/node_modules/@playdrop/boxel-three/dist/src/primitives.js +0 -48
  328. package/node_modules/@playdrop/boxel-three/dist/src/scene.d.ts +0 -3
  329. package/node_modules/@playdrop/boxel-three/dist/src/scene.js +0 -168
  330. package/node_modules/@playdrop/boxel-three/dist/src/skinned-mesh.d.ts +0 -29
  331. package/node_modules/@playdrop/boxel-three/dist/src/skinned-mesh.js +0 -623
  332. package/node_modules/@playdrop/boxel-three/dist/src/texture-atlas.d.ts +0 -13
  333. package/node_modules/@playdrop/boxel-three/dist/src/texture-atlas.js +0 -133
  334. package/node_modules/@playdrop/boxel-three/dist/src/textures.d.ts +0 -17
  335. package/node_modules/@playdrop/boxel-three/dist/src/textures.js +0 -216
  336. package/node_modules/@playdrop/boxel-three/dist/src/types.d.ts +0 -112
  337. package/node_modules/@playdrop/boxel-three/dist/src/voxels/faces.d.ts +0 -28
  338. package/node_modules/@playdrop/boxel-three/dist/src/voxels/faces.js +0 -344
  339. package/node_modules/@playdrop/boxel-three/dist/src/voxels/mesher.d.ts +0 -24
  340. package/node_modules/@playdrop/boxel-three/dist/src/voxels/mesher.js +0 -113
  341. package/node_modules/@playdrop/boxel-three/dist/test/export-image.playwright.test.d.ts +0 -1
  342. package/node_modules/@playdrop/boxel-three/dist/test/export-image.playwright.test.js +0 -137
  343. package/node_modules/@playdrop/boxel-three/dist/test/fixtures/render-worker.d.ts +0 -20
  344. package/node_modules/@playdrop/boxel-three/dist/test/fixtures/render-worker.js +0 -85
  345. package/node_modules/@playdrop/boxel-three/dist/test/glb-skinned.test.d.ts +0 -1
  346. package/node_modules/@playdrop/boxel-three/dist/test/glb-skinned.test.js +0 -104
  347. package/node_modules/@playdrop/boxel-three/dist/test/index.test.d.ts +0 -1
  348. package/node_modules/@playdrop/boxel-three/dist/test/index.test.js +0 -30
  349. package/node_modules/@playdrop/boxel-three/dist/test/instantiate.test.d.ts +0 -1
  350. package/node_modules/@playdrop/boxel-three/dist/test/instantiate.test.js +0 -88
  351. package/node_modules/@playdrop/boxel-three/dist/test/overlays.test.d.ts +0 -1
  352. package/node_modules/@playdrop/boxel-three/dist/test/overlays.test.js +0 -42
  353. package/node_modules/@playdrop/boxel-three/dist/test/scene-filter.test.d.ts +0 -1
  354. package/node_modules/@playdrop/boxel-three/dist/test/scene-filter.test.js +0 -73
  355. package/node_modules/@playdrop/boxel-three/dist/test/scene-smoke.test.d.ts +0 -1
  356. package/node_modules/@playdrop/boxel-three/dist/test/scene-smoke.test.js +0 -85
  357. package/node_modules/@playdrop/boxel-three/dist/test/skinned-mesh.test.d.ts +0 -1
  358. package/node_modules/@playdrop/boxel-three/dist/test/skinned-mesh.test.js +0 -73
  359. package/node_modules/@playdrop/boxel-three/dist/test/textured-overlay.test.d.ts +0 -1
  360. package/node_modules/@playdrop/boxel-three/dist/test/textured-overlay.test.js +0 -136
  361. package/node_modules/@playdrop/boxel-three/dist/test/voxels.test.d.ts +0 -1
  362. package/node_modules/@playdrop/boxel-three/dist/test/voxels.test.js +0 -42
  363. package/node_modules/@playdrop/boxel-three/package.json +0 -28
@@ -1,8 +1,8 @@
1
1
  {
2
- "version": "0.16.16",
3
- "build": 1,
4
- "runtimeSdkVersion": "0.16.16",
5
- "runtimeSdkBuild": 1,
2
+ "version": "0.17.0",
3
+ "build": 2,
4
+ "runtimeSdkVersion": "0.17.0",
5
+ "runtimeSdkBuild": 2,
6
6
  "clients": {
7
7
  "all": {
8
8
  "minimumVersion": "0.7.4"
@@ -1,8 +1,8 @@
1
1
  import { type ApiClient } from "@playdrop/api-client";
2
- import { type AiClient } from "@playdrop/ai-client";
3
2
  type ClientOptions = {
4
3
  baseUrl: string;
5
4
  token?: string | null;
5
+ tokenProvider?: () => string | null;
6
6
  onBehalfCreatorUsername?: string | null;
7
7
  agentTaskToken?: string | null;
8
8
  agentTaskId?: number | null;
@@ -15,5 +15,4 @@ export declare function createCliClientHeaders(input: {
15
15
  agentTaskAttempt?: number | null;
16
16
  }): Record<string, string>;
17
17
  export declare function createCliApiClient(options: ClientOptions): ApiClient;
18
- export declare function createCliAiClient(options: ClientOptions): AiClient;
19
18
  export {};
package/dist/apiClient.js CHANGED
@@ -2,9 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createCliClientHeaders = createCliClientHeaders;
4
4
  exports.createCliApiClient = createCliApiClient;
5
- exports.createCliAiClient = createCliAiClient;
6
5
  const api_client_1 = require("@playdrop/api-client");
7
- const ai_client_1 = require("@playdrop/ai-client");
8
6
  const clientInfo_1 = require("./clientInfo");
9
7
  function readPositiveIntEnv(name) {
10
8
  const raw = process.env[name]?.trim();
@@ -47,7 +45,6 @@ function createCliClientHeaders(input) {
47
45
  ...(creatorUsername
48
46
  ? {
49
47
  "x-playdrop-creator-username": creatorUsername,
50
- "x-playdrop-ai-paid-by": "creator",
51
48
  }
52
49
  : {}),
53
50
  ...(agentTaskToken
@@ -68,18 +65,6 @@ function createCliApiClient(options) {
68
65
  agentTaskId: options.agentTaskId,
69
66
  agentTaskAttempt: options.agentTaskAttempt,
70
67
  }),
71
- tokenProvider: () => options.token ?? null,
72
- });
73
- }
74
- function createCliAiClient(options) {
75
- return (0, ai_client_1.createAiClient)({
76
- baseUrl: options.baseUrl,
77
- clientHeaders: () => createCliClientHeaders({
78
- onBehalfCreatorUsername: options.onBehalfCreatorUsername,
79
- agentTaskToken: options.agentTaskToken,
80
- agentTaskId: options.agentTaskId,
81
- agentTaskAttempt: options.agentTaskAttempt,
82
- }),
83
- tokenProvider: () => options.token ?? null,
68
+ tokenProvider: options.tokenProvider ?? (() => options.token ?? null),
84
69
  });
85
70
  }
package/dist/appUrls.js CHANGED
@@ -45,12 +45,16 @@ function getAppTypeSlug(type) {
45
45
  }
46
46
  switch (type) {
47
47
  case "DEMO":
48
+ case "demo":
48
49
  return "demo";
49
50
  case "TOOL":
51
+ case "tool":
50
52
  return "tool";
51
53
  case "TEMPLATE":
54
+ case "template":
52
55
  return "template";
53
56
  case "GAME":
57
+ case "game":
54
58
  default:
55
59
  return "game";
56
60
  }
@@ -13,11 +13,19 @@ export type AppBuildMetadata = {
13
13
  entryPoint?: string;
14
14
  };
15
15
  export type AppBuildArtifacts = {
16
- bundleFile: File;
16
+ runtimeFiles: Array<{
17
+ absolutePath: string;
18
+ relativePath: string;
19
+ sizeBytes: number;
20
+ sha256: string;
21
+ }>;
17
22
  bundleHash: string;
18
- sourceFile: File;
19
- sourceHash: string;
23
+ sourceFile?: File;
24
+ sourceHash?: string;
20
25
  metadata: AppBuildMetadata;
21
26
  };
27
+ export type BuildAppOptions = {
28
+ includeSourceArchive?: boolean;
29
+ };
22
30
  export declare function runNpmScript(projectDir: string, script: string): Promise<void>;
23
- export declare function buildApp(task: AppTask): Promise<AppBuildArtifacts>;
31
+ export declare function buildApp(task: AppTask, options?: BuildAppOptions): Promise<AppBuildArtifacts>;
@@ -16,7 +16,7 @@ const BASE_SOURCE_IGNORE_PATTERNS = [
16
16
  ".next/",
17
17
  ".turbo/",
18
18
  ".cache/",
19
- ".git/",
19
+ ".git",
20
20
  ".idea/",
21
21
  ".svelte-kit/",
22
22
  ".DS_Store",
@@ -29,6 +29,24 @@ const BASE_SOURCE_IGNORE_PATTERNS = [
29
29
  ".vercel/",
30
30
  ".netlify/",
31
31
  ];
32
+ const GAME_SOURCE_GIT_IGNORE_PATTERNS = [
33
+ ".git",
34
+ ".next/",
35
+ ".playdrop/",
36
+ ".playdrop-task-events/",
37
+ ".scratch/",
38
+ "build/",
39
+ "coverage/",
40
+ "dist/",
41
+ "evidence/",
42
+ "node_modules/",
43
+ "output/",
44
+ "remix-source/",
45
+ "tasks/",
46
+ "tmp/",
47
+ "transcripts/",
48
+ "*.log",
49
+ ];
32
50
  const projectBuildCache = new Map();
33
51
  const typescriptSourceCache = new Map();
34
52
  async function runNpmScript(projectDir, script) {
@@ -114,10 +132,12 @@ function readIgnorePatterns(projectDir, filename) {
114
132
  return [];
115
133
  }
116
134
  }
117
- function buildIgnoreRules(projectDir) {
118
- const patterns = [...BASE_SOURCE_IGNORE_PATTERNS];
119
- patterns.push(...readIgnorePatterns(projectDir, ".playdropignore"));
120
- patterns.push(...readIgnorePatterns(projectDir, ".gitignore"));
135
+ function buildIgnoreRules(projectDir, gameSourceGit = false) {
136
+ const patterns = gameSourceGit ? [...GAME_SOURCE_GIT_IGNORE_PATTERNS] : [...BASE_SOURCE_IGNORE_PATTERNS];
137
+ if (!gameSourceGit) {
138
+ patterns.push(...readIgnorePatterns(projectDir, ".playdropignore"));
139
+ patterns.push(...readIgnorePatterns(projectDir, ".gitignore"));
140
+ }
121
141
  const rules = [];
122
142
  for (const rawPattern of patterns) {
123
143
  const trimmed = rawPattern.trim();
@@ -353,7 +373,12 @@ function resolveBundleEntryPoint(task, runtimeRoot) {
353
373
  return entryPoint;
354
374
  }
355
375
  function normalizeBundleArchiveExclusions(task, runtimeRoot) {
356
- const exclusions = task.bundleArchiveExcludeRelativeFiles ?? [];
376
+ const exclusions = [
377
+ ...(task.bundleArchiveExcludeRelativeFiles ?? []),
378
+ "listing/",
379
+ "server/",
380
+ "owned-assets/",
381
+ ];
357
382
  const runtimeRootAbsolute = (0, node_path_1.resolve)(runtimeRoot);
358
383
  const normalized = [];
359
384
  for (const exclusion of exclusions) {
@@ -530,7 +555,7 @@ function createZipArchive(entries) {
530
555
  return Buffer.concat(chunks);
531
556
  }
532
557
  function createSourceArchive(task) {
533
- const rules = buildIgnoreRules(task.projectDir);
558
+ const rules = buildIgnoreRules(task.projectDir, task.sourceArchiveGameSourceGit);
534
559
  const includeFiles = ["README.md", "AGENTS.md"];
535
560
  for (const heroPath of [task.listing?.heroPortraitPath, task.listing?.heroLandscapePath]) {
536
561
  if (heroPath) {
@@ -543,7 +568,7 @@ function createSourceArchive(task) {
543
568
  includeFiles.push(relativeCataloguePath);
544
569
  }
545
570
  if (task.isTypescriptProject) {
546
- const cacheKey = [task.projectDir, ...excludedFiles].join("\u0000");
571
+ const cacheKey = [task.projectDir, String(task.sourceArchiveGameSourceGit === true), ...excludedFiles].join("\u0000");
547
572
  const cached = typescriptSourceCache.get(cacheKey);
548
573
  if (cached) {
549
574
  return cached;
@@ -568,7 +593,7 @@ function createSourceArchive(task) {
568
593
  const hash = (0, node_crypto_1.createHash)("sha256").update(buffer).digest("hex");
569
594
  return { buffer, hash };
570
595
  }
571
- async function buildApp(task) {
596
+ async function buildApp(task, options = {}) {
572
597
  await ensureProjectBuild(task);
573
598
  if (!(0, node_fs_1.existsSync)(task.filePath) || !(0, node_fs_1.statSync)(task.filePath).isFile()) {
574
599
  const locationHint = task.cataloguePath || "catalogue.json";
@@ -582,16 +607,24 @@ async function buildApp(task) {
582
607
  buildAdvice,
583
608
  ].join(" "));
584
609
  }
585
- // Create bundle zip for versioned upload
586
- const bundleArchive = createBundleArchive(task);
587
- const bundleFileName = `${task.name}-bundle.zip`;
588
- const bundleBlobPart = Uint8Array.from(bundleArchive.buffer);
589
- const bundleFile = new File([bundleBlobPart], bundleFileName, { type: "application/zip" });
590
- const bundleHash = bundleArchive.hash;
591
- const sourceArchive = createSourceArchive(task);
592
- const sourceFileName = `${task.name}-source.zip`;
593
- const sourceBlobPart = Uint8Array.from(sourceArchive.buffer);
594
- const sourceFile = new File([sourceBlobPart], sourceFileName, { type: "application/zip" });
610
+ const runtime = collectBundleFiles(task);
611
+ const runtimeHash = (0, node_crypto_1.createHash)("sha256");
612
+ const runtimeFiles = runtime.entries.map((entry) => {
613
+ const content = (0, node_fs_1.readFileSync)(entry.absolutePath);
614
+ const sha256 = (0, node_crypto_1.createHash)("sha256").update(content).digest("hex");
615
+ runtimeHash.update(entry.relativePath).update("\0").update(String(content.length)).update("\0").update(sha256);
616
+ return {
617
+ absolutePath: entry.absolutePath,
618
+ relativePath: entry.relativePath,
619
+ sizeBytes: content.length,
620
+ sha256,
621
+ };
622
+ });
623
+ const bundleHash = runtimeHash.digest("hex");
624
+ const sourceArchive = options.includeSourceArchive === false ? null : createSourceArchive(task);
625
+ const sourceFile = sourceArchive
626
+ ? new File([Uint8Array.from(sourceArchive.buffer)], `${task.name}-source.zip`, { type: "application/zip" })
627
+ : undefined;
595
628
  const metadata = {};
596
629
  if (task.displayName)
597
630
  metadata.displayName = task.displayName;
@@ -612,12 +645,12 @@ async function buildApp(task) {
612
645
  metadata.primarySurface = task.primarySurface;
613
646
  if (task.playtestTapes)
614
647
  metadata.playtestTapes = task.playtestTapes;
615
- metadata.entryPoint = bundleArchive.entryPoint;
648
+ metadata.entryPoint = runtime.entryPoint;
616
649
  return {
617
- bundleFile,
650
+ runtimeFiles,
618
651
  bundleHash,
619
652
  sourceFile,
620
- sourceHash: sourceArchive.hash,
653
+ sourceHash: sourceArchive?.hash,
621
654
  metadata,
622
655
  };
623
656
  }
@@ -4,7 +4,7 @@ import type { AppTask } from "../catalogue";
4
4
  import type { TaskCaptureSession } from "../appUrls";
5
5
  import { collectAppValidationWarnings, validateAppTask, runFormatScript } from "./validate";
6
6
  import { buildApp, type AppBuildArtifacts } from "./build";
7
- import { prepareAppUploadFiles, uploadApp, type AppUploadResult } from "./upload";
7
+ import { prepareAppUploadFiles, uploadApp, type AppUploadResult, type AppUploadOptions } from "./upload";
8
8
  export type AppPipelineResult = {
9
9
  artifacts: AppBuildArtifacts | null;
10
10
  upload: AppUploadResult;
@@ -28,6 +28,7 @@ export type AppPipelineOptions = {
28
28
  playtestSmokeCheckRequired?: boolean;
29
29
  captureSession?: TaskCaptureSession | null;
30
30
  artifacts?: AppBuildArtifacts;
31
+ prepareGitTransition?: AppUploadOptions["prepareGitTransition"];
31
32
  };
32
33
  export declare function runAppPipeline(client: ApiClient, task: AppTask, options?: AppPipelineOptions): Promise<AppPipelineResult>;
33
34
  export { collectAppValidationWarnings, validateAppTask, buildApp, prepareAppUploadFiles, uploadApp, runFormatScript };
@@ -30,7 +30,9 @@ async function runAppPipeline(client, task, options) {
30
30
  agentTaskId: options.agentTaskId,
31
31
  });
32
32
  }
33
- const artifacts = isExternal ? null : (options?.artifacts ?? (await (0, build_1.buildApp)(task)));
33
+ const artifacts = isExternal
34
+ ? null
35
+ : (options?.artifacts ?? (await (0, build_1.buildApp)(task, { includeSourceArchive: options?.agentTaskId === undefined })));
34
36
  const warnings = (0, validate_1.collectAppValidationWarnings)(task, isExternal ? "source" : "bundle");
35
37
  if (!isExternal && options?.runLocalLoadCheck) {
36
38
  const creatorUsername = typeof options.creatorUsername === "string" ? options.creatorUsername.trim() : "";
@@ -69,6 +71,7 @@ async function runAppPipeline(client, task, options) {
69
71
  playtestProof: options?.playtestProof,
70
72
  playtestSmokeCheckRequired: options?.playtestSmokeCheckRequired,
71
73
  captureSession: options?.captureSession,
74
+ prepareGitTransition: options?.prepareGitTransition,
72
75
  };
73
76
  const upload = await (0, upload_1.uploadApp)(client, task, artifacts, uploadOptions);
74
77
  return { artifacts, upload, warnings };
@@ -1,5 +1,5 @@
1
1
  import type { ApiClient } from "@playdrop/api-client";
2
- import { type AppPlaytestTape, type AppPlaytestTapeEvent, type AppSurface, type AppUploadCausalComparison, type AppUploadMachineCausalEvidence, type UserResponse } from "@playdrop/types";
2
+ import { type AppPlaytestTape, type AppPlaytestTapeEvent, type AppSurface, type AppUploadCausalComparison, type AppUploadMachineCausalEvidence, type DevGameServerCredentialResponse, type UserResponse } from "@playdrop/types";
3
3
  import type { BrowserContextOptions, Frame, Page } from "playwright-core";
4
4
  import type { AppTask } from "../catalogue";
5
5
  import { type TaskCaptureSession } from "../appUrls";
@@ -30,6 +30,7 @@ export type HostedLaunchState = {
30
30
  errorCode: string | null;
31
31
  message: string | null;
32
32
  };
33
+ export declare const DEFAULT_HOSTED_LAUNCH_DEADLINE_MS = 15000;
33
34
  export declare function formatConsoleValue(value: unknown): string;
34
35
  export declare function formatBrowserConsoleMessage(values: unknown[], fallbackText: string): string;
35
36
  export declare function isDuplicateBrowserResourceConsoleError(type: string, message: string): boolean;
@@ -39,6 +40,7 @@ export declare function isExpectedAnonymousSessionProbe(input: {
39
40
  method: string;
40
41
  hasExplicitToken: boolean;
41
42
  }): boolean;
43
+ export declare function waitForHostedLaunchDeadline<T>(operation: () => Promise<T>, expectedState: HostedLaunchExpectedState, timeoutMs: number): Promise<T>;
42
44
  export declare function waitForHostedLaunchState(waiter: Promise<HostedLaunchState>, expectedState: HostedLaunchExpectedState, timeoutMs: number): Promise<HostedLaunchState>;
43
45
  export declare function resolveLoadCheckSurface(surfaceTargets: unknown, primarySurface?: unknown): AppSurface;
44
46
  export declare function cloneLoadCheckContextOptions(surface: AppSurface): BrowserContextOptions;
@@ -51,6 +53,7 @@ export declare function describeHostedLaunchTimeout(page: Pick<Page, "evaluate">
51
53
  export declare function verifyHostedEditorPhaseRoundTrip(page: Pick<Page, "evaluate">, frame: Pick<Frame, "evaluate" | "waitForFunction">, timeoutMs: number): Promise<void>;
52
54
  export declare function formatHostedLoadCheckFailure(taskName: string, result: HostedLoadCheckResult, scope?: "local" | "staged" | "editor" | "final"): string;
53
55
  export declare function redactHostedLoadCheckSecrets(text: string, sourceUrl: string): string;
56
+ export declare function formatMountedDevRuntimeFailure(error: unknown): Error;
54
57
  export declare function runLocalHostedLoadCheck(input: {
55
58
  client: ApiClient;
56
59
  apiBase: string;
@@ -67,6 +70,7 @@ export declare function runLocalHostedLoadCheck(input: {
67
70
  surface?: AppSurface;
68
71
  playtestTape?: AppPlaytestTape;
69
72
  postReadyWaitMs?: number;
73
+ gameServerCredential?: DevGameServerCredentialResponse | null;
70
74
  }): Promise<HostedLoadCheckResult>;
71
75
  export declare function buildUploadedHostedLoadCheckUrl(rawUrl: string, phase?: "play" | "editor"): string;
72
76
  export declare function buildUploadedHostedLoadCheckScreenshotPath(task: Pick<AppTask, "name" | "projectDir">, sessionId: string, phase?: "play" | "editor"): string | null;
@@ -3,11 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.PLAYDROP_SURFACE_CONTEXT_OPTIONS = void 0;
6
+ exports.DEFAULT_HOSTED_LAUNCH_DEADLINE_MS = exports.PLAYDROP_SURFACE_CONTEXT_OPTIONS = void 0;
7
7
  exports.formatConsoleValue = formatConsoleValue;
8
8
  exports.formatBrowserConsoleMessage = formatBrowserConsoleMessage;
9
9
  exports.isDuplicateBrowserResourceConsoleError = isDuplicateBrowserResourceConsoleError;
10
10
  exports.isExpectedAnonymousSessionProbe = isExpectedAnonymousSessionProbe;
11
+ exports.waitForHostedLaunchDeadline = waitForHostedLaunchDeadline;
11
12
  exports.waitForHostedLaunchState = waitForHostedLaunchState;
12
13
  exports.resolveLoadCheckSurface = resolveLoadCheckSurface;
13
14
  exports.cloneLoadCheckContextOptions = cloneLoadCheckContextOptions;
@@ -18,6 +19,7 @@ exports.describeHostedLaunchTimeout = describeHostedLaunchTimeout;
18
19
  exports.verifyHostedEditorPhaseRoundTrip = verifyHostedEditorPhaseRoundTrip;
19
20
  exports.formatHostedLoadCheckFailure = formatHostedLoadCheckFailure;
20
21
  exports.redactHostedLoadCheckSecrets = redactHostedLoadCheckSecrets;
22
+ exports.formatMountedDevRuntimeFailure = formatMountedDevRuntimeFailure;
21
23
  exports.runLocalHostedLoadCheck = runLocalHostedLoadCheck;
22
24
  exports.buildUploadedHostedLoadCheckUrl = buildUploadedHostedLoadCheckUrl;
23
25
  exports.buildUploadedHostedLoadCheckScreenshotPath = buildUploadedHostedLoadCheckScreenshotPath;
@@ -32,8 +34,8 @@ const node_path_1 = require("node:path");
32
34
  const sharp_1 = __importDefault(require("sharp"));
33
35
  const appUrls_1 = require("../appUrls");
34
36
  const devShared_1 = require("../commands/devShared");
35
- const dev_1 = require("../commands/dev");
36
37
  const devServer_1 = require("../commands/devServer");
38
+ const devGameServer_1 = require("../commands/devGameServer");
37
39
  const devRuntimeAssets_1 = require("../commands/devRuntimeAssets");
38
40
  const devAuth_1 = require("../devAuth");
39
41
  const playwright_1 = require("../playwright");
@@ -43,7 +45,7 @@ const surfaceProfiles_1 = require("./surfaceProfiles");
43
45
  var surfaceProfiles_2 = require("./surfaceProfiles");
44
46
  Object.defineProperty(exports, "PLAYDROP_SURFACE_CONTEXT_OPTIONS", { enumerable: true, get: function () { return surfaceProfiles_2.PLAYDROP_SURFACE_CONTEXT_OPTIONS; } });
45
47
  const FRAME_SELECTOR = 'iframe[title="Game"]';
46
- const DEFAULT_HOSTED_LOAD_TIMEOUT_MS = 15000;
48
+ exports.DEFAULT_HOSTED_LAUNCH_DEADLINE_MS = 15000;
47
49
  const HOSTED_LAUNCH_DIAGNOSTIC_TIMEOUT_MS = 1000;
48
50
  const PLAYTEST_INTERACTIVE_MEAN_DELTA_MIN = 0.002;
49
51
  const PLAYTEST_INTERACTIVE_CHANGED_PIXEL_RATIO_MIN = 0.01;
@@ -190,14 +192,16 @@ function formatHostedLaunchError(state) {
190
192
  function shouldSettleHostedLaunchWaiter(state, expectedState) {
191
193
  return state.state === "error" || state.state === expectedState;
192
194
  }
193
- function waitForHostedLaunchState(waiter, expectedState, timeoutMs) {
195
+ function waitForHostedLaunchDeadline(operation, expectedState, timeoutMs) {
194
196
  return new Promise((resolve, reject) => {
195
197
  const timeout = setTimeout(() => {
196
198
  reject(new Error(expectedState === "ready"
197
- ? "hosted_app_missing_ready: instrument_error:game_ready_timeout: Hosted app did not report sdk.host.ready() before the instrument timeout."
199
+ ? `hosted_app_missing_ready: instrument_error:game_ready_timeout: Hosted app did not complete navigation and report sdk.host.ready() within the ${timeoutMs} ms launch deadline.`
198
200
  : `hosted_app_gate_missing: Hosted app did not report ${expectedState} before the load-check timeout.`));
199
201
  }, timeoutMs);
200
- waiter.then((state) => {
202
+ Promise.resolve()
203
+ .then(operation)
204
+ .then((state) => {
201
205
  clearTimeout(timeout);
202
206
  resolve(state);
203
207
  }, (error) => {
@@ -206,6 +210,9 @@ function waitForHostedLaunchState(waiter, expectedState, timeoutMs) {
206
210
  });
207
211
  });
208
212
  }
213
+ function waitForHostedLaunchState(waiter, expectedState, timeoutMs) {
214
+ return waitForHostedLaunchDeadline(() => waiter, expectedState, timeoutMs);
215
+ }
209
216
  function normalizeLoadCheckSurface(value) {
210
217
  if (typeof value !== "string") {
211
218
  return null;
@@ -607,7 +614,7 @@ function redactHostedLoadCheckSecrets(text, sourceUrl) {
607
614
  async function runHostedLoadCheck(options) {
608
615
  const expectedHostedLaunchState = options.expectedHostedLaunchState ?? "ready";
609
616
  const artifactFingerprint = options.artifactFingerprint ?? null;
610
- const timeoutMs = options.timeoutMs ?? DEFAULT_HOSTED_LOAD_TIMEOUT_MS;
617
+ const timeoutMs = options.timeoutMs ?? exports.DEFAULT_HOSTED_LAUNCH_DEADLINE_MS;
611
618
  const errors = [];
612
619
  const warnings = [];
613
620
  let finalUrl = (0, appUrls_1.redactTaskCaptureSession)(options.targetUrl);
@@ -819,20 +826,23 @@ async function runHostedLoadCheck(options) {
819
826
  screenshotPath = await saveScreenshot(page, options.screenshotPath);
820
827
  };
821
828
  try {
822
- const response = await page.goto(options.targetUrl, { waitUntil: "domcontentloaded", timeout: 30000 });
823
- if (response && !response.ok()) {
824
- errors.push(`[check][navigation] ${response.status()} ${response.statusText()} ${reportTargetUrl}`);
825
- }
826
829
  const readinessTimeoutMs = Math.min(Math.max(timeoutMs, 1000), 30000);
830
+ let response;
827
831
  let launchState;
828
832
  try {
829
- launchState = await waitForHostedLaunchState(hostedLaunchWaiter, expectedHostedLaunchState, timeoutMs);
833
+ [response, launchState] = await waitForHostedLaunchDeadline(async () => await Promise.all([
834
+ page.goto(options.targetUrl, { waitUntil: "domcontentloaded", timeout: 30000 }),
835
+ hostedLaunchWaiter,
836
+ ]), expectedHostedLaunchState, timeoutMs);
830
837
  }
831
838
  catch (error) {
832
839
  const timeoutContext = await describeHostedLaunchTimeout(page, lastHostedLaunchState);
833
840
  const detail = error instanceof Error ? error.message : String(error);
834
841
  throw new Error(`${detail} ${timeoutContext}`);
835
842
  }
843
+ if (response && !response.ok()) {
844
+ errors.push(`[check][navigation] ${response.status()} ${response.statusText()} ${reportTargetUrl}`);
845
+ }
836
846
  if (launchState.state === "error") {
837
847
  throw new Error(formatHostedLaunchError(launchState));
838
848
  }
@@ -936,6 +946,9 @@ async function startOrReuseMountedDevRuntime(input) {
936
946
  port: devRouterPort,
937
947
  }, 750);
938
948
  if (serverAlreadyRunning) {
949
+ if (input.task.server) {
950
+ throw new Error(`server_dev_mount_already_running:${input.creatorUsername}/${input.task.name}`);
951
+ }
939
952
  await (0, devServer_1.updateMountedDevRuntimeAssetManifest)({
940
953
  creatorUsername: input.creatorUsername,
941
954
  appName: input.task.name,
@@ -944,7 +957,20 @@ async function startOrReuseMountedDevRuntime(input) {
944
957
  });
945
958
  return { handle: null, runtimeAssetManifest };
946
959
  }
960
+ let gameServer = null;
947
961
  try {
962
+ if (input.task.server) {
963
+ if (!input.gameServerCredential)
964
+ throw new Error("dev_server_credential_required");
965
+ const appBaseUrl = `http://127.0.0.1:${devRouterPort}/apps/dev/${encodeURIComponent(input.creatorUsername)}/${encodeURIComponent(appTypeSlug)}/${encodeURIComponent(input.task.name)}/`;
966
+ const roomsUrl = new URL("_playdrop/rooms", appBaseUrl);
967
+ gameServer = await (0, devGameServer_1.startDevGameServer)({
968
+ task: input.task,
969
+ credential: input.gameServerCredential,
970
+ platformApiUrl: input.apiBase,
971
+ publicAddress: `${roomsUrl.host}${roomsUrl.pathname.replace(/\/$/u, "")}`,
972
+ });
973
+ }
948
974
  const handle = await (0, devServer_1.startDevServer)({
949
975
  appName: input.task.name,
950
976
  appType: appTypeSlug,
@@ -953,18 +979,25 @@ async function startOrReuseMountedDevRuntime(input) {
953
979
  port: devRouterPort,
954
980
  projectInfo: (0, devShared_1.findProjectInfo)(input.task.filePath),
955
981
  runtimeAssetManifest,
982
+ roomsPort: gameServer?.port ?? null,
983
+ roomsProcess: gameServer?.process ?? null,
956
984
  });
957
985
  await new Promise((resolve) => setTimeout(resolve, 1000));
958
986
  return { handle, runtimeAssetManifest };
959
987
  }
960
988
  catch (error) {
961
- const formatted = (0, dev_1.formatDevRuntimeAssetManifestFailure)(error);
962
- const mountConflict = (0, devServer_1.parseMountConflictError)(error instanceof Error ? error.message : "");
963
- if (mountConflict) {
964
- throw new Error(`A different dev session already owns ${mountConflict.ref}. Active owner pid: ${mountConflict.ownerPid}.`);
965
- }
966
- throw new Error(formatted.message);
989
+ if (gameServer?.process.exitCode === null)
990
+ gameServer.process.kill("SIGTERM");
991
+ throw formatMountedDevRuntimeFailure(error);
992
+ }
993
+ }
994
+ function formatMountedDevRuntimeFailure(error) {
995
+ const message = error instanceof Error ? error.message : String(error ?? "mounted_dev_runtime_failed");
996
+ const mountConflict = (0, devServer_1.parseMountConflictError)(message);
997
+ if (mountConflict) {
998
+ return new Error(`A different dev session already owns ${mountConflict.ref}. Active owner pid: ${mountConflict.ownerPid}.`);
967
999
  }
1000
+ return error instanceof Error ? error : new Error(message);
968
1001
  }
969
1002
  async function runLocalHostedLoadCheck(input) {
970
1003
  let mountedRuntime = null;
@@ -975,6 +1008,7 @@ async function runLocalHostedLoadCheck(input) {
975
1008
  creatorUsername: input.creatorUsername,
976
1009
  task: input.task,
977
1010
  devRouterPort: input.devRouterPort,
1011
+ gameServerCredential: input.gameServerCredential,
978
1012
  });
979
1013
  const localDevPort = input.devRouterPort === undefined || input.devRouterPort === devServer_1.DEV_ROUTER_PORT ? null : input.devRouterPort;
980
1014
  const localAppMetadata = mountedRuntime.runtimeAssetManifest.response.localAppMetadata;
@@ -0,0 +1,17 @@
1
+ import type { AppTask } from "../catalogue";
2
+ export declare const GAME_SERVER_RUNTIME_VERSION: "colyseus-0.17-v1";
3
+ export declare const GAME_SERVER_BUNDLE_MAX_BYTES: number;
4
+ export type GameServerManifest = {
5
+ runtimeVersion: typeof GAME_SERVER_RUNTIME_VERSION;
6
+ rooms: string[];
7
+ size: number;
8
+ sha256: string;
9
+ };
10
+ export type GameServerBuild = {
11
+ bundlePath: string;
12
+ manifestPath: string;
13
+ manifest: GameServerManifest;
14
+ };
15
+ export declare function verifyGameServerDependencies(task: AppTask): void;
16
+ export declare function buildGameServer(task: AppTask): Promise<GameServerBuild | null>;
17
+ export declare function formatServerBuildPath(task: AppTask, absolutePath: string): string;