@playdrop/playdrop-cli 0.16.5 → 0.16.11

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 (383) hide show
  1. package/bin/playdrop +1 -2
  2. package/config/client-meta.json +4 -4
  3. package/dist/apiClient.d.ts +2 -2
  4. package/dist/apiClient.js +16 -20
  5. package/dist/appUrls.d.ts +2 -2
  6. package/dist/appUrls.js +31 -33
  7. package/dist/apps/build.d.ts +2 -2
  8. package/dist/apps/build.js +83 -83
  9. package/dist/apps/index.d.ts +7 -7
  10. package/dist/apps/index.js +8 -8
  11. package/dist/apps/loadCheck.d.ts +28 -16
  12. package/dist/apps/loadCheck.js +411 -279
  13. package/dist/apps/registration.d.ts +3 -3
  14. package/dist/apps/registration.js +1 -1
  15. package/dist/apps/staticHtml.d.ts +3 -3
  16. package/dist/apps/staticHtml.js +90 -91
  17. package/dist/apps/surfaceProfiles.d.ts +2 -2
  18. package/dist/apps/surfaceProfiles.js +6 -6
  19. package/dist/apps/upload.d.ts +5 -5
  20. package/dist/apps/upload.js +75 -81
  21. package/dist/apps/validate.d.ts +2 -2
  22. package/dist/apps/validate.js +18 -22
  23. package/dist/assetSpecs.d.ts +2 -2
  24. package/dist/assetSpecs.js +35 -35
  25. package/dist/assets/model-artifacts.d.ts +1 -1
  26. package/dist/assets/model-artifacts.js +81 -77
  27. package/dist/assets/model-worker.d.ts +1 -1
  28. package/dist/assets/model-worker.js +6 -6
  29. package/dist/browser.js +9 -9
  30. package/dist/catalogue-utils.d.ts +1 -1
  31. package/dist/catalogue-utils.js +26 -26
  32. package/dist/catalogue.d.ts +21 -16
  33. package/dist/catalogue.js +509 -413
  34. package/dist/clientInfo.d.ts +1 -1
  35. package/dist/clientInfo.js +28 -28
  36. package/dist/commandContext.d.ts +5 -5
  37. package/dist/commandContext.js +19 -23
  38. package/dist/commands/accounts.js +6 -6
  39. package/dist/commands/ads.js +16 -16
  40. package/dist/commands/agents.d.ts +2 -2
  41. package/dist/commands/agents.js +131 -127
  42. package/dist/commands/boosts.js +41 -31
  43. package/dist/commands/browse.d.ts +2 -2
  44. package/dist/commands/browse.js +168 -128
  45. package/dist/commands/build.js +9 -9
  46. package/dist/commands/captureListing.d.ts +8 -8
  47. package/dist/commands/captureListing.js +292 -332
  48. package/dist/commands/changelog.js +1 -1
  49. package/dist/commands/chat.js +51 -53
  50. package/dist/commands/check.d.ts +1 -1
  51. package/dist/commands/check.js +44 -44
  52. package/dist/commands/clients.d.ts +3 -3
  53. package/dist/commands/clients.js +67 -64
  54. package/dist/commands/comments.js +36 -29
  55. package/dist/commands/create.js +305 -312
  56. package/dist/commands/createRemixContent.d.ts +1 -1
  57. package/dist/commands/createRemixContent.js +65 -60
  58. package/dist/commands/creations.js +205 -135
  59. package/dist/commands/credits.js +37 -27
  60. package/dist/commands/detail.js +40 -34
  61. package/dist/commands/dev.js +103 -126
  62. package/dist/commands/devBrowser.js +74 -65
  63. package/dist/commands/devRuntimeAssets.d.ts +4 -4
  64. package/dist/commands/devRuntimeAssets.js +38 -40
  65. package/dist/commands/devServer.d.ts +4 -4
  66. package/dist/commands/devServer.js +183 -174
  67. package/dist/commands/devShared.d.ts +3 -3
  68. package/dist/commands/devShared.js +31 -31
  69. package/dist/commands/doctor.d.ts +5 -5
  70. package/dist/commands/doctor.js +63 -57
  71. package/dist/commands/documentation.js +42 -32
  72. package/dist/commands/feedback.js +59 -42
  73. package/dist/commands/format.js +9 -9
  74. package/dist/commands/generation.d.ts +2 -2
  75. package/dist/commands/generation.js +344 -326
  76. package/dist/commands/init.d.ts +4 -4
  77. package/dist/commands/init.js +64 -61
  78. package/dist/commands/login.d.ts +2 -2
  79. package/dist/commands/login.js +42 -62
  80. package/dist/commands/logout.js +4 -4
  81. package/dist/commands/marketing.d.ts +8 -8
  82. package/dist/commands/marketing.js +246 -297
  83. package/dist/commands/notes.js +19 -19
  84. package/dist/commands/notifications.js +34 -22
  85. package/dist/commands/npmProcess.js +3 -3
  86. package/dist/commands/ownedRuntimeImageValidation.d.ts +1 -1
  87. package/dist/commands/ownedRuntimeImageValidation.js +19 -17
  88. package/dist/commands/play.js +12 -21
  89. package/dist/commands/publicPages.js +8 -4
  90. package/dist/commands/review.js +123 -110
  91. package/dist/commands/search.js +107 -88
  92. package/dist/commands/tags.js +10 -12
  93. package/dist/commands/taskCaptureSession.d.ts +3 -3
  94. package/dist/commands/taskCaptureSession.js +3 -3
  95. package/dist/commands/tweaks.js +25 -23
  96. package/dist/commands/upgrade.js +40 -31
  97. package/dist/commands/upload-content.d.ts +5 -5
  98. package/dist/commands/upload-content.js +130 -122
  99. package/dist/commands/upload-graph.d.ts +1 -1
  100. package/dist/commands/upload-graph.js +7 -11
  101. package/dist/commands/upload.d.ts +7 -7
  102. package/dist/commands/upload.js +196 -217
  103. package/dist/commands/validate.js +33 -32
  104. package/dist/commands/versionsBrowse.js +61 -51
  105. package/dist/commands/whoami.js +11 -14
  106. package/dist/commands/worker/archive-staging.d.ts +9 -0
  107. package/dist/commands/worker/archive-staging.js +257 -0
  108. package/dist/commands/worker/instrument-evidence.d.ts +1 -1
  109. package/dist/commands/worker/instrument-evidence.js +41 -43
  110. package/dist/commands/worker/provider-telemetry.d.ts +2 -1
  111. package/dist/commands/worker/provider-telemetry.js +181 -64
  112. package/dist/commands/worker/runtime.d.ts +18 -3
  113. package/dist/commands/worker/runtime.js +291 -239
  114. package/dist/commands/worker.d.ts +83 -22
  115. package/dist/commands/worker.js +1980 -1411
  116. package/dist/commands/workspaces.d.ts +2 -2
  117. package/dist/commands/workspaces.js +57 -57
  118. package/dist/config.js +23 -20
  119. package/dist/devAuth.d.ts +3 -3
  120. package/dist/devAuth.js +20 -17
  121. package/dist/environment.d.ts +1 -1
  122. package/dist/environment.js +34 -34
  123. package/dist/errors.d.ts +1 -1
  124. package/dist/errors.js +7 -7
  125. package/dist/externalAssetPackValidation.d.ts +1 -1
  126. package/dist/externalAssetPackValidation.js +9 -9
  127. package/dist/http.d.ts +1 -1
  128. package/dist/http.js +9 -9
  129. package/dist/index.js +657 -664
  130. package/dist/listingCaptureLease.js +23 -23
  131. package/dist/listingPreflight.d.ts +2 -2
  132. package/dist/listingPreflight.js +33 -33
  133. package/dist/messages.js +6 -14
  134. package/dist/output.js +9 -9
  135. package/dist/playwright.d.ts +1 -1
  136. package/dist/playwright.js +35 -40
  137. package/dist/proxyFetch.js +30 -27
  138. package/dist/recorderRelease.js +8 -8
  139. package/dist/refs.d.ts +5 -5
  140. package/dist/refs.js +40 -37
  141. package/dist/sessionCookie.js +15 -21
  142. package/dist/shellProbe.js +5 -5
  143. package/dist/taskSelection.d.ts +3 -3
  144. package/dist/taskSelection.js +67 -62
  145. package/dist/taskUtils.d.ts +1 -1
  146. package/dist/taskUtils.js +4 -4
  147. package/dist/tweakStaleness.d.ts +3 -3
  148. package/dist/tweakStaleness.js +8 -8
  149. package/dist/uploadLog.d.ts +3 -3
  150. package/dist/uploadLog.js +51 -51
  151. package/dist/versionCompare.js +3 -3
  152. package/dist/workerAppProject.d.ts +1 -1
  153. package/dist/workerAppProject.js +10 -17
  154. package/dist/workspaceAuth.d.ts +1 -1
  155. package/dist/workspaceAuth.js +28 -22
  156. package/node_modules/@playdrop/ai-client/dist/index.d.ts +35 -35
  157. package/node_modules/@playdrop/ai-client/dist/index.d.ts.map +1 -1
  158. package/node_modules/@playdrop/api-client/dist/client.d.ts +34 -33
  159. package/node_modules/@playdrop/api-client/dist/client.d.ts.map +1 -1
  160. package/node_modules/@playdrop/api-client/dist/core/errors.d.ts +1 -1
  161. package/node_modules/@playdrop/api-client/dist/core/errors.d.ts.map +1 -1
  162. package/node_modules/@playdrop/api-client/dist/core/request.d.ts +2 -2
  163. package/node_modules/@playdrop/api-client/dist/core/request.d.ts.map +1 -1
  164. package/node_modules/@playdrop/api-client/dist/domains/admin.d.ts +2 -2
  165. package/node_modules/@playdrop/api-client/dist/domains/admin.d.ts.map +1 -1
  166. package/node_modules/@playdrop/api-client/dist/domains/admin.js +4 -1
  167. package/node_modules/@playdrop/api-client/dist/domains/agent-tasks.d.ts +4 -3
  168. package/node_modules/@playdrop/api-client/dist/domains/agent-tasks.d.ts.map +1 -1
  169. package/node_modules/@playdrop/api-client/dist/domains/agent-tasks.js +12 -0
  170. package/node_modules/@playdrop/api-client/dist/domains/ai.d.ts +2 -2
  171. package/node_modules/@playdrop/api-client/dist/domains/ai.d.ts.map +1 -1
  172. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts +4 -4
  173. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts.map +1 -1
  174. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts +4 -4
  175. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts.map +1 -1
  176. package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts +4 -4
  177. package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts.map +1 -1
  178. package/node_modules/@playdrop/api-client/dist/domains/auth.d.ts +2 -2
  179. package/node_modules/@playdrop/api-client/dist/domains/auth.d.ts.map +1 -1
  180. package/node_modules/@playdrop/api-client/dist/domains/chat.d.ts +2 -2
  181. package/node_modules/@playdrop/api-client/dist/domains/chat.d.ts.map +1 -1
  182. package/node_modules/@playdrop/api-client/dist/domains/comments.d.ts +3 -3
  183. package/node_modules/@playdrop/api-client/dist/domains/comments.d.ts.map +1 -1
  184. package/node_modules/@playdrop/api-client/dist/domains/free-credits.d.ts +2 -2
  185. package/node_modules/@playdrop/api-client/dist/domains/free-credits.d.ts.map +1 -1
  186. package/node_modules/@playdrop/api-client/dist/domains/me.d.ts +2 -2
  187. package/node_modules/@playdrop/api-client/dist/domains/me.d.ts.map +1 -1
  188. package/node_modules/@playdrop/api-client/dist/domains/payments.d.ts +2 -2
  189. package/node_modules/@playdrop/api-client/dist/domains/payments.d.ts.map +1 -1
  190. package/node_modules/@playdrop/api-client/dist/domains/player-meta.d.ts +2 -2
  191. package/node_modules/@playdrop/api-client/dist/domains/player-meta.d.ts.map +1 -1
  192. package/node_modules/@playdrop/api-client/dist/domains/playtrade.d.ts +3 -3
  193. package/node_modules/@playdrop/api-client/dist/domains/playtrade.d.ts.map +1 -1
  194. package/node_modules/@playdrop/api-client/dist/domains/playtrade.js +2 -2
  195. package/node_modules/@playdrop/api-client/dist/domains/search.d.ts +2 -2
  196. package/node_modules/@playdrop/api-client/dist/domains/search.d.ts.map +1 -1
  197. package/node_modules/@playdrop/api-client/dist/domains/tags.d.ts +2 -2
  198. package/node_modules/@playdrop/api-client/dist/domains/tags.d.ts.map +1 -1
  199. package/node_modules/@playdrop/api-client/dist/index.d.ts +19 -18
  200. package/node_modules/@playdrop/api-client/dist/index.d.ts.map +1 -1
  201. package/node_modules/@playdrop/api-client/dist/index.js +7 -2
  202. package/node_modules/@playdrop/boxel-core/dist/src/entity-cleaner.d.ts +1 -1
  203. package/node_modules/@playdrop/boxel-core/dist/src/entity-cleaner.js +47 -47
  204. package/node_modules/@playdrop/boxel-core/dist/src/entity-cleaner.js.map +1 -1
  205. package/node_modules/@playdrop/boxel-core/dist/src/entity-utils.d.ts +3 -3
  206. package/node_modules/@playdrop/boxel-core/dist/src/entity-utils.js +32 -47
  207. package/node_modules/@playdrop/boxel-core/dist/src/entity-utils.js.map +1 -1
  208. package/node_modules/@playdrop/boxel-core/dist/src/format-utils.js +16 -18
  209. package/node_modules/@playdrop/boxel-core/dist/src/format-utils.js.map +1 -1
  210. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/geometry.d.ts +2 -2
  211. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/index.d.ts +4 -4
  212. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/common.d.ts +1 -1
  213. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/index.d.ts +3 -3
  214. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/textured-builder.d.ts +2 -2
  215. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/textured-builder.js +44 -45
  216. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/textured-builder.js.map +1 -1
  217. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/types.d.ts +1 -1
  218. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/voxel-builder.d.ts +2 -2
  219. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/voxel-builder.js +40 -44
  220. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/voxel-builder.js.map +1 -1
  221. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/builder.d.ts +2 -2
  222. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/builder.js +30 -34
  223. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/builder.js.map +1 -1
  224. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/index.d.ts +4 -4
  225. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/index.js.map +1 -1
  226. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/scanner.d.ts +3 -3
  227. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/scanner.js +23 -20
  228. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/scanner.js.map +1 -1
  229. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/artifacts.d.ts +3 -3
  230. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/artifacts.js +3 -3
  231. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/face-map.d.ts +1 -1
  232. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/face-map.js +21 -21
  233. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/face-map.js.map +1 -1
  234. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/templates/index.d.ts +1 -1
  235. package/node_modules/@playdrop/boxel-core/dist/src/humanoid/templates/index.js +2 -2
  236. package/node_modules/@playdrop/boxel-core/dist/src/index.d.ts +19 -19
  237. package/node_modules/@playdrop/boxel-core/dist/src/materials.d.ts +1 -1
  238. package/node_modules/@playdrop/boxel-core/dist/src/materials.js +12 -16
  239. package/node_modules/@playdrop/boxel-core/dist/src/materials.js.map +1 -1
  240. package/node_modules/@playdrop/boxel-core/dist/src/palette_tools.d.ts +1 -1
  241. package/node_modules/@playdrop/boxel-core/dist/src/palette_tools.js +38 -41
  242. package/node_modules/@playdrop/boxel-core/dist/src/palette_tools.js.map +1 -1
  243. package/node_modules/@playdrop/boxel-core/dist/src/serialization.d.ts +1 -1
  244. package/node_modules/@playdrop/boxel-core/dist/src/serialization.js +54 -56
  245. package/node_modules/@playdrop/boxel-core/dist/src/serialization.js.map +1 -1
  246. package/node_modules/@playdrop/boxel-core/dist/src/textures.d.ts +3 -3
  247. package/node_modules/@playdrop/boxel-core/dist/src/textures.js +39 -45
  248. package/node_modules/@playdrop/boxel-core/dist/src/textures.js.map +1 -1
  249. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/infer-face.d.ts +2 -2
  250. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/infer-face.js +39 -43
  251. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/infer-face.js.map +1 -1
  252. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/layer-mode.d.ts +3 -3
  253. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/layer-mode.js +35 -35
  254. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/layer-mode.js.map +1 -1
  255. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/merge-overlay.d.ts +1 -1
  256. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/merge-overlay.js +18 -18
  257. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/merge-overlay.js.map +1 -1
  258. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/slice.d.ts +3 -3
  259. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/slice.js +50 -48
  260. package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/slice.js.map +1 -1
  261. package/node_modules/@playdrop/boxel-core/dist/src/transforms/upscale.d.ts +1 -1
  262. package/node_modules/@playdrop/boxel-core/dist/src/transforms/upscale.js +22 -26
  263. package/node_modules/@playdrop/boxel-core/dist/src/transforms/upscale.js.map +1 -1
  264. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/slice.d.ts +2 -2
  265. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/slice.js +8 -8
  266. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/slice.js.map +1 -1
  267. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/textured-to-voxel.d.ts +2 -2
  268. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/textured-to-voxel.js +23 -28
  269. package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/textured-to-voxel.js.map +1 -1
  270. package/node_modules/@playdrop/boxel-core/dist/src/types.d.ts +8 -8
  271. package/node_modules/@playdrop/boxel-core/dist/src/validation.d.ts +1 -1
  272. package/node_modules/@playdrop/boxel-core/dist/src/validation.js +93 -95
  273. package/node_modules/@playdrop/boxel-core/dist/src/validation.js.map +1 -1
  274. package/node_modules/@playdrop/boxel-core/dist/src/voxels/greedy-mesher.d.ts +1 -1
  275. package/node_modules/@playdrop/boxel-core/dist/src/voxels/greedy-mesher.js +2 -2
  276. package/node_modules/@playdrop/boxel-core/dist/src/voxels/greedy-mesher.js.map +1 -1
  277. package/node_modules/@playdrop/boxel-core/dist/src/voxels.d.ts +1 -1
  278. package/node_modules/@playdrop/boxel-core/dist/src/voxels.js +2 -7
  279. package/node_modules/@playdrop/boxel-core/dist/src/voxels.js.map +1 -1
  280. package/node_modules/@playdrop/boxel-three/dist/src/animations.d.ts +3 -3
  281. package/node_modules/@playdrop/boxel-three/dist/src/builders.d.ts +4 -4
  282. package/node_modules/@playdrop/boxel-three/dist/src/context.d.ts +3 -3
  283. package/node_modules/@playdrop/boxel-three/dist/src/exporters/glb.d.ts +6 -6
  284. package/node_modules/@playdrop/boxel-three/dist/src/exporters/glb.js +9 -1
  285. package/node_modules/@playdrop/boxel-three/dist/src/exporters/image.d.ts +3 -3
  286. package/node_modules/@playdrop/boxel-three/dist/src/index.d.ts +17 -17
  287. package/node_modules/@playdrop/boxel-three/dist/src/instantiate.d.ts +9 -9
  288. package/node_modules/@playdrop/boxel-three/dist/src/nodes.d.ts +3 -3
  289. package/node_modules/@playdrop/boxel-three/dist/src/nodes.js +1 -1
  290. package/node_modules/@playdrop/boxel-three/dist/src/overlays.d.ts +2 -2
  291. package/node_modules/@playdrop/boxel-three/dist/src/primitives.d.ts +1 -1
  292. package/node_modules/@playdrop/boxel-three/dist/src/scene.d.ts +1 -1
  293. package/node_modules/@playdrop/boxel-three/dist/src/skinned-mesh.d.ts +2 -2
  294. package/node_modules/@playdrop/boxel-three/dist/src/texture-atlas.d.ts +1 -1
  295. package/node_modules/@playdrop/boxel-three/dist/src/textures.d.ts +3 -3
  296. package/node_modules/@playdrop/boxel-three/dist/src/types.d.ts +4 -4
  297. package/node_modules/@playdrop/boxel-three/dist/src/voxels/faces.d.ts +2 -2
  298. package/node_modules/@playdrop/boxel-three/dist/src/voxels/mesher.d.ts +1 -1
  299. package/node_modules/@playdrop/boxel-three/dist/test/fixtures/render-worker.d.ts +1 -1
  300. package/node_modules/@playdrop/config/client-meta.json +4 -4
  301. package/node_modules/@playdrop/config/dist/src/client-meta.d.ts +1 -1
  302. package/node_modules/@playdrop/config/dist/src/client-meta.d.ts.map +1 -1
  303. package/node_modules/@playdrop/config/dist/src/client-meta.js +10 -10
  304. package/node_modules/@playdrop/config/dist/src/constants.js +10 -10
  305. package/node_modules/@playdrop/config/dist/src/creator-plans.d.ts +1 -1
  306. package/node_modules/@playdrop/config/dist/src/creator-plans.d.ts.map +1 -1
  307. package/node_modules/@playdrop/config/dist/src/creator-plans.js +27 -28
  308. package/node_modules/@playdrop/config/dist/src/deployment.d.ts +4 -4
  309. package/node_modules/@playdrop/config/dist/src/deployment.d.ts.map +1 -1
  310. package/node_modules/@playdrop/config/dist/src/deployment.js +42 -41
  311. package/node_modules/@playdrop/config/dist/src/game-arena.js +12 -12
  312. package/node_modules/@playdrop/config/dist/src/index.d.ts +9 -9
  313. package/node_modules/@playdrop/config/dist/src/index.d.ts.map +1 -1
  314. package/node_modules/@playdrop/config/dist/src/index.js +24 -25
  315. package/node_modules/@playdrop/config/dist/src/public-deployment.d.ts +4 -4
  316. package/node_modules/@playdrop/config/dist/src/public-deployment.d.ts.map +1 -1
  317. package/node_modules/@playdrop/config/dist/src/public-deployment.js +41 -39
  318. package/node_modules/@playdrop/config/dist/src/runtime-client-meta.js +1 -3
  319. package/node_modules/@playdrop/config/dist/src/runtime-service-origins.d.ts.map +1 -1
  320. package/node_modules/@playdrop/config/dist/src/runtime-service-origins.js +23 -25
  321. package/node_modules/@playdrop/config/dist/src/server/fastify.d.ts +5 -5
  322. package/node_modules/@playdrop/config/dist/src/server/fastify.d.ts.map +1 -1
  323. package/node_modules/@playdrop/config/dist/src/server/fastify.js +44 -46
  324. package/node_modules/@playdrop/config/dist/src/server/logging.d.ts +1 -1
  325. package/node_modules/@playdrop/config/dist/src/server/logging.d.ts.map +1 -1
  326. package/node_modules/@playdrop/config/dist/src/server/logging.js +6 -8
  327. package/node_modules/@playdrop/config/dist/src/types.d.ts +2 -2
  328. package/node_modules/@playdrop/config/dist/test/creator-plans.test.js +12 -12
  329. package/node_modules/@playdrop/config/dist/test/deployment.test.js +59 -59
  330. package/node_modules/@playdrop/config/dist/test/fastify.test.js +4 -4
  331. package/node_modules/@playdrop/config/dist/test/game-arena.test.js +8 -8
  332. package/node_modules/@playdrop/config/dist/test/logging.test.js +6 -6
  333. package/node_modules/@playdrop/config/dist/test/validateClientEnvironment.test.js +57 -57
  334. package/node_modules/@playdrop/config/dist/tsconfig.tsbuildinfo +1 -1
  335. package/node_modules/@playdrop/types/dist/agent-task-playtest.d.ts.map +1 -1
  336. package/node_modules/@playdrop/types/dist/agent-task-terminal.d.ts +2 -2
  337. package/node_modules/@playdrop/types/dist/agent-task-terminal.d.ts.map +1 -1
  338. package/node_modules/@playdrop/types/dist/api.d.ts +314 -250
  339. package/node_modules/@playdrop/types/dist/api.d.ts.map +1 -1
  340. package/node_modules/@playdrop/types/dist/api.js +40 -59
  341. package/node_modules/@playdrop/types/dist/app-capability-filters.d.ts +2 -2
  342. package/node_modules/@playdrop/types/dist/app-playtest-tape.d.ts +6 -6
  343. package/node_modules/@playdrop/types/dist/app-playtest-tape.d.ts.map +1 -1
  344. package/node_modules/@playdrop/types/dist/app-review.d.ts +2 -2
  345. package/node_modules/@playdrop/types/dist/app-review.d.ts.map +1 -1
  346. package/node_modules/@playdrop/types/dist/app-review.js +1 -6
  347. package/node_modules/@playdrop/types/dist/app.d.ts.map +1 -1
  348. package/node_modules/@playdrop/types/dist/asset-pack.d.ts +5 -5
  349. package/node_modules/@playdrop/types/dist/asset-spec.d.ts +4 -4
  350. package/node_modules/@playdrop/types/dist/asset.d.ts +11 -11
  351. package/node_modules/@playdrop/types/dist/attachment-policy.d.ts.map +1 -1
  352. package/node_modules/@playdrop/types/dist/chat.d.ts +3 -3
  353. package/node_modules/@playdrop/types/dist/creator-public-image.d.ts.map +1 -1
  354. package/node_modules/@playdrop/types/dist/graph.d.ts +4 -4
  355. package/node_modules/@playdrop/types/dist/index.d.ts +25 -25
  356. package/node_modules/@playdrop/types/dist/instrument-evidence.d.ts +2 -2
  357. package/node_modules/@playdrop/types/dist/instrument-evidence.d.ts.map +1 -1
  358. package/node_modules/@playdrop/types/dist/instrument-evidence.js +2 -11
  359. package/node_modules/@playdrop/types/dist/locale.d.ts +2 -2
  360. package/node_modules/@playdrop/types/dist/locale.d.ts.map +1 -1
  361. package/node_modules/@playdrop/types/dist/locale.js +2 -17
  362. package/node_modules/@playdrop/types/dist/owned-assets.d.ts +2 -2
  363. package/node_modules/@playdrop/types/dist/owned-assets.d.ts.map +1 -1
  364. package/node_modules/@playdrop/types/dist/player-meta.d.ts +3 -3
  365. package/node_modules/@playdrop/types/dist/player-meta.d.ts.map +1 -1
  366. package/node_modules/@playdrop/types/dist/playtest-notes.d.ts +11 -11
  367. package/node_modules/@playdrop/types/dist/playtest-notes.d.ts.map +1 -1
  368. package/node_modules/@playdrop/types/dist/playtrade.d.ts +8 -5
  369. package/node_modules/@playdrop/types/dist/playtrade.d.ts.map +1 -1
  370. package/node_modules/@playdrop/types/dist/realtime.d.ts +1 -1
  371. package/node_modules/@playdrop/types/dist/tweaks.d.ts +4 -4
  372. package/node_modules/@playdrop/types/dist/tweaks.d.ts.map +1 -1
  373. package/node_modules/@playdrop/types/dist/tweaks.js +12 -2
  374. package/node_modules/@playdrop/types/dist/version.d.ts +14 -14
  375. package/node_modules/@playdrop/types/dist/version.d.ts.map +1 -1
  376. package/node_modules/@playdrop/types/dist/version.js +4 -1
  377. package/node_modules/@playdrop/vox-three/dist/src/index.d.ts +1 -1
  378. package/node_modules/@playdrop/vox-three/dist/src/vox.d.ts +2 -2
  379. package/node_modules/@playdrop/vox-three/dist/src/vox.js +20 -18
  380. package/node_modules/@playdrop/vox-three/dist/src/vox.js.map +1 -1
  381. package/node_modules/@playdrop/vox-three/dist/test/vox.test.js +11 -14
  382. package/node_modules/@playdrop/vox-three/dist/test/vox.test.js.map +1 -1
  383. package/package.json +1 -1
@@ -15,11 +15,11 @@ const node_path_1 = require("node:path");
15
15
  const node_child_process_1 = require("node:child_process");
16
16
  const output_1 = require("../output");
17
17
  const versionCompare_1 = require("../versionCompare");
18
- const MAC_APP_PATH = '/Applications/PlayDrop.app';
19
- const MAC_CLIENT_LATEST_URL = 'https://www.playdrop.ai/api/mac-client/latest';
20
- const WINDOWS_CLIENT_EXECUTABLE = 'PlayDrop.exe';
21
- const WINDOWS_CLIENT_INSTALL_HINT = 'Install or update PlayDrop for Windows with the Windows installer or the in-app updater.';
22
- const WINDOWS_CLIENT_PATH_ENV = 'PLAYDROP_WINDOWS_CLIENT_PATH';
18
+ const MAC_APP_PATH = "/Applications/PlayDrop.app";
19
+ const MAC_CLIENT_LATEST_URL = "https://www.playdrop.ai/api/mac-client/latest";
20
+ const WINDOWS_CLIENT_EXECUTABLE = "PlayDrop.exe";
21
+ const WINDOWS_CLIENT_INSTALL_HINT = "Install or update PlayDrop for Windows with the Windows installer or the in-app updater.";
22
+ const WINDOWS_CLIENT_PATH_ENV = "PLAYDROP_WINDOWS_CLIENT_PATH";
23
23
  async function showClientStatus(options = {}) {
24
24
  const status = await getClientStatus(options);
25
25
  if (options.json) {
@@ -32,14 +32,14 @@ async function showClientStatus(options = {}) {
32
32
  }
33
33
  async function getClientStatus(options = {}) {
34
34
  const platform = options.platform ?? process.platform;
35
- if (platform === 'win32') {
35
+ if (platform === "win32") {
36
36
  return getWindowsClientStatus(options);
37
37
  }
38
- if (platform !== 'darwin') {
38
+ if (platform !== "darwin") {
39
39
  return {
40
40
  platform,
41
41
  supported: false,
42
- status: 'unavailable',
42
+ status: "unavailable",
43
43
  installed: false,
44
44
  reason: `PlayDrop native clients are not available for ${platform}.`,
45
45
  };
@@ -52,7 +52,7 @@ async function getClientStatus(options = {}) {
52
52
  return {
53
53
  platform,
54
54
  supported: true,
55
- status: !installed ? 'missing' : updateAvailable ? 'update-available' : 'installed',
55
+ status: !installed ? "missing" : updateAvailable ? "update-available" : "installed",
56
56
  installed,
57
57
  appPath,
58
58
  version: bundle.version,
@@ -60,21 +60,21 @@ async function getClientStatus(options = {}) {
60
60
  latestVersion: latest?.version,
61
61
  latestBuild: latest?.build,
62
62
  updateAvailable,
63
- nextAction: !installed ? 'playdrop clients install' : updateAvailable ? 'playdrop clients update' : undefined,
63
+ nextAction: !installed ? "playdrop clients install" : updateAvailable ? "playdrop clients update" : undefined,
64
64
  };
65
65
  }
66
66
  async function installClient(options = {}) {
67
- await installOrUpdateClient('install', options);
67
+ await installOrUpdateClient("install", options);
68
68
  }
69
69
  async function updateClient(options = {}) {
70
- await installOrUpdateClient('update', options);
70
+ await installOrUpdateClient("update", options);
71
71
  }
72
72
  async function launchClient(options = {}) {
73
73
  const platform = options.platform ?? process.platform;
74
- if (platform === 'win32') {
74
+ if (platform === "win32") {
75
75
  const status = await getWindowsClientStatus(options);
76
76
  if (!status.installed || !status.appPath) {
77
- console.error('PlayDrop for Windows is not installed.');
77
+ console.error("PlayDrop for Windows is not installed.");
78
78
  console.error(WINDOWS_CLIENT_INSTALL_HINT);
79
79
  process.exitCode = 1;
80
80
  return;
@@ -86,10 +86,10 @@ async function launchClient(options = {}) {
86
86
  process.exitCode = 1;
87
87
  return;
88
88
  }
89
- console.log('Launched PlayDrop.');
89
+ console.log("Launched PlayDrop.");
90
90
  return;
91
91
  }
92
- if (platform !== 'darwin') {
92
+ if (platform !== "darwin") {
93
93
  printUnsupportedPlatform(platform);
94
94
  return;
95
95
  }
@@ -101,51 +101,51 @@ async function launchClient(options = {}) {
101
101
  return;
102
102
  }
103
103
  const runCommand = options.runCommand ?? runCommandSync;
104
- const result = runCommand('open', [appPath]);
104
+ const result = runCommand("open", [appPath]);
105
105
  if (result.status !== 0) {
106
106
  console.error(`Failed to launch PlayDrop from ${appPath}.`);
107
107
  process.exitCode = 1;
108
108
  return;
109
109
  }
110
- console.log('Launched PlayDrop.');
110
+ console.log("Launched PlayDrop.");
111
111
  }
112
112
  async function installOrUpdateClient(action, options) {
113
113
  const platform = options.platform ?? process.platform;
114
- if (platform === 'win32') {
114
+ if (platform === "win32") {
115
115
  console.error(`PlayDrop for Windows ${action} is not available through the CLI yet.`);
116
116
  console.error(WINDOWS_CLIENT_INSTALL_HINT);
117
117
  process.exitCode = 1;
118
118
  return;
119
119
  }
120
- if (platform !== 'darwin') {
120
+ if (platform !== "darwin") {
121
121
  printUnsupportedPlatform(platform);
122
122
  return;
123
123
  }
124
124
  const appPath = options.appPath ?? MAC_APP_PATH;
125
125
  const runCommand = options.runCommand ?? runCommandSync;
126
126
  if (isPlayDropRunning(runCommand)) {
127
- console.error('PlayDrop is running. Quit PlayDrop before installing or updating.');
127
+ console.error("PlayDrop is running. Quit PlayDrop before installing or updating.");
128
128
  process.exitCode = 1;
129
129
  return;
130
130
  }
131
131
  try {
132
- (0, node_fs_1.accessSync)('/Applications', node_fs_1.constants.W_OK);
132
+ (0, node_fs_1.accessSync)("/Applications", node_fs_1.constants.W_OK);
133
133
  }
134
134
  catch {
135
- console.error('Cannot write to /Applications.');
136
- console.error('Run this command from a terminal with permission to install apps into /Applications.');
135
+ console.error("Cannot write to /Applications.");
136
+ console.error("Run this command from a terminal with permission to install apps into /Applications.");
137
137
  process.exitCode = 1;
138
138
  return;
139
139
  }
140
140
  const manifest = await (options.fetchLatestManifest ?? fetchLatestMacClientManifest)();
141
141
  if (!manifest) {
142
- console.error('Could not resolve the latest PlayDrop Mac client manifest.');
142
+ console.error("Could not resolve the latest PlayDrop Mac client manifest.");
143
143
  process.exitCode = 1;
144
144
  return;
145
145
  }
146
146
  const installed = await installMacDmg(manifest, appPath, runCommand);
147
147
  if (installed) {
148
- console.log(`${action === 'install' ? 'Installed' : 'Updated'} PlayDrop at ${appPath}.`);
148
+ console.log(`${action === "install" ? "Installed" : "Updated"} PlayDrop at ${appPath}.`);
149
149
  }
150
150
  }
151
151
  function printUnsupportedPlatform(platform) {
@@ -158,7 +158,7 @@ function printClientStatus(status) {
158
158
  return;
159
159
  }
160
160
  if (!status.installed) {
161
- console.log('PlayDrop client: missing');
161
+ console.log("PlayDrop client: missing");
162
162
  if (status.nextAction) {
163
163
  console.log(`Run: ${status.nextAction}`);
164
164
  }
@@ -167,31 +167,31 @@ function printClientStatus(status) {
167
167
  }
168
168
  return;
169
169
  }
170
- const version = status.version ? ` ${status.version}` : '';
170
+ const version = status.version ? ` ${status.version}` : "";
171
171
  console.log(`PlayDrop client: ${status.status}${version}`);
172
172
  if (status.appPath) {
173
173
  console.log(`Location: ${status.appPath}`);
174
174
  }
175
175
  if (status.updateAvailable) {
176
- console.log('Run: playdrop clients update');
176
+ console.log("Run: playdrop clients update");
177
177
  }
178
178
  }
179
179
  async function getWindowsClientStatus(options) {
180
180
  const appPath = resolveWindowsClientPath(options.appPath);
181
181
  if (!appPath) {
182
182
  return {
183
- platform: 'win32',
183
+ platform: "win32",
184
184
  supported: true,
185
- status: 'missing',
185
+ status: "missing",
186
186
  installed: false,
187
187
  reason: WINDOWS_CLIENT_INSTALL_HINT,
188
188
  };
189
189
  }
190
190
  const bundle = readWindowsClientInfo(appPath);
191
191
  return {
192
- platform: 'win32',
192
+ platform: "win32",
193
193
  supported: true,
194
- status: 'installed',
194
+ status: "installed",
195
195
  installed: true,
196
196
  appPath,
197
197
  version: bundle.version,
@@ -214,20 +214,19 @@ function windowsClientPathCandidates(explicitPath) {
214
214
  add(process.env[WINDOWS_CLIENT_PATH_ENV]);
215
215
  const localAppData = process.env.LOCALAPPDATA;
216
216
  if (localAppData) {
217
- add((0, node_path_1.join)(localAppData, 'PlayDrop.Windows', 'current', WINDOWS_CLIENT_EXECUTABLE));
218
- add((0, node_path_1.join)(localAppData, 'PlayDrop', 'current', WINDOWS_CLIENT_EXECUTABLE));
217
+ add((0, node_path_1.join)(localAppData, "PlayDrop.Windows", "current", WINDOWS_CLIENT_EXECUTABLE));
218
+ add((0, node_path_1.join)(localAppData, "PlayDrop", "current", WINDOWS_CLIENT_EXECUTABLE));
219
219
  }
220
- add(process.env.ProgramFiles ? (0, node_path_1.join)(process.env.ProgramFiles, 'PlayDrop', WINDOWS_CLIENT_EXECUTABLE) : undefined);
221
- add(process.env['ProgramFiles(x86)'] ? (0, node_path_1.join)(process.env['ProgramFiles(x86)'], 'PlayDrop', WINDOWS_CLIENT_EXECUTABLE) : undefined);
220
+ add(process.env.ProgramFiles ? (0, node_path_1.join)(process.env.ProgramFiles, "PlayDrop", WINDOWS_CLIENT_EXECUTABLE) : undefined);
221
+ add(process.env["ProgramFiles(x86)"]
222
+ ? (0, node_path_1.join)(process.env["ProgramFiles(x86)"], "PlayDrop", WINDOWS_CLIENT_EXECUTABLE)
223
+ : undefined);
222
224
  return [...new Set(candidates)];
223
225
  }
224
226
  function readWindowsClientInfo(appPath) {
225
- for (const versionPath of [
226
- (0, node_path_1.join)((0, node_path_1.dirname)(appPath), 'sq.version'),
227
- (0, node_path_1.join)((0, node_path_1.dirname)((0, node_path_1.dirname)(appPath)), 'sq.version'),
228
- ]) {
227
+ for (const versionPath of [(0, node_path_1.join)((0, node_path_1.dirname)(appPath), "sq.version"), (0, node_path_1.join)((0, node_path_1.dirname)((0, node_path_1.dirname)(appPath)), "sq.version")]) {
229
228
  try {
230
- const version = (0, node_fs_1.readFileSync)(versionPath, 'utf8').trim();
229
+ const version = (0, node_fs_1.readFileSync)(versionPath, "utf8").trim();
231
230
  if (version.length > 0) {
232
231
  return { version };
233
232
  }
@@ -240,20 +239,24 @@ function readWindowsClientInfo(appPath) {
240
239
  }
241
240
  async function fetchLatestMacClientManifest() {
242
241
  try {
243
- const response = await fetch(MAC_CLIENT_LATEST_URL, { headers: { Accept: 'application/json' } });
242
+ const response = await fetch(MAC_CLIENT_LATEST_URL, { headers: { Accept: "application/json" } });
244
243
  if (!response.ok) {
245
244
  return null;
246
245
  }
247
- const payload = await response.json();
248
- if (payload.platform !== 'mac' || !payload.version || !payload.build || !payload.downloadUrl || !payload.dmgFilename) {
246
+ const payload = (await response.json());
247
+ if (payload.platform !== "mac" ||
248
+ !payload.version ||
249
+ !payload.build ||
250
+ !payload.downloadUrl ||
251
+ !payload.dmgFilename) {
249
252
  return null;
250
253
  }
251
254
  return {
252
- platform: 'mac',
255
+ platform: "mac",
253
256
  version: payload.version,
254
257
  build: payload.build,
255
258
  versionCode: payload.versionCode ?? payload.build,
256
- filename: payload.filename ?? 'PlayDrop.app',
259
+ filename: payload.filename ?? "PlayDrop.app",
257
260
  dmgFilename: payload.dmgFilename,
258
261
  downloadUrl: payload.downloadUrl,
259
262
  };
@@ -263,12 +266,12 @@ async function fetchLatestMacClientManifest() {
263
266
  }
264
267
  }
265
268
  function readMacBundleInfo(appPath) {
266
- const infoPath = (0, node_path_1.join)(appPath, 'Contents', 'Info.plist');
269
+ const infoPath = (0, node_path_1.join)(appPath, "Contents", "Info.plist");
267
270
  try {
268
- const xml = (0, node_fs_1.readFileSync)(infoPath, 'utf8');
271
+ const xml = (0, node_fs_1.readFileSync)(infoPath, "utf8");
269
272
  return {
270
- version: readPlistString(xml, 'CFBundleShortVersionString'),
271
- build: readPlistString(xml, 'CFBundleVersion'),
273
+ version: readPlistString(xml, "CFBundleShortVersionString"),
274
+ build: readPlistString(xml, "CFBundleVersion"),
272
275
  };
273
276
  }
274
277
  catch {
@@ -276,18 +279,18 @@ function readMacBundleInfo(appPath) {
276
279
  }
277
280
  }
278
281
  function readPlistString(xml, key) {
279
- const escaped = key.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
282
+ const escaped = key.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
280
283
  const match = xml.match(new RegExp(`<key>\\s*${escaped}\\s*</key>\\s*<string>([^<]+)</string>`));
281
284
  return match?.[1]?.trim();
282
285
  }
283
286
  function isPlayDropRunning(runCommand) {
284
- const result = (runCommand ?? runCommandSync)('pgrep', ['-x', 'PlayDrop']);
287
+ const result = (runCommand ?? runCommandSync)("pgrep", ["-x", "PlayDrop"]);
285
288
  return result.status === 0;
286
289
  }
287
290
  async function installMacDmg(manifest, appPath, runCommand) {
288
- const tempDir = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)(node_os_1.default.tmpdir(), 'playdrop-client-'));
289
- const dmgPath = (0, node_path_1.join)(tempDir, (0, node_path_1.basename)(manifest.dmgFilename || 'PlayDrop.dmg'));
290
- const mountPath = (0, node_path_1.join)(tempDir, 'mount');
291
+ const tempDir = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)(node_os_1.default.tmpdir(), "playdrop-client-"));
292
+ const dmgPath = (0, node_path_1.join)(tempDir, (0, node_path_1.basename)(manifest.dmgFilename || "PlayDrop.dmg"));
293
+ const mountPath = (0, node_path_1.join)(tempDir, "mount");
291
294
  (0, node_fs_1.mkdirSync)(mountPath, { recursive: true });
292
295
  try {
293
296
  const response = await fetch(manifest.downloadUrl);
@@ -296,13 +299,13 @@ async function installMacDmg(manifest, appPath, runCommand) {
296
299
  }
297
300
  const arrayBuffer = await response.arrayBuffer();
298
301
  (0, node_fs_1.writeFileSync)(dmgPath, Buffer.from(arrayBuffer));
299
- const attach = runCommand('hdiutil', ['attach', dmgPath, '-nobrowse', '-quiet', '-mountpoint', mountPath]);
302
+ const attach = runCommand("hdiutil", ["attach", dmgPath, "-nobrowse", "-quiet", "-mountpoint", mountPath]);
300
303
  if (attach.status !== 0) {
301
- throw new Error('hdiutil_attach_failed');
304
+ throw new Error("hdiutil_attach_failed");
302
305
  }
303
- const sourceApp = (0, node_path_1.join)(mountPath, 'PlayDrop.app');
306
+ const sourceApp = (0, node_path_1.join)(mountPath, "PlayDrop.app");
304
307
  if (!(0, node_fs_1.existsSync)(sourceApp)) {
305
- throw new Error('playdrop_app_missing_in_dmg');
308
+ throw new Error("playdrop_app_missing_in_dmg");
306
309
  }
307
310
  replaceAppBundle(sourceApp, appPath);
308
311
  return true;
@@ -314,7 +317,7 @@ async function installMacDmg(manifest, appPath, runCommand) {
314
317
  return false;
315
318
  }
316
319
  finally {
317
- runCommand('hdiutil', ['detach', mountPath, '-quiet']);
320
+ runCommand("hdiutil", ["detach", mountPath, "-quiet"]);
318
321
  (0, node_fs_1.rmSync)(tempDir, { recursive: true, force: true });
319
322
  }
320
323
  }
@@ -345,10 +348,10 @@ function replaceAppBundle(sourceApp, appPath) {
345
348
  }
346
349
  }
347
350
  function runCommandSync(command, args) {
348
- const result = (0, node_child_process_1.spawnSync)(command, args, { encoding: 'utf8' });
351
+ const result = (0, node_child_process_1.spawnSync)(command, args, { encoding: "utf8" });
349
352
  return {
350
353
  status: result.status,
351
- stdout: result.stdout ?? '',
352
- stderr: result.stderr ?? '',
354
+ stdout: result.stdout ?? "",
355
+ stderr: result.stderr ?? "",
353
356
  };
354
357
  }
@@ -12,7 +12,7 @@ function parsePositiveInteger(raw, label, command) {
12
12
  if (raw === undefined) {
13
13
  return null;
14
14
  }
15
- const parsed = typeof raw === 'number' ? raw : Number.parseInt(String(raw), 10);
15
+ const parsed = typeof raw === "number" ? raw : Number.parseInt(String(raw), 10);
16
16
  if (!Number.isInteger(parsed) || parsed <= 0) {
17
17
  (0, messages_1.printErrorWithHelp)(`${label} must be a positive integer.`, [], { command });
18
18
  process.exitCode = 1;
@@ -21,11 +21,11 @@ function parsePositiveInteger(raw, label, command) {
21
21
  return parsed;
22
22
  }
23
23
  function printComments(nodes, depth = 0) {
24
- const indent = ' '.repeat(depth);
24
+ const indent = " ".repeat(depth);
25
25
  for (const node of nodes) {
26
- const author = node.author?.displayName || node.author?.username || 'unknown';
27
- const creatorBadge = node.authorIsCreator ? ' [creator]' : '';
28
- const body = node.isDeleted ? '[deleted]' : node.body;
26
+ const author = node.author?.displayName || node.author?.username || "unknown";
27
+ const creatorBadge = node.authorIsCreator ? " [creator]" : "";
28
+ const body = node.isDeleted ? "[deleted]" : node.body;
29
29
  console.log(`${indent}- #${node.id} ${author}${creatorBadge} | ${(0, output_1.formatTimestamp)(node.createdAt)}`);
30
30
  console.log(`${indent} ${body}`);
31
31
  if (Array.isArray(node.replies) && node.replies.length > 0) {
@@ -36,14 +36,14 @@ function printComments(nodes, depth = 0) {
36
36
  async function browseComments(rawRef, options = {}) {
37
37
  let ref;
38
38
  try {
39
- ref = (0, refs_1.parseContentRef)(rawRef ?? '');
39
+ ref = (0, refs_1.parseContentRef)(rawRef ?? "");
40
40
  }
41
41
  catch {
42
- (0, messages_1.printErrorWithHelp)('A canonical ref is required.', ['Use the format <creator>/<kind>/<name>.', 'Example: playdrop comments browse playdrop/app/hangingout'], { command: 'comments browse' });
42
+ (0, messages_1.printErrorWithHelp)("A canonical ref is required.", ["Use the format <creator>/<kind>/<name>.", "Example: playdrop comments browse playdrop/app/hangingout"], { command: "comments browse" });
43
43
  process.exitCode = 1;
44
44
  return;
45
45
  }
46
- await (0, commandContext_1.withPublicEnvironment)('comments browse', async ({ client }) => {
46
+ await (0, commandContext_1.withPublicEnvironment)("comments browse", async ({ client }) => {
47
47
  try {
48
48
  const response = await client.fetchContentComments((0, refs_1.contentKindToSavedItemKind)(ref.kind), ref.creator, ref.name);
49
49
  const items = response.comments ?? [];
@@ -61,12 +61,12 @@ async function browseComments(rawRef, options = {}) {
61
61
  console.log('\nNext: run "playdrop comments add <ref> --body <text>" to reply.');
62
62
  }
63
63
  catch (error) {
64
- const handled = (0, errors_1.handleCommandFailure)(error, 'comments browse', 'Comment lookup', {
64
+ const handled = (0, errors_1.handleCommandFailure)(error, "comments browse", "Comment lookup", {
65
65
  apiMessage: (apiError) => {
66
66
  if (apiError.status === 404) {
67
67
  return {
68
68
  problem: `No item was found for "${ref.ref}".`,
69
- suggestions: ['Check the ref and retry.', 'Run "playdrop browse" to explore available content.'],
69
+ suggestions: ["Check the ref and retry.", 'Run "playdrop browse" to explore available content.'],
70
70
  };
71
71
  }
72
72
  if (apiError.status === 401 || apiError.status === 403) {
@@ -77,7 +77,7 @@ async function browseComments(rawRef, options = {}) {
77
77
  }
78
78
  return {
79
79
  problem: `Comment lookup failed with status ${apiError.status}.`,
80
- suggestions: ['Retry in a moment.'],
80
+ suggestions: ["Retry in a moment."],
81
81
  };
82
82
  },
83
83
  });
@@ -90,24 +90,27 @@ async function browseComments(rawRef, options = {}) {
90
90
  async function addComment(rawRef, options = {}) {
91
91
  let ref;
92
92
  try {
93
- ref = (0, refs_1.parseContentRef)(rawRef ?? '');
93
+ ref = (0, refs_1.parseContentRef)(rawRef ?? "");
94
94
  }
95
95
  catch {
96
- (0, messages_1.printErrorWithHelp)('A canonical ref is required.', ['Use the format <creator>/<kind>/<name>.', 'Example: playdrop comments add playdrop/app/hangingout --body "Nice work"'], { command: 'comments add' });
96
+ (0, messages_1.printErrorWithHelp)("A canonical ref is required.", [
97
+ "Use the format <creator>/<kind>/<name>.",
98
+ 'Example: playdrop comments add playdrop/app/hangingout --body "Nice work"',
99
+ ], { command: "comments add" });
97
100
  process.exitCode = 1;
98
101
  return;
99
102
  }
100
- const body = typeof options.body === 'string' ? options.body.trim() : '';
103
+ const body = typeof options.body === "string" ? options.body.trim() : "";
101
104
  if (!body) {
102
- (0, messages_1.printErrorWithHelp)('Comment body is required.', ['Use --body <text>.'], { command: 'comments add' });
105
+ (0, messages_1.printErrorWithHelp)("Comment body is required.", ["Use --body <text>."], { command: "comments add" });
103
106
  process.exitCode = 1;
104
107
  return;
105
108
  }
106
- const replyTo = parsePositiveInteger(options.replyTo, '--reply-to', 'comments add');
109
+ const replyTo = parsePositiveInteger(options.replyTo, "--reply-to", "comments add");
107
110
  if (options.replyTo !== undefined && replyTo === null) {
108
111
  return;
109
112
  }
110
- await (0, commandContext_1.withEnvironment)('comments add', 'Adding a comment', async ({ client }) => {
113
+ await (0, commandContext_1.withEnvironment)("comments add", "Adding a comment", async ({ client }) => {
111
114
  try {
112
115
  const response = await client.createContentComment((0, refs_1.contentKindToSavedItemKind)(ref.kind), ref.creator, ref.name, {
113
116
  body,
@@ -117,26 +120,28 @@ async function addComment(rawRef, options = {}) {
117
120
  (0, output_1.printJson)({ comment: response.comment });
118
121
  return;
119
122
  }
120
- (0, output_1.printSuccess)(`Comment added to ${ref.ref}.`, ['Next: run "playdrop comments browse ' + ref.ref + '" to review the thread.']);
123
+ (0, output_1.printSuccess)(`Comment added to ${ref.ref}.`, [
124
+ 'Next: run "playdrop comments browse ' + ref.ref + '" to review the thread.',
125
+ ]);
121
126
  }
122
127
  catch (error) {
123
- const handled = (0, errors_1.handleCommandFailure)(error, 'comments add', 'Add comment', {
128
+ const handled = (0, errors_1.handleCommandFailure)(error, "comments add", "Add comment", {
124
129
  apiMessage: (apiError) => {
125
130
  if (apiError.status === 401 || apiError.status === 403) {
126
131
  return {
127
- problem: 'Adding a comment requires you to be logged in.',
132
+ problem: "Adding a comment requires you to be logged in.",
128
133
  suggestions: ['Run "playdrop auth login" and retry.'],
129
134
  };
130
135
  }
131
136
  if (apiError.status === 404) {
132
137
  return {
133
138
  problem: `No item was found for "${ref.ref}".`,
134
- suggestions: ['Check the ref and retry.'],
139
+ suggestions: ["Check the ref and retry."],
135
140
  };
136
141
  }
137
142
  return {
138
143
  problem: `Adding a comment failed with status ${apiError.status}.`,
139
- suggestions: ['Retry in a moment.'],
144
+ suggestions: ["Retry in a moment."],
140
145
  };
141
146
  },
142
147
  });
@@ -147,37 +152,39 @@ async function addComment(rawRef, options = {}) {
147
152
  });
148
153
  }
149
154
  async function deleteComment(commentId, options = {}) {
150
- const numericId = parsePositiveInteger(commentId, 'Comment id', 'comments delete');
155
+ const numericId = parsePositiveInteger(commentId, "Comment id", "comments delete");
151
156
  if (numericId === null) {
152
157
  return;
153
158
  }
154
- await (0, commandContext_1.withEnvironment)('comments delete', 'Deleting a comment', async ({ client }) => {
159
+ await (0, commandContext_1.withEnvironment)("comments delete", "Deleting a comment", async ({ client }) => {
155
160
  try {
156
161
  const response = await client.deleteContentComment(numericId);
157
162
  if (options.json) {
158
163
  (0, output_1.printJson)({ success: Boolean(response.success), commentId: numericId });
159
164
  return;
160
165
  }
161
- (0, output_1.printSuccess)(`Comment #${numericId} deleted.`, ['Next: run "playdrop comments browse <ref>" to confirm the thread state.']);
166
+ (0, output_1.printSuccess)(`Comment #${numericId} deleted.`, [
167
+ 'Next: run "playdrop comments browse <ref>" to confirm the thread state.',
168
+ ]);
162
169
  }
163
170
  catch (error) {
164
- const handled = (0, errors_1.handleCommandFailure)(error, 'comments delete', 'Delete comment', {
171
+ const handled = (0, errors_1.handleCommandFailure)(error, "comments delete", "Delete comment", {
165
172
  apiMessage: (apiError) => {
166
173
  if (apiError.status === 401 || apiError.status === 403) {
167
174
  return {
168
- problem: 'Deleting a comment requires a valid login with permission to manage it.',
175
+ problem: "Deleting a comment requires a valid login with permission to manage it.",
169
176
  suggestions: ['Run "playdrop auth login" and retry.'],
170
177
  };
171
178
  }
172
179
  if (apiError.status === 404) {
173
180
  return {
174
181
  problem: `Comment #${numericId} was not found.`,
175
- suggestions: ['Check the id and retry.'],
182
+ suggestions: ["Check the id and retry."],
176
183
  };
177
184
  }
178
185
  return {
179
186
  problem: `Deleting a comment failed with status ${apiError.status}.`,
180
- suggestions: ['Retry in a moment.'],
187
+ suggestions: ["Retry in a moment."],
181
188
  };
182
189
  },
183
190
  });