@playdrop/playdrop-cli 0.16.2 → 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.
- package/bin/playdrop +1 -2
- package/config/client-meta.json +4 -4
- package/dist/apiClient.d.ts +2 -2
- package/dist/apiClient.js +16 -20
- package/dist/appUrls.d.ts +2 -2
- package/dist/appUrls.js +31 -33
- package/dist/apps/build.d.ts +2 -2
- package/dist/apps/build.js +83 -83
- package/dist/apps/index.d.ts +7 -7
- package/dist/apps/index.js +8 -8
- package/dist/apps/loadCheck.d.ts +28 -16
- package/dist/apps/loadCheck.js +411 -279
- package/dist/apps/registration.d.ts +3 -3
- package/dist/apps/registration.js +1 -1
- package/dist/apps/staticHtml.d.ts +3 -3
- package/dist/apps/staticHtml.js +90 -91
- package/dist/apps/surfaceProfiles.d.ts +2 -2
- package/dist/apps/surfaceProfiles.js +6 -6
- package/dist/apps/upload.d.ts +5 -5
- package/dist/apps/upload.js +75 -81
- package/dist/apps/validate.d.ts +2 -2
- package/dist/apps/validate.js +18 -22
- package/dist/assetSpecs.d.ts +2 -2
- package/dist/assetSpecs.js +35 -35
- package/dist/assets/model-artifacts.d.ts +1 -1
- package/dist/assets/model-artifacts.js +81 -77
- package/dist/assets/model-worker.d.ts +1 -1
- package/dist/assets/model-worker.js +6 -6
- package/dist/browser.js +9 -9
- package/dist/catalogue-utils.d.ts +1 -1
- package/dist/catalogue-utils.js +26 -26
- package/dist/catalogue.d.ts +21 -16
- package/dist/catalogue.js +509 -413
- package/dist/clientInfo.d.ts +1 -1
- package/dist/clientInfo.js +28 -28
- package/dist/commandContext.d.ts +5 -5
- package/dist/commandContext.js +19 -23
- package/dist/commands/accounts.js +6 -6
- package/dist/commands/ads.js +16 -16
- package/dist/commands/agents.d.ts +2 -2
- package/dist/commands/agents.js +131 -127
- package/dist/commands/boosts.js +41 -31
- package/dist/commands/browse.d.ts +2 -2
- package/dist/commands/browse.js +168 -128
- package/dist/commands/build.js +9 -9
- package/dist/commands/captureListing.d.ts +8 -8
- package/dist/commands/captureListing.js +292 -332
- package/dist/commands/changelog.js +1 -1
- package/dist/commands/chat.js +51 -53
- package/dist/commands/check.d.ts +1 -1
- package/dist/commands/check.js +44 -44
- package/dist/commands/clients.d.ts +3 -3
- package/dist/commands/clients.js +67 -64
- package/dist/commands/comments.js +36 -29
- package/dist/commands/create.js +305 -312
- package/dist/commands/createRemixContent.d.ts +1 -1
- package/dist/commands/createRemixContent.js +65 -60
- package/dist/commands/creations.js +205 -135
- package/dist/commands/credits.js +37 -27
- package/dist/commands/detail.js +40 -34
- package/dist/commands/dev.js +103 -126
- package/dist/commands/devBrowser.js +74 -65
- package/dist/commands/devRuntimeAssets.d.ts +4 -4
- package/dist/commands/devRuntimeAssets.js +38 -40
- package/dist/commands/devServer.d.ts +4 -4
- package/dist/commands/devServer.js +183 -174
- package/dist/commands/devShared.d.ts +3 -3
- package/dist/commands/devShared.js +31 -31
- package/dist/commands/doctor.d.ts +5 -5
- package/dist/commands/doctor.js +63 -57
- package/dist/commands/documentation.js +42 -32
- package/dist/commands/feedback.js +59 -42
- package/dist/commands/format.js +9 -9
- package/dist/commands/generation.d.ts +2 -2
- package/dist/commands/generation.js +344 -326
- package/dist/commands/init.d.ts +4 -4
- package/dist/commands/init.js +64 -61
- package/dist/commands/login.d.ts +2 -2
- package/dist/commands/login.js +42 -62
- package/dist/commands/logout.js +4 -4
- package/dist/commands/marketing.d.ts +8 -8
- package/dist/commands/marketing.js +246 -297
- package/dist/commands/notes.js +19 -19
- package/dist/commands/notifications.js +34 -22
- package/dist/commands/npmProcess.js +3 -3
- package/dist/commands/ownedRuntimeImageValidation.d.ts +1 -1
- package/dist/commands/ownedRuntimeImageValidation.js +19 -17
- package/dist/commands/play.js +12 -21
- package/dist/commands/publicPages.js +8 -4
- package/dist/commands/review.js +123 -110
- package/dist/commands/search.js +107 -88
- package/dist/commands/tags.js +10 -12
- package/dist/commands/taskCaptureSession.d.ts +3 -3
- package/dist/commands/taskCaptureSession.js +3 -3
- package/dist/commands/tweaks.js +25 -23
- package/dist/commands/upgrade.js +40 -31
- package/dist/commands/upload-content.d.ts +5 -5
- package/dist/commands/upload-content.js +130 -122
- package/dist/commands/upload-graph.d.ts +1 -1
- package/dist/commands/upload-graph.js +7 -11
- package/dist/commands/upload.d.ts +7 -7
- package/dist/commands/upload.js +196 -217
- package/dist/commands/validate.js +33 -32
- package/dist/commands/versionsBrowse.js +61 -51
- package/dist/commands/whoami.js +11 -14
- package/dist/commands/worker/archive-staging.d.ts +9 -0
- package/dist/commands/worker/archive-staging.js +257 -0
- package/dist/commands/worker/instrument-evidence.d.ts +1 -1
- package/dist/commands/worker/instrument-evidence.js +41 -43
- package/dist/commands/worker/provider-telemetry.d.ts +2 -1
- package/dist/commands/worker/provider-telemetry.js +181 -64
- package/dist/commands/worker/runtime.d.ts +18 -3
- package/dist/commands/worker/runtime.js +291 -239
- package/dist/commands/worker.d.ts +83 -22
- package/dist/commands/worker.js +1980 -1411
- package/dist/commands/workspaces.d.ts +2 -2
- package/dist/commands/workspaces.js +57 -57
- package/dist/config.js +23 -20
- package/dist/devAuth.d.ts +3 -3
- package/dist/devAuth.js +20 -17
- package/dist/environment.d.ts +1 -1
- package/dist/environment.js +34 -34
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js +7 -7
- package/dist/externalAssetPackValidation.d.ts +1 -1
- package/dist/externalAssetPackValidation.js +9 -9
- package/dist/http.d.ts +1 -1
- package/dist/http.js +9 -9
- package/dist/index.js +657 -664
- package/dist/listingCaptureLease.js +23 -23
- package/dist/listingPreflight.d.ts +2 -2
- package/dist/listingPreflight.js +33 -33
- package/dist/messages.js +6 -14
- package/dist/output.js +9 -9
- package/dist/playwright.d.ts +1 -1
- package/dist/playwright.js +35 -40
- package/dist/proxyFetch.js +30 -27
- package/dist/recorderRelease.js +8 -8
- package/dist/refs.d.ts +5 -5
- package/dist/refs.js +40 -37
- package/dist/sessionCookie.js +15 -21
- package/dist/shellProbe.js +5 -5
- package/dist/taskSelection.d.ts +3 -3
- package/dist/taskSelection.js +67 -62
- package/dist/taskUtils.d.ts +1 -1
- package/dist/taskUtils.js +4 -4
- package/dist/tweakStaleness.d.ts +3 -3
- package/dist/tweakStaleness.js +8 -8
- package/dist/uploadLog.d.ts +3 -3
- package/dist/uploadLog.js +51 -51
- package/dist/versionCompare.js +3 -3
- package/dist/workerAppProject.d.ts +1 -1
- package/dist/workerAppProject.js +10 -17
- package/dist/workspaceAuth.d.ts +1 -1
- package/dist/workspaceAuth.js +28 -22
- package/node_modules/@playdrop/ai-client/dist/index.d.ts +35 -35
- package/node_modules/@playdrop/ai-client/dist/index.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/client.d.ts +34 -33
- package/node_modules/@playdrop/api-client/dist/client.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/core/errors.d.ts +1 -1
- package/node_modules/@playdrop/api-client/dist/core/errors.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/core/request.d.ts +2 -2
- package/node_modules/@playdrop/api-client/dist/core/request.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/admin.d.ts +2 -2
- package/node_modules/@playdrop/api-client/dist/domains/admin.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/admin.js +4 -1
- package/node_modules/@playdrop/api-client/dist/domains/agent-tasks.d.ts +4 -3
- package/node_modules/@playdrop/api-client/dist/domains/agent-tasks.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/agent-tasks.js +12 -0
- package/node_modules/@playdrop/api-client/dist/domains/ai.d.ts +2 -2
- package/node_modules/@playdrop/api-client/dist/domains/ai.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts +4 -4
- package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts +4 -4
- package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts +4 -4
- package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/auth.d.ts +2 -2
- package/node_modules/@playdrop/api-client/dist/domains/auth.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/chat.d.ts +2 -2
- package/node_modules/@playdrop/api-client/dist/domains/chat.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/comments.d.ts +3 -3
- package/node_modules/@playdrop/api-client/dist/domains/comments.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/free-credits.d.ts +2 -2
- package/node_modules/@playdrop/api-client/dist/domains/free-credits.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/me.d.ts +2 -2
- package/node_modules/@playdrop/api-client/dist/domains/me.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/payments.d.ts +2 -2
- package/node_modules/@playdrop/api-client/dist/domains/payments.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/player-meta.d.ts +2 -2
- package/node_modules/@playdrop/api-client/dist/domains/player-meta.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/playtrade.d.ts +3 -3
- package/node_modules/@playdrop/api-client/dist/domains/playtrade.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/playtrade.js +2 -2
- package/node_modules/@playdrop/api-client/dist/domains/search.d.ts +2 -2
- package/node_modules/@playdrop/api-client/dist/domains/search.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/tags.d.ts +2 -2
- package/node_modules/@playdrop/api-client/dist/domains/tags.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/index.d.ts +19 -18
- package/node_modules/@playdrop/api-client/dist/index.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/index.js +7 -2
- package/node_modules/@playdrop/boxel-core/dist/src/entity-cleaner.d.ts +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/entity-cleaner.js +47 -47
- package/node_modules/@playdrop/boxel-core/dist/src/entity-cleaner.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/entity-utils.d.ts +3 -3
- package/node_modules/@playdrop/boxel-core/dist/src/entity-utils.js +32 -47
- package/node_modules/@playdrop/boxel-core/dist/src/entity-utils.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/format-utils.js +16 -18
- package/node_modules/@playdrop/boxel-core/dist/src/format-utils.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/geometry.d.ts +2 -2
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/index.d.ts +4 -4
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/common.d.ts +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/index.d.ts +3 -3
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/textured-builder.d.ts +2 -2
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/textured-builder.js +44 -45
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/textured-builder.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/types.d.ts +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/voxel-builder.d.ts +2 -2
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/voxel-builder.js +40 -44
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r15/voxel-builder.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/builder.d.ts +2 -2
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/builder.js +30 -34
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/builder.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/index.d.ts +4 -4
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/index.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/scanner.d.ts +3 -3
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/scanner.js +23 -20
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/scanner.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/artifacts.d.ts +3 -3
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/artifacts.js +3 -3
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/face-map.d.ts +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/face-map.js +21 -21
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/r6/textures/face-map.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/templates/index.d.ts +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/humanoid/templates/index.js +2 -2
- package/node_modules/@playdrop/boxel-core/dist/src/index.d.ts +19 -19
- package/node_modules/@playdrop/boxel-core/dist/src/materials.d.ts +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/materials.js +12 -16
- package/node_modules/@playdrop/boxel-core/dist/src/materials.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/palette_tools.d.ts +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/palette_tools.js +38 -41
- package/node_modules/@playdrop/boxel-core/dist/src/palette_tools.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/serialization.d.ts +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/serialization.js +54 -56
- package/node_modules/@playdrop/boxel-core/dist/src/serialization.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/textures.d.ts +3 -3
- package/node_modules/@playdrop/boxel-core/dist/src/textures.js +39 -45
- package/node_modules/@playdrop/boxel-core/dist/src/textures.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/infer-face.d.ts +2 -2
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/infer-face.js +39 -43
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/infer-face.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/layer-mode.d.ts +3 -3
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/layer-mode.js +35 -35
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/layer-mode.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/merge-overlay.d.ts +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/merge-overlay.js +18 -18
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/merge-overlay.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/slice.d.ts +3 -3
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/slice.js +50 -48
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/textured-boxes/slice.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/upscale.d.ts +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/upscale.js +22 -26
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/upscale.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/slice.d.ts +2 -2
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/slice.js +8 -8
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/slice.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/textured-to-voxel.d.ts +2 -2
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/textured-to-voxel.js +23 -28
- package/node_modules/@playdrop/boxel-core/dist/src/transforms/voxels/textured-to-voxel.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/types.d.ts +8 -8
- package/node_modules/@playdrop/boxel-core/dist/src/validation.d.ts +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/validation.js +93 -95
- package/node_modules/@playdrop/boxel-core/dist/src/validation.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/voxels/greedy-mesher.d.ts +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/voxels/greedy-mesher.js +2 -2
- package/node_modules/@playdrop/boxel-core/dist/src/voxels/greedy-mesher.js.map +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/voxels.d.ts +1 -1
- package/node_modules/@playdrop/boxel-core/dist/src/voxels.js +2 -7
- package/node_modules/@playdrop/boxel-core/dist/src/voxels.js.map +1 -1
- package/node_modules/@playdrop/boxel-three/dist/src/animations.d.ts +3 -3
- package/node_modules/@playdrop/boxel-three/dist/src/builders.d.ts +4 -4
- package/node_modules/@playdrop/boxel-three/dist/src/context.d.ts +3 -3
- package/node_modules/@playdrop/boxel-three/dist/src/exporters/glb.d.ts +6 -6
- package/node_modules/@playdrop/boxel-three/dist/src/exporters/glb.js +9 -1
- package/node_modules/@playdrop/boxel-three/dist/src/exporters/image.d.ts +3 -3
- package/node_modules/@playdrop/boxel-three/dist/src/index.d.ts +17 -17
- package/node_modules/@playdrop/boxel-three/dist/src/instantiate.d.ts +9 -9
- package/node_modules/@playdrop/boxel-three/dist/src/nodes.d.ts +3 -3
- package/node_modules/@playdrop/boxel-three/dist/src/nodes.js +1 -1
- package/node_modules/@playdrop/boxel-three/dist/src/overlays.d.ts +2 -2
- package/node_modules/@playdrop/boxel-three/dist/src/primitives.d.ts +1 -1
- package/node_modules/@playdrop/boxel-three/dist/src/scene.d.ts +1 -1
- package/node_modules/@playdrop/boxel-three/dist/src/skinned-mesh.d.ts +2 -2
- package/node_modules/@playdrop/boxel-three/dist/src/texture-atlas.d.ts +1 -1
- package/node_modules/@playdrop/boxel-three/dist/src/textures.d.ts +3 -3
- package/node_modules/@playdrop/boxel-three/dist/src/types.d.ts +4 -4
- package/node_modules/@playdrop/boxel-three/dist/src/voxels/faces.d.ts +2 -2
- package/node_modules/@playdrop/boxel-three/dist/src/voxels/mesher.d.ts +1 -1
- package/node_modules/@playdrop/boxel-three/dist/test/fixtures/render-worker.d.ts +1 -1
- package/node_modules/@playdrop/config/client-meta.json +4 -4
- package/node_modules/@playdrop/config/dist/src/client-meta.d.ts +1 -1
- package/node_modules/@playdrop/config/dist/src/client-meta.d.ts.map +1 -1
- package/node_modules/@playdrop/config/dist/src/client-meta.js +10 -10
- package/node_modules/@playdrop/config/dist/src/constants.js +10 -10
- package/node_modules/@playdrop/config/dist/src/creator-plans.d.ts +1 -1
- package/node_modules/@playdrop/config/dist/src/creator-plans.d.ts.map +1 -1
- package/node_modules/@playdrop/config/dist/src/creator-plans.js +27 -28
- package/node_modules/@playdrop/config/dist/src/deployment.d.ts +4 -4
- package/node_modules/@playdrop/config/dist/src/deployment.d.ts.map +1 -1
- package/node_modules/@playdrop/config/dist/src/deployment.js +42 -41
- package/node_modules/@playdrop/config/dist/src/game-arena.js +12 -12
- package/node_modules/@playdrop/config/dist/src/index.d.ts +9 -9
- package/node_modules/@playdrop/config/dist/src/index.d.ts.map +1 -1
- package/node_modules/@playdrop/config/dist/src/index.js +24 -25
- package/node_modules/@playdrop/config/dist/src/public-deployment.d.ts +4 -4
- package/node_modules/@playdrop/config/dist/src/public-deployment.d.ts.map +1 -1
- package/node_modules/@playdrop/config/dist/src/public-deployment.js +41 -39
- package/node_modules/@playdrop/config/dist/src/runtime-client-meta.js +1 -3
- package/node_modules/@playdrop/config/dist/src/runtime-service-origins.d.ts.map +1 -1
- package/node_modules/@playdrop/config/dist/src/runtime-service-origins.js +23 -25
- package/node_modules/@playdrop/config/dist/src/server/fastify.d.ts +5 -5
- package/node_modules/@playdrop/config/dist/src/server/fastify.d.ts.map +1 -1
- package/node_modules/@playdrop/config/dist/src/server/fastify.js +44 -46
- package/node_modules/@playdrop/config/dist/src/server/logging.d.ts +1 -1
- package/node_modules/@playdrop/config/dist/src/server/logging.d.ts.map +1 -1
- package/node_modules/@playdrop/config/dist/src/server/logging.js +6 -8
- package/node_modules/@playdrop/config/dist/src/types.d.ts +2 -2
- package/node_modules/@playdrop/config/dist/test/creator-plans.test.js +12 -12
- package/node_modules/@playdrop/config/dist/test/deployment.test.js +59 -59
- package/node_modules/@playdrop/config/dist/test/fastify.test.js +4 -4
- package/node_modules/@playdrop/config/dist/test/game-arena.test.js +8 -8
- package/node_modules/@playdrop/config/dist/test/logging.test.js +6 -6
- package/node_modules/@playdrop/config/dist/test/validateClientEnvironment.test.js +57 -57
- package/node_modules/@playdrop/config/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@playdrop/types/dist/agent-task-playtest.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/agent-task-terminal.d.ts +2 -2
- package/node_modules/@playdrop/types/dist/agent-task-terminal.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/api.d.ts +314 -250
- package/node_modules/@playdrop/types/dist/api.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/api.js +40 -59
- package/node_modules/@playdrop/types/dist/app-capability-filters.d.ts +2 -2
- package/node_modules/@playdrop/types/dist/app-playtest-tape.d.ts +6 -6
- package/node_modules/@playdrop/types/dist/app-playtest-tape.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/app-review.d.ts +2 -2
- package/node_modules/@playdrop/types/dist/app-review.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/app-review.js +1 -6
- package/node_modules/@playdrop/types/dist/app.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/asset-pack.d.ts +5 -5
- package/node_modules/@playdrop/types/dist/asset-spec.d.ts +4 -4
- package/node_modules/@playdrop/types/dist/asset.d.ts +11 -11
- package/node_modules/@playdrop/types/dist/attachment-policy.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/chat.d.ts +3 -3
- package/node_modules/@playdrop/types/dist/creator-public-image.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/graph.d.ts +4 -4
- package/node_modules/@playdrop/types/dist/index.d.ts +25 -25
- package/node_modules/@playdrop/types/dist/instrument-evidence.d.ts +2 -2
- package/node_modules/@playdrop/types/dist/instrument-evidence.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/instrument-evidence.js +2 -11
- package/node_modules/@playdrop/types/dist/locale.d.ts +2 -2
- package/node_modules/@playdrop/types/dist/locale.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/locale.js +2 -17
- package/node_modules/@playdrop/types/dist/owned-assets.d.ts +2 -2
- package/node_modules/@playdrop/types/dist/owned-assets.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/player-meta.d.ts +3 -3
- package/node_modules/@playdrop/types/dist/player-meta.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/playtest-notes.d.ts +11 -11
- package/node_modules/@playdrop/types/dist/playtest-notes.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/playtrade.d.ts +8 -5
- package/node_modules/@playdrop/types/dist/playtrade.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/realtime.d.ts +1 -1
- package/node_modules/@playdrop/types/dist/tweaks.d.ts +4 -4
- package/node_modules/@playdrop/types/dist/tweaks.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/tweaks.js +12 -2
- package/node_modules/@playdrop/types/dist/version.d.ts +14 -14
- package/node_modules/@playdrop/types/dist/version.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/version.js +4 -1
- package/node_modules/@playdrop/vox-three/dist/src/index.d.ts +1 -1
- package/node_modules/@playdrop/vox-three/dist/src/vox.d.ts +2 -2
- package/node_modules/@playdrop/vox-three/dist/src/vox.js +20 -18
- package/node_modules/@playdrop/vox-three/dist/src/vox.js.map +1 -1
- package/node_modules/@playdrop/vox-three/dist/test/vox.test.js +11 -14
- package/node_modules/@playdrop/vox-three/dist/test/vox.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,5 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.showChangelog = showChangelog;
|
|
4
4
|
const publicPages_1 = require("./publicPages");
|
|
5
5
|
async function showChangelog() {
|
|
6
|
-
await (0, publicPages_1.showPublicPage)(
|
|
6
|
+
await (0, publicPages_1.showPublicPage)("changelog", "app-pages/changelog.md");
|
|
7
7
|
}
|
package/dist/commands/chat.js
CHANGED
|
@@ -23,7 +23,7 @@ const output_1 = require("../output");
|
|
|
23
23
|
function positiveId(raw, command) {
|
|
24
24
|
const value = Number(raw);
|
|
25
25
|
if (!Number.isInteger(value) || value <= 0) {
|
|
26
|
-
(0, messages_1.printErrorWithHelp)(
|
|
26
|
+
(0, messages_1.printErrorWithHelp)("Message id must be a positive integer.", [], { command });
|
|
27
27
|
process.exitCode = 1;
|
|
28
28
|
return null;
|
|
29
29
|
}
|
|
@@ -31,37 +31,35 @@ function positiveId(raw, command) {
|
|
|
31
31
|
}
|
|
32
32
|
function contentTypeForFile(filePath) {
|
|
33
33
|
const extension = node_path_1.default.extname(filePath).toLowerCase();
|
|
34
|
-
if (extension ===
|
|
35
|
-
return
|
|
36
|
-
if (extension ===
|
|
37
|
-
return
|
|
38
|
-
if (extension ===
|
|
39
|
-
return
|
|
40
|
-
if (extension ===
|
|
41
|
-
return
|
|
42
|
-
if (extension ===
|
|
43
|
-
return
|
|
44
|
-
if (extension ===
|
|
45
|
-
return
|
|
46
|
-
if (extension ===
|
|
47
|
-
return
|
|
48
|
-
if (extension ===
|
|
49
|
-
return
|
|
50
|
-
if (extension ===
|
|
51
|
-
return
|
|
52
|
-
if (extension ===
|
|
53
|
-
return
|
|
34
|
+
if (extension === ".gif")
|
|
35
|
+
return "image/gif";
|
|
36
|
+
if (extension === ".jpg" || extension === ".jpeg")
|
|
37
|
+
return "image/jpeg";
|
|
38
|
+
if (extension === ".png")
|
|
39
|
+
return "image/png";
|
|
40
|
+
if (extension === ".webp")
|
|
41
|
+
return "image/webp";
|
|
42
|
+
if (extension === ".mp4")
|
|
43
|
+
return "video/mp4";
|
|
44
|
+
if (extension === ".mov")
|
|
45
|
+
return "video/quicktime";
|
|
46
|
+
if (extension === ".webm")
|
|
47
|
+
return "video/webm";
|
|
48
|
+
if (extension === ".txt")
|
|
49
|
+
return "text/plain";
|
|
50
|
+
if (extension === ".md" || extension === ".markdown")
|
|
51
|
+
return "text/markdown";
|
|
52
|
+
if (extension === ".json")
|
|
53
|
+
return "application/json";
|
|
54
54
|
throw new Error(`unsupported_chat_file:${filePath}`);
|
|
55
55
|
}
|
|
56
56
|
async function readWriteOptions(options) {
|
|
57
57
|
if (options.text !== undefined && options.textFile !== undefined) {
|
|
58
|
-
throw new Error(
|
|
58
|
+
throw new Error("chat_text_and_text_file_conflict");
|
|
59
59
|
}
|
|
60
|
-
const body = options.textFile !== undefined
|
|
61
|
-
? await node_fs_1.promises.readFile(node_path_1.default.resolve(options.textFile), 'utf8')
|
|
62
|
-
: options.text;
|
|
60
|
+
const body = options.textFile !== undefined ? await node_fs_1.promises.readFile(node_path_1.default.resolve(options.textFile), "utf8") : options.text;
|
|
63
61
|
const eventData = options.eventDataFile !== undefined
|
|
64
|
-
? JSON.parse(await node_fs_1.promises.readFile(node_path_1.default.resolve(options.eventDataFile),
|
|
62
|
+
? JSON.parse(await node_fs_1.promises.readFile(node_path_1.default.resolve(options.eventDataFile), "utf8"))
|
|
65
63
|
: undefined;
|
|
66
64
|
const files = await Promise.all((options.file ?? []).map(async (filePath) => {
|
|
67
65
|
const absolutePath = node_path_1.default.resolve(filePath);
|
|
@@ -81,8 +79,8 @@ async function readWriteOptions(options) {
|
|
|
81
79
|
...(options.asSystem !== undefined ? { asSystem: options.asSystem } : {}),
|
|
82
80
|
};
|
|
83
81
|
}
|
|
84
|
-
function printMessage(message, indent =
|
|
85
|
-
const edited = message.editedAt ?
|
|
82
|
+
function printMessage(message, indent = "") {
|
|
83
|
+
const edited = message.editedAt ? " edited" : "";
|
|
86
84
|
console.log(`${indent}#${message.id} ${message.author.displayName} [${message.author.kind}] | ${(0, output_1.formatTimestamp)(message.createdAt)}${edited}`);
|
|
87
85
|
if (message.body)
|
|
88
86
|
console.log(`${indent}${message.body.replace(/\n/g, `\n${indent}`)}`);
|
|
@@ -90,34 +88,34 @@ function printMessage(message, indent = '') {
|
|
|
90
88
|
console.log(`${indent}[${attachment.kind}] ${attachment.fileName ?? attachment.url} ${attachment.url}`);
|
|
91
89
|
}
|
|
92
90
|
if (message.reactions.length > 0) {
|
|
93
|
-
console.log(`${indent}${message.reactions.map((reaction) => `${reaction.emoji} ${reaction.count}`).join(
|
|
91
|
+
console.log(`${indent}${message.reactions.map((reaction) => `${reaction.emoji} ${reaction.count}`).join(" ")}`);
|
|
94
92
|
}
|
|
95
93
|
if (message.replyCount > 0)
|
|
96
|
-
console.log(`${indent}${message.replyCount} ${message.replyCount === 1 ?
|
|
94
|
+
console.log(`${indent}${message.replyCount} ${message.replyCount === 1 ? "reply" : "replies"}`);
|
|
97
95
|
}
|
|
98
96
|
async function runChatCommand(command, options, operation) {
|
|
99
|
-
await (0, commandContext_1.withEnvironment)(command,
|
|
97
|
+
await (0, commandContext_1.withEnvironment)(command, "PlayDrop Chat", async ({ client }) => {
|
|
100
98
|
try {
|
|
101
99
|
await operation(client);
|
|
102
100
|
}
|
|
103
101
|
catch (error) {
|
|
104
|
-
if (!(0, errors_1.handleCommandFailure)(error, command,
|
|
102
|
+
if (!(0, errors_1.handleCommandFailure)(error, command, "PlayDrop Chat"))
|
|
105
103
|
throw error;
|
|
106
104
|
}
|
|
107
105
|
}, { env: options.env });
|
|
108
106
|
}
|
|
109
107
|
async function listChatChannels(options = {}) {
|
|
110
|
-
await runChatCommand(
|
|
108
|
+
await runChatCommand("chat channels", options, async (client) => {
|
|
111
109
|
const response = await client.fetchChatChannels();
|
|
112
110
|
if (options.json)
|
|
113
111
|
return (0, output_1.printJson)(response);
|
|
114
112
|
for (const channel of response.channels) {
|
|
115
|
-
console.log(`${channel.slug}\t${channel.displayName}\t${channel.readPolicy}\t${channel.canWrite ?
|
|
113
|
+
console.log(`${channel.slug}\t${channel.displayName}\t${channel.readPolicy}\t${channel.canWrite ? "write" : "read"}`);
|
|
116
114
|
}
|
|
117
115
|
});
|
|
118
116
|
}
|
|
119
117
|
async function readChatChannel(channel, options = {}) {
|
|
120
|
-
await runChatCommand(
|
|
118
|
+
await runChatCommand("chat read", options, async (client) => {
|
|
121
119
|
const response = await client.fetchChatMessages(channel);
|
|
122
120
|
if (options.json)
|
|
123
121
|
return (0, output_1.printJson)(response);
|
|
@@ -127,20 +125,20 @@ async function readChatChannel(channel, options = {}) {
|
|
|
127
125
|
});
|
|
128
126
|
}
|
|
129
127
|
async function readChatThread(rawMessageId, options = {}) {
|
|
130
|
-
const messageId = positiveId(rawMessageId,
|
|
128
|
+
const messageId = positiveId(rawMessageId, "chat thread");
|
|
131
129
|
if (!messageId)
|
|
132
130
|
return;
|
|
133
|
-
await runChatCommand(
|
|
131
|
+
await runChatCommand("chat thread", options, async (client) => {
|
|
134
132
|
const response = await client.fetchChatThread(messageId);
|
|
135
133
|
if (options.json)
|
|
136
134
|
return (0, output_1.printJson)(response);
|
|
137
135
|
if (response.messages.length === 0)
|
|
138
136
|
return console.log(`No replies to message #${messageId}.`);
|
|
139
|
-
response.messages.forEach((message) => printMessage(message,
|
|
137
|
+
response.messages.forEach((message) => printMessage(message, " "));
|
|
140
138
|
});
|
|
141
139
|
}
|
|
142
140
|
async function sendChatMessage(channel, options) {
|
|
143
|
-
await runChatCommand(
|
|
141
|
+
await runChatCommand("chat send", options, async (client) => {
|
|
144
142
|
const response = await client.sendChatMessage(channel, await readWriteOptions(options));
|
|
145
143
|
if (options.json)
|
|
146
144
|
return (0, output_1.printJson)(response);
|
|
@@ -148,10 +146,10 @@ async function sendChatMessage(channel, options) {
|
|
|
148
146
|
});
|
|
149
147
|
}
|
|
150
148
|
async function replyChatMessage(rawMessageId, options) {
|
|
151
|
-
const messageId = positiveId(rawMessageId,
|
|
149
|
+
const messageId = positiveId(rawMessageId, "chat reply");
|
|
152
150
|
if (!messageId)
|
|
153
151
|
return;
|
|
154
|
-
await runChatCommand(
|
|
152
|
+
await runChatCommand("chat reply", options, async (client) => {
|
|
155
153
|
const response = await client.replyChatMessage(messageId, await readWriteOptions(options));
|
|
156
154
|
if (options.json)
|
|
157
155
|
return (0, output_1.printJson)(response);
|
|
@@ -159,10 +157,10 @@ async function replyChatMessage(rawMessageId, options) {
|
|
|
159
157
|
});
|
|
160
158
|
}
|
|
161
159
|
async function editChatMessage(rawMessageId, options) {
|
|
162
|
-
const messageId = positiveId(rawMessageId,
|
|
160
|
+
const messageId = positiveId(rawMessageId, "chat edit");
|
|
163
161
|
if (!messageId)
|
|
164
162
|
return;
|
|
165
|
-
await runChatCommand(
|
|
163
|
+
await runChatCommand("chat edit", options, async (client) => {
|
|
166
164
|
const write = await readWriteOptions(options);
|
|
167
165
|
const response = await client.editChatMessage(messageId, write);
|
|
168
166
|
if (options.json)
|
|
@@ -171,10 +169,10 @@ async function editChatMessage(rawMessageId, options) {
|
|
|
171
169
|
});
|
|
172
170
|
}
|
|
173
171
|
async function reactChatMessage(rawMessageId, emoji, options = {}) {
|
|
174
|
-
const messageId = positiveId(rawMessageId,
|
|
172
|
+
const messageId = positiveId(rawMessageId, "chat react");
|
|
175
173
|
if (!messageId)
|
|
176
174
|
return;
|
|
177
|
-
await runChatCommand(
|
|
175
|
+
await runChatCommand("chat react", options, async (client) => {
|
|
178
176
|
const response = await client.reactChatMessage(messageId, emoji);
|
|
179
177
|
if (options.json)
|
|
180
178
|
return (0, output_1.printJson)(response);
|
|
@@ -182,10 +180,10 @@ async function reactChatMessage(rawMessageId, emoji, options = {}) {
|
|
|
182
180
|
});
|
|
183
181
|
}
|
|
184
182
|
async function unreactChatMessage(rawMessageId, emoji, options = {}) {
|
|
185
|
-
const messageId = positiveId(rawMessageId,
|
|
183
|
+
const messageId = positiveId(rawMessageId, "chat unreact");
|
|
186
184
|
if (!messageId)
|
|
187
185
|
return;
|
|
188
|
-
await runChatCommand(
|
|
186
|
+
await runChatCommand("chat unreact", options, async (client) => {
|
|
189
187
|
const response = await client.unreactChatMessage(messageId, emoji);
|
|
190
188
|
if (options.json)
|
|
191
189
|
return (0, output_1.printJson)(response);
|
|
@@ -193,15 +191,15 @@ async function unreactChatMessage(rawMessageId, emoji, options = {}) {
|
|
|
193
191
|
});
|
|
194
192
|
}
|
|
195
193
|
async function grantChatAccess(channel, username, options = {}) {
|
|
196
|
-
await runChatCommand(
|
|
194
|
+
await runChatCommand("chat access grant", options, async (client) => {
|
|
197
195
|
const response = await client.grantChatAccess(channel, username, !options.readOnly);
|
|
198
196
|
if (options.json)
|
|
199
197
|
return (0, output_1.printJson)(response);
|
|
200
|
-
(0, output_1.printSuccess)(`${username} now has ${response.canWrite ?
|
|
198
|
+
(0, output_1.printSuccess)(`${username} now has ${response.canWrite ? "write" : "read"} access to ${channel}.`);
|
|
201
199
|
});
|
|
202
200
|
}
|
|
203
201
|
async function revokeChatAccess(channel, username, options = {}) {
|
|
204
|
-
await runChatCommand(
|
|
202
|
+
await runChatCommand("chat access revoke", options, async (client) => {
|
|
205
203
|
await client.revokeChatAccess(channel, username);
|
|
206
204
|
if (options.json)
|
|
207
205
|
return (0, output_1.printJson)({ success: true, channel, username });
|
|
@@ -209,13 +207,13 @@ async function revokeChatAccess(channel, username, options = {}) {
|
|
|
209
207
|
});
|
|
210
208
|
}
|
|
211
209
|
async function setChatVisibility(channel, visibility, options = {}) {
|
|
212
|
-
const readPolicy = visibility ===
|
|
210
|
+
const readPolicy = visibility === "public" ? "PUBLIC" : visibility === "admin-only" ? "ADMIN_ONLY" : null;
|
|
213
211
|
if (!readPolicy) {
|
|
214
|
-
(0, messages_1.printErrorWithHelp)(
|
|
212
|
+
(0, messages_1.printErrorWithHelp)("Visibility must be public or admin-only.", [], { command: "chat visibility" });
|
|
215
213
|
process.exitCode = 1;
|
|
216
214
|
return;
|
|
217
215
|
}
|
|
218
|
-
await runChatCommand(
|
|
216
|
+
await runChatCommand("chat visibility", options, async (client) => {
|
|
219
217
|
const response = await client.setChatVisibility(channel, readPolicy);
|
|
220
218
|
if (options.json)
|
|
221
219
|
return (0, output_1.printJson)(response);
|
package/dist/commands/check.d.ts
CHANGED
package/dist/commands/check.js
CHANGED
|
@@ -19,32 +19,32 @@ function resolveProjectCheckTarget(targetArg, appOption) {
|
|
|
19
19
|
}
|
|
20
20
|
catch (error) {
|
|
21
21
|
const code = error?.code;
|
|
22
|
-
const message = error?.message ||
|
|
23
|
-
const suggestions = code ===
|
|
22
|
+
const message = error?.message || "Unable to resolve project check target.";
|
|
23
|
+
const suggestions = code === "app_required"
|
|
24
24
|
? ['Use "--app <name>" to choose which app to check.']
|
|
25
|
-
: code ===
|
|
26
|
-
? [
|
|
27
|
-
: [
|
|
28
|
-
(0, messages_1.printErrorWithHelp)(message, suggestions, { command:
|
|
25
|
+
: code === "catalogue_missing"
|
|
26
|
+
? ["Run the command inside a Playdrop workspace with catalogue.json."]
|
|
27
|
+
: ["Provide a valid catalogue-backed app target."];
|
|
28
|
+
(0, messages_1.printErrorWithHelp)(message, suggestions, { command: "project check" });
|
|
29
29
|
process.exitCode = 1;
|
|
30
30
|
return null;
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
function parseProjectCheckTimeoutMs(value) {
|
|
34
|
-
if (value === undefined || value === null || value ===
|
|
34
|
+
if (value === undefined || value === null || value === "") {
|
|
35
35
|
return 15000;
|
|
36
36
|
}
|
|
37
|
-
const numeric = typeof value ===
|
|
37
|
+
const numeric = typeof value === "number" ? value : Number(value);
|
|
38
38
|
if (!Number.isFinite(numeric) || numeric <= 0) {
|
|
39
|
-
throw new Error(
|
|
39
|
+
throw new Error("Timeout must be a positive number of seconds.");
|
|
40
40
|
}
|
|
41
41
|
if (numeric > 600) {
|
|
42
|
-
throw new Error(
|
|
42
|
+
throw new Error("Timeout cannot exceed 600 seconds.");
|
|
43
43
|
}
|
|
44
44
|
return Math.round(numeric * 1000);
|
|
45
45
|
}
|
|
46
46
|
function defaultProjectCheckScreenshotPath(appName) {
|
|
47
|
-
return (0, node_path_1.join)(
|
|
47
|
+
return (0, node_path_1.join)("assets", "marketing", "playdrop", "check", `${appName}.png`);
|
|
48
48
|
}
|
|
49
49
|
function buildComparisonScreenshotPath(basePath, run) {
|
|
50
50
|
const extension = (0, node_path_1.extname)(basePath);
|
|
@@ -54,9 +54,9 @@ function buildComparisonScreenshotPath(basePath, run) {
|
|
|
54
54
|
return `${basePath.slice(0, -extension.length)}-${run}${extension}`;
|
|
55
55
|
}
|
|
56
56
|
function formatPlaytestCheckSuccess(input) {
|
|
57
|
-
return `[check] Passed ${input.creatorUsername}/${input.appName} on ${input.surface}: input delivery ${input.actionCount}/${input.actionCount}, `
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
return (`[check] Passed ${input.creatorUsername}/${input.appName} on ${input.surface}: input delivery ${input.actionCount}/${input.actionCount}, ` +
|
|
58
|
+
`visible change mean=${input.meanDelta.toFixed(4)} changedPixels=${(input.changedPixelRatio * 100).toFixed(1)}%. ` +
|
|
59
|
+
`Gameplay success was not assessed. Evidence: idle=${input.idleCapture}; tape=${input.tapeCapture}`);
|
|
60
60
|
}
|
|
61
61
|
async function check(targetArg, options = {}) {
|
|
62
62
|
let timeoutMs;
|
|
@@ -64,7 +64,7 @@ async function check(targetArg, options = {}) {
|
|
|
64
64
|
timeoutMs = parseProjectCheckTimeoutMs(options.timeout);
|
|
65
65
|
}
|
|
66
66
|
catch (error) {
|
|
67
|
-
(0, messages_1.printErrorWithHelp)(error?.message ||
|
|
67
|
+
(0, messages_1.printErrorWithHelp)(error?.message || "Invalid project check options.", ["Use --tape with DESKTOP, MOBILE_LANDSCAPE, or MOBILE_PORTRAIT."], { command: "project check" });
|
|
68
68
|
process.exitCode = 1;
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
@@ -74,18 +74,18 @@ async function check(targetArg, options = {}) {
|
|
|
74
74
|
}
|
|
75
75
|
const filePath = resolvedTarget.htmlPath;
|
|
76
76
|
if (!(0, node_fs_1.existsSync)(filePath) || !(0, node_fs_1.statSync)(filePath).isFile()) {
|
|
77
|
-
(0, messages_1.printErrorWithHelp)(`App HTML was not found at ${filePath}.`, [
|
|
77
|
+
(0, messages_1.printErrorWithHelp)(`App HTML was not found at ${filePath}.`, ["Run the app build first or fix the catalogue file path."], { command: "project check" });
|
|
78
78
|
process.exitCode = 1;
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
|
-
const taskLookup = (0, catalogue_1.findAppTaskByFile)(filePath);
|
|
81
|
+
const taskLookup = (0, catalogue_1.findAppTaskByFile)(filePath, { listingAssets: "ignore" });
|
|
82
82
|
if (taskLookup.errors.length > 0) {
|
|
83
|
-
(0, messages_1.printErrorWithHelp)(taskLookup.errors[0] ||
|
|
83
|
+
(0, messages_1.printErrorWithHelp)(taskLookup.errors[0] || "Failed to resolve the app task from catalogue.json.", taskLookup.errors.slice(1), { command: "project check" });
|
|
84
84
|
process.exitCode = 1;
|
|
85
85
|
return;
|
|
86
86
|
}
|
|
87
87
|
if (!taskLookup.task) {
|
|
88
|
-
(0, messages_1.printErrorWithHelp)(
|
|
88
|
+
(0, messages_1.printErrorWithHelp)("project check requires a catalogue-backed app target.", ['Add this app to catalogue.json, then rerun "playdrop project check".'], { command: "project check" });
|
|
89
89
|
process.exitCode = 1;
|
|
90
90
|
return;
|
|
91
91
|
}
|
|
@@ -94,13 +94,13 @@ async function check(targetArg, options = {}) {
|
|
|
94
94
|
if (options.tape) {
|
|
95
95
|
tapeSurface = (0, types_1.parseAppSurface)(options.tape);
|
|
96
96
|
if (!tapeSurface) {
|
|
97
|
-
(0, messages_1.printErrorWithHelp)(`Invalid tape surface "${options.tape}".`, [
|
|
97
|
+
(0, messages_1.printErrorWithHelp)(`Invalid tape surface "${options.tape}".`, ["Use DESKTOP, MOBILE_LANDSCAPE, or MOBILE_PORTRAIT."], { command: "project check" });
|
|
98
98
|
process.exitCode = 1;
|
|
99
99
|
return;
|
|
100
100
|
}
|
|
101
101
|
playtestTape = taskLookup.task.playtestTapes?.[tapeSurface] ?? null;
|
|
102
102
|
if (!playtestTape) {
|
|
103
|
-
(0, messages_1.printErrorWithHelp)(`No ${tapeSurface} playtest tape is declared for this app.`, [`Add playtestTapes.${tapeSurface} to catalogue.json.`], { command:
|
|
103
|
+
(0, messages_1.printErrorWithHelp)(`No ${tapeSurface} playtest tape is declared for this app.`, [`Add playtestTapes.${tapeSurface} to catalogue.json.`], { command: "project check" });
|
|
104
104
|
process.exitCode = 1;
|
|
105
105
|
return;
|
|
106
106
|
}
|
|
@@ -112,15 +112,15 @@ async function check(targetArg, options = {}) {
|
|
|
112
112
|
}
|
|
113
113
|
catch (error) {
|
|
114
114
|
if (resolvedTarget.cataloguePath) {
|
|
115
|
-
(0, messages_1.printErrorWithHelp)(error?.message ||
|
|
115
|
+
(0, messages_1.printErrorWithHelp)(error?.message || "Catalogue lookup failed.", ["Ensure the HTML file is listed exactly once in catalogue.json with a valid type."], { command: "project check" });
|
|
116
116
|
process.exitCode = 1;
|
|
117
117
|
return;
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
const screenshotPath = options.screenshot?.trim() || defaultProjectCheckScreenshotPath(appName);
|
|
121
121
|
const workspacePath = resolvedTarget.cataloguePath ?? (0, node_path_1.dirname)(filePath);
|
|
122
|
-
await (0, commandContext_1.withEnvironment)(
|
|
123
|
-
let currentUsername =
|
|
122
|
+
await (0, commandContext_1.withEnvironment)("project check", "Checking the Playdrop hosted game shell", async ({ client, env, envConfig, account, token, workspaceAuth }) => {
|
|
123
|
+
let currentUsername = "";
|
|
124
124
|
try {
|
|
125
125
|
currentUsername = await (0, devShared_1.resolveDevCreatorUsername)({
|
|
126
126
|
client,
|
|
@@ -133,17 +133,17 @@ async function check(targetArg, options = {}) {
|
|
|
133
133
|
return;
|
|
134
134
|
}
|
|
135
135
|
if (error instanceof types_1.UnsupportedClientError) {
|
|
136
|
-
(0, http_1.handleUnsupportedError)(error,
|
|
136
|
+
(0, http_1.handleUnsupportedError)(error, "Authentication");
|
|
137
137
|
process.exitCode = 1;
|
|
138
138
|
return;
|
|
139
139
|
}
|
|
140
140
|
if (error instanceof types_1.ApiError) {
|
|
141
|
-
(0, messages_1.printErrorWithHelp)(`Could not fetch your account (status ${error.status}).`, ['Run "playdrop auth login" to refresh your session.'], { command:
|
|
141
|
+
(0, messages_1.printErrorWithHelp)(`Could not fetch your account (status ${error.status}).`, ['Run "playdrop auth login" to refresh your session.'], { command: "project check" });
|
|
142
142
|
process.exitCode = 1;
|
|
143
143
|
return;
|
|
144
144
|
}
|
|
145
145
|
if ((0, devShared_1.isNetworkError)(error)) {
|
|
146
|
-
(0, messages_1.printNetworkIssue)(
|
|
146
|
+
(0, messages_1.printNetworkIssue)("Could not reach the Playdrop API to resolve your account.", "project check");
|
|
147
147
|
process.exitCode = 1;
|
|
148
148
|
return;
|
|
149
149
|
}
|
|
@@ -158,17 +158,17 @@ async function check(targetArg, options = {}) {
|
|
|
158
158
|
return;
|
|
159
159
|
}
|
|
160
160
|
if (error instanceof types_1.UnsupportedClientError) {
|
|
161
|
-
(0, http_1.handleUnsupportedError)(error,
|
|
161
|
+
(0, http_1.handleUnsupportedError)(error, "Project check");
|
|
162
162
|
process.exitCode = 1;
|
|
163
163
|
return;
|
|
164
164
|
}
|
|
165
165
|
if (error instanceof types_1.ApiError && error.status === 404) {
|
|
166
|
-
(0, messages_1.printErrorWithHelp)(`App ${currentUsername}/${appName} is not registered on ${env}.`, [`Run "playdrop project create app ${appName}" before using project check.`], { command:
|
|
166
|
+
(0, messages_1.printErrorWithHelp)(`App ${currentUsername}/${appName} is not registered on ${env}.`, [`Run "playdrop project create app ${appName}" before using project check.`], { command: "project check" });
|
|
167
167
|
process.exitCode = 1;
|
|
168
168
|
return;
|
|
169
169
|
}
|
|
170
170
|
if ((0, devShared_1.isNetworkError)(error)) {
|
|
171
|
-
(0, messages_1.printNetworkIssue)(
|
|
171
|
+
(0, messages_1.printNetworkIssue)("Could not reach the Playdrop API to verify the app registration.", "project check");
|
|
172
172
|
process.exitCode = 1;
|
|
173
173
|
return;
|
|
174
174
|
}
|
|
@@ -179,7 +179,7 @@ async function check(targetArg, options = {}) {
|
|
|
179
179
|
captureSession = (0, taskCaptureSession_1.resolveTaskCaptureSession)(workspaceAuth, registeredApp);
|
|
180
180
|
}
|
|
181
181
|
catch (error) {
|
|
182
|
-
(0, messages_1.printErrorWithHelp)(error?.message ||
|
|
182
|
+
(0, messages_1.printErrorWithHelp)(error?.message || "Worker capture session is invalid.", ["Run this command from the active worker task workspace."], { command: "project check" });
|
|
183
183
|
process.exitCode = 1;
|
|
184
184
|
return;
|
|
185
185
|
}
|
|
@@ -199,15 +199,15 @@ async function check(targetArg, options = {}) {
|
|
|
199
199
|
postReadyWaitMs: input.postReadyWaitMs,
|
|
200
200
|
});
|
|
201
201
|
if (tapeSurface && playtestTape) {
|
|
202
|
-
const idleScreenshotPath = buildComparisonScreenshotPath(screenshotPath,
|
|
203
|
-
const tapeScreenshotPath = buildComparisonScreenshotPath(screenshotPath,
|
|
202
|
+
const idleScreenshotPath = buildComparisonScreenshotPath(screenshotPath, "idle");
|
|
203
|
+
const tapeScreenshotPath = buildComparisonScreenshotPath(screenshotPath, "tape");
|
|
204
204
|
const idleResult = await runCheck({
|
|
205
205
|
screenshotPath: idleScreenshotPath,
|
|
206
206
|
surface: tapeSurface,
|
|
207
207
|
postReadyWaitMs: playtestTape.durationMs,
|
|
208
208
|
});
|
|
209
|
-
if (idleResult.status !==
|
|
210
|
-
(0, messages_1.printErrorWithHelp)((0, loadCheck_1.formatHostedLoadCheckFailure)(appName, idleResult,
|
|
209
|
+
if (idleResult.status !== "PASSED") {
|
|
210
|
+
(0, messages_1.printErrorWithHelp)((0, loadCheck_1.formatHostedLoadCheckFailure)(appName, idleResult, "local"), idleResult.screenshotPath ? [`Idle screenshot: ${idleResult.screenshotPath}`] : [], { command: "project check" });
|
|
211
211
|
process.exitCode = 1;
|
|
212
212
|
return;
|
|
213
213
|
}
|
|
@@ -216,8 +216,8 @@ async function check(targetArg, options = {}) {
|
|
|
216
216
|
surface: tapeSurface,
|
|
217
217
|
tape: playtestTape,
|
|
218
218
|
});
|
|
219
|
-
if (tapeResult.status !==
|
|
220
|
-
(0, messages_1.printErrorWithHelp)((0, loadCheck_1.formatHostedLoadCheckFailure)(appName, tapeResult,
|
|
219
|
+
if (tapeResult.status !== "PASSED") {
|
|
220
|
+
(0, messages_1.printErrorWithHelp)((0, loadCheck_1.formatHostedLoadCheckFailure)(appName, tapeResult, "local"), tapeResult.screenshotPath ? [`Tape screenshot: ${tapeResult.screenshotPath}`] : [], { command: "project check" });
|
|
221
221
|
process.exitCode = 1;
|
|
222
222
|
return;
|
|
223
223
|
}
|
|
@@ -225,12 +225,12 @@ async function check(targetArg, options = {}) {
|
|
|
225
225
|
const tapeCapture = tapeResult.screenshotPath ?? tapeScreenshotPath;
|
|
226
226
|
const comparison = await (0, loadCheck_1.comparePlaytestFrames)(idleCapture, tapeCapture);
|
|
227
227
|
if (!comparison.passed) {
|
|
228
|
-
(0, messages_1.printErrorWithHelp)(`playtest_smoke_check_not_interactive: The validator completed all ${playtestTape.events.length} tape actions `
|
|
229
|
-
|
|
228
|
+
(0, messages_1.printErrorWithHelp)(`playtest_smoke_check_not_interactive: The validator completed all ${playtestTape.events.length} tape actions ` +
|
|
229
|
+
`without a crash, but the result looked the same as running the game for ${playtestTape.durationMs} ms without input.`, [
|
|
230
230
|
`Idle screenshot: ${idleCapture}`,
|
|
231
231
|
`Tape screenshot: ${tapeCapture}`,
|
|
232
|
-
|
|
233
|
-
], { command:
|
|
232
|
+
"Make sure the tape performs the core gameplay action and produces a visible response.",
|
|
233
|
+
], { command: "project check" });
|
|
234
234
|
process.exitCode = 1;
|
|
235
235
|
return;
|
|
236
236
|
}
|
|
@@ -247,12 +247,12 @@ async function check(targetArg, options = {}) {
|
|
|
247
247
|
return;
|
|
248
248
|
}
|
|
249
249
|
const result = await runCheck({ screenshotPath });
|
|
250
|
-
if (result.status !==
|
|
251
|
-
(0, messages_1.printErrorWithHelp)((0, loadCheck_1.formatHostedLoadCheckFailure)(appName, result,
|
|
250
|
+
if (result.status !== "PASSED") {
|
|
251
|
+
(0, messages_1.printErrorWithHelp)((0, loadCheck_1.formatHostedLoadCheckFailure)(appName, result, "local"), result.screenshotPath ? [`Screenshot: ${result.screenshotPath}`] : [], { command: "project check" });
|
|
252
252
|
process.exitCode = 1;
|
|
253
253
|
return;
|
|
254
254
|
}
|
|
255
255
|
const checkedSurface = (0, loadCheck_1.resolveLoadCheckSurface)(taskLookup.task.surfaceTargets, taskLookup.task.primarySurface);
|
|
256
|
-
console.log(`[check] Passed ${currentUsername}/${appName} on ${checkedSurface}: launch ready${result.webglRenderer ? ` with hardware renderer ${result.webglRenderer}` :
|
|
256
|
+
console.log(`[check] Passed ${currentUsername}/${appName} on ${checkedSurface}: launch ready${result.webglRenderer ? ` with hardware renderer ${result.webglRenderer}` : ""}. Gameplay success was not assessed. Screenshot=${result.screenshotPath ?? screenshotPath}`);
|
|
257
257
|
}, { workspacePath });
|
|
258
258
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export interface MacClientManifest {
|
|
2
|
-
platform:
|
|
2
|
+
platform: "mac";
|
|
3
3
|
version: string;
|
|
4
4
|
build: string;
|
|
5
5
|
versionCode: string;
|
|
@@ -10,7 +10,7 @@ export interface MacClientManifest {
|
|
|
10
10
|
export interface ClientStatus {
|
|
11
11
|
platform: NodeJS.Platform | string;
|
|
12
12
|
supported: boolean;
|
|
13
|
-
status:
|
|
13
|
+
status: "unavailable" | "missing" | "installed" | "update-available";
|
|
14
14
|
installed: boolean;
|
|
15
15
|
appPath?: string;
|
|
16
16
|
version?: string;
|
|
@@ -40,5 +40,5 @@ export declare function getClientStatus(options?: ClientStatusOptions): Promise<
|
|
|
40
40
|
export declare function installClient(options?: ClientActionOptions): Promise<void>;
|
|
41
41
|
export declare function updateClient(options?: ClientActionOptions): Promise<void>;
|
|
42
42
|
export declare function launchClient(options?: ClientActionOptions): Promise<void>;
|
|
43
|
-
export declare function installMacDmg(manifest: MacClientManifest, appPath: string, runCommand: NonNullable<ClientActionOptions[
|
|
43
|
+
export declare function installMacDmg(manifest: MacClientManifest, appPath: string, runCommand: NonNullable<ClientActionOptions["runCommand"]>): Promise<boolean>;
|
|
44
44
|
export {};
|