@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,7 +1,6 @@
1
1
  export declare const DEFAULT_CODEX_TIMEOUT_MS: number;
2
2
  export declare const DEFAULT_CREATOR_AGENT_TIMEOUT_MS: number;
3
3
  export declare const DEFAULT_CREATOR_UPLOAD_RECOVERY_TIMEOUT_MS: number;
4
- export declare const DEFAULT_WORKER_TOKEN_CAP = 20000000;
5
4
  export declare const DEFAULT_CODEX_LOG_TAIL_CHARS = 12000;
6
5
  export declare const DEFAULT_TRANSCRIPT_FLUSH_INTERVAL_MS = 10000;
7
6
  export type LoggedProcessResult = {
@@ -48,10 +47,6 @@ export type CodexRolloutTokenUsageReadOptions = {
48
47
  };
49
48
  export declare function readCodexRolloutTokenUsageForThread(threadId: string, options?: CodexRolloutTokenUsageReadOptions): Promise<AgentTokenUsage>;
50
49
  export declare function extractCodexTokensUsed(output: string): number | null;
51
- export declare function assertWorkerTokenUsageWithinCap(input: {
52
- tokensUsed: number | null;
53
- tokenCap: number;
54
- }): boolean;
55
50
  export declare function runLoggedProcess(input: {
56
51
  command: string;
57
52
  args: string[];
@@ -71,8 +66,6 @@ export declare function buildCodexExecArgs(input: {
71
66
  workspaceDir: string;
72
67
  model: string;
73
68
  reasoningEffort: string;
74
- networkAccess: boolean;
75
- sandboxMode?: CodexSandboxMode;
76
69
  imagePaths?: string[];
77
70
  resumeSessionId?: string | null;
78
71
  }): string[];
@@ -84,8 +77,6 @@ export declare function buildGrokExecArgs(input: {
84
77
  reasoningEffort: string;
85
78
  resumeSessionId?: string | null;
86
79
  }): string[];
87
- export type CodexSandboxMode = "danger-full-access" | "workspace-write" | "read-only";
88
- export declare function readCodexSandboxMode(env?: NodeJS.ProcessEnv): CodexSandboxMode;
89
80
  export declare function buildClaudeExecArgs(input: {
90
81
  model: string;
91
82
  effort?: string | null;
@@ -96,6 +87,7 @@ export declare function buildClaudeExecArgs(input: {
96
87
  denyReadRoots?: string[] | null;
97
88
  pluginDir?: string | null;
98
89
  playdropCliEnabled?: boolean;
90
+ allowGit?: boolean;
99
91
  resumeSessionId?: string | null;
100
92
  }): string[];
101
93
  export declare const PLAYWRIGHT_MCP_VERSION = "0.0.78";
@@ -110,13 +102,14 @@ export declare function buildClaudePermissionSettings(input?: {
110
102
  workspaceDir?: string | null;
111
103
  denyReadRoots?: string[];
112
104
  playdropCliEnabled?: boolean;
105
+ allowGit?: boolean;
113
106
  }): {
114
107
  permissions: {
115
108
  allow: string[];
116
109
  deny: string[];
117
110
  };
118
111
  };
119
- export declare function buildClaudeDeniedPermissionRules(denyReadRoots?: string[]): string[];
112
+ export declare function buildClaudeDeniedPermissionRules(denyReadRoots?: string[], allowGit?: boolean): string[];
120
113
  export declare function buildWorkerChildEnv(input: {
121
114
  binDir: string;
122
115
  workerHomeDir: string;
@@ -131,6 +124,11 @@ export declare function buildWorkerChildEnv(input: {
131
124
  claudeConfigDir?: string;
132
125
  playdropConfigPath?: string;
133
126
  playwrightBrowsersPath?: string;
127
+ gameServerDev?: {
128
+ redisUrl: string;
129
+ mongoUrl: string;
130
+ redisNamespace: string;
131
+ };
134
132
  baseEnv?: NodeJS.ProcessEnv;
135
133
  }): NodeJS.ProcessEnv;
136
134
  export declare function buildCleanRoomChildEnv(input: {
@@ -3,7 +3,7 @@ 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.PLAYWRIGHT_MCP_VERSION = exports.DEFAULT_TRANSCRIPT_FLUSH_INTERVAL_MS = exports.DEFAULT_CODEX_LOG_TAIL_CHARS = exports.DEFAULT_WORKER_TOKEN_CAP = exports.DEFAULT_CREATOR_UPLOAD_RECOVERY_TIMEOUT_MS = exports.DEFAULT_CREATOR_AGENT_TIMEOUT_MS = exports.DEFAULT_CODEX_TIMEOUT_MS = void 0;
6
+ exports.PLAYWRIGHT_MCP_VERSION = exports.DEFAULT_TRANSCRIPT_FLUSH_INTERVAL_MS = exports.DEFAULT_CODEX_LOG_TAIL_CHARS = exports.DEFAULT_CREATOR_UPLOAD_RECOVERY_TIMEOUT_MS = exports.DEFAULT_CREATOR_AGENT_TIMEOUT_MS = exports.DEFAULT_CODEX_TIMEOUT_MS = void 0;
7
7
  exports.resolveDescendantProcessIds = resolveDescendantProcessIds;
8
8
  exports.readPositiveEnvInt = readPositiveEnvInt;
9
9
  exports.readEnvBoolean = readEnvBoolean;
@@ -14,11 +14,9 @@ exports.extractClaudeSessionId = extractClaudeSessionId;
14
14
  exports.extractGrokRunMetadata = extractGrokRunMetadata;
15
15
  exports.readCodexRolloutTokenUsageForThread = readCodexRolloutTokenUsageForThread;
16
16
  exports.extractCodexTokensUsed = extractCodexTokensUsed;
17
- exports.assertWorkerTokenUsageWithinCap = assertWorkerTokenUsageWithinCap;
18
17
  exports.runLoggedProcess = runLoggedProcess;
19
18
  exports.buildCodexExecArgs = buildCodexExecArgs;
20
19
  exports.buildGrokExecArgs = buildGrokExecArgs;
21
- exports.readCodexSandboxMode = readCodexSandboxMode;
22
20
  exports.buildClaudeExecArgs = buildClaudeExecArgs;
23
21
  exports.resolvePlaywrightMcpCliPath = resolvePlaywrightMcpCliPath;
24
22
  exports.buildPlaywrightMcpCommand = buildPlaywrightMcpCommand;
@@ -35,10 +33,10 @@ const node_os_1 = __importDefault(require("node:os"));
35
33
  const node_path_1 = __importDefault(require("node:path"));
36
34
  const surfaceProfiles_1 = require("../../apps/surfaceProfiles");
37
35
  const CHILD_KILL_GRACE_MS = 10000;
36
+ const PROVIDER_EXIT_PIPE_CLOSE_GRACE_MS = 1000;
38
37
  exports.DEFAULT_CODEX_TIMEOUT_MS = 2 * 60 * 60 * 1000;
39
38
  exports.DEFAULT_CREATOR_AGENT_TIMEOUT_MS = 60 * 60 * 1000;
40
39
  exports.DEFAULT_CREATOR_UPLOAD_RECOVERY_TIMEOUT_MS = 30 * 60 * 1000;
41
- exports.DEFAULT_WORKER_TOKEN_CAP = 20000000;
42
40
  exports.DEFAULT_CODEX_LOG_TAIL_CHARS = 12000;
43
41
  exports.DEFAULT_TRANSCRIPT_FLUSH_INTERVAL_MS = 10000;
44
42
  function tailText(value, maxChars) {
@@ -412,15 +410,6 @@ async function readCodexRolloutTokenUsageForThread(threadId, options = {}) {
412
410
  function extractCodexTokensUsed(output) {
413
411
  return extractAgentTokenUsage(output).totalTokens;
414
412
  }
415
- function assertWorkerTokenUsageWithinCap(input) {
416
- if (input.tokensUsed === null) {
417
- return false;
418
- }
419
- if (input.tokensUsed > input.tokenCap) {
420
- throw new Error(`token_cap_exceeded:${input.tokensUsed}:${input.tokenCap}`);
421
- }
422
- return true;
423
- }
424
413
  async function runLoggedProcess(input) {
425
414
  if (!input.command.trim()) {
426
415
  throw new Error("invalid_process_command");
@@ -443,6 +432,7 @@ async function runLoggedProcess(input) {
443
432
  let closed = false;
444
433
  let killTimer = null;
445
434
  let terminateKillTimer = null;
435
+ let providerExitPipeCloseTimer = null;
446
436
  let transcriptFlushTimer = null;
447
437
  let transcriptFlushError = null;
448
438
  let transcriptFlushPromise = Promise.resolve();
@@ -490,9 +480,9 @@ async function runLoggedProcess(input) {
490
480
  await input.onTranscriptChunks(chunks);
491
481
  }
492
482
  catch (error) {
493
- // Transcript upload is telemetry, never task-critical: requeue in order and retry with the next flush.
483
+ // Local transcript spooling is telemetry, never task-critical: requeue in order and retry with the next flush.
494
484
  pendingTranscriptChunks.unshift(...chunks);
495
- console.error(`warning: transcript chunk upload failed, will retry with next flush: ${error instanceof Error ? error.message : String(error)}`);
485
+ console.error(`warning: transcript spool write failed, will retry with next flush: ${error instanceof Error ? error.message : String(error)}`);
496
486
  }
497
487
  };
498
488
  const queueTranscriptFlush = () => {
@@ -546,6 +536,20 @@ async function runLoggedProcess(input) {
546
536
  child.stdout?.on("data", (chunk) => append("stdout", chunk));
547
537
  child.stderr?.on("data", (chunk) => append("stderr", chunk));
548
538
  child.on("error", reject);
539
+ child.on("exit", () => {
540
+ // Provider CLIs can exit while MCP servers or browsers still inherit their
541
+ // stdout pipes. Kill the task process group now so `close` is not held
542
+ // open until the task timeout or lease reaper fires.
543
+ if (process.platform !== "win32") {
544
+ terminateProcessTree("SIGKILL");
545
+ }
546
+ providerExitPipeCloseTimer = setTimeout(() => {
547
+ if (closed)
548
+ return;
549
+ child.stdout?.destroy();
550
+ child.stderr?.destroy();
551
+ }, PROVIDER_EXIT_PIPE_CLOSE_GRACE_MS);
552
+ });
549
553
  child.on("close", (code, signal) => {
550
554
  closed = true;
551
555
  // The provider process may leave MCP servers, browsers, dev servers, or recorders behind.
@@ -558,17 +562,20 @@ async function runLoggedProcess(input) {
558
562
  if (terminateKillTimer) {
559
563
  clearTimeout(terminateKillTimer);
560
564
  }
565
+ if (providerExitPipeCloseTimer) {
566
+ clearTimeout(providerExitPipeCloseTimer);
567
+ }
561
568
  if (transcriptFlushTimer) {
562
569
  clearInterval(transcriptFlushTimer);
563
570
  }
564
571
  void (async () => {
565
572
  await queueTranscriptFlush();
566
573
  if (pendingTranscriptChunks.length > 0) {
567
- // Last flush failed: retry once, then drop with a warning. Missing transcript chunks never fail the task.
574
+ // Last spool write failed: retry once, then warn. Transcript telemetry never fails the task.
568
575
  await flushTranscriptChunks();
569
576
  }
570
577
  if (pendingTranscriptChunks.length > 0) {
571
- console.error(`warning: dropped ${pendingTranscriptChunks.length} transcript chunk(s) after final retry; transcript is telemetry, continuing`);
578
+ console.error(`warning: could not spool ${pendingTranscriptChunks.length} transcript segment(s) after final retry; transcript is telemetry, continuing`);
572
579
  }
573
580
  if (transcriptFlushError) {
574
581
  throwLoggedProcessError(transcriptFlushError);
@@ -590,13 +597,14 @@ async function runLoggedProcess(input) {
590
597
  });
591
598
  }
592
599
  function buildCodexExecArgs(input) {
593
- const sandboxMode = input.sandboxMode ?? "danger-full-access";
594
600
  const resumeSessionId = input.resumeSessionId?.trim() ?? "";
595
601
  if (resumeSessionId) {
596
602
  return [
597
603
  "exec",
598
604
  "resume",
599
605
  "--json",
606
+ "--dangerously-bypass-approvals-and-sandbox",
607
+ "--ignore-rules",
600
608
  "--skip-git-repo-check",
601
609
  "--model",
602
610
  input.model,
@@ -609,8 +617,8 @@ function buildCodexExecArgs(input) {
609
617
  const args = [
610
618
  "exec",
611
619
  "--json",
612
- "--sandbox",
613
- sandboxMode,
620
+ "--dangerously-bypass-approvals-and-sandbox",
621
+ "--ignore-rules",
614
622
  "--cd",
615
623
  input.workspaceDir,
616
624
  "--skip-git-repo-check",
@@ -619,9 +627,6 @@ function buildCodexExecArgs(input) {
619
627
  "-c",
620
628
  `model_reasoning_effort="${input.reasoningEffort}"`,
621
629
  ];
622
- if (sandboxMode === "workspace-write") {
623
- args.push("-c", `sandbox_workspace_write.network_access=${input.networkAccess ? "true" : "false"}`);
624
- }
625
630
  for (const imagePath of input.imagePaths ?? []) {
626
631
  args.push("--image", imagePath);
627
632
  }
@@ -655,7 +660,6 @@ function buildGrokExecArgs(input) {
655
660
  "streaming-messages-json",
656
661
  "--permission-mode",
657
662
  "bypassPermissions",
658
- "--no-subagents",
659
663
  "--no-memory",
660
664
  "--no-auto-update",
661
665
  "--verbatim",
@@ -666,16 +670,6 @@ function buildGrokExecArgs(input) {
666
670
  }
667
671
  return args;
668
672
  }
669
- function readCodexSandboxMode(env = process.env) {
670
- const raw = env.PLAYDROP_WORKER_CODEX_SANDBOX?.trim();
671
- if (!raw) {
672
- return "danger-full-access";
673
- }
674
- if (raw === "danger-full-access" || raw === "workspace-write" || raw === "read-only") {
675
- return raw;
676
- }
677
- throw new Error(`invalid_playdrop_worker_codex_sandbox:${raw}`);
678
- }
679
673
  function buildClaudeExecArgs(input) {
680
674
  const model = input.model.trim();
681
675
  if (!model) {
@@ -692,8 +686,8 @@ function buildClaudeExecArgs(input) {
692
686
  workspaceDir: input.workspaceDir,
693
687
  denyReadRoots: input.denyReadRoots ?? [],
694
688
  playdropCliEnabled: input.playdropCliEnabled,
689
+ allowGit: input.allowGit,
695
690
  });
696
- const permissionMode = input.chrome || input.playwrightMcp ? "bypassPermissions" : "acceptEdits";
697
691
  // MCP tools are deferred behind ToolSearch in the Claude CLI; without it in the toolset a
698
692
  // session cannot reach any MCP server's tools no matter what --mcp-config provides.
699
693
  const tools = input.chrome
@@ -701,7 +695,7 @@ function buildClaudeExecArgs(input) {
701
695
  : input.playwrightMcp
702
696
  ? [...CLAUDE_BASE_TOOL_NAMES, "ToolSearch"].join(",")
703
697
  : CLAUDE_BASE_TOOL_NAMES.join(",");
704
- const allowedPermissionRules = buildClaudeAllowedPermissionRules(input.workspaceDir, input.playdropCliEnabled);
698
+ const allowedPermissionRules = buildClaudeAllowedPermissionRules(input.workspaceDir, input.playdropCliEnabled, input.allowGit === true);
705
699
  const allowedTools = input.chrome
706
700
  ? [...allowedPermissionRules, ...CLAUDE_CHROME_TOOL_NAMES]
707
701
  : input.playwrightMcp
@@ -721,13 +715,13 @@ function buildClaudeExecArgs(input) {
721
715
  "--verbose",
722
716
  "--include-partial-messages",
723
717
  "--permission-mode",
724
- permissionMode,
718
+ "bypassPermissions",
725
719
  "--tools",
726
720
  tools,
727
721
  "--allowedTools",
728
722
  ...allowedTools,
729
723
  "--disallowedTools",
730
- ...buildClaudeDeniedPermissionRules(input.denyReadRoots ?? []),
724
+ ...buildClaudeDeniedPermissionRules(input.denyReadRoots ?? [], input.allowGit === true),
731
725
  "--settings",
732
726
  JSON.stringify(permissionSettings),
733
727
  ];
@@ -854,7 +848,7 @@ function normalizeClaudePermissionPath(value) {
854
848
  }
855
849
  return node_path_1.default.resolve(trimmed).replace(/\\/g, "/").replace(/\/+$/, "");
856
850
  }
857
- function buildClaudeAllowedPermissionRules(workspaceDir, playdropCliEnabled = true) {
851
+ function buildClaudeAllowedPermissionRules(workspaceDir, playdropCliEnabled = true, allowGit = false) {
858
852
  const workspaceRoot = typeof workspaceDir === "string" && workspaceDir.trim() ? normalizeClaudePermissionPath(workspaceDir) : null;
859
853
  if (!workspaceRoot) {
860
854
  throw new Error("worker_claude_workspace_missing");
@@ -866,6 +860,7 @@ function buildClaudeAllowedPermissionRules(workspaceDir, playdropCliEnabled = tr
866
860
  `Edit(${absoluteWorkspacePattern})`,
867
861
  `Write(${absoluteWorkspacePattern})`,
868
862
  `Bash(${managedImagePython} *)`,
863
+ ...(allowGit ? ["Bash(git *)"] : []),
869
864
  ...(playdropCliEnabled ? [`Bash(${workspaceRoot}/bin/playdrop *)`] : []),
870
865
  ...CLAUDE_BUILD_PERMISSION_RULES.filter((rule) => playdropCliEnabled || !rule.toLowerCase().includes("playdrop")),
871
866
  ];
@@ -873,13 +868,13 @@ function buildClaudeAllowedPermissionRules(workspaceDir, playdropCliEnabled = tr
873
868
  function buildClaudePermissionSettings(input = {}) {
874
869
  return {
875
870
  permissions: {
876
- allow: buildClaudeAllowedPermissionRules(input.workspaceDir, input.playdropCliEnabled),
877
- deny: buildClaudeDeniedPermissionRules(input.denyReadRoots ?? []),
871
+ allow: buildClaudeAllowedPermissionRules(input.workspaceDir, input.playdropCliEnabled, input.allowGit === true),
872
+ deny: buildClaudeDeniedPermissionRules(input.denyReadRoots ?? [], input.allowGit === true),
878
873
  },
879
874
  };
880
875
  }
881
- function buildClaudeDeniedPermissionRules(denyReadRoots = []) {
882
- const deny = new Set(["Bash(rm *)", "Bash(git *)"]);
876
+ function buildClaudeDeniedPermissionRules(denyReadRoots = [], allowGit = false) {
877
+ const deny = new Set(["Bash(rm *)", ...(allowGit ? [] : ["Bash(git *)"])]);
883
878
  for (const rawRoot of denyReadRoots) {
884
879
  const root = normalizeClaudePermissionPath(rawRoot);
885
880
  if (!root) {
@@ -953,8 +948,8 @@ function buildWorkerChildEnv(input) {
953
948
  for (const key of [
954
949
  "PLAYDROP_API_BASE",
955
950
  `PLAYDROP_API_BASE_${input.envName.toUpperCase()}`,
956
- "PLAYDROP_AI_BASE",
957
- `PLAYDROP_AI_BASE_${input.envName.toUpperCase()}`,
951
+ "PLAYDROP_WEB_BASE",
952
+ `PLAYDROP_WEB_BASE_${input.envName.toUpperCase()}`,
958
953
  ]) {
959
954
  const value = base[key];
960
955
  if (typeof value === "string") {
@@ -982,6 +977,17 @@ function buildWorkerChildEnv(input) {
982
977
  if (input.eventDir?.trim()) {
983
978
  child.PLAYDROP_WORKER_EVENT_DIR = input.eventDir.trim();
984
979
  }
980
+ if (input.gameServerDev) {
981
+ const redisUrl = input.gameServerDev.redisUrl.trim();
982
+ const mongoUrl = input.gameServerDev.mongoUrl.trim();
983
+ const redisNamespace = input.gameServerDev.redisNamespace.trim();
984
+ if (!redisUrl.startsWith("redis://") || !mongoUrl.startsWith("mongodb://") || !redisNamespace.endsWith(":")) {
985
+ throw new Error("invalid_worker_game_server_dev_lease");
986
+ }
987
+ child.PLAYDROP_DEV_REDIS_URL = redisUrl;
988
+ child.PLAYDROP_DEV_MONGO_URL = mongoUrl;
989
+ child.PLAYDROP_DEV_REDIS_NAMESPACE = redisNamespace;
990
+ }
985
991
  return child;
986
992
  }
987
993
  function buildCleanRoomChildEnv(input) {
@@ -1,13 +1,14 @@
1
1
  import type { ApiClient } from "@playdrop/api-client";
2
- import { RELEASE_SMOKE_FILE_NAME, type AgentAvailabilityFailureReason, type AgentExecutionTarget, type AgentRuntime, type AgentTaskKind, type AgentTaskNextStepSuggestion, type AgentTaskResponse, type AppSurface, type AgentWorkerCapabilities, type AgentWorkerResponse, type AgentWorkerUpdatePolicyResponse, type JsonValue, type WorkerTaskAssignmentV2, type WorkerTaskAssignmentV3, type WorkerTaskPluginV2, type WorkerClaimAgentTaskResponse, type WorkerClaimTaskResponseV3 } from "@playdrop/types";
2
+ import { RELEASE_SMOKE_FILE_NAME, type AgentAvailabilityFailureReason, type AgentExecutionTarget, type AgentRuntime, type AgentTaskKind, type AgentTaskNextStepSuggestion, type AgentTaskResponse, type AgentTaskStatus, type AgentTaskTerminalReason, type AppSurface, type AgentWorkerCapabilities, type AgentWorkerResponse, type AgentWorkerUpdatePolicyResponse, type JsonValue, type WorkerGameTaskAssignment, type WorkerTaskPluginV2, type WorkerClaimTaskResponseV5 } from "@playdrop/types";
3
+ import { spawnSync } from "node:child_process";
3
4
  import { loadConfig } from "../config";
4
5
  import { runShell } from "../shellProbe";
5
- import { type WorkerInstrumentSurface, type LoggedProcessResult, type LoggedProcessTranscriptChunk } from "./worker/runtime";
6
+ import { type WorkerInstrumentSurface, type LoggedProcessResult } from "./worker/runtime";
6
7
  export { extractZipArchive } from "./worker/archive-staging";
7
- export { assertWorkerTokenUsageWithinCap, buildClaudeExecArgs, buildClaudePermissionSettings, buildCleanRoomChildEnv, buildCodexExecArgs, buildGrokExecArgs, buildPlaywrightMcpCommand, buildWorkerChildEnv, DEFAULT_CODEX_TIMEOUT_MS, DEFAULT_CREATOR_AGENT_TIMEOUT_MS, DEFAULT_CREATOR_UPLOAD_RECOVERY_TIMEOUT_MS, DEFAULT_WORKER_TOKEN_CAP, extractAgentTokenUsage, extractCodexRolloutTokenUsage, extractClaudeSessionId, extractCodexThreadId, extractGrokRunMetadata, extractCodexTokensUsed, readCodexRolloutTokenUsageForThread, readCodexSandboxMode, readEnvBoolean, runLoggedProcess, } from "./worker/runtime";
8
+ export { buildClaudeExecArgs, buildClaudePermissionSettings, buildCleanRoomChildEnv, buildCodexExecArgs, buildGrokExecArgs, buildPlaywrightMcpCommand, buildWorkerChildEnv, DEFAULT_CODEX_TIMEOUT_MS, DEFAULT_CREATOR_AGENT_TIMEOUT_MS, DEFAULT_CREATOR_UPLOAD_RECOVERY_TIMEOUT_MS, extractAgentTokenUsage, extractCodexRolloutTokenUsage, extractClaudeSessionId, extractCodexThreadId, extractGrokRunMetadata, extractCodexTokensUsed, readCodexRolloutTokenUsageForThread, readEnvBoolean, runLoggedProcess, } from "./worker/runtime";
8
9
  export type { AgentTokenUsage, LoggedProcessResult, LoggedProcessTranscriptChunk } from "./worker/runtime";
9
10
  export declare const WORKSPACE_ARCHIVE_DOWNLOAD_TIMEOUT_MS: number;
10
- type WorkerTaskAssignment = WorkerTaskAssignmentV2 | WorkerTaskAssignmentV3;
11
+ type WorkerTaskAssignment = WorkerGameTaskAssignment;
11
12
  export declare function usesCreatorRecovery(kind: AgentTaskKind): boolean;
12
13
  export declare function buildDeterministicReleaseSmokeArtifact(): {
13
14
  fileName: typeof RELEASE_SMOKE_FILE_NAME;
@@ -18,6 +19,15 @@ export declare function buildCreatorRecoveryPrompt(input: {
18
19
  prompt: string;
19
20
  kind: AgentTaskKind;
20
21
  }): string;
22
+ export declare function buildMissingAgentOutcomeRecoveryPrompt(kind: AgentTaskKind): string;
23
+ export declare function shouldRecoverMissingAgentOutcome(input: {
24
+ kind: AgentTaskKind;
25
+ taskStatus: AgentTaskStatus;
26
+ completionReported: boolean;
27
+ result: Pick<LoggedProcessResult, "exitCode" | "signal" | "timedOut">;
28
+ }): boolean;
29
+ export declare function missingAgentOutcomeTerminalReason(): AgentTaskTerminalReason;
30
+ export declare function creationTimeoutTerminalReason(): AgentTaskTerminalReason;
21
31
  export declare function buildGameEvalRetryPrompt(prompt: string): string;
22
32
  export declare const WORKER_SESSION_EXPIRED_MESSAGE = "worker session expired: run \"playdrop auth login\" and start the worker again";
23
33
  export declare const WORKER_CONTEXT_COMMAND_NOT_ALLOWED_MESSAGE = "worker_context_command_not_allowed: inside a PlayDrop worker task only task progress, task asset-runtime, task claim-slug, task upload/done/fail, assigned app scaffolding, project build/dev/check/capture, read-only help/catalogue/documentation lookup, and PlayDrop AI generation are permitted.";
@@ -153,6 +163,7 @@ type WorkerTaskContextFile = {
153
163
  taskId: number;
154
164
  attempt: number;
155
165
  taskToken: string;
166
+ taskAccessToken: string | null;
156
167
  taskType: string;
157
168
  metadata: Record<string, JsonValue>;
158
169
  kind: AgentTaskKind;
@@ -169,6 +180,23 @@ type WorkerTaskContextFile = {
169
180
  reviewAppVersionId?: number | null;
170
181
  devPort: number;
171
182
  env: string;
183
+ gameSourceGit: boolean;
184
+ };
185
+ type WorkerTaskUploadResultFile = {
186
+ taskId: number;
187
+ appId: number;
188
+ appVersionId: number;
189
+ appName: string;
190
+ version: string;
191
+ versionNodeId: string;
192
+ creatorUsername: string;
193
+ };
194
+ type WorkerTaskUploadFailureFile = {
195
+ schemaVersion: 2;
196
+ taskId: number;
197
+ attempt: number;
198
+ terminalReason: AgentTaskTerminalReason;
199
+ failedAt: string;
172
200
  };
173
201
  type WorkerQueuedEvent = {
174
202
  kind: "progress" | "catalogue_preview";
@@ -200,9 +228,8 @@ export declare function allocateWorkerDevPort(input: {
200
228
  export declare function isWorkerContextCommandAllowed(argv: string[]): boolean;
201
229
  export declare function resolveWorkerContextCommandBlockMessage(argv: string[]): string | null;
202
230
  export declare function resolveWorkerExecutionTargetFromRole(role: unknown): AgentExecutionTarget;
203
- export declare function normalizeWorkerTaskAssignmentV2(claim: WorkerClaimAgentTaskResponse): WorkerTaskAssignmentV2 | null;
204
- export declare function normalizeWorkerTaskAssignmentV3(claim: unknown): WorkerTaskAssignmentV3 | null;
205
- export declare function normalizeWorkerClaimResponseV3(value: unknown): WorkerClaimTaskResponseV3;
231
+ export declare function normalizeWorkerGameTaskAssignment(value: unknown): WorkerGameTaskAssignment;
232
+ export declare function normalizeWorkerClaimResponseV5(value: unknown): WorkerClaimTaskResponseV5;
206
233
  export declare function nextClaimBackoffMs(currentMs: number): number;
207
234
  export declare function claimBackoffDelayMs(currentMs: number, random?: () => number): number;
208
235
  export declare function acknowledgeWorkerTaskClaim(input: {
@@ -222,6 +249,7 @@ export declare function containWorkerTaskRun(input: {
222
249
  logError?: (message: string) => void;
223
250
  }): Promise<void>;
224
251
  export declare function resolveWorkerHomeDir(): string;
252
+ export declare function configureWorkerFal(): Promise<void>;
225
253
  export declare const WORKER_TASK_WORKSPACE_RETENTION = 20;
226
254
  export declare function pruneWorkerTaskWorkspaces(incomingWorkspaceDir: string, retention?: number): Promise<string[]>;
227
255
  export declare function prepareClaimedTaskWorkspace(input: {
@@ -233,14 +261,19 @@ export declare function prepareClaimedTaskWorkspace(input: {
233
261
  export declare function buildWorkerTaskContextV2(assignment: WorkerTaskAssignment): Omit<WorkerTaskContextFile, "env" | "devPort">;
234
262
  export declare function resolveWorkerInstrumentSurface(taskContext: Pick<WorkerTaskContextFile, "kind" | "metadata">): WorkerInstrumentSurface | null;
235
263
  export declare function hasAgentTaskUploadedArtifact(task: Pick<AgentTaskResponse, "appId" | "appVersionId">): boolean;
236
- export declare function appendWorkerTranscriptChunks(input: {
237
- client: Pick<ApiClient, "workerAppendAgentTaskTranscriptChunks">;
238
- taskId: number;
239
- workerKey: string;
240
- leaseToken: string;
241
- chunks: LoggedProcessTranscriptChunk[];
242
- batchSize?: number;
243
- }): Promise<void>;
264
+ export declare function buildWorkerTranscriptUploadHeaders(input: {
265
+ headers: Record<string, string>;
266
+ contentType: string;
267
+ md5Base64: string;
268
+ }): Record<string, string>;
269
+ export declare function describeTaskUploadFailure(error: unknown): AgentTaskTerminalReason;
270
+ export declare function recordTaskUploadFailure(input: {
271
+ workspaceDir: string;
272
+ taskContext: Pick<WorkerTaskContextFile, "taskId" | "attempt">;
273
+ error: unknown;
274
+ }): Promise<WorkerTaskUploadFailureFile>;
275
+ export declare function readTaskUploadFailureFile(startDir?: string): WorkerTaskUploadFailureFile | null;
276
+ export declare function readTaskUploadResultFile(startDir?: string): WorkerTaskUploadResultFile;
244
277
  export declare function readTaskNextStepsFile(filePath: string | undefined, workspaceDir?: string): AgentTaskNextStepSuggestion[] | undefined;
245
278
  export declare function assertTaskUploadResultMatchesContext(input: {
246
279
  taskContext: {
@@ -256,8 +289,7 @@ export declare function assertTaskUploadResultMatchesContext(input: {
256
289
  creatorUsername: string;
257
290
  };
258
291
  }): void;
259
- export declare function stageAssignmentWorkspaceV2(workspaceDir: string, workspace: WorkerTaskAssignmentV2["workspace"]): Promise<void>;
260
- export declare function stageAssignmentWorkspaceV3(workspaceDir: string, workspace: WorkerTaskAssignmentV3["workspace"], options?: {
292
+ export declare function stageAssignmentWorkspace(workspaceDir: string, workspace: WorkerGameTaskAssignment["workspace"], options?: {
261
293
  timeoutMs?: number;
262
294
  }): Promise<void>;
263
295
  export declare function assertAssignmentPluginBundleExtractionBounds(buffer: Buffer): void;
@@ -303,6 +335,11 @@ export declare function buildWorkerCapabilities(input: {
303
335
  version?: string;
304
336
  chromiumInstalled?: boolean;
305
337
  } | null;
338
+ codexImageGenerationAvailable?: boolean | null;
339
+ falConfigured?: boolean | null;
340
+ falAuthenticated?: boolean | null;
341
+ ffmpegReady?: boolean | null;
342
+ requireGenerationRuntime?: boolean;
306
343
  maxParallelTasks?: number | null;
307
344
  runningTaskCount?: number | null;
308
345
  }): AgentWorkerCapabilities;
@@ -311,7 +348,7 @@ export declare function buildWorkerClaimBody(input: {
311
348
  capabilities: AgentWorkerCapabilities;
312
349
  runningTaskCount?: number;
313
350
  }): {
314
- protocolVersion: 3;
351
+ protocolVersion: 5;
315
352
  workerKey: string;
316
353
  capabilities: AgentWorkerCapabilities;
317
354
  };
@@ -326,6 +363,7 @@ export declare function prepareCodexRunHomes(input: {
326
363
  envName: string;
327
364
  sourceCodexHome?: string;
328
365
  playdropConfig?: ReturnType<typeof loadConfig>;
366
+ playdropAccessToken?: string | null;
329
367
  stagePlaydropSession?: boolean;
330
368
  preserveExisting?: boolean;
331
369
  }): Promise<{
@@ -337,6 +375,7 @@ export declare function prepareClaudeRunConfig(input: {
337
375
  workerUsername: string;
338
376
  envName: string;
339
377
  playdropConfig?: ReturnType<typeof loadConfig>;
378
+ playdropAccessToken?: string | null;
340
379
  }): Promise<{
341
380
  playdropConfigPath: string;
342
381
  }>;
@@ -345,6 +384,7 @@ export declare function prepareGrokRunConfig(input: {
345
384
  workerUsername: string;
346
385
  envName: string;
347
386
  playdropConfig?: ReturnType<typeof loadConfig>;
387
+ playdropAccessToken?: string | null;
348
388
  preserveExisting?: boolean;
349
389
  stagePlaydropSession?: boolean;
350
390
  }): Promise<{
@@ -371,24 +411,35 @@ export declare function buildGrokPromptJson(input: {
371
411
  export declare function buildGrokIsolationEnv(): Record<string, string>;
372
412
  export declare function resolveHostGrokAuthPath(homeDir?: string): string;
373
413
  export declare function mergeCreatorRecoveryResults(runtime: AgentRuntime, initial: LoggedProcessResult, recovery: LoggedProcessResult): LoggedProcessResult;
414
+ export declare function mergeMissingAgentOutcomeRecoveryResults(runtime: AgentRuntime, initial: LoggedProcessResult, recovery: LoggedProcessResult): LoggedProcessResult;
374
415
  export declare function buildAgentFailureCode(agent: AgentRuntime, result: LoggedProcessResult, request?: {
375
416
  model: string;
376
417
  reasoningEffort?: string | null;
377
418
  }): string;
378
- export declare function classifyAgentAvailabilityFailureReason(errorCode: string): AgentAvailabilityFailureReason | null;
419
+ export declare function classifyAgentAvailabilityFailureReason(errorCode: string, retryTransientProviderFailure?: boolean): AgentAvailabilityFailureReason | null;
379
420
  export declare function describeAgentFailureForEvent(errorCode: string): string;
421
+ export declare function normalizeWorkerFailureErrorCode(message: string): string;
380
422
  export declare function createLocalPlaydropShim(input: {
381
423
  workspaceDir: string;
382
424
  taskId: number;
383
425
  attempt: number;
384
426
  devPort: number;
427
+ gameSourceGit?: boolean;
385
428
  }): Promise<string>;
386
429
  export declare function parseCodexModelCatalog(output: string): string[];
430
+ export declare function codexFeatureEnabled(output: string, feature: string): boolean;
387
431
  export declare function parseClaudeModelCatalog(output: string): string[];
388
432
  export declare function claudeModelProbeReportsSelection(output: string, expectedDisplayName: string): boolean;
389
433
  export declare function parseGrokModelCatalog(output: string): string[];
390
434
  export declare function probeWorkerProviderIndependently<T>(probe: () => T, unavailable: T): T;
391
435
  export declare function describeWorkerPreflightReason(reason: string): string;
436
+ export declare function falAuthenticationProbeExitCode(status: number): 0 | 2 | 3;
437
+ export declare function probeFalAuthentication(workerHomeDir?: string, deps?: {
438
+ spawnSync: typeof spawnSync;
439
+ }): {
440
+ authenticated: boolean;
441
+ error: string | null;
442
+ };
392
443
  export declare function buildWorkerSetupActions(input: {
393
444
  degradedReasons: string[];
394
445
  playwright?: {
@@ -465,6 +516,15 @@ export declare function launchManagedWorker(label: string, plistPath: string, op
465
516
  }): void;
466
517
  export declare function showWorkerStatus(options?: WorkerStatusOptions): Promise<WorkerStatusPayload>;
467
518
  export declare function setupWorker(options?: WorkerSetupOptions): Promise<void>;
519
+ export declare function completeWorkerAgentTaskWithRetry(input: {
520
+ client: Pick<ApiClient, "workerCompleteAgentTask">;
521
+ taskId: number;
522
+ body: Parameters<ApiClient["workerCompleteAgentTask"]>[1];
523
+ sleepImpl?: (ms: number) => Promise<void>;
524
+ maxAttempts?: number;
525
+ }): Promise<Awaited<ReturnType<ApiClient["workerCompleteAgentTask"]>>>;
526
+ type WorkerFailureStage = "setup" | "agent" | "post_agent_detail" | "game_source_reconcile" | "game_publish" | "task_complete";
527
+ export declare function classifyWorkerSupervisorFailure(message: string, stage?: WorkerFailureStage): AgentTaskTerminalReason;
468
528
  export declare function assignmentRequiresRegisteredBundle(assignment: WorkerTaskAssignment): boolean;
469
529
  export declare function startWorker(options?: WorkerStartOptions): Promise<void>;
470
530
  export declare function reportTask(options: TaskReportOptions): Promise<void>;