@playdrop/playdrop-cli 0.16.16 → 0.17.1

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 (369) 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 +782 -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/node_modules/@playwright/mcp/node_modules/fsevents/LICENSE +22 -0
  202. package/node_modules/@playwright/mcp/node_modules/fsevents/README.md +83 -0
  203. package/node_modules/@playwright/mcp/node_modules/fsevents/fsevents.d.ts +46 -0
  204. package/node_modules/@playwright/mcp/node_modules/fsevents/fsevents.js +82 -0
  205. package/node_modules/@playwright/mcp/node_modules/fsevents/fsevents.node +0 -0
  206. package/node_modules/@playwright/mcp/node_modules/fsevents/package.json +62 -0
  207. package/package.json +9 -11
  208. package/dist/assets/model-artifacts.d.ts +0 -8
  209. package/dist/assets/model-artifacts.js +0 -382
  210. package/dist/assets/model-worker.d.ts +0 -22
  211. package/dist/assets/model-worker.js +0 -123
  212. package/node_modules/@playdrop/ai-client/dist/index.d.ts +0 -441
  213. package/node_modules/@playdrop/ai-client/dist/index.d.ts.map +0 -1
  214. package/node_modules/@playdrop/ai-client/dist/index.js +0 -499
  215. package/node_modules/@playdrop/ai-client/package.json +0 -22
  216. package/node_modules/@playdrop/boxel-core/dist/src/entity-cleaner.d.ts +0 -13
  217. package/node_modules/@playdrop/boxel-core/dist/src/entity-cleaner.js +0 -141
  218. package/node_modules/@playdrop/boxel-core/dist/src/entity-cleaner.js.map +0 -1
  219. package/node_modules/@playdrop/boxel-core/dist/src/entity-utils.d.ts +0 -47
  220. package/node_modules/@playdrop/boxel-core/dist/src/entity-utils.js +0 -313
  221. package/node_modules/@playdrop/boxel-core/dist/src/entity-utils.js.map +0 -1
  222. package/node_modules/@playdrop/boxel-core/dist/src/format-utils.d.ts +0 -3
  223. package/node_modules/@playdrop/boxel-core/dist/src/format-utils.js +0 -36
  224. package/node_modules/@playdrop/boxel-core/dist/src/format-utils.js.map +0 -1
  225. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/geometry.d.ts +0 -23
  226. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/geometry.js +0 -11
  227. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/geometry.js.map +0 -1
  228. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/index.d.ts +0 -4
  229. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/index.js +0 -21
  230. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/index.js.map +0 -1
  231. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/common.d.ts +0 -4
  232. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/common.js +0 -24
  233. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/common.js.map +0 -1
  234. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/index.d.ts +0 -3
  235. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/index.js.map +0 -1
  236. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/textured-builder.d.ts +0 -3
  237. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/textured-builder.js +0 -387
  238. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/textured-builder.js.map +0 -1
  239. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/types.d.ts +0 -6
  240. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/types.js +0 -3
  241. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/types.js.map +0 -1
  242. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/voxel-builder.d.ts +0 -3
  243. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/voxel-builder.js +0 -373
  244. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/voxel-builder.js.map +0 -1
  245. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/builder.d.ts +0 -12
  246. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/builder.js +0 -215
  247. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/builder.js.map +0 -1
  248. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/index.d.ts +0 -4
  249. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/index.js +0 -18
  250. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/index.js.map +0 -1
  251. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/scanner.d.ts +0 -42
  252. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/scanner.js +0 -145
  253. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/scanner.js.map +0 -1
  254. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/artifacts.d.ts +0 -26
  255. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/artifacts.js +0 -65
  256. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/artifacts.js.map +0 -1
  257. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/face-map.d.ts +0 -33
  258. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/face-map.js +0 -175
  259. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/face-map.js.map +0 -1
  260. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/templates/humanoid_r15.json +0 -1517
  261. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/templates/humanoid_r6.json +0 -61
  262. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/templates/index.d.ts +0 -10
  263. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/templates/index.js +0 -23
  264. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/templates/index.js.map +0 -1
  265. package/node_modules/@playdrop/boxel-core/dist/src/index.d.ts +0 -19
  266. package/node_modules/@playdrop/boxel-core/dist/src/index.js +0 -36
  267. package/node_modules/@playdrop/boxel-core/dist/src/index.js.map +0 -1
  268. package/node_modules/@playdrop/boxel-core/dist/src/materials.d.ts +0 -26
  269. package/node_modules/@playdrop/boxel-core/dist/src/materials.js +0 -184
  270. package/node_modules/@playdrop/boxel-core/dist/src/materials.js.map +0 -1
  271. package/node_modules/@playdrop/boxel-core/dist/src/palette_tools.d.ts +0 -68
  272. package/node_modules/@playdrop/boxel-core/dist/src/palette_tools.js +0 -488
  273. package/node_modules/@playdrop/boxel-core/dist/src/palette_tools.js.map +0 -1
  274. package/node_modules/@playdrop/boxel-core/dist/src/serialization.d.ts +0 -4
  275. package/node_modules/@playdrop/boxel-core/dist/src/serialization.js +0 -380
  276. package/node_modules/@playdrop/boxel-core/dist/src/serialization.js.map +0 -1
  277. package/node_modules/@playdrop/boxel-core/dist/src/textures.d.ts +0 -29
  278. package/node_modules/@playdrop/boxel-core/dist/src/textures.js +0 -208
  279. package/node_modules/@playdrop/boxel-core/dist/src/textures.js.map +0 -1
  280. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/infer-face.d.ts +0 -9
  281. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/infer-face.js +0 -312
  282. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/infer-face.js.map +0 -1
  283. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/layer-mode.d.ts +0 -9
  284. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/layer-mode.js +0 -154
  285. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/layer-mode.js.map +0 -1
  286. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/merge-overlay.d.ts +0 -2
  287. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/merge-overlay.js +0 -121
  288. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/merge-overlay.js.map +0 -1
  289. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/slice.d.ts +0 -20
  290. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/slice.js +0 -389
  291. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/slice.js.map +0 -1
  292. package/node_modules/@playdrop/boxel-core/dist/src/transforms/upscale.d.ts +0 -3
  293. package/node_modules/@playdrop/boxel-core/dist/src/transforms/upscale.js +0 -206
  294. package/node_modules/@playdrop/boxel-core/dist/src/transforms/upscale.js.map +0 -1
  295. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/slice.d.ts +0 -12
  296. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/slice.js +0 -81
  297. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/slice.js.map +0 -1
  298. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/textured-to-voxel.d.ts +0 -12
  299. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/textured-to-voxel.js +0 -318
  300. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/textured-to-voxel.js.map +0 -1
  301. package/node_modules/@playdrop/boxel-core/dist/src/types.d.ts +0 -168
  302. package/node_modules/@playdrop/boxel-core/dist/src/types.js +0 -3
  303. package/node_modules/@playdrop/boxel-core/dist/src/types.js.map +0 -1
  304. package/node_modules/@playdrop/boxel-core/dist/src/validation.d.ts +0 -24
  305. package/node_modules/@playdrop/boxel-core/dist/src/validation.js +0 -620
  306. package/node_modules/@playdrop/boxel-core/dist/src/validation.js.map +0 -1
  307. package/node_modules/@playdrop/boxel-core/dist/src/voxels/greedy-mesher.d.ts +0 -11
  308. package/node_modules/@playdrop/boxel-core/dist/src/voxels/greedy-mesher.js +0 -135
  309. package/node_modules/@playdrop/boxel-core/dist/src/voxels/greedy-mesher.js.map +0 -1
  310. package/node_modules/@playdrop/boxel-core/dist/src/voxels.d.ts +0 -23
  311. package/node_modules/@playdrop/boxel-core/dist/src/voxels.js +0 -52
  312. package/node_modules/@playdrop/boxel-core/dist/src/voxels.js.map +0 -1
  313. package/node_modules/@playdrop/boxel-core/package.json +0 -19
  314. package/node_modules/@playdrop/boxel-three/dist/src/animations.d.ts +0 -4
  315. package/node_modules/@playdrop/boxel-three/dist/src/animations.js +0 -92
  316. package/node_modules/@playdrop/boxel-three/dist/src/builders.d.ts +0 -8
  317. package/node_modules/@playdrop/boxel-three/dist/src/builders.js +0 -363
  318. package/node_modules/@playdrop/boxel-three/dist/src/context.d.ts +0 -24
  319. package/node_modules/@playdrop/boxel-three/dist/src/context.js +0 -58
  320. package/node_modules/@playdrop/boxel-three/dist/src/exporters/glb.d.ts +0 -100
  321. package/node_modules/@playdrop/boxel-three/dist/src/exporters/glb.js +0 -927
  322. package/node_modules/@playdrop/boxel-three/dist/src/exporters/image.d.ts +0 -18
  323. package/node_modules/@playdrop/boxel-three/dist/src/exporters/image.js +0 -294
  324. package/node_modules/@playdrop/boxel-three/dist/src/index.d.ts +0 -17
  325. package/node_modules/@playdrop/boxel-three/dist/src/index.js +0 -64
  326. package/node_modules/@playdrop/boxel-three/dist/src/instantiate.d.ts +0 -40
  327. package/node_modules/@playdrop/boxel-three/dist/src/instantiate.js +0 -96
  328. package/node_modules/@playdrop/boxel-three/dist/src/nodes.d.ts +0 -8
  329. package/node_modules/@playdrop/boxel-three/dist/src/nodes.js +0 -88
  330. package/node_modules/@playdrop/boxel-three/dist/src/overlays.d.ts +0 -7
  331. package/node_modules/@playdrop/boxel-three/dist/src/overlays.js +0 -123
  332. package/node_modules/@playdrop/boxel-three/dist/src/primitives.d.ts +0 -4
  333. package/node_modules/@playdrop/boxel-three/dist/src/primitives.js +0 -48
  334. package/node_modules/@playdrop/boxel-three/dist/src/scene.d.ts +0 -3
  335. package/node_modules/@playdrop/boxel-three/dist/src/scene.js +0 -168
  336. package/node_modules/@playdrop/boxel-three/dist/src/skinned-mesh.d.ts +0 -29
  337. package/node_modules/@playdrop/boxel-three/dist/src/skinned-mesh.js +0 -623
  338. package/node_modules/@playdrop/boxel-three/dist/src/texture-atlas.d.ts +0 -13
  339. package/node_modules/@playdrop/boxel-three/dist/src/texture-atlas.js +0 -133
  340. package/node_modules/@playdrop/boxel-three/dist/src/textures.d.ts +0 -17
  341. package/node_modules/@playdrop/boxel-three/dist/src/textures.js +0 -216
  342. package/node_modules/@playdrop/boxel-three/dist/src/types.d.ts +0 -112
  343. package/node_modules/@playdrop/boxel-three/dist/src/voxels/faces.d.ts +0 -28
  344. package/node_modules/@playdrop/boxel-three/dist/src/voxels/faces.js +0 -344
  345. package/node_modules/@playdrop/boxel-three/dist/src/voxels/mesher.d.ts +0 -24
  346. package/node_modules/@playdrop/boxel-three/dist/src/voxels/mesher.js +0 -113
  347. package/node_modules/@playdrop/boxel-three/dist/test/export-image.playwright.test.d.ts +0 -1
  348. package/node_modules/@playdrop/boxel-three/dist/test/export-image.playwright.test.js +0 -137
  349. package/node_modules/@playdrop/boxel-three/dist/test/fixtures/render-worker.d.ts +0 -20
  350. package/node_modules/@playdrop/boxel-three/dist/test/fixtures/render-worker.js +0 -85
  351. package/node_modules/@playdrop/boxel-three/dist/test/glb-skinned.test.d.ts +0 -1
  352. package/node_modules/@playdrop/boxel-three/dist/test/glb-skinned.test.js +0 -104
  353. package/node_modules/@playdrop/boxel-three/dist/test/index.test.d.ts +0 -1
  354. package/node_modules/@playdrop/boxel-three/dist/test/index.test.js +0 -30
  355. package/node_modules/@playdrop/boxel-three/dist/test/instantiate.test.d.ts +0 -1
  356. package/node_modules/@playdrop/boxel-three/dist/test/instantiate.test.js +0 -88
  357. package/node_modules/@playdrop/boxel-three/dist/test/overlays.test.d.ts +0 -1
  358. package/node_modules/@playdrop/boxel-three/dist/test/overlays.test.js +0 -42
  359. package/node_modules/@playdrop/boxel-three/dist/test/scene-filter.test.d.ts +0 -1
  360. package/node_modules/@playdrop/boxel-three/dist/test/scene-filter.test.js +0 -73
  361. package/node_modules/@playdrop/boxel-three/dist/test/scene-smoke.test.d.ts +0 -1
  362. package/node_modules/@playdrop/boxel-three/dist/test/scene-smoke.test.js +0 -85
  363. package/node_modules/@playdrop/boxel-three/dist/test/skinned-mesh.test.d.ts +0 -1
  364. package/node_modules/@playdrop/boxel-three/dist/test/skinned-mesh.test.js +0 -73
  365. package/node_modules/@playdrop/boxel-three/dist/test/textured-overlay.test.d.ts +0 -1
  366. package/node_modules/@playdrop/boxel-three/dist/test/textured-overlay.test.js +0 -136
  367. package/node_modules/@playdrop/boxel-three/dist/test/voxels.test.d.ts +0 -1
  368. package/node_modules/@playdrop/boxel-three/dist/test/voxels.test.js +0 -42
  369. package/node_modules/@playdrop/boxel-three/package.json +0 -28
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@playdrop/playdrop-cli",
3
- "version": "0.16.16",
3
+ "version": "0.17.1",
4
4
  "description": "Official Playdrop CLI for publishing browser games, creator apps, and AI-generated game assets on playdrop.ai",
5
5
  "homepage": "https://www.playdrop.ai",
6
6
  "repository": {
@@ -35,11 +35,9 @@
35
35
  "bin",
36
36
  "config/client-meta.json",
37
37
  "dist",
38
- "node_modules/@playdrop/ai-client",
39
38
  "node_modules/@playdrop/api-client",
40
39
  "node_modules/@playdrop/config",
41
- "node_modules/@playdrop/boxel-core",
42
- "node_modules/@playdrop/boxel-three",
40
+ "node_modules/@playdrop/game-source-git",
43
41
  "node_modules/@playdrop/vox-three",
44
42
  "node_modules/@playdrop/types",
45
43
  "node_modules/@playwright/mcp",
@@ -50,11 +48,9 @@
50
48
  "README.md"
51
49
  ],
52
50
  "bundleDependencies": [
53
- "@playdrop/ai-client",
54
51
  "@playdrop/api-client",
55
52
  "@playdrop/config",
56
- "@playdrop/boxel-core",
57
- "@playdrop/boxel-three",
53
+ "@playdrop/game-source-git",
58
54
  "@playdrop/vox-three",
59
55
  "@playdrop/types",
60
56
  "@playwright/mcp",
@@ -70,14 +66,13 @@
70
66
  "clean": "node -e \"const fs=require('fs'); fs.rmSync('dist',{recursive:true,force:true}); fs.rmSync('tsconfig.tsbuildinfo',{force:true});\"",
71
67
  "prepublishOnly": "npm run build",
72
68
  "prepack": "npm run build && node scripts/bundle-deps.js",
73
- "postpack": "node -e \"const fs=require('fs'); fs.rmSync('node_modules',{recursive:true,force:true}); fs.rmSync('config',{recursive:true,force:true});\""
69
+ "postpack": "node scripts/cleanup-bundled-deps.js"
74
70
  },
75
71
  "dependencies": {
76
- "@playdrop/ai-client": "file:../ai-client",
72
+ "@fal-ai/client": "^1.10.1",
77
73
  "@playdrop/api-client": "file:../api-client",
78
- "@playdrop/boxel-core": "file:../boxel-core",
79
- "@playdrop/boxel-three": "file:../boxel-three",
80
74
  "@playdrop/config": "file:../config",
75
+ "@playdrop/game-source-git": "file:../game-source-git",
81
76
  "@playdrop/types": "file:../types",
82
77
  "@playdrop/vox-three": "file:../vox-three",
83
78
  "@playwright/mcp": "0.0.78",
@@ -86,6 +81,9 @@
86
81
  "entities": "^6.0.0",
87
82
  "esbuild": "^0.24.0",
88
83
  "fflate": "^0.8.2",
84
+ "ioredis": "5.11.1",
85
+ "jszip": "^3.10.1",
86
+ "mongodb": "7.5.0",
89
87
  "parse5": "^7.2.1",
90
88
  "playwright-core": "^1.56.0",
91
89
  "semver": "^7.7.2",
@@ -1,8 +0,0 @@
1
- import type { AssetTask, OwnedAssetTask, PackOwnedAssetTask } from "../catalogue";
2
- type ModelAssetTask = AssetTask | OwnedAssetTask | PackOwnedAssetTask;
3
- export declare function isGeneratedModel3DAssetTask(task: ModelAssetTask, format?: string): boolean;
4
- export declare function assertGeneratedModel3DAssetRoles(task: ModelAssetTask, format?: string): void;
5
- export declare function prepareModel3DAssetArtifacts(task: ModelAssetTask, options?: {
6
- dryRun?: boolean;
7
- }): Promise<boolean>;
8
- export {};
@@ -1,382 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.isGeneratedModel3DAssetTask = isGeneratedModel3DAssetTask;
40
- exports.assertGeneratedModel3DAssetRoles = assertGeneratedModel3DAssetRoles;
41
- exports.prepareModel3DAssetArtifacts = prepareModel3DAssetArtifacts;
42
- const node_fs_1 = require("node:fs");
43
- const promises_1 = require("node:fs/promises");
44
- const node_path_1 = __importDefault(require("node:path"));
45
- const boxel_core_1 = require("@playdrop/boxel-core");
46
- const vox_three_1 = require("@playdrop/vox-three");
47
- const types_1 = require("@playdrop/types");
48
- const playwright_1 = require("../playwright");
49
- const GENERATED_MODEL_3D_FORMATS = new Set(["PLAYDROP_BOXEL_JSON", "VOX"]);
50
- const BOXEL_REQUIRED_FILE_ROLES = ["primary", "mesh", "preview"];
51
- const VOX_REQUIRED_FILE_ROLES = ["primary", "boxel", "mesh", "preview"];
52
- const DEFAULT_PRESET = {
53
- meshMode: "merged",
54
- previewMode: "merged",
55
- previewDirection: "preview",
56
- width: 1024,
57
- height: 1024,
58
- };
59
- const MODEL_PRESET_BY_SUBCATEGORY = {
60
- avatar: {
61
- meshMode: "skinned",
62
- previewMode: "skinned",
63
- previewDirection: "headshot",
64
- width: 1024,
65
- height: 1024,
66
- },
67
- humanoid: {
68
- meshMode: "skinned",
69
- previewMode: "skinned",
70
- previewDirection: "headshot",
71
- width: 1024,
72
- height: 1024,
73
- },
74
- creature: {
75
- meshMode: "skinned",
76
- previewMode: "skinned",
77
- previewDirection: "headshot",
78
- width: 1024,
79
- height: 1024,
80
- },
81
- block: {
82
- meshMode: "merged",
83
- previewMode: "merged",
84
- previewDirection: "preview",
85
- width: 1024,
86
- height: 1024,
87
- },
88
- generic: {
89
- meshMode: "merged",
90
- previewMode: "merged",
91
- previewDirection: "preview",
92
- width: 1024,
93
- height: 1024,
94
- },
95
- };
96
- const TOOL_NAME = "playdrop";
97
- const WORKER_ENTRY_BASENAMES = ["model-worker.ts", "model-worker.js"];
98
- let workerBundlePromise = null;
99
- function normalizeRole(role) {
100
- return role.trim().toLowerCase();
101
- }
102
- function resolveTaskLabel(task) {
103
- if ("kind" in task && task.kind === "owned-asset") {
104
- return `${task.appName}:${task.name}`;
105
- }
106
- return task.name;
107
- }
108
- function getRolePath(task, role) {
109
- for (const [entryRole, filePath] of Object.entries(task.filePaths)) {
110
- if (normalizeRole(entryRole) === role && typeof filePath === "string" && filePath.trim().length > 0) {
111
- return filePath;
112
- }
113
- }
114
- return null;
115
- }
116
- function inferGeneratedModel3DFormat(task, explicitFormat) {
117
- const normalizedFormat = typeof explicitFormat === "string" ? explicitFormat.trim().toUpperCase() : "";
118
- if (GENERATED_MODEL_3D_FORMATS.has(normalizedFormat)) {
119
- return normalizedFormat;
120
- }
121
- const primaryPath = getRolePath(task, "primary");
122
- if (!primaryPath) {
123
- return null;
124
- }
125
- const normalizedPath = primaryPath.trim().toLowerCase();
126
- if (normalizedPath.endsWith(".boxel.json")) {
127
- return "PLAYDROP_BOXEL_JSON";
128
- }
129
- if (normalizedPath.endsWith(".vox")) {
130
- return "VOX";
131
- }
132
- return null;
133
- }
134
- function getRequiredFileRoles(format) {
135
- return format === "VOX" ? VOX_REQUIRED_FILE_ROLES : BOXEL_REQUIRED_FILE_ROLES;
136
- }
137
- function getMissingRequiredRoles(task, format) {
138
- const normalizedRoles = new Set(Object.keys(task.filePaths).map((role) => normalizeRole(role)));
139
- return getRequiredFileRoles(format).filter((role) => !normalizedRoles.has(role));
140
- }
141
- function resolveWorkerEntryPath() {
142
- for (const basename of WORKER_ENTRY_BASENAMES) {
143
- const candidate = node_path_1.default.join(__dirname, basename);
144
- if ((0, node_fs_1.existsSync)(candidate)) {
145
- return candidate;
146
- }
147
- }
148
- throw new Error(`[${TOOL_NAME}] Boxel worker entry file not found from ${__dirname}.`);
149
- }
150
- async function loadEsbuild() {
151
- const module = await Promise.resolve().then(() => __importStar(require("esbuild")));
152
- return module.build;
153
- }
154
- async function getWorkerBundle() {
155
- if (!workerBundlePromise) {
156
- workerBundlePromise = (async () => {
157
- const build = await loadEsbuild();
158
- const result = await build({
159
- entryPoints: [resolveWorkerEntryPath()],
160
- bundle: true,
161
- platform: "browser",
162
- format: "esm",
163
- target: "es2022",
164
- write: false,
165
- sourcemap: false,
166
- logLevel: "silent",
167
- });
168
- const output = result.outputFiles?.[0]?.text;
169
- if (!output) {
170
- throw new Error(`[${TOOL_NAME}] Failed to bundle boxel worker.`);
171
- }
172
- return output;
173
- })();
174
- }
175
- return workerBundlePromise;
176
- }
177
- async function withModelWorkerPage(callback, viewport) {
178
- return (0, playwright_1.withChromiumPage)(async ({ page }) => {
179
- const consoleErrors = [];
180
- page.on("console", (message) => {
181
- if (message.type() === "error") {
182
- consoleErrors.push(message.text());
183
- }
184
- });
185
- page.on("pageerror", (error) => {
186
- consoleErrors.push(error?.message ?? String(error));
187
- });
188
- await page.setContent('<canvas id="viewport"></canvas>', { waitUntil: "domcontentloaded" });
189
- const bundle = await getWorkerBundle();
190
- await page.addScriptTag({ type: "module", content: bundle });
191
- await page.waitForFunction(() => typeof window.playdropBoxelWorker !== "undefined");
192
- const result = await callback(page);
193
- if (consoleErrors.length > 0) {
194
- throw new Error(consoleErrors.join("\n"));
195
- }
196
- return result;
197
- }, { viewport });
198
- }
199
- async function exportBoxelWithWorker(boxel, mode) {
200
- try {
201
- const base64 = await withModelWorkerPage((page) => page.evaluate(({ model, exportMode }) => window.playdropBoxelWorker.exportBoxel(model, { mode: exportMode }), {
202
- model: boxel,
203
- exportMode: mode,
204
- }), { width: 1024, height: 1024 });
205
- if (typeof base64 !== "string" || base64.length === 0) {
206
- throw new Error("Model exporter did not return GLB data.");
207
- }
208
- return Buffer.from(base64, "base64");
209
- }
210
- catch (error) {
211
- throw (0, playwright_1.createPlaywrightLaunchError)(TOOL_NAME, error);
212
- }
213
- }
214
- async function renderPreviewWithWorker(boxel, options) {
215
- try {
216
- const dataUrl = await withModelWorkerPage((page) => page.evaluate(({ model, renderOptions }) => window.playdropBoxelWorker.renderBoxel(model, renderOptions), {
217
- model: boxel,
218
- renderOptions: {
219
- mode: options.mode,
220
- direction: options.direction,
221
- width: options.width,
222
- height: options.height,
223
- },
224
- }), { width: options.width, height: options.height });
225
- if (typeof dataUrl !== "string" || !dataUrl.startsWith("data:image/png;base64,")) {
226
- throw new Error("Model renderer did not return PNG data.");
227
- }
228
- return Buffer.from(dataUrl.slice("data:image/png;base64,".length), "base64");
229
- }
230
- catch (error) {
231
- throw (0, playwright_1.createPlaywrightLaunchError)(TOOL_NAME, error);
232
- }
233
- }
234
- async function renderVoxPreviewWithWorker(voxBuffer, options) {
235
- try {
236
- const dataUrl = await withModelWorkerPage((page) => page.evaluate(({ voxBase64, renderOptions }) => window.playdropBoxelWorker.renderVox(voxBase64, renderOptions), {
237
- voxBase64: voxBuffer.toString("base64"),
238
- renderOptions: {
239
- width: options.width,
240
- height: options.height,
241
- },
242
- }), { width: options.width, height: options.height });
243
- if (typeof dataUrl !== "string" || !dataUrl.startsWith("data:image/png;base64,")) {
244
- throw new Error("VOX preview renderer did not return PNG data.");
245
- }
246
- return Buffer.from(dataUrl.slice("data:image/png;base64,".length), "base64");
247
- }
248
- catch (error) {
249
- throw (0, playwright_1.createPlaywrightLaunchError)(TOOL_NAME, error);
250
- }
251
- }
252
- function parseAndValidateBoxel(raw, label) {
253
- let parsed;
254
- try {
255
- parsed = (0, boxel_core_1.parseBoxel)(JSON.parse(raw));
256
- }
257
- catch (error) {
258
- const reason = error instanceof Error ? error.message : String(error);
259
- throw new Error(`Asset "${label}" has invalid files.primary Boxel JSON: ${reason}`);
260
- }
261
- const validation = (0, boxel_core_1.validateBoxel)(parsed);
262
- if (!validation.boxel || validation.issues.length > 0) {
263
- const summary = validation.issues
264
- .slice(0, 3)
265
- .map((issue) => `${issue.path}: ${issue.message}`)
266
- .join("; ");
267
- throw new Error(`Asset "${label}" files.primary failed boxel validation${summary ? `: ${summary}` : ""}`);
268
- }
269
- return validation.boxel;
270
- }
271
- function resolvePreset(subcategory) {
272
- const normalized = subcategory.trim().toLowerCase();
273
- return MODEL_PRESET_BY_SUBCATEGORY[normalized] ?? DEFAULT_PRESET;
274
- }
275
- function isGeneratedModel3DAssetTask(task, format) {
276
- const category = typeof task.category === "string" ? task.category.trim().toUpperCase() : "";
277
- const subcategory = typeof task.subcategory === "string" ? task.subcategory.trim() : "";
278
- if (category !== "MODEL_3D" || !(0, types_1.isModel3DAssetSubcategory)("MODEL_3D", subcategory)) {
279
- return false;
280
- }
281
- return inferGeneratedModel3DFormat(task, format) !== null;
282
- }
283
- function assertGeneratedModel3DAssetRoles(task, format) {
284
- const generatedFormat = inferGeneratedModel3DFormat(task, format);
285
- if (!generatedFormat) {
286
- return;
287
- }
288
- const missing = getMissingRequiredRoles(task, generatedFormat);
289
- if (missing.length > 0) {
290
- const label = resolveTaskLabel(task);
291
- throw new Error(`Asset "${label}" requires files.${missing.join(", files.")} for format "${generatedFormat}".`);
292
- }
293
- }
294
- async function ensureExistingFile(filePath, label, role) {
295
- let fileStats;
296
- try {
297
- fileStats = await (0, promises_1.stat)(filePath);
298
- }
299
- catch (error) {
300
- const reason = error instanceof Error ? error.message : String(error);
301
- throw new Error(`Asset "${label}" files.${role} was not found at ${filePath}: ${reason}`);
302
- }
303
- if (!fileStats.isFile()) {
304
- throw new Error(`Asset "${label}" files.${role} path must be a file: ${filePath}`);
305
- }
306
- }
307
- async function loadBoxelFromPrimary(task, label) {
308
- const primaryPath = getRolePath(task, "primary");
309
- if (!primaryPath) {
310
- throw new Error(`Asset "${label}" is missing files.primary.`);
311
- }
312
- await ensureExistingFile(primaryPath, label, "primary");
313
- const raw = await (0, promises_1.readFile)(primaryPath, "utf8");
314
- return parseAndValidateBoxel(raw, label);
315
- }
316
- async function loadValidatedVoxBuffer(task, label) {
317
- const primaryPath = getRolePath(task, "primary");
318
- if (!primaryPath) {
319
- throw new Error(`Asset "${label}" is missing files.primary.`);
320
- }
321
- await ensureExistingFile(primaryPath, label, "primary");
322
- const buffer = await (0, promises_1.readFile)(primaryPath);
323
- try {
324
- (0, vox_three_1.assertValidVoxBuffer)(buffer);
325
- }
326
- catch (error) {
327
- const reason = error instanceof Error ? error.message : String(error);
328
- throw new Error(`Asset "${label}" files.primary is not a valid .vox file: ${reason}`);
329
- }
330
- return buffer;
331
- }
332
- async function prepareModel3DAssetArtifacts(task, options = {}) {
333
- const generatedFormat = inferGeneratedModel3DFormat(task, task.format);
334
- if (!generatedFormat) {
335
- return false;
336
- }
337
- assertGeneratedModel3DAssetRoles(task, task.format);
338
- const label = resolveTaskLabel(task);
339
- const meshPath = getRolePath(task, "mesh");
340
- const previewPath = getRolePath(task, "preview");
341
- if (!meshPath || !previewPath) {
342
- throw new Error(`Asset "${label}" is missing required generated 3D file paths.`);
343
- }
344
- const voxBuffer = generatedFormat === "VOX" ? await loadValidatedVoxBuffer(task, label) : null;
345
- const boxel = generatedFormat === "VOX"
346
- ? await (0, vox_three_1.convertVoxToBoxel)(voxBuffer, task.name)
347
- : await loadBoxelFromPrimary(task, label);
348
- if (options.dryRun) {
349
- return true;
350
- }
351
- if (typeof task.subcategory !== "string" || task.subcategory.trim().length === 0) {
352
- throw new Error(`Asset "${label}" is missing a model subcategory.`);
353
- }
354
- const preset = resolvePreset(task.subcategory);
355
- const [meshBuffer, previewBuffer] = await Promise.all([
356
- exportBoxelWithWorker(boxel, preset.meshMode),
357
- generatedFormat === "VOX"
358
- ? renderVoxPreviewWithWorker(voxBuffer, {
359
- width: preset.width,
360
- height: preset.height,
361
- })
362
- : renderPreviewWithWorker(boxel, {
363
- mode: preset.previewMode,
364
- direction: preset.previewDirection,
365
- width: preset.width,
366
- height: preset.height,
367
- }),
368
- ]);
369
- await (0, promises_1.mkdir)(node_path_1.default.dirname(meshPath), { recursive: true });
370
- await (0, promises_1.mkdir)(node_path_1.default.dirname(previewPath), { recursive: true });
371
- await (0, promises_1.writeFile)(meshPath, meshBuffer);
372
- await (0, promises_1.writeFile)(previewPath, previewBuffer);
373
- if (generatedFormat === "VOX") {
374
- const boxelPath = getRolePath(task, "boxel");
375
- if (!boxelPath) {
376
- throw new Error(`Asset "${label}" is missing files.boxel.`);
377
- }
378
- await (0, promises_1.mkdir)(node_path_1.default.dirname(boxelPath), { recursive: true });
379
- await (0, promises_1.writeFile)(boxelPath, `${(0, boxel_core_1.formatBoxel)(boxel)}\n`, "utf8");
380
- }
381
- return true;
382
- }
@@ -1,22 +0,0 @@
1
- import { type ExportMode } from "@playdrop/boxel-three";
2
- type ExportEntityOptions = {
3
- mode?: ExportMode;
4
- animationIds?: string[] | null;
5
- };
6
- type RenderEntityOptions = ExportEntityOptions & {
7
- width?: number;
8
- height?: number;
9
- direction?: string;
10
- background?: number | string | null;
11
- animationId?: string | null;
12
- };
13
- declare global {
14
- interface Window {
15
- playdropBoxelWorker?: {
16
- exportBoxel(modelJson: unknown, options?: ExportEntityOptions): Promise<string>;
17
- renderBoxel(modelJson: unknown, options?: RenderEntityOptions): Promise<string>;
18
- renderVox(voxBase64: string, options?: RenderEntityOptions): Promise<string>;
19
- };
20
- }
21
- }
22
- export {};
@@ -1,123 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- const THREE = __importStar(require("three"));
37
- const GLTFExporter_js_1 = require("three/examples/jsm/exporters/GLTFExporter.js");
38
- const boxel_three_1 = require("@playdrop/boxel-three");
39
- const boxel_core_1 = require("@playdrop/boxel-core");
40
- const vox_three_1 = require("@playdrop/vox-three");
41
- function arrayBufferToBase64(buffer) {
42
- const bytes = new Uint8Array(buffer);
43
- const chunkSize = 0x8000;
44
- let binary = "";
45
- for (let index = 0; index < bytes.length; index += chunkSize) {
46
- const chunk = bytes.subarray(index, index + chunkSize);
47
- binary += String.fromCharCode(...chunk);
48
- }
49
- return btoa(binary);
50
- }
51
- let cachedRenderer = null;
52
- function getOrCreateRenderer() {
53
- if (cachedRenderer) {
54
- return cachedRenderer;
55
- }
56
- const canvas = document.getElementById("viewport");
57
- if (!canvas) {
58
- throw new Error("render_canvas_unavailable");
59
- }
60
- cachedRenderer = new THREE.WebGLRenderer({
61
- canvas,
62
- antialias: true,
63
- preserveDrawingBuffer: true,
64
- alpha: true,
65
- });
66
- return cachedRenderer;
67
- }
68
- function base64ToArrayBuffer(value) {
69
- const binary = atob(value);
70
- const bytes = new Uint8Array(binary.length);
71
- for (let index = 0; index < binary.length; index += 1) {
72
- bytes[index] = binary.charCodeAt(index);
73
- }
74
- return bytes.buffer;
75
- }
76
- async function exportBoxel(modelJson, options) {
77
- const model = (0, boxel_core_1.parseBoxel)(modelJson);
78
- const blob = await (0, boxel_three_1.exportModelToGLB)({
79
- THREE,
80
- GLTFExporterCtor: GLTFExporter_js_1.GLTFExporter,
81
- model,
82
- mode: options?.mode,
83
- animationIds: options?.animationIds,
84
- });
85
- const arrayBuffer = await blob.arrayBuffer();
86
- return arrayBufferToBase64(arrayBuffer);
87
- }
88
- async function renderBoxel(modelJson, options) {
89
- const model = (0, boxel_core_1.parseBoxel)(modelJson);
90
- const renderer = getOrCreateRenderer();
91
- renderer.setPixelRatio(1);
92
- return (0, boxel_three_1.renderBoxelToDataURL)({
93
- THREE,
94
- renderer,
95
- entity: model,
96
- mode: options?.mode ?? "hierarchical",
97
- animationIds: options?.animationIds,
98
- animationId: options?.animationId ?? undefined,
99
- width: options?.width,
100
- height: options?.height,
101
- direction: options?.direction,
102
- background: options?.background ?? null,
103
- });
104
- }
105
- async function renderVox(voxBase64, options) {
106
- if (typeof voxBase64 !== "string" || voxBase64.length === 0) {
107
- throw new Error("vox_preview_input_missing");
108
- }
109
- const renderer = getOrCreateRenderer();
110
- renderer.setPixelRatio(1);
111
- return (0, vox_three_1.renderVoxToDataURL)({
112
- THREE,
113
- renderer,
114
- input: base64ToArrayBuffer(voxBase64),
115
- width: options?.width,
116
- height: options?.height,
117
- });
118
- }
119
- window.playdropBoxelWorker = {
120
- exportBoxel,
121
- renderBoxel,
122
- renderVox,
123
- };