@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.
- 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
package/dist/index.js
CHANGED
|
@@ -52,7 +52,7 @@ const messages_1 = require("./messages");
|
|
|
52
52
|
// Restricted shim: inside a worker task workspace only task-scoped commands,
|
|
53
53
|
// local build/run helpers, safe read-only lookups, and AI generation are
|
|
54
54
|
// permitted. Worker lease credentials are never exposed to the agent process.
|
|
55
|
-
if (process.env.PLAYDROP_WORKER_CONTEXT ===
|
|
55
|
+
if (process.env.PLAYDROP_WORKER_CONTEXT === "1") {
|
|
56
56
|
const workerContextBlockMessage = (0, worker_1.resolveWorkerContextCommandBlockMessage)(process.argv.slice(2));
|
|
57
57
|
if (workerContextBlockMessage) {
|
|
58
58
|
console.error(workerContextBlockMessage);
|
|
@@ -61,34 +61,34 @@ if (process.env.PLAYDROP_WORKER_CONTEXT === '1') {
|
|
|
61
61
|
}
|
|
62
62
|
function printRemovedCommandHint(command) {
|
|
63
63
|
const replacements = {
|
|
64
|
-
list:
|
|
65
|
-
generate:
|
|
66
|
-
generations:
|
|
67
|
-
init:
|
|
68
|
-
create:
|
|
69
|
-
dev:
|
|
70
|
-
capture:
|
|
71
|
-
validate:
|
|
72
|
-
build:
|
|
73
|
-
format:
|
|
74
|
-
upload:
|
|
75
|
-
upgrade:
|
|
76
|
-
documentation:
|
|
77
|
-
feedback:
|
|
64
|
+
list: "playdrop browse",
|
|
65
|
+
generate: "playdrop ai create",
|
|
66
|
+
generations: "playdrop ai jobs browse",
|
|
67
|
+
init: "playdrop workspaces init",
|
|
68
|
+
create: "playdrop project create app",
|
|
69
|
+
dev: "playdrop project dev",
|
|
70
|
+
capture: "playdrop project capture",
|
|
71
|
+
validate: "playdrop project validate",
|
|
72
|
+
build: "playdrop project build",
|
|
73
|
+
format: "playdrop project format",
|
|
74
|
+
upload: "playdrop project publish",
|
|
75
|
+
upgrade: "playdrop update",
|
|
76
|
+
documentation: "playdrop documentation browse",
|
|
77
|
+
feedback: "playdrop feedback send",
|
|
78
78
|
};
|
|
79
79
|
if (replacements[command]) {
|
|
80
80
|
console.error(`"${command}" was removed from the clean-break CLI. Use "${replacements[command]}" instead.`);
|
|
81
81
|
return;
|
|
82
82
|
}
|
|
83
|
-
if (command ===
|
|
83
|
+
if (command === "assets") {
|
|
84
84
|
console.error('"assets" was removed. Use "playdrop detail <creator>/asset/<name>", "playdrop versions browse <creator>/asset/<name>", or "playdrop creations assets ..." instead.');
|
|
85
85
|
return;
|
|
86
86
|
}
|
|
87
|
-
if (command ===
|
|
87
|
+
if (command === "asset-packs") {
|
|
88
88
|
console.error('"asset-packs" was removed. Use "playdrop detail <creator>/asset-pack/<name>", "playdrop versions browse <creator>/asset-pack/<name>", or "playdrop creations asset-packs ..." instead.');
|
|
89
89
|
return;
|
|
90
90
|
}
|
|
91
|
-
if (command ===
|
|
91
|
+
if (command === "internal" || command === "migrate-catalogue-v2" || command === "download") {
|
|
92
92
|
console.error(`"${command}" is not part of the redesigned CLI surface. Run "playdrop help" to see the supported commands.`);
|
|
93
93
|
return;
|
|
94
94
|
}
|
|
@@ -96,15 +96,15 @@ function printRemovedCommandHint(command) {
|
|
|
96
96
|
}
|
|
97
97
|
const program = new commander_1.Command();
|
|
98
98
|
program
|
|
99
|
-
.name(
|
|
100
|
-
.description(
|
|
101
|
-
.usage(
|
|
102
|
-
.version((0, clientInfo_1.getCliVersionLabel)(),
|
|
103
|
-
.addHelpCommand(
|
|
99
|
+
.name("playdrop")
|
|
100
|
+
.description("Playdrop CLI for creators and AI agents.")
|
|
101
|
+
.usage("<command> [options]")
|
|
102
|
+
.version((0, clientInfo_1.getCliVersionLabel)(), "-V, --version", "Print CLI version")
|
|
103
|
+
.addHelpCommand("help [command]", "Show help for a command");
|
|
104
104
|
program.showHelpAfterError();
|
|
105
105
|
program.showSuggestionAfterError();
|
|
106
|
-
program.addHelpText(
|
|
107
|
-
program.on(
|
|
106
|
+
program.addHelpText("afterAll", "\nStart here: run `playdrop doctor` for setup, or `playdrop getting-started`, `playdrop faq`, or `playdrop changelog`.\n");
|
|
107
|
+
program.on("command:*", (unknownCommands) => {
|
|
108
108
|
const [unknownCommand] = unknownCommands;
|
|
109
109
|
if (unknownCommand) {
|
|
110
110
|
printRemovedCommandHint(unknownCommand);
|
|
@@ -112,21 +112,21 @@ program.on('command:*', (unknownCommands) => {
|
|
|
112
112
|
process.exitCode = 1;
|
|
113
113
|
});
|
|
114
114
|
function createEnvOption() {
|
|
115
|
-
return new commander_1.Option(
|
|
115
|
+
return new commander_1.Option("--env <env>", "Environment (dev|local|prod|preview)").default("prod");
|
|
116
116
|
}
|
|
117
117
|
function collectRepeatedOption(value, previous = []) {
|
|
118
118
|
return [...previous, value];
|
|
119
119
|
}
|
|
120
120
|
function registerLoginCommand(parent) {
|
|
121
121
|
parent
|
|
122
|
-
.command(
|
|
123
|
-
.description(
|
|
122
|
+
.command("login")
|
|
123
|
+
.description("Log in to Playdrop")
|
|
124
124
|
.addOption(createEnvOption())
|
|
125
|
-
.option(
|
|
126
|
-
.option(
|
|
127
|
-
.option(
|
|
128
|
-
.option(
|
|
129
|
-
.option(
|
|
125
|
+
.option("--username <username>", "Username for direct login")
|
|
126
|
+
.option("--password <password>", "Password for direct login")
|
|
127
|
+
.option("--key <apiKey>", "API key for direct login")
|
|
128
|
+
.option("--handoff-token <token>", "Native app handoff token for direct login")
|
|
129
|
+
.option("--json", "Output JSON")
|
|
130
130
|
.action(async (opts) => {
|
|
131
131
|
await (0, login_1.login)(opts.env, {
|
|
132
132
|
username: opts.username,
|
|
@@ -139,36 +139,36 @@ function registerLoginCommand(parent) {
|
|
|
139
139
|
}
|
|
140
140
|
function registerLogoutCommand(parent) {
|
|
141
141
|
parent
|
|
142
|
-
.command(
|
|
143
|
-
.description(
|
|
144
|
-
.argument(
|
|
145
|
-
.option(
|
|
142
|
+
.command("logout")
|
|
143
|
+
.description("Log out of Playdrop")
|
|
144
|
+
.argument("[username]", "Username to log out")
|
|
145
|
+
.option("--env <env>", "Environment for targeted logout")
|
|
146
146
|
.action((username, opts) => {
|
|
147
147
|
(0, logout_1.logout)({ username, env: opts.env });
|
|
148
148
|
});
|
|
149
149
|
}
|
|
150
150
|
function registerWhoamiCommand(parent) {
|
|
151
151
|
parent
|
|
152
|
-
.command(
|
|
153
|
-
.description(
|
|
154
|
-
.option(
|
|
152
|
+
.command("whoami")
|
|
153
|
+
.description("Show the resolved account for this workspace")
|
|
154
|
+
.option("--env <env>", "Resolve this command against one logged-in environment")
|
|
155
155
|
.action(async (opts) => {
|
|
156
156
|
await (0, whoami_1.whoami)({ env: opts.env });
|
|
157
157
|
});
|
|
158
158
|
}
|
|
159
159
|
function registerAccountsCommand(parent) {
|
|
160
160
|
parent
|
|
161
|
-
.command(
|
|
162
|
-
.description(
|
|
161
|
+
.command("accounts")
|
|
162
|
+
.description("List stored Playdrop accounts")
|
|
163
163
|
.action(() => {
|
|
164
164
|
(0, accounts_1.listAccounts)();
|
|
165
165
|
});
|
|
166
166
|
}
|
|
167
167
|
function registerUseAccountCommand(parent) {
|
|
168
168
|
parent
|
|
169
|
-
.command(
|
|
170
|
-
.description(
|
|
171
|
-
.option(
|
|
169
|
+
.command("use <username>")
|
|
170
|
+
.description("Switch the default Playdrop account")
|
|
171
|
+
.option("--env <env>", "Environment for the selected account")
|
|
172
172
|
.action((username, opts) => {
|
|
173
173
|
(0, accounts_1.useAccount)(username, opts.env);
|
|
174
174
|
});
|
|
@@ -176,16 +176,16 @@ function registerUseAccountCommand(parent) {
|
|
|
176
176
|
registerLoginCommand(program);
|
|
177
177
|
registerLogoutCommand(program);
|
|
178
178
|
registerWhoamiCommand(program);
|
|
179
|
-
const worker = program.command(
|
|
179
|
+
const worker = program.command("worker").description("Run a PlayDrop agent worker on this machine");
|
|
180
180
|
worker
|
|
181
|
-
.command(
|
|
182
|
-
.description(
|
|
183
|
-
.option(
|
|
184
|
-
.option(
|
|
185
|
-
.option(
|
|
186
|
-
.option(
|
|
187
|
-
.option(
|
|
188
|
-
.option(
|
|
181
|
+
.command("start")
|
|
182
|
+
.description("Start the PlayDrop worker and poll for agent tasks")
|
|
183
|
+
.option("--env <env>", "Resolve this command against one logged-in environment")
|
|
184
|
+
.option("--once", "Process at most one task then exit")
|
|
185
|
+
.option("--name <name>", "Worker display name override")
|
|
186
|
+
.option("--supervisor <type>", "Worker supervisor type: app, launchagent, or terminal", "terminal")
|
|
187
|
+
.option("--supervise-stdin", "Exit with a bounded shutdown when stdin closes")
|
|
188
|
+
.option("--dev-plugin-working-tree <path>", "DEV ONLY: stage task plugin files from this working tree")
|
|
189
189
|
.action(async (opts) => {
|
|
190
190
|
await (0, worker_1.startWorker)({
|
|
191
191
|
env: opts.env,
|
|
@@ -197,10 +197,10 @@ worker
|
|
|
197
197
|
});
|
|
198
198
|
});
|
|
199
199
|
worker
|
|
200
|
-
.command(
|
|
201
|
-
.description(
|
|
202
|
-
.option(
|
|
203
|
-
.option(
|
|
200
|
+
.command("status")
|
|
201
|
+
.description("Show local and server worker readiness")
|
|
202
|
+
.option("--env <env>", "Resolve this command against one logged-in environment")
|
|
203
|
+
.option("--json", "Output JSON")
|
|
204
204
|
.action(async (opts) => {
|
|
205
205
|
await (0, worker_1.showWorkerStatus)({
|
|
206
206
|
env: opts.env,
|
|
@@ -208,12 +208,12 @@ worker
|
|
|
208
208
|
});
|
|
209
209
|
});
|
|
210
210
|
worker
|
|
211
|
-
.command(
|
|
212
|
-
.description(
|
|
213
|
-
.option(
|
|
214
|
-
.option(
|
|
215
|
-
.option(
|
|
216
|
-
.option(
|
|
211
|
+
.command("setup")
|
|
212
|
+
.description("Prepare this machine for PlayDrop worker execution")
|
|
213
|
+
.option("--env <env>", "Resolve this command against one logged-in environment")
|
|
214
|
+
.option("--name <name>", "Worker display name override")
|
|
215
|
+
.option("--no-start", "Write managed worker files without starting or restarting LaunchAgent")
|
|
216
|
+
.option("--restart", "Restart the managed worker when it is safe")
|
|
217
217
|
.action(async (opts) => {
|
|
218
218
|
await (0, worker_1.setupWorker)({
|
|
219
219
|
env: opts.env,
|
|
@@ -222,158 +222,164 @@ worker
|
|
|
222
222
|
restart: opts.restart,
|
|
223
223
|
});
|
|
224
224
|
});
|
|
225
|
-
const task = program.command(
|
|
225
|
+
const task = program.command("task").description("Report agent task progress from a worker workspace");
|
|
226
226
|
task
|
|
227
|
-
.command(
|
|
228
|
-
.description(
|
|
227
|
+
.command("context")
|
|
228
|
+
.description("Print the active task metadata and original user request")
|
|
229
229
|
.action(() => {
|
|
230
230
|
(0, worker_1.showTaskContext)();
|
|
231
231
|
});
|
|
232
232
|
task
|
|
233
|
-
.command(
|
|
234
|
-
.description(
|
|
235
|
-
.
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
.
|
|
240
|
-
.
|
|
241
|
-
.option(
|
|
233
|
+
.command("asset-runtime")
|
|
234
|
+
.description("Prepare the pinned transparent-asset extraction runtime for this task")
|
|
235
|
+
.action(async () => {
|
|
236
|
+
await (0, worker_1.prepareAssetRuntimeTask)();
|
|
237
|
+
});
|
|
238
|
+
task
|
|
239
|
+
.command("report")
|
|
240
|
+
.description("Post progress for the active agent task")
|
|
241
|
+
.option("--phase <phase>", "Task phase")
|
|
242
|
+
.option("--done <done>", "What was just completed")
|
|
243
|
+
.option("--current <current>", "What is happening now")
|
|
244
|
+
.option("--pct <number>", "Legacy percent complete, 0 to 100")
|
|
245
|
+
.option("-m, --message <message>", "Progress message")
|
|
246
|
+
.option("--env <env>", "Environment override")
|
|
247
|
+
.option("--kind <kind>", "progress")
|
|
242
248
|
.action(async (opts) => {
|
|
243
249
|
await (0, worker_1.reportTask)(opts);
|
|
244
250
|
});
|
|
245
251
|
task
|
|
246
|
-
.command(
|
|
247
|
-
.description(
|
|
248
|
-
.requiredOption(
|
|
249
|
-
.requiredOption(
|
|
250
|
-
.option(
|
|
252
|
+
.command("report-catalogue")
|
|
253
|
+
.description("Post a catalogue.json preview for the active agent task")
|
|
254
|
+
.requiredOption("--file <path>", "Path to catalogue.json")
|
|
255
|
+
.requiredOption("-m, --message <message>", "Preview message")
|
|
256
|
+
.option("--env <env>", "Environment override")
|
|
251
257
|
.action(async (opts) => {
|
|
252
258
|
await (0, worker_1.reportCatalogueTask)(opts);
|
|
253
259
|
});
|
|
254
260
|
task
|
|
255
|
-
.command(
|
|
256
|
-
.description(
|
|
257
|
-
.requiredOption(
|
|
258
|
-
.requiredOption(
|
|
259
|
-
.option(
|
|
260
|
-
.option(
|
|
261
|
-
.option(
|
|
262
|
-
.option(
|
|
261
|
+
.command("material")
|
|
262
|
+
.description("Share a visual build artifact in the creator conversation")
|
|
263
|
+
.requiredOption("--file <path>", "PNG, JPEG, WebP, MP4, or WebM file")
|
|
264
|
+
.requiredOption("--title <text>", "Creator-facing title, one to three words")
|
|
265
|
+
.option("--poster <path>", "Poster image for a video")
|
|
266
|
+
.option("--asset", "Present a transparent isolated asset without cropping")
|
|
267
|
+
.option("--phase <phase>", "Task phase that produced the material")
|
|
268
|
+
.option("--env <env>", "Environment override")
|
|
263
269
|
.action(async (opts) => {
|
|
264
270
|
await (0, worker_1.materialTask)(opts);
|
|
265
271
|
});
|
|
266
272
|
task
|
|
267
|
-
.command(
|
|
268
|
-
.description(
|
|
269
|
-
.requiredOption(
|
|
270
|
-
.requiredOption(
|
|
271
|
-
.option(
|
|
272
|
-
.option(
|
|
273
|
-
.option(
|
|
273
|
+
.command("claim-slug")
|
|
274
|
+
.description("Claim the app slug for the active game creation task")
|
|
275
|
+
.requiredOption("--app-name <slug>", "Claimed app slug")
|
|
276
|
+
.requiredOption("--display-name <name>", "Human-readable game title")
|
|
277
|
+
.option("--subtitle <subtitle>", "Short game subtitle")
|
|
278
|
+
.option("--primary-surface <surface>", "DESKTOP, MOBILE_LANDSCAPE, or MOBILE_PORTRAIT")
|
|
279
|
+
.option("--env <env>", "Environment override")
|
|
274
280
|
.action(async (opts) => {
|
|
275
281
|
await (0, worker_1.claimSlugTask)(opts);
|
|
276
282
|
});
|
|
277
283
|
task
|
|
278
|
-
.command(
|
|
279
|
-
.description(
|
|
280
|
-
.option(
|
|
281
|
-
.option(
|
|
284
|
+
.command("upload")
|
|
285
|
+
.description("Upload the active agent task project as a private draft")
|
|
286
|
+
.option("--preflight-only", "Run non-mutating checks without uploading")
|
|
287
|
+
.option("--env <env>", "Environment override")
|
|
282
288
|
.action(async (opts) => {
|
|
283
289
|
await (0, worker_1.uploadTask)(opts);
|
|
284
290
|
});
|
|
285
291
|
task
|
|
286
|
-
.command(
|
|
287
|
-
.description(
|
|
288
|
-
.requiredOption(
|
|
289
|
-
.option(
|
|
290
|
-
.option(
|
|
291
|
-
.option(
|
|
292
|
+
.command("done")
|
|
293
|
+
.description("Mark the active agent task done after upload")
|
|
294
|
+
.requiredOption("--summary <summary>", "One-sentence creator-facing recap of what was built")
|
|
295
|
+
.option("--next-steps <path>", "JSON file with up to three next-step suggestions")
|
|
296
|
+
.option("--platform-feedback-file <path>", "Markdown feedback about the PlayDrop platform")
|
|
297
|
+
.option("--env <env>", "Environment override")
|
|
292
298
|
.action(async (opts) => {
|
|
293
299
|
await (0, worker_1.completeTask)(opts);
|
|
294
300
|
});
|
|
295
301
|
task
|
|
296
|
-
.command(
|
|
297
|
-
.description(
|
|
298
|
-
.requiredOption(
|
|
299
|
-
.requiredOption(
|
|
300
|
-
.option(
|
|
301
|
-
.option(
|
|
302
|
-
.requiredOption(
|
|
303
|
-
.option(
|
|
304
|
-
.option(
|
|
302
|
+
.command("submit-review")
|
|
303
|
+
.description("Submit the active game review task result")
|
|
304
|
+
.requiredOption("--state <state>", "Review outcome: Blocked, Limited, Passed, Good, or Excellent")
|
|
305
|
+
.requiredOption("--message-file <path>", "Internal assessment file")
|
|
306
|
+
.option("--creator-feedback-file <path>", "Creator feedback file")
|
|
307
|
+
.option("--platform-feedback-file <path>", "Markdown feedback about the PlayDrop platform")
|
|
308
|
+
.requiredOption("--evidence-dir <path>", "Review evidence directory")
|
|
309
|
+
.option("--next-steps <path>", "JSON file with up to three next-step suggestions")
|
|
310
|
+
.option("--env <env>", "Environment override")
|
|
305
311
|
.action(async (opts) => {
|
|
306
312
|
await (0, worker_1.submitReviewTask)(opts);
|
|
307
313
|
});
|
|
308
314
|
task
|
|
309
|
-
.command(
|
|
310
|
-
.description(
|
|
311
|
-
.requiredOption(
|
|
312
|
-
.requiredOption(
|
|
313
|
-
.option(
|
|
315
|
+
.command("submit-eval")
|
|
316
|
+
.description("Submit the active game eval task result")
|
|
317
|
+
.requiredOption("--result-file <path>", "Strict GAME_EVAL JSON result file")
|
|
318
|
+
.requiredOption("--evidence-dir <paths...>", "One instrument evidence directory per eval target")
|
|
319
|
+
.option("--env <env>", "Environment override")
|
|
314
320
|
.action(async (opts) => {
|
|
315
321
|
await (0, worker_1.submitEvalTask)(opts);
|
|
316
322
|
});
|
|
317
323
|
task
|
|
318
|
-
.command(
|
|
319
|
-
.description(
|
|
320
|
-
.requiredOption(
|
|
321
|
-
.option(
|
|
322
|
-
.requiredOption(
|
|
323
|
-
.option(
|
|
324
|
+
.command("evidence")
|
|
325
|
+
.description("Persist the screenshot you just took as task evidence")
|
|
326
|
+
.requiredOption("--name <name>", "Evidence state: first-frame, core, win, or loss")
|
|
327
|
+
.option("--screenshot-id <id>", "Screenshot id; omit to persist the capture you just took")
|
|
328
|
+
.requiredOption("--evidence-dir <path>", "Evidence output directory")
|
|
329
|
+
.option("--group <id>", "Evidence group id; required for GAME_EVAL")
|
|
324
330
|
.action(async (opts) => {
|
|
325
331
|
await (0, worker_1.saveTaskEvidence)(opts);
|
|
326
332
|
});
|
|
327
333
|
task
|
|
328
|
-
.command(
|
|
329
|
-
.description(
|
|
330
|
-
.requiredOption(
|
|
331
|
-
.option(
|
|
334
|
+
.command("instrument-error")
|
|
335
|
+
.description("Terminate a review or eval task with a structured instrument error")
|
|
336
|
+
.requiredOption("--reason <reason>", "auth_state, browser_control, renderer, or screenshot")
|
|
337
|
+
.option("--env <env>", "Environment override")
|
|
332
338
|
.action(async (opts) => {
|
|
333
339
|
await (0, worker_1.instrumentErrorTask)(opts);
|
|
334
340
|
});
|
|
335
341
|
task
|
|
336
|
-
.command(
|
|
337
|
-
.description(
|
|
338
|
-
.requiredOption(
|
|
339
|
-
.option(
|
|
340
|
-
.option(
|
|
341
|
-
.option(
|
|
342
|
+
.command("fail")
|
|
343
|
+
.description("Fail the active agent task")
|
|
344
|
+
.requiredOption("-m, --message <message>", "Creator-facing failure message")
|
|
345
|
+
.option("--retryable-with-same-input", "Allow retrying the exact same request without creator changes")
|
|
346
|
+
.option("--platform-feedback-file <path>", "Markdown feedback about the PlayDrop platform")
|
|
347
|
+
.option("--env <env>", "Environment override")
|
|
342
348
|
.action(async (opts) => {
|
|
343
349
|
await (0, worker_1.failTask)(opts);
|
|
344
350
|
});
|
|
345
|
-
const review = program.command(
|
|
351
|
+
const review = program.command("review").description("Review helper commands for PlayDrop worker tasks");
|
|
346
352
|
review
|
|
347
|
-
.command(
|
|
348
|
-
.description(
|
|
349
|
-
.requiredOption(
|
|
350
|
-
.requiredOption(
|
|
351
|
-
.option(
|
|
352
|
-
.requiredOption(
|
|
353
|
+
.command("validate-result")
|
|
354
|
+
.description("Validate a canonical game review result")
|
|
355
|
+
.requiredOption("--state <state>", "Review outcome: Blocked, Limited, Passed, Good, or Excellent")
|
|
356
|
+
.requiredOption("--message-file <path>", "Internal assessment file")
|
|
357
|
+
.option("--creator-feedback-file <path>", "Creator feedback file")
|
|
358
|
+
.requiredOption("--evidence-dir <path>", "Review evidence directory")
|
|
353
359
|
.action(async (opts) => {
|
|
354
360
|
await (0, review_1.validateReviewResultCommand)(opts);
|
|
355
361
|
});
|
|
356
362
|
review
|
|
357
|
-
.command(
|
|
358
|
-
.description(
|
|
359
|
-
.requiredOption(
|
|
360
|
-
.requiredOption(
|
|
361
|
-
.requiredOption(
|
|
362
|
-
.requiredOption(
|
|
363
|
+
.command("compose-evidence")
|
|
364
|
+
.description("Compose review screenshots into one evidence image")
|
|
365
|
+
.requiredOption("--core <path>", "Core gameplay screenshot")
|
|
366
|
+
.requiredOption("--win <path>", "Win or progression screenshot")
|
|
367
|
+
.requiredOption("--loss <path>", "Loss or failure screenshot")
|
|
368
|
+
.requiredOption("--out <path>", "Output PNG path")
|
|
363
369
|
.action(async (opts) => {
|
|
364
370
|
await (0, review_1.composeReviewEvidence)(opts);
|
|
365
371
|
});
|
|
366
372
|
review
|
|
367
|
-
.command(
|
|
368
|
-
.description(
|
|
369
|
-
.requiredOption(
|
|
370
|
-
.requiredOption(
|
|
371
|
-
.option(
|
|
372
|
-
.option(
|
|
373
|
+
.command("rating-card")
|
|
374
|
+
.description("Render a review rating card PNG")
|
|
375
|
+
.requiredOption("--review-message-file <path>", "Internal assessment file")
|
|
376
|
+
.requiredOption("--out <path>", "Output PNG path")
|
|
377
|
+
.option("--punchline <text>", "Override punchline text")
|
|
378
|
+
.option("--title <text>", "Card title")
|
|
373
379
|
.action(async (opts) => {
|
|
374
380
|
await (0, review_1.createReviewRatingCard)(opts);
|
|
375
381
|
});
|
|
376
|
-
const auth = program.command(
|
|
382
|
+
const auth = program.command("auth").description("Authentication commands");
|
|
377
383
|
registerLoginCommand(auth);
|
|
378
384
|
registerLogoutCommand(auth);
|
|
379
385
|
registerWhoamiCommand(auth);
|
|
@@ -381,616 +387,604 @@ registerAccountsCommand(auth);
|
|
|
381
387
|
registerUseAccountCommand(auth);
|
|
382
388
|
function addChatReadOptions(command) {
|
|
383
389
|
return command
|
|
384
|
-
.option(
|
|
385
|
-
.option(
|
|
390
|
+
.option("--env <env>", "Resolve this command against one logged-in environment")
|
|
391
|
+
.option("--json", "Output JSON");
|
|
386
392
|
}
|
|
387
393
|
function addChatWriteOptions(command, allowClientKey = true) {
|
|
388
394
|
command
|
|
389
|
-
.option(
|
|
390
|
-
.option(
|
|
391
|
-
.option(
|
|
392
|
-
.option(
|
|
393
|
-
.option(
|
|
394
|
-
.option(
|
|
395
|
-
.option(
|
|
395
|
+
.option("--text <text>", "Message text")
|
|
396
|
+
.option("--text-file <path>", "Read message text from a file")
|
|
397
|
+
.option("--file <path>", "Attach a file", collectRepeatedOption, [])
|
|
398
|
+
.option("--link <url>", "Attach an HTTPS link", collectRepeatedOption, [])
|
|
399
|
+
.option("--event-type <type>", "Structured event type")
|
|
400
|
+
.option("--event-data-file <path>", "Read structured event JSON from a file")
|
|
401
|
+
.option("--as-system", "Publish as playdrop-system (admin only)");
|
|
396
402
|
if (allowClientKey)
|
|
397
|
-
command.option(
|
|
403
|
+
command.option("--client-key <key>", "Idempotency key within the channel");
|
|
398
404
|
return addChatReadOptions(command);
|
|
399
405
|
}
|
|
400
|
-
const chat = program.command(
|
|
401
|
-
addChatReadOptions(chat.command(
|
|
402
|
-
|
|
403
|
-
addChatReadOptions(chat.command(
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
.
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
addChatReadOptions(chat.command(
|
|
416
|
-
.action(chat_1.unreactChatMessage);
|
|
417
|
-
const chatAccess = chat.command('access').description('Manage channel access');
|
|
418
|
-
addChatReadOptions(chatAccess.command('grant <channel> <username>').description('Grant channel access').option('--read-only', 'Grant read access without write access'))
|
|
419
|
-
.action(chat_1.grantChatAccess);
|
|
420
|
-
addChatReadOptions(chatAccess.command('revoke <channel> <username>').description('Revoke channel access'))
|
|
421
|
-
.action(chat_1.revokeChatAccess);
|
|
422
|
-
addChatReadOptions(chat.command('visibility <channel> <visibility>').description('Set public or admin-only visibility'))
|
|
423
|
-
.action(chat_1.setChatVisibility);
|
|
406
|
+
const chat = program.command("chat").description("Read and write PlayDrop Chat");
|
|
407
|
+
addChatReadOptions(chat.command("channels").description("List accessible channels")).action(chat_1.listChatChannels);
|
|
408
|
+
addChatReadOptions(chat.command("read <channel>").description("Read channel messages")).action(chat_1.readChatChannel);
|
|
409
|
+
addChatReadOptions(chat.command("thread <message-id>").description("Read a message thread")).action(chat_1.readChatThread);
|
|
410
|
+
addChatWriteOptions(chat.command("send <channel>").description("Send a channel message")).action(chat_1.sendChatMessage);
|
|
411
|
+
addChatWriteOptions(chat.command("reply <message-id>").description("Reply to a root message")).action(chat_1.replyChatMessage);
|
|
412
|
+
addChatWriteOptions(chat.command("edit <message-id>").description("Edit a message"), false).action(chat_1.editChatMessage);
|
|
413
|
+
addChatReadOptions(chat.command("react <message-id> <emoji>").description("Add a reaction")).action(chat_1.reactChatMessage);
|
|
414
|
+
addChatReadOptions(chat.command("unreact <message-id> <emoji>").description("Remove a reaction")).action(chat_1.unreactChatMessage);
|
|
415
|
+
const chatAccess = chat.command("access").description("Manage channel access");
|
|
416
|
+
addChatReadOptions(chatAccess
|
|
417
|
+
.command("grant <channel> <username>")
|
|
418
|
+
.description("Grant channel access")
|
|
419
|
+
.option("--read-only", "Grant read access without write access")).action(chat_1.grantChatAccess);
|
|
420
|
+
addChatReadOptions(chatAccess.command("revoke <channel> <username>").description("Revoke channel access")).action(chat_1.revokeChatAccess);
|
|
421
|
+
addChatReadOptions(chat.command("visibility <channel> <visibility>").description("Set public or admin-only visibility")).action(chat_1.setChatVisibility);
|
|
424
422
|
program
|
|
425
|
-
.command(
|
|
426
|
-
.description(
|
|
427
|
-
.option(
|
|
428
|
-
.option(
|
|
423
|
+
.command("doctor")
|
|
424
|
+
.description("Check PlayDrop setup health")
|
|
425
|
+
.option("--section <section>", "clients, agents, or workspaces")
|
|
426
|
+
.option("--json", "Output JSON")
|
|
429
427
|
.action(async (opts) => {
|
|
430
428
|
await (0, doctor_1.showDoctor)({ section: opts.section, json: opts.json });
|
|
431
429
|
});
|
|
432
|
-
const clients = program.command(
|
|
433
|
-
clients
|
|
434
|
-
.action(async () => {
|
|
430
|
+
const clients = program.command("clients").description("Manage the PlayDrop native client");
|
|
431
|
+
clients.action(async () => {
|
|
435
432
|
await (0, clients_1.showClientStatus)();
|
|
436
433
|
});
|
|
437
434
|
clients
|
|
438
|
-
.command(
|
|
439
|
-
.description(
|
|
440
|
-
.option(
|
|
435
|
+
.command("status")
|
|
436
|
+
.description("Show native client status")
|
|
437
|
+
.option("--json", "Output JSON")
|
|
441
438
|
.action(async (opts) => {
|
|
442
439
|
await (0, clients_1.showClientStatus)({ json: opts.json });
|
|
443
440
|
});
|
|
444
441
|
clients
|
|
445
|
-
.command(
|
|
446
|
-
.description(
|
|
442
|
+
.command("install")
|
|
443
|
+
.description("Install the PlayDrop native client")
|
|
447
444
|
.action(async () => {
|
|
448
445
|
await (0, clients_1.installClient)();
|
|
449
446
|
});
|
|
450
447
|
clients
|
|
451
|
-
.command(
|
|
452
|
-
.description(
|
|
448
|
+
.command("launch")
|
|
449
|
+
.description("Launch the PlayDrop native client")
|
|
453
450
|
.action(async () => {
|
|
454
451
|
await (0, clients_1.launchClient)();
|
|
455
452
|
});
|
|
456
453
|
clients
|
|
457
|
-
.command(
|
|
458
|
-
.description(
|
|
454
|
+
.command("update")
|
|
455
|
+
.description("Update the PlayDrop native client")
|
|
459
456
|
.action(async () => {
|
|
460
457
|
await (0, clients_1.updateClient)();
|
|
461
458
|
});
|
|
462
|
-
const agents = program.command(
|
|
463
|
-
agents
|
|
464
|
-
.action(async () => {
|
|
459
|
+
const agents = program.command("agents").description("Manage coding agents and PlayDrop plugins");
|
|
460
|
+
agents.action(async () => {
|
|
465
461
|
await (0, agents_1.showAgentsStatus)();
|
|
466
462
|
});
|
|
467
463
|
agents
|
|
468
|
-
.command(
|
|
469
|
-
.description(
|
|
470
|
-
.option(
|
|
464
|
+
.command("status")
|
|
465
|
+
.description("Show coding agent and plugin status")
|
|
466
|
+
.option("--json", "Output JSON")
|
|
471
467
|
.action(async (opts) => {
|
|
472
468
|
await (0, agents_1.showAgentsStatus)({ json: opts.json });
|
|
473
469
|
});
|
|
474
470
|
agents
|
|
475
|
-
.command(
|
|
476
|
-
.description(
|
|
471
|
+
.command("install-plugin <agent>")
|
|
472
|
+
.description("Install the PlayDrop plugin for codex or claude; show manual Cursor steps")
|
|
477
473
|
.action(async (agent) => {
|
|
478
474
|
await (0, agents_1.installPlugin)(agent);
|
|
479
475
|
});
|
|
480
476
|
agents
|
|
481
|
-
.command(
|
|
482
|
-
.description(
|
|
477
|
+
.command("update-plugin <agent>")
|
|
478
|
+
.description("Update the PlayDrop plugin for codex or claude; show manual Cursor steps")
|
|
483
479
|
.action(async (agent) => {
|
|
484
480
|
await (0, agents_1.updatePlugin)(agent);
|
|
485
481
|
});
|
|
486
|
-
const workspaces = program.command(
|
|
487
|
-
workspaces
|
|
488
|
-
.action(async () => {
|
|
482
|
+
const workspaces = program.command("workspaces").description("Manage local PlayDrop workspaces");
|
|
483
|
+
workspaces.action(async () => {
|
|
489
484
|
await (0, workspaces_1.listWorkspaces)();
|
|
490
485
|
});
|
|
491
486
|
workspaces
|
|
492
|
-
.command(
|
|
493
|
-
.description(
|
|
494
|
-
.option(
|
|
487
|
+
.command("list")
|
|
488
|
+
.description("List cached PlayDrop workspaces")
|
|
489
|
+
.option("--json", "Output JSON")
|
|
495
490
|
.action(async (opts) => {
|
|
496
491
|
await (0, workspaces_1.listWorkspaces)({ json: opts.json });
|
|
497
492
|
});
|
|
498
493
|
workspaces
|
|
499
|
-
.command(
|
|
500
|
-
.description(
|
|
501
|
-
.option(
|
|
494
|
+
.command("init [path]")
|
|
495
|
+
.description("Initialize a PlayDrop workspace")
|
|
496
|
+
.option("--json", "Output JSON")
|
|
502
497
|
.action(async (pathArg, opts) => {
|
|
503
498
|
await (0, workspaces_1.initWorkspace)(pathArg, { json: opts.json });
|
|
504
499
|
});
|
|
505
500
|
workspaces
|
|
506
|
-
.command(
|
|
507
|
-
.description(
|
|
508
|
-
.option(
|
|
501
|
+
.command("inspect [path]")
|
|
502
|
+
.description("Inspect one PlayDrop workspace")
|
|
503
|
+
.option("--json", "Output JSON")
|
|
509
504
|
.action(async (pathArg, opts) => {
|
|
510
505
|
await (0, workspaces_1.inspectWorkspace)(pathArg, { json: opts.json });
|
|
511
506
|
});
|
|
512
507
|
workspaces
|
|
513
|
-
.command(
|
|
514
|
-
.description(
|
|
515
|
-
.option(
|
|
508
|
+
.command("refresh [roots...]")
|
|
509
|
+
.description("Scan explicit roots for PlayDrop workspaces")
|
|
510
|
+
.option("--json", "Output JSON")
|
|
516
511
|
.action(async (roots, opts) => {
|
|
517
512
|
await (0, workspaces_1.refreshWorkspaces)(roots ?? [], { json: opts.json });
|
|
518
513
|
});
|
|
519
|
-
const browseCommand = program.command(
|
|
514
|
+
const browseCommand = program.command("browse").description("Browse public content");
|
|
520
515
|
browseCommand
|
|
521
|
-
.option(
|
|
522
|
-
.option(
|
|
523
|
-
.option(
|
|
524
|
-
.option(
|
|
525
|
-
.option(
|
|
526
|
-
.option(
|
|
527
|
-
.option(
|
|
528
|
-
.option(
|
|
529
|
-
.option(
|
|
530
|
-
.option(
|
|
531
|
-
.option(
|
|
532
|
-
.option(
|
|
533
|
-
.option(
|
|
534
|
-
.option(
|
|
535
|
-
.option(
|
|
536
|
-
.option(
|
|
516
|
+
.option("--kind <kind>", "app, asset, asset-pack, asset-spec, or all")
|
|
517
|
+
.option("--creator <creator>", "all, me, or a creator slug")
|
|
518
|
+
.option("--app-type <type>", "game, demo, tool, or template")
|
|
519
|
+
.option("--auth <value>", "App auth filter: required, optional, or none")
|
|
520
|
+
.option("--surface <value>", "App surface filter: desktop, mobile-portrait, or mobile-landscape")
|
|
521
|
+
.option("--controller <value>", "App controller filter: required, optional, or none")
|
|
522
|
+
.option("--asset-category <category>", "Asset category filter")
|
|
523
|
+
.option("--asset-subcategory <subcategory>", "Asset subcategory filter")
|
|
524
|
+
.option("--asset-spec <ref>", "Asset spec family or version filter for assets")
|
|
525
|
+
.option("--asset-spec-owner <creator>", "Asset spec owner filter for assets")
|
|
526
|
+
.option("--asset-spec-name <name>", "Asset spec name filter for assets")
|
|
527
|
+
.option("--sort <sort>", "Sort app, asset, or asset-spec browse results")
|
|
528
|
+
.option("--limit <number>", "Maximum number of results to return")
|
|
529
|
+
.option("--offset <number>", "Result offset")
|
|
530
|
+
.option("--tag <ref>", "Filter by canonical tag ref", collectRepeatedOption, [])
|
|
531
|
+
.option("--json", "Output JSON")
|
|
537
532
|
.action(async (opts) => {
|
|
538
533
|
await (0, browse_1.browse)(opts);
|
|
539
534
|
});
|
|
540
535
|
browseCommand
|
|
541
|
-
.command(
|
|
542
|
-
.description(
|
|
543
|
-
.option(
|
|
536
|
+
.command("categories")
|
|
537
|
+
.description("Browse asset category definitions")
|
|
538
|
+
.option("--json", "Output JSON")
|
|
544
539
|
.action(async (opts) => {
|
|
545
540
|
await (0, browse_1.browseCategories)(opts);
|
|
546
541
|
});
|
|
547
542
|
program
|
|
548
|
-
.command(
|
|
549
|
-
.description(
|
|
550
|
-
.option(
|
|
551
|
-
.option(
|
|
552
|
-
.option(
|
|
553
|
-
.option(
|
|
554
|
-
.option(
|
|
555
|
-
.option(
|
|
556
|
-
.option(
|
|
557
|
-
.option(
|
|
558
|
-
.option(
|
|
559
|
-
.option(
|
|
560
|
-
.option(
|
|
561
|
-
.option(
|
|
562
|
-
.option(
|
|
563
|
-
.option(
|
|
564
|
-
.option(
|
|
565
|
-
.option(
|
|
566
|
-
.option(
|
|
567
|
-
.option(
|
|
543
|
+
.command("search [query]")
|
|
544
|
+
.description("Search public content")
|
|
545
|
+
.option("--kind <kind>", "app, asset, asset-pack, asset-spec, or all")
|
|
546
|
+
.option("--creator <creator>", "creator username filter")
|
|
547
|
+
.option("--app-type <type>", "game, demo, tool, or template")
|
|
548
|
+
.option("--auth <value>", "App auth filter: required, optional, or none")
|
|
549
|
+
.option("--surface <value>", "App surface filter: desktop, mobile-portrait, or mobile-landscape")
|
|
550
|
+
.option("--controller <value>", "App controller filter: required, optional, or none")
|
|
551
|
+
.option("--asset-category <category>", "Asset category filter")
|
|
552
|
+
.option("--asset-subcategory <subcategory>", "Asset subcategory filter")
|
|
553
|
+
.option("--asset-spec <ref>", "Asset spec family or version filter for assets")
|
|
554
|
+
.option("--asset-spec-owner <creator>", "Asset spec owner filter for assets")
|
|
555
|
+
.option("--asset-spec-name <name>", "Asset spec name filter for assets")
|
|
556
|
+
.option("--sort <sort>", "Sort search results")
|
|
557
|
+
.option("--pack-contains-category <category>", "Asset pack category filter")
|
|
558
|
+
.option("--pack-contains-subcategory <subcategory>", "Asset pack subcategory filter")
|
|
559
|
+
.option("--limit <number>", "Maximum number of results to return")
|
|
560
|
+
.option("--offset <number>", "Result offset")
|
|
561
|
+
.option("--tag <ref>", "Filter by canonical tag ref", collectRepeatedOption, [])
|
|
562
|
+
.option("--json", "Output JSON")
|
|
568
563
|
.action(async (query, opts) => {
|
|
569
564
|
await (0, search_1.search)(query, opts);
|
|
570
565
|
});
|
|
571
|
-
const tags = program.command(
|
|
566
|
+
const tags = program.command("tags").description("Browse and inspect tags");
|
|
572
567
|
tags
|
|
573
|
-
.command(
|
|
574
|
-
.description(
|
|
575
|
-
.option(
|
|
576
|
-
.option(
|
|
577
|
-
.option(
|
|
568
|
+
.command("browse")
|
|
569
|
+
.description("Browse public tags")
|
|
570
|
+
.option("--group <slug>", "Filter to one tag group")
|
|
571
|
+
.option("--kind <kind>", "Filter to one target kind")
|
|
572
|
+
.option("--json", "Output JSON")
|
|
578
573
|
.action(async (opts) => {
|
|
579
574
|
await (0, tags_1.browseTags)(opts);
|
|
580
575
|
});
|
|
581
576
|
program
|
|
582
|
-
.command(
|
|
583
|
-
.description(
|
|
584
|
-
.option(
|
|
577
|
+
.command("detail <ref>")
|
|
578
|
+
.description("Show one app, asset, or asset pack")
|
|
579
|
+
.option("--json", "Output JSON")
|
|
585
580
|
.action(async (ref, opts) => {
|
|
586
581
|
await (0, detail_1.detail)(ref, opts);
|
|
587
582
|
});
|
|
588
583
|
program
|
|
589
|
-
.command(
|
|
590
|
-
.description(
|
|
591
|
-
.option(
|
|
584
|
+
.command("play <ref>")
|
|
585
|
+
.description("Open one published app in your browser with your current session")
|
|
586
|
+
.option("--json", "Output JSON")
|
|
592
587
|
.action(async (ref, opts) => {
|
|
593
588
|
await (0, play_1.play)(ref, opts);
|
|
594
589
|
});
|
|
595
|
-
const comments = program.command(
|
|
590
|
+
const comments = program.command("comments").description("Comments for apps, assets, and asset packs");
|
|
596
591
|
comments
|
|
597
|
-
.command(
|
|
598
|
-
.description(
|
|
599
|
-
.option(
|
|
592
|
+
.command("browse <ref>")
|
|
593
|
+
.description("Browse comments for one item")
|
|
594
|
+
.option("--json", "Output JSON")
|
|
600
595
|
.action(async (ref, opts) => {
|
|
601
596
|
await (0, comments_1.browseComments)(ref, opts);
|
|
602
597
|
});
|
|
603
598
|
comments
|
|
604
|
-
.command(
|
|
605
|
-
.description(
|
|
606
|
-
.requiredOption(
|
|
607
|
-
.option(
|
|
608
|
-
.option(
|
|
599
|
+
.command("add <ref>")
|
|
600
|
+
.description("Add a comment to one item")
|
|
601
|
+
.requiredOption("--body <text>", "Comment text")
|
|
602
|
+
.option("--reply-to <commentId>", "Parent comment id")
|
|
603
|
+
.option("--json", "Output JSON")
|
|
609
604
|
.action(async (ref, opts) => {
|
|
610
605
|
await (0, comments_1.addComment)(ref, opts);
|
|
611
606
|
});
|
|
612
607
|
comments
|
|
613
|
-
.command(
|
|
614
|
-
.description(
|
|
615
|
-
.option(
|
|
608
|
+
.command("delete <commentId>")
|
|
609
|
+
.description("Delete a comment")
|
|
610
|
+
.option("--json", "Output JSON")
|
|
616
611
|
.action(async (commentId, opts) => {
|
|
617
612
|
await (0, comments_1.deleteComment)(commentId, opts);
|
|
618
613
|
});
|
|
619
|
-
const versions = program.command(
|
|
614
|
+
const versions = program.command("versions").description("Version history");
|
|
620
615
|
versions
|
|
621
|
-
.command(
|
|
622
|
-
.description(
|
|
623
|
-
.option(
|
|
624
|
-
.option(
|
|
625
|
-
.option(
|
|
616
|
+
.command("browse <ref>")
|
|
617
|
+
.description("Browse versions or revisions for one item")
|
|
618
|
+
.option("--limit <number>", "Maximum number of results to return")
|
|
619
|
+
.option("--offset <number>", "Result offset")
|
|
620
|
+
.option("--json", "Output JSON")
|
|
626
621
|
.action(async (ref, opts) => {
|
|
627
622
|
await (0, versionsBrowse_1.browseVersions)(ref, opts);
|
|
628
623
|
});
|
|
629
|
-
const tweaks = program.command(
|
|
624
|
+
const tweaks = program.command("tweaks").description("Read and replace version-scoped game tweaks");
|
|
630
625
|
tweaks
|
|
631
|
-
.command(
|
|
632
|
-
.description(
|
|
633
|
-
.argument(
|
|
634
|
-
.option(
|
|
626
|
+
.command("get")
|
|
627
|
+
.description("Read the current tweak state for an exact app version")
|
|
628
|
+
.argument("<ref>", "Exact ref: app:creator/name@x.y.z")
|
|
629
|
+
.option("--json", "Output JSON")
|
|
635
630
|
.action(async (ref, options) => {
|
|
636
631
|
await (0, tweaks_1.getTweaks)(ref, options);
|
|
637
632
|
});
|
|
638
633
|
tweaks
|
|
639
|
-
.command(
|
|
640
|
-
.description(
|
|
641
|
-
.argument(
|
|
642
|
-
.requiredOption(
|
|
643
|
-
.option(
|
|
634
|
+
.command("replace")
|
|
635
|
+
.description("Replace tweaks on the latest private app version")
|
|
636
|
+
.argument("<ref>", "Exact ref: app:creator/name@x.y.z")
|
|
637
|
+
.requiredOption("--file <path>", "JSON object containing the complete tweak values")
|
|
638
|
+
.option("--json", "Output JSON")
|
|
644
639
|
.action(async (ref, options) => {
|
|
645
640
|
await (0, tweaks_1.replaceTweaks)(ref, options.file, options);
|
|
646
641
|
});
|
|
647
|
-
const notes = program.command(
|
|
642
|
+
const notes = program.command("notes").description("Read and clear pending creator playtest notes");
|
|
648
643
|
notes
|
|
649
|
-
.command(
|
|
650
|
-
.description(
|
|
651
|
-
.argument(
|
|
652
|
-
.option(
|
|
653
|
-
.option(
|
|
644
|
+
.command("browse")
|
|
645
|
+
.description("Browse pending playtest notes for an app")
|
|
646
|
+
.argument("<ref>", "Exact ref: app:creator/name@x.y.z")
|
|
647
|
+
.option("--json", "Output JSON")
|
|
648
|
+
.option("--output <directory>", "Materialize attachments and a notes.json manifest")
|
|
654
649
|
.action(async (ref, options) => {
|
|
655
650
|
await (0, notes_1.browseNotes)(ref, options);
|
|
656
651
|
});
|
|
657
652
|
notes
|
|
658
|
-
.command(
|
|
659
|
-
.description(
|
|
660
|
-
.argument(
|
|
661
|
-
.argument(
|
|
662
|
-
.option(
|
|
653
|
+
.command("clear")
|
|
654
|
+
.description("Clear explicit note IDs after incorporating them")
|
|
655
|
+
.argument("<ref>", "Exact ref: app:creator/name@x.y.z")
|
|
656
|
+
.argument("<ids...>", "One or more note IDs")
|
|
657
|
+
.option("--json", "Output JSON")
|
|
663
658
|
.action(async (ref, ids, options) => {
|
|
664
659
|
await (0, notes_1.clearNotes)(ref, ids, options);
|
|
665
660
|
});
|
|
666
|
-
const credits = program.command(
|
|
661
|
+
const credits = program.command("credits").description("Credit balance and history");
|
|
667
662
|
credits
|
|
668
|
-
.command(
|
|
669
|
-
.description(
|
|
670
|
-
.option(
|
|
663
|
+
.command("balance")
|
|
664
|
+
.description("Show your credit balance")
|
|
665
|
+
.option("--json", "Output JSON")
|
|
671
666
|
.action(async (opts) => {
|
|
672
667
|
await (0, credits_1.showCreditBalance)(opts);
|
|
673
668
|
});
|
|
674
669
|
credits
|
|
675
|
-
.command(
|
|
676
|
-
.description(
|
|
677
|
-
.option(
|
|
678
|
-
.option(
|
|
679
|
-
.option(
|
|
670
|
+
.command("transactions")
|
|
671
|
+
.description("Browse your credit transactions")
|
|
672
|
+
.option("--limit <number>", "Maximum number of results to return")
|
|
673
|
+
.option("--offset <number>", "Result offset")
|
|
674
|
+
.option("--json", "Output JSON")
|
|
680
675
|
.action(async (opts) => {
|
|
681
676
|
await (0, credits_1.browseCreditTransactions)(opts);
|
|
682
677
|
});
|
|
683
678
|
credits
|
|
684
|
-
.command(
|
|
685
|
-
.description(
|
|
686
|
-
.option(
|
|
687
|
-
.option(
|
|
688
|
-
.option(
|
|
679
|
+
.command("earnings")
|
|
680
|
+
.description("Show creator ad earnings and boost spend summary")
|
|
681
|
+
.option("--days <number>", "Number of days to include")
|
|
682
|
+
.option("--app-id <number>", "Filter to one app id")
|
|
683
|
+
.option("--json", "Output JSON")
|
|
689
684
|
.action(async (opts) => {
|
|
690
685
|
await (0, credits_1.showCreatorEarnings)(opts);
|
|
691
686
|
});
|
|
692
|
-
const ads = program.command(
|
|
687
|
+
const ads = program.command("ads").description("Creator ad earnings and reporting");
|
|
693
688
|
ads
|
|
694
|
-
.command(
|
|
695
|
-
.description(
|
|
696
|
-
.option(
|
|
697
|
-
.option(
|
|
698
|
-
.option(
|
|
689
|
+
.command("earnings")
|
|
690
|
+
.description("Show ad earnings grouped by app and format")
|
|
691
|
+
.option("--app <ref>", "Filter to one app ref")
|
|
692
|
+
.option("--days <number>", "Number of days to include")
|
|
693
|
+
.option("--json", "Output JSON")
|
|
699
694
|
.action(async (opts) => {
|
|
700
695
|
await (0, ads_1.showAdsEarnings)(opts);
|
|
701
696
|
});
|
|
702
697
|
ads
|
|
703
|
-
.command(
|
|
704
|
-
.description(
|
|
705
|
-
.option(
|
|
706
|
-
.option(
|
|
707
|
-
.option(
|
|
698
|
+
.command("report")
|
|
699
|
+
.description("Show daily ad reporting buckets")
|
|
700
|
+
.option("--app <ref>", "Filter to one app ref")
|
|
701
|
+
.option("--days <number>", "Number of days to include")
|
|
702
|
+
.option("--json", "Output JSON")
|
|
708
703
|
.action(async (opts) => {
|
|
709
704
|
await (0, ads_1.showAdsReport)(opts);
|
|
710
705
|
});
|
|
711
|
-
const boosts = program.command(
|
|
706
|
+
const boosts = program.command("boosts").description("Buy, activate, and inspect game boosts");
|
|
712
707
|
boosts
|
|
713
|
-
.command(
|
|
714
|
-
.description(
|
|
715
|
-
.option(
|
|
708
|
+
.command("balance")
|
|
709
|
+
.description("Show your available boost inventory")
|
|
710
|
+
.option("--json", "Output JSON")
|
|
716
711
|
.action(async (opts) => {
|
|
717
712
|
await (0, boosts_1.showBoostBalance)(opts);
|
|
718
713
|
});
|
|
719
714
|
boosts
|
|
720
|
-
.command(
|
|
721
|
-
.description(
|
|
722
|
-
.option(
|
|
715
|
+
.command("offers")
|
|
716
|
+
.description("List available boost packs")
|
|
717
|
+
.option("--json", "Output JSON")
|
|
723
718
|
.action(async (opts) => {
|
|
724
719
|
await (0, boosts_1.browseBoostOffers)(opts);
|
|
725
720
|
});
|
|
726
721
|
boosts
|
|
727
|
-
.command(
|
|
728
|
-
.description(
|
|
729
|
-
.option(
|
|
730
|
-
.option(
|
|
722
|
+
.command("buy <sku>")
|
|
723
|
+
.description("Buy one boost pack")
|
|
724
|
+
.option("--quantity <number>", "Number of packs to buy")
|
|
725
|
+
.option("--json", "Output JSON")
|
|
731
726
|
.action(async (sku, opts) => {
|
|
732
727
|
await (0, boosts_1.buyBoostPack)(sku, opts);
|
|
733
728
|
});
|
|
734
729
|
boosts
|
|
735
|
-
.command(
|
|
736
|
-
.description(
|
|
737
|
-
.option(
|
|
738
|
-
.option(
|
|
730
|
+
.command("activate <ref>")
|
|
731
|
+
.description("Activate one or more boosts for an app")
|
|
732
|
+
.option("--units <number>", "Number of boosts to consume")
|
|
733
|
+
.option("--json", "Output JSON")
|
|
739
734
|
.action(async (ref, opts) => {
|
|
740
735
|
await (0, boosts_1.activateBoost)(ref, opts);
|
|
741
736
|
});
|
|
742
737
|
boosts
|
|
743
|
-
.command(
|
|
744
|
-
.description(
|
|
745
|
-
.option(
|
|
738
|
+
.command("status <ref>")
|
|
739
|
+
.description("Show the current boost status for an app")
|
|
740
|
+
.option("--json", "Output JSON")
|
|
746
741
|
.action(async (ref, opts) => {
|
|
747
742
|
await (0, boosts_1.showBoostStatus)(ref, opts);
|
|
748
743
|
});
|
|
749
744
|
boosts
|
|
750
|
-
.command(
|
|
751
|
-
.description(
|
|
752
|
-
.option(
|
|
753
|
-
.option(
|
|
745
|
+
.command("history <ref>")
|
|
746
|
+
.description("Show past boost runs for an app")
|
|
747
|
+
.option("--limit <number>", "Maximum number of boost runs to include")
|
|
748
|
+
.option("--json", "Output JSON")
|
|
754
749
|
.action(async (ref, opts) => {
|
|
755
750
|
await (0, boosts_1.showBoostHistory)(ref, opts);
|
|
756
751
|
});
|
|
757
752
|
boosts
|
|
758
|
-
.command(
|
|
759
|
-
.description(
|
|
760
|
-
.option(
|
|
761
|
-
.option(
|
|
753
|
+
.command("report <ref>")
|
|
754
|
+
.description("Show daily boost performance for an app")
|
|
755
|
+
.option("--days <number>", "Number of days to include")
|
|
756
|
+
.option("--json", "Output JSON")
|
|
762
757
|
.action(async (ref, opts) => {
|
|
763
758
|
await (0, boosts_1.showBoostReport)(ref, opts);
|
|
764
759
|
});
|
|
765
|
-
const notifications = program.command(
|
|
760
|
+
const notifications = program.command("notifications").description("Notification inbox");
|
|
766
761
|
notifications
|
|
767
|
-
.command(
|
|
768
|
-
.description(
|
|
769
|
-
.option(
|
|
770
|
-
.option(
|
|
771
|
-
.option(
|
|
772
|
-
.option(
|
|
762
|
+
.command("browse")
|
|
763
|
+
.description("Browse notifications")
|
|
764
|
+
.option("--status <status>", "unread, read, or all")
|
|
765
|
+
.option("--limit <number>", "Maximum number of results to return")
|
|
766
|
+
.option("--offset <number>", "Result offset")
|
|
767
|
+
.option("--json", "Output JSON")
|
|
773
768
|
.action(async (opts) => {
|
|
774
769
|
await (0, notifications_1.browseNotifications)(opts);
|
|
775
770
|
});
|
|
776
771
|
notifications
|
|
777
|
-
.command(
|
|
778
|
-
.description(
|
|
779
|
-
.option(
|
|
772
|
+
.command("read <id>")
|
|
773
|
+
.description("Mark one notification as read")
|
|
774
|
+
.option("--json", "Output JSON")
|
|
780
775
|
.action(async (id, opts) => {
|
|
781
776
|
await (0, notifications_1.readNotification)(id, opts);
|
|
782
777
|
});
|
|
783
778
|
notifications
|
|
784
|
-
.command(
|
|
785
|
-
.description(
|
|
786
|
-
.option(
|
|
779
|
+
.command("read-all")
|
|
780
|
+
.description("Mark all notifications as read")
|
|
781
|
+
.option("--json", "Output JSON")
|
|
787
782
|
.action(async (opts) => {
|
|
788
783
|
await (0, notifications_1.readAllNotifications)(opts);
|
|
789
784
|
});
|
|
790
|
-
const creations = program.command(
|
|
785
|
+
const creations = program.command("creations").description("Manage your creations");
|
|
791
786
|
creations
|
|
792
|
-
.command(
|
|
793
|
-
.description(
|
|
794
|
-
.option(
|
|
795
|
-
.option(
|
|
796
|
-
.option(
|
|
797
|
-
.option(
|
|
798
|
-
.option(
|
|
787
|
+
.command("browse")
|
|
788
|
+
.description("Browse your apps, assets, and asset packs")
|
|
789
|
+
.option("--kind <kind>", "app, asset, asset-pack, or all")
|
|
790
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
791
|
+
.option("--limit <number>", "Maximum number of results to return")
|
|
792
|
+
.option("--offset <number>", "Result offset")
|
|
793
|
+
.option("--json", "Output JSON")
|
|
799
794
|
.action(async (opts) => {
|
|
800
795
|
await (0, creations_1.browseCreations)(opts);
|
|
801
796
|
});
|
|
802
|
-
const creationApps = creations.command(
|
|
797
|
+
const creationApps = creations.command("apps").description("Manage app creations");
|
|
803
798
|
creationApps
|
|
804
|
-
.command(
|
|
805
|
-
.description(
|
|
806
|
-
.option(
|
|
807
|
-
.option(
|
|
808
|
-
.option(
|
|
809
|
-
.option(
|
|
799
|
+
.command("update <name>")
|
|
800
|
+
.description("Update app metadata")
|
|
801
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
802
|
+
.option("--display-name <text>", "Display name")
|
|
803
|
+
.option("--type <type>", "game, demo, tool, or template")
|
|
804
|
+
.option("--json", "Output JSON")
|
|
810
805
|
.action(async (name, opts) => {
|
|
811
806
|
await (0, creations_1.updateCreationApp)(name, opts);
|
|
812
807
|
});
|
|
813
808
|
creationApps
|
|
814
|
-
.command(
|
|
815
|
-
.description(
|
|
816
|
-
.option(
|
|
817
|
-
.option(
|
|
809
|
+
.command("delete <name>")
|
|
810
|
+
.description("Delete an app")
|
|
811
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
812
|
+
.option("--json", "Output JSON")
|
|
818
813
|
.action(async (name, opts) => {
|
|
819
814
|
await (0, creations_1.deleteCreationApp)(name, opts);
|
|
820
815
|
});
|
|
821
|
-
const creationAppVersions = creationApps.command(
|
|
816
|
+
const creationAppVersions = creationApps.command("versions").description("Manage app versions");
|
|
822
817
|
creationAppVersions
|
|
823
|
-
.command(
|
|
824
|
-
.description(
|
|
825
|
-
.option(
|
|
826
|
-
.option(
|
|
818
|
+
.command("set-current <name> <version>")
|
|
819
|
+
.description("Set the current app version")
|
|
820
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
821
|
+
.option("--json", "Output JSON")
|
|
827
822
|
.action(async (name, version, opts) => {
|
|
828
823
|
await (0, creations_1.setCurrentCreationAppVersion)(name, version, opts);
|
|
829
824
|
});
|
|
830
825
|
creationAppVersions
|
|
831
|
-
.command(
|
|
832
|
-
.description(
|
|
833
|
-
.option(
|
|
834
|
-
.option(
|
|
826
|
+
.command("publish <name> <version>")
|
|
827
|
+
.description("Publish an app version")
|
|
828
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
829
|
+
.option("--json", "Output JSON")
|
|
835
830
|
.action(async (name, version, opts) => {
|
|
836
831
|
await (0, creations_1.publishCreationAppVersion)(name, version, opts);
|
|
837
832
|
});
|
|
838
833
|
creationAppVersions
|
|
839
|
-
.command(
|
|
840
|
-
.description(
|
|
841
|
-
.option(
|
|
842
|
-
.option(
|
|
834
|
+
.command("unpublish <name> <version>")
|
|
835
|
+
.description("Unpublish an app version")
|
|
836
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
837
|
+
.option("--json", "Output JSON")
|
|
843
838
|
.action(async (name, version, opts) => {
|
|
844
839
|
await (0, creations_1.unpublishCreationAppVersion)(name, version, opts);
|
|
845
840
|
});
|
|
846
841
|
creationAppVersions
|
|
847
|
-
.command(
|
|
848
|
-
.description(
|
|
849
|
-
.option(
|
|
850
|
-
.option(
|
|
842
|
+
.command("delete <name> <version>")
|
|
843
|
+
.description("Delete an app version")
|
|
844
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
845
|
+
.option("--json", "Output JSON")
|
|
851
846
|
.action(async (name, version, opts) => {
|
|
852
847
|
await (0, creations_1.deleteCreationAppVersion)(name, version, opts);
|
|
853
848
|
});
|
|
854
|
-
const creationAssets = creations.command(
|
|
849
|
+
const creationAssets = creations.command("assets").description("Manage asset creations");
|
|
855
850
|
creationAssets
|
|
856
|
-
.command(
|
|
857
|
-
.description(
|
|
858
|
-
.option(
|
|
859
|
-
.option(
|
|
860
|
-
.option(
|
|
861
|
-
.option(
|
|
862
|
-
.option(
|
|
863
|
-
.option(
|
|
851
|
+
.command("update <name>")
|
|
852
|
+
.description("Update asset metadata")
|
|
853
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
854
|
+
.option("--name <slug>", "New asset slug")
|
|
855
|
+
.option("--display-name <text>", "Display name")
|
|
856
|
+
.option("--description <text>", "Description")
|
|
857
|
+
.option("--clear-description", "Clear description")
|
|
858
|
+
.option("--json", "Output JSON")
|
|
864
859
|
.action(async (name, opts) => {
|
|
865
860
|
await (0, creations_1.updateCreationAsset)(name, opts);
|
|
866
861
|
});
|
|
867
862
|
creationAssets
|
|
868
|
-
.command(
|
|
869
|
-
.description(
|
|
870
|
-
.option(
|
|
871
|
-
.option(
|
|
863
|
+
.command("delete <name>")
|
|
864
|
+
.description("Delete an asset")
|
|
865
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
866
|
+
.option("--json", "Output JSON")
|
|
872
867
|
.action(async (name, opts) => {
|
|
873
868
|
await (0, creations_1.deleteCreationAsset)(name, opts);
|
|
874
869
|
});
|
|
875
|
-
const creationAssetVersions = creationAssets.command(
|
|
870
|
+
const creationAssetVersions = creationAssets.command("versions").description("Manage asset revisions");
|
|
876
871
|
creationAssetVersions
|
|
877
|
-
.command(
|
|
878
|
-
.description(
|
|
879
|
-
.option(
|
|
880
|
-
.option(
|
|
872
|
+
.command("set-current <name> <revision>")
|
|
873
|
+
.description("Set the current asset revision")
|
|
874
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
875
|
+
.option("--json", "Output JSON")
|
|
881
876
|
.action(async (name, revision, opts) => {
|
|
882
877
|
await (0, creations_1.setCurrentCreationAssetVersion)(name, revision, opts);
|
|
883
878
|
});
|
|
884
879
|
creationAssetVersions
|
|
885
|
-
.command(
|
|
886
|
-
.description(
|
|
887
|
-
.option(
|
|
888
|
-
.option(
|
|
880
|
+
.command("publish <name> <revision>")
|
|
881
|
+
.description("Publish an asset revision")
|
|
882
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
883
|
+
.option("--json", "Output JSON")
|
|
889
884
|
.action(async (name, revision, opts) => {
|
|
890
885
|
await (0, creations_1.publishCreationAssetVersion)(name, revision, opts);
|
|
891
886
|
});
|
|
892
887
|
creationAssetVersions
|
|
893
|
-
.command(
|
|
894
|
-
.description(
|
|
895
|
-
.option(
|
|
896
|
-
.option(
|
|
888
|
+
.command("unpublish <name> <revision>")
|
|
889
|
+
.description("Unpublish an asset revision")
|
|
890
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
891
|
+
.option("--json", "Output JSON")
|
|
897
892
|
.action(async (name, revision, opts) => {
|
|
898
893
|
await (0, creations_1.unpublishCreationAssetVersion)(name, revision, opts);
|
|
899
894
|
});
|
|
900
895
|
creationAssetVersions
|
|
901
|
-
.command(
|
|
902
|
-
.description(
|
|
903
|
-
.option(
|
|
904
|
-
.option(
|
|
896
|
+
.command("delete <name> <revision>")
|
|
897
|
+
.description("Delete an asset revision")
|
|
898
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
899
|
+
.option("--json", "Output JSON")
|
|
905
900
|
.action(async (name, revision, opts) => {
|
|
906
901
|
await (0, creations_1.deleteCreationAssetVersion)(name, revision, opts);
|
|
907
902
|
});
|
|
908
|
-
const creationAssetPacks = creations.command(
|
|
903
|
+
const creationAssetPacks = creations.command("asset-packs").description("Manage asset pack creations");
|
|
909
904
|
creationAssetPacks
|
|
910
|
-
.command(
|
|
911
|
-
.description(
|
|
912
|
-
.option(
|
|
913
|
-
.option(
|
|
914
|
-
.option(
|
|
915
|
-
.option(
|
|
916
|
-
.option(
|
|
917
|
-
.option(
|
|
918
|
-
.option(
|
|
919
|
-
.option(
|
|
905
|
+
.command("update <name>")
|
|
906
|
+
.description("Update asset pack metadata")
|
|
907
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
908
|
+
.option("--name <slug>", "New asset pack slug")
|
|
909
|
+
.option("--display-name <text>", "Display name")
|
|
910
|
+
.option("--description <text>", "Description")
|
|
911
|
+
.option("--clear-description", "Clear description")
|
|
912
|
+
.option("--preview-app-version-id <id>", "Preview app version id")
|
|
913
|
+
.option("--clear-preview-app-version-id", "Clear preview app version id")
|
|
914
|
+
.option("--json", "Output JSON")
|
|
920
915
|
.action(async (name, opts) => {
|
|
921
916
|
await (0, creations_1.updateCreationAssetPack)(name, opts);
|
|
922
917
|
});
|
|
923
918
|
creationAssetPacks
|
|
924
|
-
.command(
|
|
925
|
-
.description(
|
|
926
|
-
.option(
|
|
927
|
-
.option(
|
|
919
|
+
.command("delete <name>")
|
|
920
|
+
.description("Delete an asset pack")
|
|
921
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
922
|
+
.option("--json", "Output JSON")
|
|
928
923
|
.action(async (name, opts) => {
|
|
929
924
|
await (0, creations_1.deleteCreationAssetPack)(name, opts);
|
|
930
925
|
});
|
|
931
|
-
const creationAssetPackVersions = creationAssetPacks.command(
|
|
926
|
+
const creationAssetPackVersions = creationAssetPacks.command("versions").description("Manage asset pack versions");
|
|
932
927
|
creationAssetPackVersions
|
|
933
|
-
.command(
|
|
934
|
-
.description(
|
|
935
|
-
.option(
|
|
936
|
-
.option(
|
|
928
|
+
.command("set-current <name> <version>")
|
|
929
|
+
.description("Set the current asset pack version")
|
|
930
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
931
|
+
.option("--json", "Output JSON")
|
|
937
932
|
.action(async (name, version, opts) => {
|
|
938
933
|
await (0, creations_1.setCurrentCreationAssetPackVersion)(name, version, opts);
|
|
939
934
|
});
|
|
940
935
|
creationAssetPackVersions
|
|
941
|
-
.command(
|
|
942
|
-
.description(
|
|
943
|
-
.option(
|
|
944
|
-
.option(
|
|
936
|
+
.command("publish <name> <version>")
|
|
937
|
+
.description("Publish an asset pack version")
|
|
938
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
939
|
+
.option("--json", "Output JSON")
|
|
945
940
|
.action(async (name, version, opts) => {
|
|
946
941
|
await (0, creations_1.publishCreationAssetPackVersion)(name, version, opts);
|
|
947
942
|
});
|
|
948
943
|
creationAssetPackVersions
|
|
949
|
-
.command(
|
|
950
|
-
.description(
|
|
951
|
-
.option(
|
|
952
|
-
.option(
|
|
944
|
+
.command("unpublish <name> <version>")
|
|
945
|
+
.description("Unpublish an asset pack version")
|
|
946
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
947
|
+
.option("--json", "Output JSON")
|
|
953
948
|
.action(async (name, version, opts) => {
|
|
954
949
|
await (0, creations_1.unpublishCreationAssetPackVersion)(name, version, opts);
|
|
955
950
|
});
|
|
956
951
|
creationAssetPackVersions
|
|
957
|
-
.command(
|
|
958
|
-
.description(
|
|
959
|
-
.option(
|
|
960
|
-
.option(
|
|
952
|
+
.command("delete <name> <version>")
|
|
953
|
+
.description("Delete an asset pack version")
|
|
954
|
+
.option("--creator <creator>", "me or a creator slug")
|
|
955
|
+
.option("--json", "Output JSON")
|
|
961
956
|
.action(async (name, version, opts) => {
|
|
962
957
|
await (0, creations_1.deleteCreationAssetPackVersion)(name, version, opts);
|
|
963
958
|
});
|
|
964
|
-
const ai = program.command(
|
|
965
|
-
ai
|
|
966
|
-
.
|
|
967
|
-
.
|
|
968
|
-
.option(
|
|
969
|
-
.option(
|
|
970
|
-
.option(
|
|
971
|
-
.option(
|
|
972
|
-
.option(
|
|
973
|
-
.option(
|
|
974
|
-
.option(
|
|
975
|
-
.option(
|
|
976
|
-
.option(
|
|
977
|
-
.option(
|
|
978
|
-
.option(
|
|
979
|
-
.option(
|
|
980
|
-
.option(
|
|
981
|
-
.option(
|
|
982
|
-
.option(
|
|
983
|
-
.option(
|
|
984
|
-
.option(
|
|
985
|
-
.option(
|
|
986
|
-
.option(
|
|
987
|
-
.option(
|
|
988
|
-
.option(
|
|
989
|
-
.option(
|
|
990
|
-
.option(
|
|
991
|
-
.option(
|
|
992
|
-
.option(
|
|
993
|
-
.option('--json', 'Output JSON')
|
|
959
|
+
const ai = program.command("ai").description("AI asset creation");
|
|
960
|
+
ai.command("create <type> <prompt>")
|
|
961
|
+
.description("Create a new AI-generated asset")
|
|
962
|
+
.option("--asset-name <slug>", "Generated asset slug")
|
|
963
|
+
.option("--asset-display-name <text>", "Generated asset display name")
|
|
964
|
+
.option("--asset-description <text>", "Generated asset description")
|
|
965
|
+
.option("--subcategory <slug>", "Generated asset subcategory")
|
|
966
|
+
.option("--visibility <visibility>", "private or public")
|
|
967
|
+
.option("--attach-app-version-id <id>", "Attach generated asset to an app version")
|
|
968
|
+
.option("--image1 <pathOrUrl>", "Reference image one")
|
|
969
|
+
.option("--image2 <pathOrUrl>", "Reference image two")
|
|
970
|
+
.option("--duration <value>", "Duration value")
|
|
971
|
+
.option("--instrumental", "Force instrumental music generation")
|
|
972
|
+
.option("--loop", "Create a looping SFX")
|
|
973
|
+
.option("--cover-prompt <text>", "Cover prompt for music generation")
|
|
974
|
+
.option("--voice <alias>", "Speech voice alias")
|
|
975
|
+
.option("--provider-voice-id <id>", "Custom ElevenLabs speech voice id")
|
|
976
|
+
.option("--ratio <ratio>", "Aspect ratio")
|
|
977
|
+
.option("--size <size>", "Image size (image only)")
|
|
978
|
+
.option("--resolution <resolution>", "Resolution")
|
|
979
|
+
.option("--source-mode <mode>", "3D source mode")
|
|
980
|
+
.option("--topology <mode>", "3D topology mode")
|
|
981
|
+
.option("--polycount <count>", "3D target polycount")
|
|
982
|
+
.option("--remesh", "Enable remeshing")
|
|
983
|
+
.option("--texture", "Enable texturing")
|
|
984
|
+
.option("--timeout <seconds>", "Wait timeout in seconds")
|
|
985
|
+
.option("--poll <milliseconds>", "Polling interval in milliseconds")
|
|
986
|
+
.option("--output <path>", "Write generated image bytes to a local file (image only)")
|
|
987
|
+
.option("--json", "Output JSON")
|
|
994
988
|
.action(async (type, prompt, opts) => {
|
|
995
989
|
await (0, generation_1.generate)(type, prompt, {
|
|
996
990
|
subcategory: opts.subcategory,
|
|
@@ -1021,84 +1015,83 @@ ai
|
|
|
1021
1015
|
json: opts.json,
|
|
1022
1016
|
});
|
|
1023
1017
|
});
|
|
1024
|
-
const aiJobs = ai.command(
|
|
1018
|
+
const aiJobs = ai.command("jobs").description("Browse AI generation jobs");
|
|
1025
1019
|
aiJobs
|
|
1026
|
-
.command(
|
|
1027
|
-
.description(
|
|
1028
|
-
.option(
|
|
1029
|
-
.option(
|
|
1030
|
-
.option(
|
|
1031
|
-
.option(
|
|
1020
|
+
.command("browse")
|
|
1021
|
+
.description("Browse AI jobs")
|
|
1022
|
+
.option("--type <type>", "image, music, sfx, speech, video, model_3d, or all")
|
|
1023
|
+
.option("--limit <number>", "Maximum number of results to return")
|
|
1024
|
+
.option("--offset <number>", "Result offset")
|
|
1025
|
+
.option("--json", "Output JSON")
|
|
1032
1026
|
.action(async (opts) => {
|
|
1033
1027
|
await (0, generation_1.browseGenerationJobs)(opts);
|
|
1034
1028
|
});
|
|
1035
|
-
ai
|
|
1036
|
-
.
|
|
1037
|
-
.
|
|
1038
|
-
.option(
|
|
1039
|
-
.option(
|
|
1040
|
-
.option(
|
|
1041
|
-
.option('--format <format>', 'text or json')
|
|
1029
|
+
ai.command("generations")
|
|
1030
|
+
.description("Browse AI generation history")
|
|
1031
|
+
.option("--type <type>", "text, json, image, music, sfx, speech, video, model_3d, or all")
|
|
1032
|
+
.option("--limit <number>", "Maximum number of results to return")
|
|
1033
|
+
.option("--offset <number>", "Result offset")
|
|
1034
|
+
.option("--format <format>", "text or json")
|
|
1042
1035
|
.action(async (opts) => {
|
|
1043
1036
|
await (0, generation_1.generations)(opts);
|
|
1044
1037
|
});
|
|
1045
1038
|
aiJobs
|
|
1046
|
-
.command(
|
|
1047
|
-
.description(
|
|
1048
|
-
.option(
|
|
1039
|
+
.command("detail <id>")
|
|
1040
|
+
.description("Show one AI job")
|
|
1041
|
+
.option("--json", "Output JSON")
|
|
1049
1042
|
.action(async (id, opts) => {
|
|
1050
1043
|
await (0, generation_1.showGenerationJob)(id, opts);
|
|
1051
1044
|
});
|
|
1052
|
-
const project = program.command(
|
|
1053
|
-
const internalDevRouter = project.command(
|
|
1045
|
+
const project = program.command("project").description("Local workspace tooling");
|
|
1046
|
+
const internalDevRouter = project.command("_dev-router").description("Internal shared dev router");
|
|
1054
1047
|
internalDevRouter
|
|
1055
|
-
.command(
|
|
1056
|
-
.description(
|
|
1048
|
+
.command("serve")
|
|
1049
|
+
.description("Run the internal shared dev router")
|
|
1057
1050
|
.action(async () => {
|
|
1058
1051
|
await (0, devServer_1.runDevRouterServer)();
|
|
1059
1052
|
});
|
|
1060
1053
|
project
|
|
1061
|
-
.command(
|
|
1062
|
-
.description(
|
|
1054
|
+
.command("init [path]")
|
|
1055
|
+
.description("Initialize a Playdrop workspace")
|
|
1063
1056
|
.action(async (pathArg) => {
|
|
1064
1057
|
console.error('"playdrop project init" is now "playdrop workspaces init"; running the workspace command for compatibility.');
|
|
1065
1058
|
await (0, workspaces_1.initWorkspace)(pathArg);
|
|
1066
1059
|
});
|
|
1067
|
-
const projectCreate = project.command(
|
|
1060
|
+
const projectCreate = project.command("create").description("Create project resources");
|
|
1068
1061
|
projectCreate
|
|
1069
|
-
.command(
|
|
1070
|
-
.description(
|
|
1071
|
-
.option(
|
|
1072
|
-
.option(
|
|
1062
|
+
.command("app <name>")
|
|
1063
|
+
.description("Create a new app from a template or exact remix version")
|
|
1064
|
+
.option("--template <ref>", "Template ref")
|
|
1065
|
+
.option("--remix <ref>", "Canonical app version ref")
|
|
1073
1066
|
.action(async (name, opts) => {
|
|
1074
1067
|
await (0, create_1.create)(name, opts);
|
|
1075
1068
|
});
|
|
1076
1069
|
projectCreate
|
|
1077
|
-
.command(
|
|
1078
|
-
.description(
|
|
1070
|
+
.command("asset-spec <name>")
|
|
1071
|
+
.description("Create a new custom asset spec scaffold")
|
|
1079
1072
|
.action(async (name) => {
|
|
1080
1073
|
await (0, create_1.createAssetSpecProject)(name);
|
|
1081
1074
|
});
|
|
1082
1075
|
projectCreate
|
|
1083
|
-
.command(
|
|
1084
|
-
.description(
|
|
1085
|
-
.requiredOption(
|
|
1076
|
+
.command("asset <name>")
|
|
1077
|
+
.description("Create a new asset remix from an exact asset version")
|
|
1078
|
+
.requiredOption("--remix <ref>", "Canonical asset version ref")
|
|
1086
1079
|
.action(async (name, opts) => {
|
|
1087
|
-
await (0, createRemixContent_1.createRemixContent)(
|
|
1080
|
+
await (0, createRemixContent_1.createRemixContent)("asset", name, opts.remix);
|
|
1088
1081
|
});
|
|
1089
1082
|
projectCreate
|
|
1090
|
-
.command(
|
|
1091
|
-
.description(
|
|
1092
|
-
.requiredOption(
|
|
1083
|
+
.command("pack <name>")
|
|
1084
|
+
.description("Create a new asset pack remix from an exact pack version")
|
|
1085
|
+
.requiredOption("--remix <ref>", "Canonical pack version ref")
|
|
1093
1086
|
.action(async (name, opts) => {
|
|
1094
|
-
await (0, createRemixContent_1.createRemixContent)(
|
|
1087
|
+
await (0, createRemixContent_1.createRemixContent)("pack", name, opts.remix);
|
|
1095
1088
|
});
|
|
1096
1089
|
project
|
|
1097
|
-
.command(
|
|
1098
|
-
.description(
|
|
1099
|
-
.option(
|
|
1100
|
-
.option(
|
|
1101
|
-
.option(
|
|
1090
|
+
.command("dev [target]")
|
|
1091
|
+
.description("Run an app locally")
|
|
1092
|
+
.option("--app <name>", "App name when the target is a workspace")
|
|
1093
|
+
.option("--dev-auth <mode>", "prompt, anonymous, viewer, or player")
|
|
1094
|
+
.option("--player <slot>", "1, 2, 3, or 4 when --dev-auth player is selected")
|
|
1102
1095
|
.action(async (target, opts = {}) => {
|
|
1103
1096
|
await (0, dev_1.dev)(target, opts.app, {
|
|
1104
1097
|
devAuth: opts.devAuth,
|
|
@@ -1106,11 +1099,11 @@ project
|
|
|
1106
1099
|
});
|
|
1107
1100
|
});
|
|
1108
1101
|
project
|
|
1109
|
-
.command(
|
|
1110
|
-
.description(
|
|
1111
|
-
.option(
|
|
1112
|
-
.option(
|
|
1113
|
-
.option(
|
|
1102
|
+
.command("dev-browser [target]")
|
|
1103
|
+
.description("Open the hosted /dev route in an isolated Chromium window")
|
|
1104
|
+
.option("--app <name>", "App name when the target is a workspace")
|
|
1105
|
+
.option("--dev-auth <mode>", "prompt, anonymous, viewer, or player")
|
|
1106
|
+
.option("--player <slot>", "1, 2, 3, or 4 when --dev-auth player is selected")
|
|
1114
1107
|
.action(async (target, opts = {}) => {
|
|
1115
1108
|
await (0, devBrowser_1.devBrowser)(target, {
|
|
1116
1109
|
app: opts.app,
|
|
@@ -1119,12 +1112,12 @@ project
|
|
|
1119
1112
|
});
|
|
1120
1113
|
});
|
|
1121
1114
|
project
|
|
1122
|
-
.command(
|
|
1123
|
-
.description(
|
|
1124
|
-
.option(
|
|
1125
|
-
.option(
|
|
1126
|
-
.option(
|
|
1127
|
-
.option(
|
|
1115
|
+
.command("check [target]")
|
|
1116
|
+
.description("Run the deterministic hosted game load-check in installed Chrome")
|
|
1117
|
+
.option("--app <name>", "App name when the target is a workspace")
|
|
1118
|
+
.option("--timeout <seconds>", "Load-check timeout in seconds")
|
|
1119
|
+
.option("--screenshot <path>", "Screenshot output path")
|
|
1120
|
+
.option("--tape <surface>", "Run matched idle and catalogue playtest-tape captures on a declared surface")
|
|
1128
1121
|
.action(async (target, opts = {}) => {
|
|
1129
1122
|
await (0, check_1.check)(target, {
|
|
1130
1123
|
app: opts.app,
|
|
@@ -1133,18 +1126,18 @@ project
|
|
|
1133
1126
|
tape: opts.tape,
|
|
1134
1127
|
});
|
|
1135
1128
|
});
|
|
1136
|
-
const projectCapture = project.command(
|
|
1129
|
+
const projectCapture = project.command("capture").description("Record game media with the native macOS recorder");
|
|
1137
1130
|
projectCapture
|
|
1138
|
-
.argument(
|
|
1139
|
-
.option(
|
|
1140
|
-
.option(
|
|
1141
|
-
.option(
|
|
1142
|
-
.option(
|
|
1143
|
-
.option(
|
|
1144
|
-
.option(
|
|
1145
|
-
.option(
|
|
1146
|
-
.option(
|
|
1147
|
-
.option(
|
|
1131
|
+
.argument("[target]")
|
|
1132
|
+
.option("--app <name>", "App name when the target is a workspace")
|
|
1133
|
+
.option("--duration <seconds>", "Recording duration in seconds")
|
|
1134
|
+
.option("--width <pixels>", "Final gameplay width in pixels")
|
|
1135
|
+
.option("--height <pixels>", "Final gameplay height in pixels")
|
|
1136
|
+
.option("--fps <number>", "Final output frame rate")
|
|
1137
|
+
.option("--poster-at <seconds>", "Poster frame offset in seconds")
|
|
1138
|
+
.option("--audio", "Capture gameplay audio")
|
|
1139
|
+
.option("--output-dir <path>", "Output directory for capture artifacts, relative to the selected project")
|
|
1140
|
+
.option("--keep-raw", "Keep the raw intermediate recording")
|
|
1148
1141
|
.action(async (target, opts) => {
|
|
1149
1142
|
await (0, captureListing_1.captureListing)(target, {
|
|
1150
1143
|
app: opts.app,
|
|
@@ -1158,18 +1151,18 @@ projectCapture
|
|
|
1158
1151
|
keepRaw: opts.keepRaw,
|
|
1159
1152
|
});
|
|
1160
1153
|
});
|
|
1161
|
-
const projectMarketing = project.command(
|
|
1154
|
+
const projectMarketing = project.command("marketing").description("Prepare local marketing captures and assets");
|
|
1162
1155
|
projectMarketing
|
|
1163
|
-
.command(
|
|
1164
|
-
.description(
|
|
1165
|
-
.option(
|
|
1166
|
-
.option(
|
|
1167
|
-
.option(
|
|
1168
|
-
.option(
|
|
1169
|
-
.option(
|
|
1170
|
-
.option(
|
|
1171
|
-
.option(
|
|
1172
|
-
.option(
|
|
1156
|
+
.command("doctor [target]")
|
|
1157
|
+
.description("Check local marketing capture prerequisites")
|
|
1158
|
+
.option("--app <name>", "App name when the target is a workspace")
|
|
1159
|
+
.option("--surfaces <list>", "desktop, mobile-landscape, mobile-portrait")
|
|
1160
|
+
.option("--duration <seconds>", "Capture duration in seconds")
|
|
1161
|
+
.option("--fps <number>", "Capture frame rate")
|
|
1162
|
+
.option("--audio-policy <policy>", "music-and-sfx, sfx-only, or silent")
|
|
1163
|
+
.option("--seed <seed>", "Preview seed")
|
|
1164
|
+
.option("--output-dir <path>", "Output directory, defaults to assets/marketing")
|
|
1165
|
+
.option("--screen-device <device>", "macOS avfoundation screen device index")
|
|
1173
1166
|
.action(async (target, opts) => {
|
|
1174
1167
|
await (0, marketing_1.marketingDoctor)(target, {
|
|
1175
1168
|
app: opts.app,
|
|
@@ -1183,17 +1176,17 @@ projectMarketing
|
|
|
1183
1176
|
});
|
|
1184
1177
|
});
|
|
1185
1178
|
projectMarketing
|
|
1186
|
-
.command(
|
|
1187
|
-
.description(
|
|
1188
|
-
.option(
|
|
1189
|
-
.option(
|
|
1190
|
-
.option(
|
|
1191
|
-
.option(
|
|
1192
|
-
.option(
|
|
1193
|
-
.option(
|
|
1194
|
-
.option(
|
|
1195
|
-
.option(
|
|
1196
|
-
.option(
|
|
1179
|
+
.command("capture [target]")
|
|
1180
|
+
.description("Capture local marketing videos from the app preview")
|
|
1181
|
+
.option("--app <name>", "App name when the target is a workspace")
|
|
1182
|
+
.option("--surfaces <list>", "desktop, mobile-landscape, mobile-portrait")
|
|
1183
|
+
.option("--duration <seconds>", "Capture duration in seconds")
|
|
1184
|
+
.option("--fps <number>", "Capture frame rate")
|
|
1185
|
+
.option("--audio-policy <policy>", "music-and-sfx, sfx-only, or silent")
|
|
1186
|
+
.option("--seed <seed>", "Preview seed")
|
|
1187
|
+
.option("--output-dir <path>", "Output directory, defaults to assets/marketing")
|
|
1188
|
+
.option("--screen-device <device>", "macOS avfoundation screen device index")
|
|
1189
|
+
.option("--keep-raw", "Reserved for future raw capture preservation")
|
|
1197
1190
|
.action(async (target, opts) => {
|
|
1198
1191
|
await (0, marketing_1.marketingCapture)(target, {
|
|
1199
1192
|
app: opts.app,
|
|
@@ -1208,117 +1201,117 @@ projectMarketing
|
|
|
1208
1201
|
});
|
|
1209
1202
|
});
|
|
1210
1203
|
project
|
|
1211
|
-
.command(
|
|
1212
|
-
.description(
|
|
1213
|
-
.option(
|
|
1204
|
+
.command("validate [target]")
|
|
1205
|
+
.description("Validate catalogue content")
|
|
1206
|
+
.option("--env <env>", "Resolve this command against one logged-in environment")
|
|
1214
1207
|
.action(async (target, opts) => {
|
|
1215
|
-
await (0, validate_1.validate)(target ??
|
|
1208
|
+
await (0, validate_1.validate)(target ?? ".", { env: opts.env });
|
|
1216
1209
|
});
|
|
1217
1210
|
project
|
|
1218
|
-
.command(
|
|
1219
|
-
.description(
|
|
1211
|
+
.command("build [target]")
|
|
1212
|
+
.description("Build local content")
|
|
1220
1213
|
.action(async (target) => {
|
|
1221
|
-
await (0, build_1.build)(target ??
|
|
1214
|
+
await (0, build_1.build)(target ?? ".");
|
|
1222
1215
|
});
|
|
1223
1216
|
project
|
|
1224
|
-
.command(
|
|
1225
|
-
.description(
|
|
1217
|
+
.command("format [target]")
|
|
1218
|
+
.description("Run local formatting")
|
|
1226
1219
|
.action(async (target) => {
|
|
1227
|
-
await (0, format_1.format)(target ??
|
|
1220
|
+
await (0, format_1.format)(target ?? ".");
|
|
1228
1221
|
});
|
|
1229
1222
|
project
|
|
1230
|
-
.command(
|
|
1231
|
-
.description(
|
|
1232
|
-
.option(
|
|
1233
|
-
.option(
|
|
1234
|
-
.option(
|
|
1235
|
-
.addOption(new commander_1.Option(
|
|
1223
|
+
.command("publish [target]")
|
|
1224
|
+
.description("Publish local content to Playdrop")
|
|
1225
|
+
.option("--env <env>", "Resolve this command against one logged-in environment")
|
|
1226
|
+
.option("--clear-tags", "Confirm clearing existing live tags when this publish removes them")
|
|
1227
|
+
.option("--json", "Output JSON for direct index.html publishing")
|
|
1228
|
+
.addOption(new commander_1.Option("--skip-review", "Mark uploaded app versions as NOT_REQUIRED review. Admin-only.").hideHelp())
|
|
1236
1229
|
.action(async (target, opts) => {
|
|
1237
|
-
await (0, upload_1.upload)(target ??
|
|
1230
|
+
await (0, upload_1.upload)(target ?? ".", {
|
|
1238
1231
|
env: opts.env,
|
|
1239
1232
|
skipReview: opts.skipReview,
|
|
1240
1233
|
clearTags: opts.clearTags,
|
|
1241
1234
|
json: opts.json,
|
|
1242
1235
|
});
|
|
1243
1236
|
});
|
|
1244
|
-
const documentation = program.command(
|
|
1237
|
+
const documentation = program.command("documentation").description("Public Playdrop documentation");
|
|
1245
1238
|
documentation
|
|
1246
|
-
.command(
|
|
1247
|
-
.description(
|
|
1248
|
-
.option(
|
|
1239
|
+
.command("browse")
|
|
1240
|
+
.description("Browse documentation entries")
|
|
1241
|
+
.option("--json", "Output JSON")
|
|
1249
1242
|
.action(async (opts) => {
|
|
1250
1243
|
await (0, documentation_1.browseDocumentation)(opts);
|
|
1251
1244
|
});
|
|
1252
1245
|
documentation
|
|
1253
|
-
.command(
|
|
1254
|
-
.description(
|
|
1246
|
+
.command("read <path>")
|
|
1247
|
+
.description("Read one documentation entry")
|
|
1255
1248
|
.action(async (pathArg) => {
|
|
1256
1249
|
await (0, documentation_1.readDocumentation)(pathArg);
|
|
1257
1250
|
});
|
|
1258
|
-
const feedback = program.command(
|
|
1251
|
+
const feedback = program.command("feedback").description("Send or review feedback");
|
|
1259
1252
|
feedback
|
|
1260
|
-
.command(
|
|
1261
|
-
.description(
|
|
1262
|
-
.requiredOption(
|
|
1263
|
-
.option(
|
|
1264
|
-
.option(
|
|
1265
|
-
.option(
|
|
1266
|
-
.option(
|
|
1253
|
+
.command("send")
|
|
1254
|
+
.description("Send feedback to the Playdrop team")
|
|
1255
|
+
.requiredOption("--title <title>", "Feedback title")
|
|
1256
|
+
.option("--comment <text>", "Feedback text")
|
|
1257
|
+
.option("--category <category>", "Feedback category")
|
|
1258
|
+
.option("--file <path>", "Load feedback text from a file")
|
|
1259
|
+
.option("--json", "Output JSON")
|
|
1267
1260
|
.action(async (opts) => {
|
|
1268
1261
|
await (0, feedback_1.sendFeedback)(opts);
|
|
1269
1262
|
});
|
|
1270
1263
|
feedback
|
|
1271
|
-
.command(
|
|
1272
|
-
.description(
|
|
1273
|
-
.option(
|
|
1274
|
-
.option(
|
|
1275
|
-
.option(
|
|
1276
|
-
.option(
|
|
1277
|
-
.option(
|
|
1278
|
-
.option(
|
|
1279
|
-
.option(
|
|
1264
|
+
.command("browse")
|
|
1265
|
+
.description("Browse feedback entries")
|
|
1266
|
+
.option("--admin", "Browse the full admin feedback inbox")
|
|
1267
|
+
.option("--limit <number>", "Maximum number of results to return")
|
|
1268
|
+
.option("--offset <number>", "Result offset")
|
|
1269
|
+
.option("--client <client>", "Client filter")
|
|
1270
|
+
.option("--since-hours <hours>", "Only include feedback created within this window")
|
|
1271
|
+
.option("--user-id <id>", "User id filter")
|
|
1272
|
+
.option("--json", "Output JSON")
|
|
1280
1273
|
.action(async (opts) => {
|
|
1281
1274
|
await (0, feedback_1.browseFeedback)(opts);
|
|
1282
1275
|
});
|
|
1283
1276
|
feedback
|
|
1284
|
-
.command(
|
|
1285
|
-
.description(
|
|
1286
|
-
.option(
|
|
1277
|
+
.command("delete <id>", { hidden: true })
|
|
1278
|
+
.description("Delete one feedback entry")
|
|
1279
|
+
.option("--json", "Output JSON")
|
|
1287
1280
|
.action(async (id, opts) => {
|
|
1288
1281
|
await (0, feedback_1.deleteFeedbackEntry)(id, opts);
|
|
1289
1282
|
});
|
|
1290
1283
|
program
|
|
1291
|
-
.command(
|
|
1292
|
-
.description(
|
|
1284
|
+
.command("getting-started")
|
|
1285
|
+
.description("Show the recommended first steps")
|
|
1293
1286
|
.action(async () => {
|
|
1294
|
-
await (0, publicPages_1.showPublicPage)(
|
|
1287
|
+
await (0, publicPages_1.showPublicPage)("getting-started", "app-pages/getting-started.md");
|
|
1295
1288
|
});
|
|
1296
1289
|
program
|
|
1297
|
-
.command(
|
|
1298
|
-
.description(
|
|
1290
|
+
.command("faq")
|
|
1291
|
+
.description("Show creator-focused platform questions and answers")
|
|
1299
1292
|
.action(async () => {
|
|
1300
|
-
await (0, publicPages_1.showPublicPage)(
|
|
1293
|
+
await (0, publicPages_1.showPublicPage)("faq", "app-pages/faq.md");
|
|
1301
1294
|
});
|
|
1302
1295
|
program
|
|
1303
|
-
.command(
|
|
1304
|
-
.description(
|
|
1296
|
+
.command("changelog")
|
|
1297
|
+
.description("Read the latest public Playdrop changelog")
|
|
1305
1298
|
.action(async () => {
|
|
1306
1299
|
await (0, changelog_1.showChangelog)();
|
|
1307
1300
|
});
|
|
1308
1301
|
program
|
|
1309
|
-
.command(
|
|
1310
|
-
.description(
|
|
1302
|
+
.command("start")
|
|
1303
|
+
.description("Alias of getting-started")
|
|
1311
1304
|
.action(async () => {
|
|
1312
|
-
await (0, publicPages_1.showPublicPage)(
|
|
1305
|
+
await (0, publicPages_1.showPublicPage)("getting-started", "app-pages/getting-started.md");
|
|
1313
1306
|
});
|
|
1314
1307
|
program
|
|
1315
|
-
.command(
|
|
1316
|
-
.description(
|
|
1317
|
-
.option(
|
|
1318
|
-
.option(
|
|
1319
|
-
.option(
|
|
1320
|
-
.option(
|
|
1321
|
-
.option(
|
|
1308
|
+
.command("update")
|
|
1309
|
+
.description("Update the Playdrop CLI")
|
|
1310
|
+
.option("--dry-run", "Print the update command without running it")
|
|
1311
|
+
.option("--target-version <version>", "Explicit PlayDrop CLI version to install")
|
|
1312
|
+
.option("--worker", "Request a managed worker update intent instead of updating this process")
|
|
1313
|
+
.option("--worker-key <workerKey>", "Worker key for --worker")
|
|
1314
|
+
.option("--env <env>", "Resolve this command against one logged-in environment for --worker")
|
|
1322
1315
|
.action(async (opts) => {
|
|
1323
1316
|
await (0, upgrade_1.upgrade)({
|
|
1324
1317
|
dryRun: Boolean(opts.dryRun),
|
|
@@ -1329,8 +1322,8 @@ program
|
|
|
1329
1322
|
});
|
|
1330
1323
|
});
|
|
1331
1324
|
program
|
|
1332
|
-
.command(
|
|
1333
|
-
.description(
|
|
1325
|
+
.command("version")
|
|
1326
|
+
.description("Print the Playdrop CLI version")
|
|
1334
1327
|
.action(() => {
|
|
1335
1328
|
console.log((0, clientInfo_1.getCliVersionLabel)());
|
|
1336
1329
|
});
|