@playdrop/playdrop-cli 0.12.26 → 0.12.27
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/config/client-meta.json +1 -1
- package/dist/apps/build.js +43 -0
- package/dist/apps/index.d.ts +2 -1
- package/dist/apps/index.js +1 -0
- package/dist/apps/upload.d.ts +2 -1
- package/dist/apps/upload.js +1 -0
- package/dist/commands/upload.d.ts +5 -1
- package/dist/commands/upload.js +60 -3
- package/dist/listingPreflight.d.ts +1 -0
- package/dist/listingPreflight.js +17 -0
- package/node_modules/@playdrop/config/client-meta.json +1 -1
- package/node_modules/@playdrop/types/dist/agent-task-playtest.d.ts +23 -0
- package/node_modules/@playdrop/types/dist/agent-task-playtest.d.ts.map +1 -0
- package/node_modules/@playdrop/types/dist/agent-task-playtest.js +84 -0
- package/node_modules/@playdrop/types/dist/index.d.ts +1 -0
- package/node_modules/@playdrop/types/dist/index.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/index.js +3 -1
- package/node_modules/@playdrop/types/dist/version.d.ts +4 -2
- package/node_modules/@playdrop/types/dist/version.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/version.js +13 -3
- package/package.json +1 -1
package/config/client-meta.json
CHANGED
package/dist/apps/build.js
CHANGED
|
@@ -226,8 +226,41 @@ function appendIncludedProjectFile(rootDir, includePath, excludedRelativeFiles,
|
|
|
226
226
|
results.push(record);
|
|
227
227
|
fileByRelativePath.set(record.relativePath, record);
|
|
228
228
|
}
|
|
229
|
+
function appendIncludedProjectDirectory(rootDir, includeDirectory, excludedRelativeFiles, fileByRelativePath, results, enforceReservedBundleNames) {
|
|
230
|
+
const normalizedDirectory = (0, node_path_1.normalize)(includeDirectory).split(node_path_1.sep).join('/').replace(/\/+$/, '');
|
|
231
|
+
if (!normalizedDirectory || normalizedDirectory === '.' || normalizedDirectory.startsWith('..')) {
|
|
232
|
+
throw new Error(`[apps][build] Invalid include directory path "${includeDirectory}".`);
|
|
233
|
+
}
|
|
234
|
+
const absoluteDirectory = (0, node_path_1.resolve)(rootDir, normalizedDirectory);
|
|
235
|
+
if (!isPathWithinRoot(rootDir, absoluteDirectory)) {
|
|
236
|
+
throw new Error(`[apps][build] Included directory "${includeDirectory}" escapes the project root.`);
|
|
237
|
+
}
|
|
238
|
+
if (!(0, node_fs_1.existsSync)(absoluteDirectory) || !(0, node_fs_1.statSync)(absoluteDirectory).isDirectory()) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
const stack = [absoluteDirectory];
|
|
242
|
+
while (stack.length > 0) {
|
|
243
|
+
const current = stack.pop();
|
|
244
|
+
for (const entry of readProjectDirEntries(current)) {
|
|
245
|
+
const absolutePath = (0, node_path_1.join)(current, entry.name);
|
|
246
|
+
const relativePath = normalizeRelativePath(rootDir, absolutePath);
|
|
247
|
+
if (isExcludedRelativePath(entry.isDirectory() ? `${relativePath}/` : relativePath, excludedRelativeFiles)) {
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
if (entry.isDirectory()) {
|
|
251
|
+
stack.push(absolutePath);
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
if (!entry.isFile()) {
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
appendIncludedProjectFile(rootDir, relativePath, excludedRelativeFiles, fileByRelativePath, results, enforceReservedBundleNames);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
229
261
|
function collectProjectFiles(rootDir, rules, options) {
|
|
230
262
|
const includeRelativeFiles = options?.includeRelativeFiles ?? [];
|
|
263
|
+
const includeRelativeDirectories = options?.includeRelativeDirectories ?? [];
|
|
231
264
|
const excludeRelativeFiles = new Set(Array.from(options?.excludeRelativeFiles ?? [])
|
|
232
265
|
.map((filePath) => (0, node_path_1.normalize)(filePath).split(node_path_1.sep).join('/'))
|
|
233
266
|
.filter((filePath) => filePath.length > 0 && filePath !== '.'));
|
|
@@ -285,6 +318,9 @@ function collectProjectFiles(rootDir, rules, options) {
|
|
|
285
318
|
for (const includePath of includeRelativeFiles) {
|
|
286
319
|
appendIncludedProjectFile(rootDir, includePath, excludeRelativeFiles, fileByRelativePath, results, enforceReservedBundleNames);
|
|
287
320
|
}
|
|
321
|
+
for (const includeDirectory of includeRelativeDirectories) {
|
|
322
|
+
appendIncludedProjectDirectory(rootDir, includeDirectory, excludeRelativeFiles, fileByRelativePath, results, enforceReservedBundleNames);
|
|
323
|
+
}
|
|
288
324
|
results.sort((a, b) => a.relativePath.localeCompare(b.relativePath));
|
|
289
325
|
return results;
|
|
290
326
|
}
|
|
@@ -496,6 +532,11 @@ function createZipArchive(entries) {
|
|
|
496
532
|
function createSourceArchive(task) {
|
|
497
533
|
const rules = buildIgnoreRules(task.projectDir);
|
|
498
534
|
const includeFiles = ['README.md', 'AGENTS.md'];
|
|
535
|
+
for (const heroPath of [task.listing?.heroPortraitPath, task.listing?.heroLandscapePath]) {
|
|
536
|
+
if (heroPath) {
|
|
537
|
+
includeFiles.push(normalizeRelativePath(task.projectDir, heroPath));
|
|
538
|
+
}
|
|
539
|
+
}
|
|
499
540
|
const excludedFiles = task.sourceArchiveExcludeRelativeFiles ?? [];
|
|
500
541
|
if (task.catalogueAbsolutePath && (0, node_fs_1.existsSync)(task.catalogueAbsolutePath)) {
|
|
501
542
|
const relativeCataloguePath = normalizeRelativePath(task.projectDir, task.catalogueAbsolutePath) || 'catalogue.json';
|
|
@@ -509,6 +550,7 @@ function createSourceArchive(task) {
|
|
|
509
550
|
}
|
|
510
551
|
const entries = collectProjectFiles(task.projectDir, rules, {
|
|
511
552
|
includeRelativeFiles: includeFiles,
|
|
553
|
+
includeRelativeDirectories: ['assets/art-direction'],
|
|
512
554
|
excludeRelativeFiles: excludedFiles,
|
|
513
555
|
});
|
|
514
556
|
const buffer = createZipArchive(entries);
|
|
@@ -519,6 +561,7 @@ function createSourceArchive(task) {
|
|
|
519
561
|
}
|
|
520
562
|
const entries = collectProjectFiles(task.projectDir, rules, {
|
|
521
563
|
includeRelativeFiles: includeFiles,
|
|
564
|
+
includeRelativeDirectories: ['assets/art-direction'],
|
|
522
565
|
excludeRelativeFiles: excludedFiles,
|
|
523
566
|
});
|
|
524
567
|
const buffer = createZipArchive(entries);
|
package/dist/apps/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ApiClient } from '@playdrop/api-client';
|
|
2
|
-
import type { UserResponse } from '@playdrop/types';
|
|
2
|
+
import type { AgentTaskPlaytestProof, UserResponse } from '@playdrop/types';
|
|
3
3
|
import type { AppTask } from '../catalogue';
|
|
4
4
|
import type { TaskCaptureSession } from '../appUrls';
|
|
5
5
|
import { collectAppValidationWarnings, validateAppTask, runFormatScript } from './validate';
|
|
@@ -23,6 +23,7 @@ export type AppPipelineOptions = {
|
|
|
23
23
|
loadCheckTimeoutMs?: number;
|
|
24
24
|
ensureRegisteredAppShell?: boolean;
|
|
25
25
|
agentTaskId?: number;
|
|
26
|
+
playtestProof?: AgentTaskPlaytestProof;
|
|
26
27
|
mediaCaptureRequired?: boolean;
|
|
27
28
|
captureSession?: TaskCaptureSession | null;
|
|
28
29
|
};
|
package/dist/apps/index.js
CHANGED
|
@@ -64,6 +64,7 @@ async function runAppPipeline(client, task, options) {
|
|
|
64
64
|
runStagedUploadLoadCheck: options?.runStagedUploadLoadCheck,
|
|
65
65
|
loadCheckTimeoutMs: options?.loadCheckTimeoutMs,
|
|
66
66
|
agentTaskId: options?.agentTaskId,
|
|
67
|
+
playtestProof: options?.playtestProof,
|
|
67
68
|
mediaCaptureRequired: options?.mediaCaptureRequired,
|
|
68
69
|
captureSession: options?.captureSession,
|
|
69
70
|
};
|
package/dist/apps/upload.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ApiClient } from '@playdrop/api-client';
|
|
2
|
-
import type { UserResponse } from '@playdrop/types';
|
|
2
|
+
import type { AgentTaskPlaytestProof, UserResponse } from '@playdrop/types';
|
|
3
3
|
import type { AppTask } from '../catalogue';
|
|
4
4
|
import type { TaskCaptureSession } from '../appUrls';
|
|
5
5
|
import type { AppBuildArtifacts } from './build';
|
|
@@ -21,6 +21,7 @@ export type AppUploadOptions = {
|
|
|
21
21
|
runStagedUploadLoadCheck?: boolean;
|
|
22
22
|
loadCheckTimeoutMs?: number;
|
|
23
23
|
agentTaskId?: number;
|
|
24
|
+
playtestProof?: AgentTaskPlaytestProof;
|
|
24
25
|
mediaCaptureRequired?: boolean;
|
|
25
26
|
captureSession?: TaskCaptureSession | null;
|
|
26
27
|
};
|
package/dist/apps/upload.js
CHANGED
|
@@ -232,6 +232,7 @@ async function uploadAppVersion(client, task, artifacts, options) {
|
|
|
232
232
|
const initializeRequest = {
|
|
233
233
|
version: task.version,
|
|
234
234
|
agentTaskId: options?.agentTaskId,
|
|
235
|
+
playtestProof: options?.playtestProof,
|
|
235
236
|
releaseNotes: task.releaseNotes,
|
|
236
237
|
visibility: task.versionVisibility,
|
|
237
238
|
setAsCurrent: task.versionVisibility === 'PRIVATE' ? false : undefined,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ApiClient } from '@playdrop/api-client';
|
|
2
|
-
import type { AgentExecutionTarget, UserResponse } from '@playdrop/types';
|
|
2
|
+
import type { AgentExecutionTarget, AgentTaskPlaytestProof, UserResponse } from '@playdrop/types';
|
|
3
|
+
import { type AppTask } from '../catalogue';
|
|
3
4
|
export type UploadCommandOptions = {
|
|
4
5
|
env?: string;
|
|
5
6
|
skipReview?: boolean;
|
|
@@ -33,4 +34,7 @@ export type WorkerAppPublishResult = {
|
|
|
33
34
|
warnings: string[];
|
|
34
35
|
};
|
|
35
36
|
export type WorkerPlaydropAssetRequirement = 'PACK' | 'ASSET_OR_PACK';
|
|
37
|
+
export declare function assertTaskPlaytestEvidenceManifest(task: AppTask, options?: {
|
|
38
|
+
requireOutcomeProof?: boolean;
|
|
39
|
+
}): AgentTaskPlaytestProof | null;
|
|
36
40
|
export declare function publishWorkerAppProject(input: WorkerAppPublishInput): Promise<WorkerAppPublishResult>;
|
package/dist/commands/upload.js
CHANGED
|
@@ -34,7 +34,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.upload = upload;
|
|
37
|
+
exports.assertTaskPlaytestEvidenceManifest = assertTaskPlaytestEvidenceManifest;
|
|
37
38
|
exports.publishWorkerAppProject = publishWorkerAppProject;
|
|
39
|
+
const node_crypto_1 = require("node:crypto");
|
|
38
40
|
const node_fs_1 = require("node:fs");
|
|
39
41
|
const node_path_1 = require("node:path");
|
|
40
42
|
const semver_1 = require("semver");
|
|
@@ -2039,7 +2041,7 @@ function readPlaytestEvidenceManifest(task) {
|
|
|
2039
2041
|
throw new Error(formatPlaytestEvidenceManifestError(`playtest-evidence.json must be valid JSON. ${reason}`));
|
|
2040
2042
|
}
|
|
2041
2043
|
}
|
|
2042
|
-
const PLAYTEST_EVIDENCE_MANIFEST_HELP = 'Expected shape: {"version":1,"entries":[{"environment":"local","url":"http://localhost:8080/...","surface":"desktop","checkedAt":"2026-07-05T00:00:00.000Z","captures":["
|
|
2044
|
+
const PLAYTEST_EVIDENCE_MANIFEST_HELP = 'Expected shape: {"version":1,"entries":[{"environment":"local","url":"http://localhost:8080/...","surface":"desktop","checkedAt":"2026-07-05T00:00:00.000Z","captures":["evidence/input.png","evidence/win.png","evidence/loss.png"],"actions":["press ArrowRight","complete the final round","allow health to reach zero"],"statesObserved":["player moved right","victory overlay","defeat overlay"],"consoleErrors":[]}],"proof":{"primaryInput":{"action":"press ArrowRight","observed":"player moved right","capture":"evidence/input.png"},"win":{"action":"complete the final round","observed":"victory overlay appeared","capture":"evidence/win.png"},"loss":{"action":"allow health to reach zero","observed":"defeat overlay appeared","capture":"evidence/loss.png"}}}. NEW_GAME proof requires three distinct captures from a current non-final entry. The uploader appends hashes and the final published-route entry automatically.';
|
|
2043
2045
|
function formatMissingPlaytestEvidenceManifestError(message) {
|
|
2044
2046
|
return `agent_task_playtest_manifest_missing: ${message} ${PLAYTEST_EVIDENCE_MANIFEST_HELP}`;
|
|
2045
2047
|
}
|
|
@@ -2071,8 +2073,51 @@ function assertPlaytestCapturePaths(task, captures) {
|
|
|
2071
2073
|
}
|
|
2072
2074
|
}
|
|
2073
2075
|
}
|
|
2074
|
-
function
|
|
2076
|
+
function assertExactObjectKeys(record, allowedKeys, field) {
|
|
2077
|
+
const allowed = new Set(allowedKeys);
|
|
2078
|
+
const unexpected = Object.keys(record).find((key) => !allowed.has(key));
|
|
2079
|
+
if (unexpected) {
|
|
2080
|
+
throw new Error(formatPlaytestEvidenceManifestError(`${field} contains unsupported key "${unexpected}".`));
|
|
2081
|
+
}
|
|
2082
|
+
}
|
|
2083
|
+
function buildRequiredTaskPlaytestProof(task, manifest, currentSelfPlaytestCaptures) {
|
|
2084
|
+
if (!manifest.proof || typeof manifest.proof !== 'object' || Array.isArray(manifest.proof)) {
|
|
2085
|
+
throw new Error(formatPlaytestEvidenceManifestError('playtest-evidence.json proof must demonstrate primaryInput, win, and loss for NEW_GAME tasks.'));
|
|
2086
|
+
}
|
|
2087
|
+
const rawProof = manifest.proof;
|
|
2088
|
+
assertExactObjectKeys(rawProof, ['primaryInput', 'win', 'loss'], 'proof');
|
|
2089
|
+
const proof = { version: 1 };
|
|
2090
|
+
for (const momentName of ['primaryInput', 'win', 'loss']) {
|
|
2091
|
+
const rawMoment = rawProof[momentName];
|
|
2092
|
+
if (!rawMoment || typeof rawMoment !== 'object' || Array.isArray(rawMoment)) {
|
|
2093
|
+
throw new Error(formatPlaytestEvidenceManifestError(`proof.${momentName} must include action, observed, and capture.`));
|
|
2094
|
+
}
|
|
2095
|
+
const moment = rawMoment;
|
|
2096
|
+
assertExactObjectKeys(moment, ['action', 'observed', 'capture'], `proof.${momentName}`);
|
|
2097
|
+
const action = typeof moment.action === 'string' ? moment.action.trim() : '';
|
|
2098
|
+
const observed = typeof moment.observed === 'string' ? moment.observed.trim() : '';
|
|
2099
|
+
const capture = typeof moment.capture === 'string' ? moment.capture.trim() : '';
|
|
2100
|
+
if (!action || !observed || !capture) {
|
|
2101
|
+
throw new Error(formatPlaytestEvidenceManifestError(`proof.${momentName} must include non-empty action, observed, and capture strings.`));
|
|
2102
|
+
}
|
|
2103
|
+
if (!currentSelfPlaytestCaptures.has(capture)) {
|
|
2104
|
+
throw new Error(formatPlaytestEvidenceManifestError(`proof.${momentName}.capture must be listed by a current non-final playtest entry.`));
|
|
2105
|
+
}
|
|
2106
|
+
const capturePath = (0, node_path_1.resolve)(task.projectDir, capture);
|
|
2107
|
+
const captureSha256 = (0, node_crypto_1.createHash)('sha256').update((0, node_fs_1.readFileSync)(capturePath)).digest('hex');
|
|
2108
|
+
proof[momentName] = { action, observed, capture, captureSha256 };
|
|
2109
|
+
}
|
|
2110
|
+
const parsed = (0, types_1.normalizeAgentTaskPlaytestProof)(proof);
|
|
2111
|
+
if (!parsed.ok) {
|
|
2112
|
+
throw new Error(formatPlaytestEvidenceManifestError(parsed.error));
|
|
2113
|
+
}
|
|
2114
|
+
return parsed.value;
|
|
2115
|
+
}
|
|
2116
|
+
function assertTaskPlaytestEvidenceManifest(task, options = {}) {
|
|
2075
2117
|
const manifest = readPlaytestEvidenceManifest(task);
|
|
2118
|
+
if (manifest.version !== 1) {
|
|
2119
|
+
throw new Error(formatPlaytestEvidenceManifestError('playtest-evidence.json version must be 1.'));
|
|
2120
|
+
}
|
|
2076
2121
|
const entries = Array.isArray(manifest.entries) ? manifest.entries : [];
|
|
2077
2122
|
if (entries.length === 0) {
|
|
2078
2123
|
throw new Error(formatPlaytestEvidenceManifestError('playtest-evidence.json entries must include a non-final self-playtest before upload.'));
|
|
@@ -2080,6 +2125,7 @@ function assertTaskPlaytestEvidenceManifest(task) {
|
|
|
2080
2125
|
const sourceLastModifiedAt = readRuntimeSourceLastModifiedAt(task.projectDir);
|
|
2081
2126
|
const latestSourceMs = sourceLastModifiedAt ? Date.parse(sourceLastModifiedAt) : null;
|
|
2082
2127
|
let hasCurrentSelfPlaytest = false;
|
|
2128
|
+
const currentSelfPlaytestCaptures = new Set();
|
|
2083
2129
|
entries.forEach((entry, index) => {
|
|
2084
2130
|
if (!entry || typeof entry !== 'object' || Array.isArray(entry)) {
|
|
2085
2131
|
throw new Error(formatPlaytestEvidenceManifestError(`entries[${index}] must be an object.`));
|
|
@@ -2104,11 +2150,15 @@ function assertTaskPlaytestEvidenceManifest(task) {
|
|
|
2104
2150
|
assertPlaytestCapturePaths(task, captures);
|
|
2105
2151
|
if (!isFinalGateEntry && (latestSourceMs === null || checkedAtMs >= latestSourceMs)) {
|
|
2106
2152
|
hasCurrentSelfPlaytest = true;
|
|
2153
|
+
captures.forEach((capture) => currentSelfPlaytestCaptures.add(capture));
|
|
2107
2154
|
}
|
|
2108
2155
|
});
|
|
2109
2156
|
if (!hasCurrentSelfPlaytest) {
|
|
2110
2157
|
throw new Error(formatPlaytestEvidenceManifestError(`playtest-evidence.json must include a non-final self-playtest checkedAt after the last source change${sourceLastModifiedAt ? ` (${sourceLastModifiedAt})` : ''}.`));
|
|
2111
2158
|
}
|
|
2159
|
+
return options.requireOutcomeProof
|
|
2160
|
+
? buildRequiredTaskPlaytestProof(task, manifest, currentSelfPlaytestCaptures)
|
|
2161
|
+
: null;
|
|
2112
2162
|
}
|
|
2113
2163
|
function readRuntimeSourceLastModifiedAt(rootDir) {
|
|
2114
2164
|
const root = (0, node_path_1.resolve)(rootDir);
|
|
@@ -2185,6 +2235,9 @@ async function publishWorkerAppProject(input) {
|
|
|
2185
2235
|
if (input.kind === 'NEW_GAME' || input.kind === 'REMIX_GAME') {
|
|
2186
2236
|
(0, listingPreflight_1.assertAgentGameHeroListingPreflight)(task);
|
|
2187
2237
|
}
|
|
2238
|
+
if (input.kind === 'NEW_GAME') {
|
|
2239
|
+
(0, listingPreflight_1.assertAgentNewGameArtDirectionPreflight)(task);
|
|
2240
|
+
}
|
|
2188
2241
|
if (!appTaskSatisfiesPlaydropAssetRequirement(task, input.playdropAssetRequirement)) {
|
|
2189
2242
|
throw new Error('agent_task_playdrop_asset_dependency_missing: the creator asked for PlayDrop assets, but catalogue.json does not declare a matching uses.assets, uses.packs, or ownedAssets dependency.');
|
|
2190
2243
|
}
|
|
@@ -2231,9 +2284,12 @@ async function publishWorkerAppProject(input) {
|
|
|
2231
2284
|
taskId: input.taskId,
|
|
2232
2285
|
taskToken,
|
|
2233
2286
|
};
|
|
2287
|
+
let playtestProof = null;
|
|
2234
2288
|
if (input.kind === 'NEW_GAME' || input.kind === 'REMIX_GAME') {
|
|
2235
2289
|
(0, listingPreflight_1.assertAgentGameScreenshotListingPreflight)(task);
|
|
2236
|
-
assertTaskPlaytestEvidenceManifest(task
|
|
2290
|
+
playtestProof = assertTaskPlaytestEvidenceManifest(task, {
|
|
2291
|
+
requireOutcomeProof: input.kind === 'NEW_GAME',
|
|
2292
|
+
});
|
|
2237
2293
|
}
|
|
2238
2294
|
const { upload: uploadResult, warnings } = await (0, apps_1.runAppPipeline)(input.client, task, {
|
|
2239
2295
|
creatorUsername,
|
|
@@ -2245,6 +2301,7 @@ async function publishWorkerAppProject(input) {
|
|
|
2245
2301
|
runStagedUploadLoadCheck: true,
|
|
2246
2302
|
ensureRegisteredAppShell: true,
|
|
2247
2303
|
agentTaskId: input.taskId,
|
|
2304
|
+
playtestProof: playtestProof ?? undefined,
|
|
2248
2305
|
mediaCaptureRequired: input.executionTarget === 'FIRST_PARTY',
|
|
2249
2306
|
captureSession,
|
|
2250
2307
|
});
|
|
@@ -9,6 +9,7 @@ export declare function readMediaCaptureProof(input: {
|
|
|
9
9
|
preparedSessionFiles: ListingMediaFile[];
|
|
10
10
|
}): RecordAppUploadMediaCaptureRequest;
|
|
11
11
|
export declare function assertAgentGameHeroListingPreflight(task: AppTask): void;
|
|
12
|
+
export declare function assertAgentNewGameArtDirectionPreflight(task: AppTask): void;
|
|
12
13
|
export declare function assertAgentGameScreenshotListingPreflight(task: AppTask): void;
|
|
13
14
|
export declare function assertAgentGameListingPreflight(task: AppTask, options: {
|
|
14
15
|
requireCaptureReport: boolean;
|
package/dist/listingPreflight.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.readMediaCaptureProof = readMediaCaptureProof;
|
|
4
4
|
exports.assertAgentGameHeroListingPreflight = assertAgentGameHeroListingPreflight;
|
|
5
|
+
exports.assertAgentNewGameArtDirectionPreflight = assertAgentNewGameArtDirectionPreflight;
|
|
5
6
|
exports.assertAgentGameScreenshotListingPreflight = assertAgentGameScreenshotListingPreflight;
|
|
6
7
|
exports.assertAgentGameListingPreflight = assertAgentGameListingPreflight;
|
|
7
8
|
exports.assertProjectListingPreflight = assertProjectListingPreflight;
|
|
@@ -89,6 +90,16 @@ function assertHeroListingArt(task) {
|
|
|
89
90
|
throw new Error(`agent_task_listing_hero_art_invalid: listing.heroLandscape must be a landscape PNG at least ${MIN_HERO_LANDSCAPE_WIDTH}x${MIN_HERO_LANDSCAPE_HEIGHT}.`);
|
|
90
91
|
}
|
|
91
92
|
}
|
|
93
|
+
function assertArtDirectionBoard(task) {
|
|
94
|
+
const boardPath = (0, node_path_1.join)(task.projectDir, 'assets', 'art-direction', 'board.png');
|
|
95
|
+
if (!(0, node_fs_1.existsSync)(boardPath) || !(0, node_fs_1.statSync)(boardPath).isFile()) {
|
|
96
|
+
throw new Error('agent_task_art_direction_board_missing: new game tasks must include assets/art-direction/board.png.');
|
|
97
|
+
}
|
|
98
|
+
const board = readPngDimensions(boardPath);
|
|
99
|
+
if (board.width <= board.height) {
|
|
100
|
+
throw new Error('agent_task_art_direction_board_invalid: assets/art-direction/board.png must be a landscape PNG.');
|
|
101
|
+
}
|
|
102
|
+
}
|
|
92
103
|
function assertScreenshotPath(task, filePath, field) {
|
|
93
104
|
const relativePath = (0, node_path_1.relative)((0, node_path_1.resolve)(task.projectDir), (0, node_path_1.resolve)(filePath)).replace(/\\/g, '/');
|
|
94
105
|
const requiredPrefix = field === 'listing.screenshotsPortrait'
|
|
@@ -237,6 +248,9 @@ function readWorkerListingContext(projectDir) {
|
|
|
237
248
|
function assertAgentGameHeroListingPreflight(task) {
|
|
238
249
|
assertHeroListingArt(task);
|
|
239
250
|
}
|
|
251
|
+
function assertAgentNewGameArtDirectionPreflight(task) {
|
|
252
|
+
assertArtDirectionBoard(task);
|
|
253
|
+
}
|
|
240
254
|
function assertAgentGameScreenshotListingPreflight(task) {
|
|
241
255
|
assertListingScreenshots(task);
|
|
242
256
|
}
|
|
@@ -251,6 +265,9 @@ function assertProjectListingPreflight(task) {
|
|
|
251
265
|
const context = readWorkerListingContext(task.projectDir);
|
|
252
266
|
if (context) {
|
|
253
267
|
assertAgentGameListingPreflight(task, { requireCaptureReport: context.target === 'FIRST_PARTY' });
|
|
268
|
+
if (context.kind === 'NEW_GAME') {
|
|
269
|
+
assertAgentNewGameArtDirectionPreflight(task);
|
|
270
|
+
}
|
|
254
271
|
return;
|
|
255
272
|
}
|
|
256
273
|
if (task.listing?.captureReportPath) {
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const AGENT_TASK_PLAYTEST_PROOF_MOMENT_VALUES: readonly ["primaryInput", "win", "loss"];
|
|
2
|
+
export type AgentTaskPlaytestProofMomentName = (typeof AGENT_TASK_PLAYTEST_PROOF_MOMENT_VALUES)[number];
|
|
3
|
+
export type AgentTaskPlaytestProofMoment = {
|
|
4
|
+
action: string;
|
|
5
|
+
observed: string;
|
|
6
|
+
capture: string;
|
|
7
|
+
captureSha256: string;
|
|
8
|
+
};
|
|
9
|
+
export type AgentTaskPlaytestProof = {
|
|
10
|
+
version: 1;
|
|
11
|
+
primaryInput: AgentTaskPlaytestProofMoment;
|
|
12
|
+
win: AgentTaskPlaytestProofMoment;
|
|
13
|
+
loss: AgentTaskPlaytestProofMoment;
|
|
14
|
+
};
|
|
15
|
+
export type NormalizeAgentTaskPlaytestProofResult = {
|
|
16
|
+
ok: true;
|
|
17
|
+
value: AgentTaskPlaytestProof;
|
|
18
|
+
} | {
|
|
19
|
+
ok: false;
|
|
20
|
+
error: string;
|
|
21
|
+
};
|
|
22
|
+
export declare function normalizeAgentTaskPlaytestProof(value: unknown): NormalizeAgentTaskPlaytestProofResult;
|
|
23
|
+
//# sourceMappingURL=agent-task-playtest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-task-playtest.d.ts","sourceRoot":"","sources":["../src/agent-task-playtest.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uCAAuC,0CAA2C,CAAC;AAEhG,MAAM,MAAM,gCAAgC,GAAG,CAAC,OAAO,uCAAuC,CAAC,CAAC,MAAM,CAAC,CAAC;AAExG,MAAM,MAAM,4BAA4B,GAAG;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,CAAC,CAAC;IACX,YAAY,EAAE,4BAA4B,CAAC;IAC3C,GAAG,EAAE,4BAA4B,CAAC;IAClC,IAAI,EAAE,4BAA4B,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,qCAAqC,GAC7C;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,sBAAsB,CAAA;CAAE,GAC3C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAoBjC,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,qCAAqC,CAoCrG"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var agent_task_playtest_exports = {};
|
|
19
|
+
__export(agent_task_playtest_exports, {
|
|
20
|
+
AGENT_TASK_PLAYTEST_PROOF_MOMENT_VALUES: () => AGENT_TASK_PLAYTEST_PROOF_MOMENT_VALUES,
|
|
21
|
+
normalizeAgentTaskPlaytestProof: () => normalizeAgentTaskPlaytestProof
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(agent_task_playtest_exports);
|
|
24
|
+
const AGENT_TASK_PLAYTEST_PROOF_MOMENT_VALUES = ["primaryInput", "win", "loss"];
|
|
25
|
+
const PROOF_KEYS = /* @__PURE__ */ new Set(["version", ...AGENT_TASK_PLAYTEST_PROOF_MOMENT_VALUES]);
|
|
26
|
+
const MOMENT_KEYS = /* @__PURE__ */ new Set(["action", "observed", "capture", "captureSha256"]);
|
|
27
|
+
const SHA256_HEX = /^[0-9a-f]{64}$/;
|
|
28
|
+
function normalizeRequiredString(value, maxLength) {
|
|
29
|
+
if (typeof value !== "string")
|
|
30
|
+
return null;
|
|
31
|
+
const normalized = value.trim();
|
|
32
|
+
return normalized && normalized.length <= maxLength ? normalized : null;
|
|
33
|
+
}
|
|
34
|
+
function normalizeCapturePath(value) {
|
|
35
|
+
const normalized = normalizeRequiredString(value, 500);
|
|
36
|
+
if (!normalized || normalized.startsWith("/") || normalized.includes("\\"))
|
|
37
|
+
return null;
|
|
38
|
+
const segments = normalized.split("/");
|
|
39
|
+
if (segments.some((segment) => !segment || segment === "." || segment === ".."))
|
|
40
|
+
return null;
|
|
41
|
+
return normalized;
|
|
42
|
+
}
|
|
43
|
+
function normalizeAgentTaskPlaytestProof(value) {
|
|
44
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
45
|
+
return { ok: false, error: "agent_task_playtest_proof_invalid" };
|
|
46
|
+
}
|
|
47
|
+
const record = value;
|
|
48
|
+
const unexpectedKey = Object.keys(record).find((key) => !PROOF_KEYS.has(key));
|
|
49
|
+
if (unexpectedKey) {
|
|
50
|
+
return { ok: false, error: `agent_task_playtest_proof_invalid_key:${unexpectedKey}` };
|
|
51
|
+
}
|
|
52
|
+
if (record["version"] !== 1) {
|
|
53
|
+
return { ok: false, error: "agent_task_playtest_proof_invalid_version" };
|
|
54
|
+
}
|
|
55
|
+
const proof = { version: 1 };
|
|
56
|
+
for (const momentName of AGENT_TASK_PLAYTEST_PROOF_MOMENT_VALUES) {
|
|
57
|
+
const rawMoment = record[momentName];
|
|
58
|
+
if (!rawMoment || typeof rawMoment !== "object" || Array.isArray(rawMoment)) {
|
|
59
|
+
return { ok: false, error: `agent_task_playtest_proof_missing:${momentName}` };
|
|
60
|
+
}
|
|
61
|
+
const moment = rawMoment;
|
|
62
|
+
const unexpectedMomentKey = Object.keys(moment).find((key) => !MOMENT_KEYS.has(key));
|
|
63
|
+
if (unexpectedMomentKey) {
|
|
64
|
+
return { ok: false, error: `agent_task_playtest_proof_invalid_key:${momentName}:${unexpectedMomentKey}` };
|
|
65
|
+
}
|
|
66
|
+
const action = normalizeRequiredString(moment["action"], 500);
|
|
67
|
+
const observed = normalizeRequiredString(moment["observed"], 500);
|
|
68
|
+
const capture = normalizeCapturePath(moment["capture"]);
|
|
69
|
+
const captureSha256 = typeof moment["captureSha256"] === "string" ? moment["captureSha256"].trim().toLowerCase() : "";
|
|
70
|
+
if (!action || !observed || !capture || !SHA256_HEX.test(captureSha256)) {
|
|
71
|
+
return { ok: false, error: `agent_task_playtest_proof_invalid:${momentName}` };
|
|
72
|
+
}
|
|
73
|
+
proof[momentName] = { action, observed, capture, captureSha256 };
|
|
74
|
+
}
|
|
75
|
+
if (new Set(AGENT_TASK_PLAYTEST_PROOF_MOMENT_VALUES.map((moment) => proof[moment].capture)).size !== 3) {
|
|
76
|
+
return { ok: false, error: "agent_task_playtest_proof_captures_not_distinct" };
|
|
77
|
+
}
|
|
78
|
+
return { ok: true, value: proof };
|
|
79
|
+
}
|
|
80
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
81
|
+
0 && (module.exports = {
|
|
82
|
+
AGENT_TASK_PLAYTEST_PROOF_MOMENT_VALUES,
|
|
83
|
+
normalizeAgentTaskPlaytestProof
|
|
84
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAC;AAGzB,mBAAmB,eAAe,CAAC;AAGnC,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,cAAc,CAAC;AAG7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAC;AAGzB,mBAAmB,eAAe,CAAC;AAGnC,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,cAAc,CAAC;AAG7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
|
|
@@ -27,6 +27,7 @@ __reExport(dist_exports, require("./owned-assets.js"), module.exports);
|
|
|
27
27
|
__reExport(dist_exports, require("./graph.js"), module.exports);
|
|
28
28
|
__reExport(dist_exports, require("./creator-public-image.js"), module.exports);
|
|
29
29
|
__reExport(dist_exports, require("./instrument-evidence.js"), module.exports);
|
|
30
|
+
__reExport(dist_exports, require("./agent-task-playtest.js"), module.exports);
|
|
30
31
|
// Annotate the CommonJS export names for ESM import in node:
|
|
31
32
|
0 && (module.exports = {
|
|
32
33
|
...require("./api.js"),
|
|
@@ -41,5 +42,6 @@ __reExport(dist_exports, require("./instrument-evidence.js"), module.exports);
|
|
|
41
42
|
...require("./owned-assets.js"),
|
|
42
43
|
...require("./graph.js"),
|
|
43
44
|
...require("./creator-public-image.js"),
|
|
44
|
-
...require("./instrument-evidence.js")
|
|
45
|
+
...require("./instrument-evidence.js"),
|
|
46
|
+
...require("./agent-task-playtest.js")
|
|
45
47
|
});
|
|
@@ -3,6 +3,7 @@ import type { AssetCategory, AssetFormat, AssetVisibility } from './asset.js';
|
|
|
3
3
|
import type { AppMetadataAssetSpecSupport } from './asset-spec.js';
|
|
4
4
|
import type { AppResponse, AppRuntimeAssetSummary } from './api.js';
|
|
5
5
|
import type { ContentLicense, ContentPermissions } from './content-license.js';
|
|
6
|
+
import type { AgentTaskPlaytestProof } from './agent-task-playtest.js';
|
|
6
7
|
import type { AppAchievementCatalogueDefinition, AppLeaderboardCatalogueDefinition } from './player-meta.js';
|
|
7
8
|
export declare const APP_HOSTING_MODE_VALUES: readonly ["HOSTED", "EXTERNAL"];
|
|
8
9
|
export type AppHostingMode = (typeof APP_HOSTING_MODE_VALUES)[number];
|
|
@@ -18,7 +19,7 @@ export declare const REVIEW_STATE_VALUES: readonly ["NOT_REQUIRED", "QUEUED", "R
|
|
|
18
19
|
export type ReviewState = (typeof REVIEW_STATE_VALUES)[number];
|
|
19
20
|
export declare function isReviewState(value: unknown): value is ReviewState;
|
|
20
21
|
export declare function parseReviewState(value: unknown): ReviewState | null;
|
|
21
|
-
export declare const APP_VERSION_DESIGN_GROUP_VALUES: readonly ["genre", "coreGameplay", "render", "camera", "input", "progression", "artStyle", "coreAssets", "assetStrategy", "engine", "features", "references"];
|
|
22
|
+
export declare const APP_VERSION_DESIGN_GROUP_VALUES: readonly ["genre", "coreGameplay", "render", "camera", "input", "progression", "artStyle", "coreAssets", "assetStrategy", "engine", "features", "references", "fantasy", "mascot", "setting", "palette", "uiMaterial"];
|
|
22
23
|
export type AppVersionDesignGroup = (typeof APP_VERSION_DESIGN_GROUP_VALUES)[number];
|
|
23
24
|
export type AppVersionDesignEntry = {
|
|
24
25
|
value?: string;
|
|
@@ -26,7 +27,7 @@ export type AppVersionDesignEntry = {
|
|
|
26
27
|
note?: string;
|
|
27
28
|
};
|
|
28
29
|
export type AppVersionDesign = Partial<Record<AppVersionDesignGroup, AppVersionDesignEntry>>;
|
|
29
|
-
export declare const APP_VERSION_DESIGN_SHAPE_HELP = "Expected catalogue design shape: {\"genre\":{\"value\":\"arcade\"},\"coreGameplay\":{\"value\":\"short loop\"},\"render\":{\"value\":\"2d\"},\"camera\":{\"value\":\"fixed-screen\"},\"input\":{\"values\":[\"tap\",\"pointer\"]},\"progression\":{\"value\":\"waves\"},\"artStyle\":{\"value\":\"bright cartoon\"},\"assetStrategy\":{\"value\":\"procedural\",\"note\":\"honest procedural draft\"},\"engine\":{\"value\":\"plain-html\"},\"coreAssets\":{\"values\":[]},\"features\":{\"values\":[]},\"references\":{\"values\":[]}}. Allowed groups: genre, coreGameplay, render, camera, input, progression, artStyle, coreAssets, assetStrategy, engine, features, references. Use value for one-value groups and values for many-value groups.";
|
|
30
|
+
export declare const APP_VERSION_DESIGN_SHAPE_HELP = "Expected catalogue design shape: {\"genre\":{\"value\":\"arcade\"},\"coreGameplay\":{\"value\":\"short loop\"},\"render\":{\"value\":\"2d\"},\"camera\":{\"value\":\"fixed-screen\"},\"input\":{\"values\":[\"tap\",\"pointer\"]},\"progression\":{\"value\":\"waves\"},\"artStyle\":{\"value\":\"bright cartoon\"},\"assetStrategy\":{\"value\":\"procedural\",\"note\":\"honest procedural draft\"},\"engine\":{\"value\":\"plain-html\"},\"coreAssets\":{\"values\":[]},\"features\":{\"values\":[]},\"references\":{\"values\":[]},\"fantasy\":{\"value\":\"heroic potion shop\"},\"mascot\":{\"value\":\"round owl alchemist\",\"note\":\"expressive silhouette\"},\"setting\":{\"value\":\"moonlit market\"},\"palette\":{\"values\":[\"ink blue\",\"amber\",\"mint\"]},\"uiMaterial\":{\"value\":\"painted wood\"}}. Allowed groups: genre, coreGameplay, render, camera, input, progression, artStyle, coreAssets, assetStrategy, engine, features, references, fantasy, mascot, setting, palette, uiMaterial. Use value for one-value groups and values for many-value groups; palette accepts at most 6 values.";
|
|
30
31
|
export type NormalizeAppVersionDesignOptions = {
|
|
31
32
|
allowedPackRefs?: readonly string[];
|
|
32
33
|
};
|
|
@@ -264,6 +265,7 @@ export interface AppUploadOwnedAssetEntry {
|
|
|
264
265
|
export interface InitializeAppUploadRequest {
|
|
265
266
|
version: string;
|
|
266
267
|
agentTaskId?: number;
|
|
268
|
+
playtestProof?: AgentTaskPlaytestProof;
|
|
267
269
|
releaseNotes?: string;
|
|
268
270
|
visibility?: AppVersionVisibility;
|
|
269
271
|
license?: ContentLicense;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"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"}
|
|
@@ -117,11 +117,16 @@ const APP_VERSION_DESIGN_GROUP_VALUES = [
|
|
|
117
117
|
"assetStrategy",
|
|
118
118
|
"engine",
|
|
119
119
|
"features",
|
|
120
|
-
"references"
|
|
120
|
+
"references",
|
|
121
|
+
"fantasy",
|
|
122
|
+
"mascot",
|
|
123
|
+
"setting",
|
|
124
|
+
"palette",
|
|
125
|
+
"uiMaterial"
|
|
121
126
|
];
|
|
122
127
|
const APP_VERSION_DESIGN_GROUPS = new Set(APP_VERSION_DESIGN_GROUP_VALUES);
|
|
123
128
|
const APP_VERSION_DESIGN_NOTE_MAX_LENGTH = 140;
|
|
124
|
-
const APP_VERSION_DESIGN_SHAPE_HELP = 'Expected catalogue design shape: {"genre":{"value":"arcade"},"coreGameplay":{"value":"short loop"},"render":{"value":"2d"},"camera":{"value":"fixed-screen"},"input":{"values":["tap","pointer"]},"progression":{"value":"waves"},"artStyle":{"value":"bright cartoon"},"assetStrategy":{"value":"procedural","note":"honest procedural draft"},"engine":{"value":"plain-html"},"coreAssets":{"values":[]},"features":{"values":[]},"references":{"values":[]}}. Allowed groups: genre, coreGameplay, render, camera, input, progression, artStyle, coreAssets, assetStrategy, engine, features, references. Use value for one-value groups and values for many-value groups.';
|
|
129
|
+
const APP_VERSION_DESIGN_SHAPE_HELP = 'Expected catalogue design shape: {"genre":{"value":"arcade"},"coreGameplay":{"value":"short loop"},"render":{"value":"2d"},"camera":{"value":"fixed-screen"},"input":{"values":["tap","pointer"]},"progression":{"value":"waves"},"artStyle":{"value":"bright cartoon"},"assetStrategy":{"value":"procedural","note":"honest procedural draft"},"engine":{"value":"plain-html"},"coreAssets":{"values":[]},"features":{"values":[]},"references":{"values":[]},"fantasy":{"value":"heroic potion shop"},"mascot":{"value":"round owl alchemist","note":"expressive silhouette"},"setting":{"value":"moonlit market"},"palette":{"values":["ink blue","amber","mint"]},"uiMaterial":{"value":"painted wood"}}. Allowed groups: genre, coreGameplay, render, camera, input, progression, artStyle, coreAssets, assetStrategy, engine, features, references, fantasy, mascot, setting, palette, uiMaterial. Use value for one-value groups and values for many-value groups; palette accepts at most 6 values.';
|
|
125
130
|
const APP_VERSION_DESIGN_RULES = {
|
|
126
131
|
genre: { cardinality: "one" },
|
|
127
132
|
coreGameplay: { cardinality: "one" },
|
|
@@ -134,7 +139,12 @@ const APP_VERSION_DESIGN_RULES = {
|
|
|
134
139
|
assetStrategy: { cardinality: "one", values: ["pack-first", "owned-assets", "mixed", "procedural"] },
|
|
135
140
|
engine: { cardinality: "one", values: ["phaser-2d", "three-js", "plain-html"] },
|
|
136
141
|
features: { cardinality: "many", values: ["multiplayer", "avatars", "achievements", "leaderboard", "saves", "ai-generation", "shop", "ads"] },
|
|
137
|
-
references: { cardinality: "many", maxValues: 2 }
|
|
142
|
+
references: { cardinality: "many", maxValues: 2 },
|
|
143
|
+
fantasy: { cardinality: "one" },
|
|
144
|
+
mascot: { cardinality: "one" },
|
|
145
|
+
setting: { cardinality: "one" },
|
|
146
|
+
palette: { cardinality: "many", maxValues: 6 },
|
|
147
|
+
uiMaterial: { cardinality: "one" }
|
|
138
148
|
};
|
|
139
149
|
function formatAppVersionDesignError(error) {
|
|
140
150
|
return `${error}. ${APP_VERSION_DESIGN_SHAPE_HELP}`;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@playdrop/playdrop-cli",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.27",
|
|
4
4
|
"description": "Official Playdrop CLI for publishing browser games, creator apps, and AI-generated game assets on playdrop.ai",
|
|
5
5
|
"homepage": "https://www.playdrop.ai",
|
|
6
6
|
"repository": {
|