@playdrop/playdrop-cli 0.12.28 → 0.12.29
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/catalogue.js +1 -3
- package/dist/commands/devRuntimeAssets.d.ts +1 -1
- package/dist/commands/devRuntimeAssets.js +3 -0
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.js +11 -6
- package/dist/commands/upload.d.ts +9 -0
- package/dist/commands/upload.js +54 -49
- package/dist/commands/validate.js +15 -1
- package/dist/commands/worker.js +2 -33
- package/dist/listingPreflight.d.ts +10 -0
- package/dist/listingPreflight.js +34 -10
- package/node_modules/@playdrop/config/client-meta.json +1 -1
- package/node_modules/@playdrop/types/dist/version.d.ts +6 -12
- package/node_modules/@playdrop/types/dist/version.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/version.js +48 -88
- package/package.json +1 -1
package/config/client-meta.json
CHANGED
package/dist/catalogue.js
CHANGED
|
@@ -1279,9 +1279,7 @@ function buildAppTasks(rootDir, catalogues, options) {
|
|
|
1279
1279
|
}
|
|
1280
1280
|
let design;
|
|
1281
1281
|
if (Object.prototype.hasOwnProperty.call(entry, 'design')) {
|
|
1282
|
-
const parsedDesign = (0, types_1.normalizeAppVersionDesign)(entry.design
|
|
1283
|
-
allowedPackRefs: usesPacks,
|
|
1284
|
-
});
|
|
1282
|
+
const parsedDesign = (0, types_1.normalizeAppVersionDesign)(entry.design);
|
|
1285
1283
|
if (!parsedDesign.ok) {
|
|
1286
1284
|
errors.push(`[${label}] App "${rawName}" ${parsedDesign.error}`);
|
|
1287
1285
|
continue;
|
|
@@ -26,7 +26,7 @@ export declare function createEmptyDevRuntimeAssetManifest(): DevRuntimeAssetMan
|
|
|
26
26
|
export declare function buildLocalDevRuntimeAssetsUrl(appBaseUrl: string): string;
|
|
27
27
|
export declare function buildLocalDevRuntimeAssetFileUrl(appBaseUrl: string, ownedAssetName: string, role: string): string;
|
|
28
28
|
export declare function buildDevRuntimeAssetManifest(input: {
|
|
29
|
-
client
|
|
29
|
+
client?: Pick<ApiClient, 'resolveRuntimeAssets'>;
|
|
30
30
|
apiBase: string;
|
|
31
31
|
task: AppTask;
|
|
32
32
|
creatorUsername: string;
|
|
@@ -181,6 +181,9 @@ async function buildDevRuntimeAssetManifest(input) {
|
|
|
181
181
|
return (0, types_1.formatContentVersionRef)(parsedPackRef);
|
|
182
182
|
});
|
|
183
183
|
if (directDependencies.length > 0 || packDependencies.length > 0) {
|
|
184
|
+
if (!input.client) {
|
|
185
|
+
throw new Error('dev_runtime_asset_resolver_missing');
|
|
186
|
+
}
|
|
184
187
|
const resolved = await input.client.resolveRuntimeAssets({
|
|
185
188
|
assets: directDependencies,
|
|
186
189
|
packs: packDependencies,
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export type InitSummary = {
|
|
|
5
5
|
directory: string;
|
|
6
6
|
cataloguePath: string;
|
|
7
7
|
readmeStatus: 'created' | 'updated';
|
|
8
|
-
agentsStatus: 'created' | '
|
|
8
|
+
agentsStatus: 'created' | 'skipped';
|
|
9
9
|
catalogueStatus: 'created' | 'skipped';
|
|
10
10
|
gitStatus: 'initialized' | 'skipped' | 'declined';
|
|
11
11
|
};
|
package/dist/commands/init.js
CHANGED
|
@@ -246,12 +246,17 @@ async function init(targetPath, options = {}) {
|
|
|
246
246
|
const renderedReadme = ensureTrailingNewline(renderReadmeTemplate(readmeDownload, replacements));
|
|
247
247
|
(0, node_fs_1.writeFileSync)(readmePath, renderedReadme, 'utf8');
|
|
248
248
|
actions.push(readmeExisted ? 'Updated README.md' : 'Created README.md');
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
249
|
+
if (agentsExisted) {
|
|
250
|
+
actions.push('Skipped existing AGENTS.md');
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
const agentsDownload = await downloadBootstrapAsset(envConfig.webBase, normalized.agentsUri, 'AGENTS.md');
|
|
254
|
+
if (!agentsDownload) {
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
(0, node_fs_1.writeFileSync)(agentsPath, agentsDownload, 'utf8');
|
|
258
|
+
actions.push('Created AGENTS.md');
|
|
252
259
|
}
|
|
253
|
-
(0, node_fs_1.writeFileSync)(agentsPath, agentsDownload, 'utf8');
|
|
254
|
-
actions.push(agentsExisted ? 'Updated AGENTS.md' : 'Created AGENTS.md');
|
|
255
260
|
if (!catalogueExisted) {
|
|
256
261
|
(0, node_fs_1.writeFileSync)(cataloguePath, normalized.catalogue, 'utf8');
|
|
257
262
|
actions.push('Created catalogue.json');
|
|
@@ -294,7 +299,7 @@ async function init(targetPath, options = {}) {
|
|
|
294
299
|
directory: resolved,
|
|
295
300
|
cataloguePath,
|
|
296
301
|
readmeStatus: readmeExisted ? 'updated' : 'created',
|
|
297
|
-
agentsStatus: agentsExisted ? '
|
|
302
|
+
agentsStatus: agentsExisted ? 'skipped' : 'created',
|
|
298
303
|
catalogueStatus: catalogueExisted ? 'skipped' : 'created',
|
|
299
304
|
gitStatus,
|
|
300
305
|
};
|
|
@@ -36,7 +36,16 @@ export type WorkerAppPublishResult = {
|
|
|
36
36
|
warnings: string[];
|
|
37
37
|
};
|
|
38
38
|
export type WorkerPlaydropAssetRequirement = 'PACK' | 'ASSET_OR_PACK';
|
|
39
|
+
export declare function resolveWorkerPlaydropAssetRequirement(value: unknown): WorkerPlaydropAssetRequirement | null;
|
|
39
40
|
export declare function assertTaskPlaytestEvidenceManifest(task: AppTask, options?: {
|
|
40
41
|
requireOutcomeProof?: boolean;
|
|
41
42
|
}): AgentTaskPlaytestProof | null;
|
|
43
|
+
export declare function assertWorkerAppLocalUploadPreflight(input: {
|
|
44
|
+
task: AppTask;
|
|
45
|
+
kind: 'NEW_GAME' | 'REMIX_GAME' | 'GAME_UPDATE';
|
|
46
|
+
executionTarget?: AgentExecutionTarget;
|
|
47
|
+
creatorUsername?: string | null;
|
|
48
|
+
playdropAssetRequirement?: WorkerPlaydropAssetRequirement | null;
|
|
49
|
+
creatorRequest?: string | null;
|
|
50
|
+
}): Promise<AgentTaskPlaytestProof | null>;
|
|
42
51
|
export declare function publishWorkerAppProject(input: WorkerAppPublishInput): Promise<WorkerAppPublishResult>;
|
package/dist/commands/upload.js
CHANGED
|
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.resolveUploadOwner = resolveUploadOwner;
|
|
4
4
|
exports.resolveDefaultUploadCreator = resolveDefaultUploadCreator;
|
|
5
5
|
exports.upload = upload;
|
|
6
|
+
exports.resolveWorkerPlaydropAssetRequirement = resolveWorkerPlaydropAssetRequirement;
|
|
6
7
|
exports.assertTaskPlaytestEvidenceManifest = assertTaskPlaytestEvidenceManifest;
|
|
8
|
+
exports.assertWorkerAppLocalUploadPreflight = assertWorkerAppLocalUploadPreflight;
|
|
7
9
|
exports.publishWorkerAppProject = publishWorkerAppProject;
|
|
8
10
|
const node_crypto_1 = require("node:crypto");
|
|
9
11
|
const node_fs_1 = require("node:fs");
|
|
@@ -495,7 +497,10 @@ function validateTagRefsForTarget(tagRegistry, target) {
|
|
|
495
497
|
function collectTaskTagValidationTargets(task) {
|
|
496
498
|
if (task.kind === 'app') {
|
|
497
499
|
return [
|
|
498
|
-
{
|
|
500
|
+
{
|
|
501
|
+
tags: Array.from(new Set([...task.tags, ...Object.values(task.design ?? {})])),
|
|
502
|
+
targetKind: 'APP',
|
|
503
|
+
},
|
|
499
504
|
...task.ownedAssets.map((ownedAsset) => ({
|
|
500
505
|
tags: ownedAsset.tags,
|
|
501
506
|
targetKind: 'ASSET',
|
|
@@ -1204,6 +1209,19 @@ async function upload(pathOrName, options) {
|
|
|
1204
1209
|
(0, uploadLog_1.printTaskSummary)(results, warnings, { action: 'upload', environment: env });
|
|
1205
1210
|
(0, uploadLog_1.printPublishedAppNextSteps)(results);
|
|
1206
1211
|
}
|
|
1212
|
+
function resolveWorkerPlaydropAssetRequirement(value) {
|
|
1213
|
+
const text = typeof value === 'string' ? value.toLowerCase() : '';
|
|
1214
|
+
if (!text.trim() || !/\bplay\s*drop\b|\bplaydrop\b/.test(text)) {
|
|
1215
|
+
return null;
|
|
1216
|
+
}
|
|
1217
|
+
if (/\basset\s*pack(s)?\b|\bpack(s)?\b/.test(text)) {
|
|
1218
|
+
return 'PACK';
|
|
1219
|
+
}
|
|
1220
|
+
if (/\basset(s)?\b|\bsprite(s)?\b|\bmodel(s)?\b|\bart\b|\bcharacter(s)?\b|\bprop(s)?\b/.test(text)) {
|
|
1221
|
+
return 'ASSET_OR_PACK';
|
|
1222
|
+
}
|
|
1223
|
+
return null;
|
|
1224
|
+
}
|
|
1207
1225
|
const WORKER_SUPERVISOR_SOURCE_EXCLUDES = [
|
|
1208
1226
|
'PLAYDROP_TASK.md',
|
|
1209
1227
|
'.playdrop/',
|
|
@@ -1324,24 +1342,11 @@ function assertNoLaunchCheckConditionalSource(runtimeSource) {
|
|
|
1324
1342
|
throw new Error(`agent_task_launch_check_conditional_disallowed: game source must not sniff validation or local route context. First match at ${environmentSniff.location}.`);
|
|
1325
1343
|
}
|
|
1326
1344
|
}
|
|
1327
|
-
function hasProceduralAssetStrategy(task) {
|
|
1328
|
-
const strategy = task.design?.assetStrategy;
|
|
1329
|
-
return strategy?.value === 'procedural';
|
|
1330
|
-
}
|
|
1331
1345
|
function hasDeclaredRuntimeAssetDependency(task) {
|
|
1332
1346
|
return task.uses.packs.length > 0
|
|
1333
1347
|
|| task.uses.assets.length > 0
|
|
1334
1348
|
|| task.ownedAssets.some((ownedAsset) => !isListingOwnedAsset(task, ownedAsset));
|
|
1335
1349
|
}
|
|
1336
|
-
function assertNewGameAssetStrategy(task) {
|
|
1337
|
-
if (hasDeclaredRuntimeAssetDependency(task)) {
|
|
1338
|
-
return;
|
|
1339
|
-
}
|
|
1340
|
-
if (hasProceduralAssetStrategy(task)) {
|
|
1341
|
-
return;
|
|
1342
|
-
}
|
|
1343
|
-
throw new Error('agent_task_asset_strategy_missing: new game tasks must either declare true runtime assets/packs or set design.assetStrategy to { "value": "procedural", "note": "..." } for an honest procedural draft.');
|
|
1344
|
-
}
|
|
1345
1350
|
function isListingOwnedAsset(task, ownedAsset) {
|
|
1346
1351
|
const primaryPath = ownedAsset.filePaths?.primary;
|
|
1347
1352
|
if (!primaryPath) {
|
|
@@ -1590,7 +1595,6 @@ async function assertNewGameDeclaredAssetsAreUsedAtRuntime(input) {
|
|
|
1590
1595
|
const runtimeSource = readRuntimeSourceText(input.task.projectDir);
|
|
1591
1596
|
const source = runtimeSource.source;
|
|
1592
1597
|
assertNoLaunchCheckConditionalSource(runtimeSource);
|
|
1593
|
-
assertNewGameAssetStrategy(input.task);
|
|
1594
1598
|
if (!hasDeclaredRuntimeAssetDependency(input.task)) {
|
|
1595
1599
|
return;
|
|
1596
1600
|
}
|
|
@@ -1608,8 +1612,7 @@ async function assertNewGameDeclaredAssetsAreUsedAtRuntime(input) {
|
|
|
1608
1612
|
}
|
|
1609
1613
|
const manifest = input.task.ownedAssets.length > 0
|
|
1610
1614
|
? await (0, devRuntimeAssets_1.buildDevRuntimeAssetManifest)({
|
|
1611
|
-
|
|
1612
|
-
apiBase: input.apiBase,
|
|
1615
|
+
apiBase: 'http://127.0.0.1',
|
|
1613
1616
|
task: {
|
|
1614
1617
|
...input.task,
|
|
1615
1618
|
uses: { assets: [], packs: [] },
|
|
@@ -1807,6 +1810,35 @@ function readRuntimeSourceLastModifiedAt(rootDir) {
|
|
|
1807
1810
|
walk(root);
|
|
1808
1811
|
return latest > 0 ? new Date(latest).toISOString() : null;
|
|
1809
1812
|
}
|
|
1813
|
+
async function assertWorkerAppLocalUploadPreflight(input) {
|
|
1814
|
+
if (input.kind === 'GAME_UPDATE') {
|
|
1815
|
+
return assertTaskPlaytestEvidenceManifest(input.task);
|
|
1816
|
+
}
|
|
1817
|
+
(0, listingPreflight_1.assertAgentGameHeroListingPreflight)(input.task);
|
|
1818
|
+
if (input.kind === 'NEW_GAME') {
|
|
1819
|
+
(0, listingPreflight_1.assertAgentNewGameArtDirectionPreflight)(input.task);
|
|
1820
|
+
}
|
|
1821
|
+
if (!appTaskSatisfiesPlaydropAssetRequirement(input.task, input.playdropAssetRequirement)) {
|
|
1822
|
+
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.');
|
|
1823
|
+
}
|
|
1824
|
+
await (0, ownedRuntimeImageValidation_1.assertOwnedRuntimeImagesAreValid)(input.task);
|
|
1825
|
+
assertRequestedPlaydropAssetsAreUsedAtRuntime({
|
|
1826
|
+
task: input.task,
|
|
1827
|
+
requirement: input.playdropAssetRequirement,
|
|
1828
|
+
creatorRequest: input.creatorRequest,
|
|
1829
|
+
});
|
|
1830
|
+
await assertNewGameDeclaredAssetsAreUsedAtRuntime({
|
|
1831
|
+
creatorUsername: input.creatorUsername?.trim() ?? '',
|
|
1832
|
+
task: input.task,
|
|
1833
|
+
});
|
|
1834
|
+
(0, listingPreflight_1.assertAgentGameScreenshotListingPreflight)(input.task);
|
|
1835
|
+
(0, listingPreflight_1.assertAgentGameCaptureReportPreflight)(input.task, {
|
|
1836
|
+
requireCaptureReport: input.executionTarget === 'FIRST_PARTY',
|
|
1837
|
+
});
|
|
1838
|
+
return assertTaskPlaytestEvidenceManifest(input.task, {
|
|
1839
|
+
requireOutcomeProof: input.kind === 'NEW_GAME',
|
|
1840
|
+
});
|
|
1841
|
+
}
|
|
1810
1842
|
// Task upload path used by "playdrop task upload": same internal pipeline as
|
|
1811
1843
|
// "playdrop project publish", but always as one PRIVATE draft version for the
|
|
1812
1844
|
// task's creator, with browser launch checks on before the version is created.
|
|
@@ -1853,34 +1885,14 @@ async function publishWorkerAppProject(input) {
|
|
|
1853
1885
|
throw new Error(`agent_task_remix_ref_mismatch:${catalogueRemixRef}:${expectedRemixRef}`);
|
|
1854
1886
|
}
|
|
1855
1887
|
}
|
|
1856
|
-
|
|
1857
|
-
assertTaskPlaytestEvidenceManifest(task);
|
|
1858
|
-
}
|
|
1859
|
-
if (input.kind === 'NEW_GAME' || input.kind === 'REMIX_GAME') {
|
|
1860
|
-
(0, listingPreflight_1.assertAgentGameHeroListingPreflight)(task);
|
|
1861
|
-
}
|
|
1862
|
-
if (input.kind === 'NEW_GAME') {
|
|
1863
|
-
(0, listingPreflight_1.assertAgentNewGameArtDirectionPreflight)(task);
|
|
1864
|
-
}
|
|
1865
|
-
if (!appTaskSatisfiesPlaydropAssetRequirement(task, input.playdropAssetRequirement)) {
|
|
1866
|
-
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.');
|
|
1867
|
-
}
|
|
1868
|
-
if (input.kind === 'NEW_GAME' || input.kind === 'REMIX_GAME') {
|
|
1869
|
-
await (0, ownedRuntimeImageValidation_1.assertOwnedRuntimeImagesAreValid)(task);
|
|
1870
|
-
}
|
|
1871
|
-
assertRequestedPlaydropAssetsAreUsedAtRuntime({
|
|
1888
|
+
const playtestProof = await assertWorkerAppLocalUploadPreflight({
|
|
1872
1889
|
task,
|
|
1873
|
-
|
|
1890
|
+
kind: input.kind,
|
|
1891
|
+
executionTarget: input.executionTarget,
|
|
1892
|
+
creatorUsername,
|
|
1893
|
+
playdropAssetRequirement: input.playdropAssetRequirement,
|
|
1874
1894
|
creatorRequest: input.creatorRequest,
|
|
1875
1895
|
});
|
|
1876
|
-
if (input.kind === 'NEW_GAME' || input.kind === 'REMIX_GAME') {
|
|
1877
|
-
await assertNewGameDeclaredAssetsAreUsedAtRuntime({
|
|
1878
|
-
client: input.client,
|
|
1879
|
-
apiBase: input.apiBase,
|
|
1880
|
-
creatorUsername,
|
|
1881
|
-
task,
|
|
1882
|
-
});
|
|
1883
|
-
}
|
|
1884
1896
|
await assertDeclared3dPlaydropPacksContainRuntimeModels({
|
|
1885
1897
|
client: input.client,
|
|
1886
1898
|
task,
|
|
@@ -1904,13 +1916,6 @@ async function publishWorkerAppProject(input) {
|
|
|
1904
1916
|
taskId: input.taskId,
|
|
1905
1917
|
taskToken,
|
|
1906
1918
|
};
|
|
1907
|
-
let playtestProof = null;
|
|
1908
|
-
if (input.kind === 'NEW_GAME' || input.kind === 'REMIX_GAME') {
|
|
1909
|
-
(0, listingPreflight_1.assertAgentGameScreenshotListingPreflight)(task);
|
|
1910
|
-
playtestProof = assertTaskPlaytestEvidenceManifest(task, {
|
|
1911
|
-
requireOutcomeProof: input.kind === 'NEW_GAME',
|
|
1912
|
-
});
|
|
1913
|
-
}
|
|
1914
1919
|
const { upload: uploadResult, warnings } = await (0, apps_1.runAppPipeline)(input.client, task, {
|
|
1915
1920
|
creatorUsername,
|
|
1916
1921
|
apiBase: input.apiBase,
|
|
@@ -11,6 +11,7 @@ const taskUtils_1 = require("../taskUtils");
|
|
|
11
11
|
const uploadLog_1 = require("../uploadLog");
|
|
12
12
|
const listingPreflight_1 = require("../listingPreflight");
|
|
13
13
|
const upload_content_1 = require("./upload-content");
|
|
14
|
+
const upload_1 = require("./upload");
|
|
14
15
|
function buildLocalAssetSpecLookups(tasks) {
|
|
15
16
|
const exactByRef = new Map();
|
|
16
17
|
const uniqueByNameVersion = new Map();
|
|
@@ -192,7 +193,20 @@ async function validate(pathOrName, options = {}) {
|
|
|
192
193
|
const entityId = task.name;
|
|
193
194
|
try {
|
|
194
195
|
if (task.kind === 'app') {
|
|
195
|
-
(0, listingPreflight_1.
|
|
196
|
+
const workerContext = (0, listingPreflight_1.readWorkerUploadPreflightContext)(task.projectDir);
|
|
197
|
+
if (workerContext) {
|
|
198
|
+
await (0, upload_1.assertWorkerAppLocalUploadPreflight)({
|
|
199
|
+
task,
|
|
200
|
+
kind: workerContext.kind,
|
|
201
|
+
executionTarget: workerContext.target,
|
|
202
|
+
creatorUsername: workerContext.creatorUsername,
|
|
203
|
+
creatorRequest: workerContext.creatorRequest,
|
|
204
|
+
playdropAssetRequirement: (0, upload_1.resolveWorkerPlaydropAssetRequirement)(workerContext.creatorRequest),
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
(0, listingPreflight_1.assertProjectListingPreflight)(task);
|
|
209
|
+
}
|
|
196
210
|
await (0, apps_1.validateAppTask)(task);
|
|
197
211
|
(0, apps_1.collectAppValidationWarnings)(task, 'source').forEach((warning) => warnings.add(warning));
|
|
198
212
|
}
|
package/dist/commands/worker.js
CHANGED
|
@@ -642,23 +642,6 @@ async function appendWorkerTranscriptChunks(input) {
|
|
|
642
642
|
});
|
|
643
643
|
}
|
|
644
644
|
}
|
|
645
|
-
function resolvePlaydropAssetRequirementFromTaskRequest(value) {
|
|
646
|
-
const text = typeof value === 'string' ? value.toLowerCase() : '';
|
|
647
|
-
if (!text.trim()) {
|
|
648
|
-
return null;
|
|
649
|
-
}
|
|
650
|
-
const mentionsPlaydrop = /\bplay\s*drop\b|\bplaydrop\b/.test(text);
|
|
651
|
-
if (!mentionsPlaydrop) {
|
|
652
|
-
return null;
|
|
653
|
-
}
|
|
654
|
-
if (/\basset\s*pack(s)?\b|\bpack(s)?\b/.test(text)) {
|
|
655
|
-
return 'PACK';
|
|
656
|
-
}
|
|
657
|
-
if (/\basset(s)?\b|\bsprite(s)?\b|\bmodel(s)?\b|\bart\b|\bcharacter(s)?\b|\bprop(s)?\b/.test(text)) {
|
|
658
|
-
return 'ASSET_OR_PACK';
|
|
659
|
-
}
|
|
660
|
-
return null;
|
|
661
|
-
}
|
|
662
645
|
function resolveTaskWorkspaceDir(startDir = node_process_1.default.cwd()) {
|
|
663
646
|
return node_path_1.default.dirname(node_path_1.default.dirname(findWorkspaceTaskFile(startDir, 'task.json')));
|
|
664
647
|
}
|
|
@@ -1382,21 +1365,7 @@ function assertWorkerClaimErrorRetryable(error) {
|
|
|
1382
1365
|
}
|
|
1383
1366
|
}
|
|
1384
1367
|
function resolvePlaydropAssetRequirementFromText(value) {
|
|
1385
|
-
|
|
1386
|
-
if (!text.trim()) {
|
|
1387
|
-
return null;
|
|
1388
|
-
}
|
|
1389
|
-
const mentionsPlaydrop = /\bplay\s*drop\b|\bplaydrop\b/.test(text);
|
|
1390
|
-
if (!mentionsPlaydrop) {
|
|
1391
|
-
return null;
|
|
1392
|
-
}
|
|
1393
|
-
if (/\basset\s*pack(s)?\b|\bpack(s)?\b/.test(text)) {
|
|
1394
|
-
return 'PACK';
|
|
1395
|
-
}
|
|
1396
|
-
if (/\basset(s)?\b|\bsprite(s)?\b|\bmodel(s)?\b|\bart\b|\bcharacter(s)?\b|\bprop(s)?\b/.test(text)) {
|
|
1397
|
-
return 'ASSET_OR_PACK';
|
|
1398
|
-
}
|
|
1399
|
-
return null;
|
|
1368
|
+
return (0, upload_1.resolveWorkerPlaydropAssetRequirement)(value);
|
|
1400
1369
|
}
|
|
1401
1370
|
function readCodexAuthenticated(homeDir = node_os_1.default.homedir()) {
|
|
1402
1371
|
try {
|
|
@@ -4688,7 +4657,7 @@ async function uploadTask(options = {}) {
|
|
|
4688
4657
|
executionTarget: taskContext.target,
|
|
4689
4658
|
expectedAppName: taskContext.outputAppName ?? undefined,
|
|
4690
4659
|
remixSourceRef: taskContext.remixSourceRef ?? null,
|
|
4691
|
-
playdropAssetRequirement:
|
|
4660
|
+
playdropAssetRequirement: (0, upload_1.resolveWorkerPlaydropAssetRequirement)(taskContext.creatorRequest),
|
|
4692
4661
|
creatorRequest: taskContext.creatorRequest,
|
|
4693
4662
|
projectDir,
|
|
4694
4663
|
creatorUsername: taskContext.creatorUsername,
|
|
@@ -4,13 +4,23 @@ export type ListingMediaFile = {
|
|
|
4
4
|
fileKey: string;
|
|
5
5
|
sha256: string;
|
|
6
6
|
};
|
|
7
|
+
export type WorkerUploadPreflightContext = {
|
|
8
|
+
kind: 'NEW_GAME' | 'REMIX_GAME' | 'GAME_UPDATE';
|
|
9
|
+
target: 'FIRST_PARTY' | 'PERSONAL';
|
|
10
|
+
creatorUsername: string;
|
|
11
|
+
creatorRequest: string;
|
|
12
|
+
};
|
|
7
13
|
export declare function readMediaCaptureProof(input: {
|
|
8
14
|
task: AppTask;
|
|
9
15
|
preparedSessionFiles: ListingMediaFile[];
|
|
10
16
|
}): RecordAppUploadMediaCaptureRequest;
|
|
17
|
+
export declare function readWorkerUploadPreflightContext(projectDir: string): WorkerUploadPreflightContext | null;
|
|
11
18
|
export declare function assertAgentGameHeroListingPreflight(task: AppTask): void;
|
|
12
19
|
export declare function assertAgentNewGameArtDirectionPreflight(task: AppTask): void;
|
|
13
20
|
export declare function assertAgentGameScreenshotListingPreflight(task: AppTask): void;
|
|
21
|
+
export declare function assertAgentGameCaptureReportPreflight(task: AppTask, options: {
|
|
22
|
+
requireCaptureReport: boolean;
|
|
23
|
+
}): void;
|
|
14
24
|
export declare function assertAgentGameListingPreflight(task: AppTask, options: {
|
|
15
25
|
requireCaptureReport: boolean;
|
|
16
26
|
}): void;
|
package/dist/listingPreflight.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.readMediaCaptureProof = readMediaCaptureProof;
|
|
4
|
+
exports.readWorkerUploadPreflightContext = readWorkerUploadPreflightContext;
|
|
4
5
|
exports.assertAgentGameHeroListingPreflight = assertAgentGameHeroListingPreflight;
|
|
5
6
|
exports.assertAgentNewGameArtDirectionPreflight = assertAgentNewGameArtDirectionPreflight;
|
|
6
7
|
exports.assertAgentGameScreenshotListingPreflight = assertAgentGameScreenshotListingPreflight;
|
|
8
|
+
exports.assertAgentGameCaptureReportPreflight = assertAgentGameCaptureReportPreflight;
|
|
7
9
|
exports.assertAgentGameListingPreflight = assertAgentGameListingPreflight;
|
|
8
10
|
exports.assertProjectListingPreflight = assertProjectListingPreflight;
|
|
9
11
|
const node_crypto_1 = require("node:crypto");
|
|
@@ -224,9 +226,23 @@ function listingMediaFiles(task) {
|
|
|
224
226
|
sha256: (0, node_crypto_1.createHash)('sha256').update((0, node_fs_1.readFileSync)(path)).digest('hex'),
|
|
225
227
|
}));
|
|
226
228
|
}
|
|
227
|
-
function
|
|
228
|
-
|
|
229
|
-
|
|
229
|
+
function findWorkerTaskContextPath(projectDir) {
|
|
230
|
+
let current = (0, node_path_1.resolve)(projectDir);
|
|
231
|
+
while (true) {
|
|
232
|
+
const candidate = (0, node_path_1.join)(current, '.playdrop', 'task.json');
|
|
233
|
+
if ((0, node_fs_1.existsSync)(candidate)) {
|
|
234
|
+
return candidate;
|
|
235
|
+
}
|
|
236
|
+
const parent = (0, node_path_1.dirname)(current);
|
|
237
|
+
if (parent === current) {
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
current = parent;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
function readWorkerUploadPreflightContext(projectDir) {
|
|
244
|
+
const contextPath = findWorkerTaskContextPath(projectDir);
|
|
245
|
+
if (!contextPath) {
|
|
230
246
|
return null;
|
|
231
247
|
}
|
|
232
248
|
let parsed;
|
|
@@ -237,13 +253,18 @@ function readWorkerListingContext(projectDir) {
|
|
|
237
253
|
const reason = error instanceof Error ? error.message : String(error);
|
|
238
254
|
throw new Error(`agent_task_context_invalid: ${contextPath} must be valid JSON. ${reason}`);
|
|
239
255
|
}
|
|
240
|
-
if (parsed?.kind !== 'NEW_GAME' && parsed?.kind !== 'REMIX_GAME') {
|
|
256
|
+
if (parsed?.kind !== 'NEW_GAME' && parsed?.kind !== 'REMIX_GAME' && parsed?.kind !== 'GAME_UPDATE') {
|
|
241
257
|
return null;
|
|
242
258
|
}
|
|
243
259
|
if (parsed.target !== 'FIRST_PARTY' && parsed.target !== 'PERSONAL') {
|
|
244
260
|
throw new Error(`agent_task_context_invalid: ${contextPath} has invalid target.`);
|
|
245
261
|
}
|
|
246
|
-
return {
|
|
262
|
+
return {
|
|
263
|
+
kind: parsed.kind,
|
|
264
|
+
target: parsed.target,
|
|
265
|
+
creatorUsername: typeof parsed.creatorUsername === 'string' ? parsed.creatorUsername.trim() : '',
|
|
266
|
+
creatorRequest: typeof parsed.creatorRequest === 'string' ? parsed.creatorRequest.trim() : '',
|
|
267
|
+
};
|
|
247
268
|
}
|
|
248
269
|
function assertAgentGameHeroListingPreflight(task) {
|
|
249
270
|
assertHeroListingArt(task);
|
|
@@ -254,16 +275,19 @@ function assertAgentNewGameArtDirectionPreflight(task) {
|
|
|
254
275
|
function assertAgentGameScreenshotListingPreflight(task) {
|
|
255
276
|
assertListingScreenshots(task);
|
|
256
277
|
}
|
|
257
|
-
function
|
|
258
|
-
assertAgentGameHeroListingPreflight(task);
|
|
259
|
-
assertAgentGameScreenshotListingPreflight(task);
|
|
278
|
+
function assertAgentGameCaptureReportPreflight(task, options) {
|
|
260
279
|
if (options.requireCaptureReport || task.listing?.captureReportPath) {
|
|
261
280
|
readMediaCaptureProof({ task, preparedSessionFiles: listingMediaFiles(task) });
|
|
262
281
|
}
|
|
263
282
|
}
|
|
283
|
+
function assertAgentGameListingPreflight(task, options) {
|
|
284
|
+
assertAgentGameHeroListingPreflight(task);
|
|
285
|
+
assertAgentGameScreenshotListingPreflight(task);
|
|
286
|
+
assertAgentGameCaptureReportPreflight(task, options);
|
|
287
|
+
}
|
|
264
288
|
function assertProjectListingPreflight(task) {
|
|
265
|
-
const context =
|
|
266
|
-
if (context) {
|
|
289
|
+
const context = readWorkerUploadPreflightContext(task.projectDir);
|
|
290
|
+
if (context?.kind === 'NEW_GAME' || context?.kind === 'REMIX_GAME') {
|
|
267
291
|
assertAgentGameListingPreflight(task, { requireCaptureReport: context.target === 'FIRST_PARTY' });
|
|
268
292
|
if (context.kind === 'NEW_GAME') {
|
|
269
293
|
assertAgentNewGameArtDirectionPreflight(task);
|
|
@@ -19,18 +19,12 @@ export declare const REVIEW_STATE_VALUES: readonly ["NOT_REQUIRED", "QUEUED", "R
|
|
|
19
19
|
export type ReviewState = (typeof REVIEW_STATE_VALUES)[number];
|
|
20
20
|
export declare function isReviewState(value: unknown): value is ReviewState;
|
|
21
21
|
export declare function parseReviewState(value: unknown): ReviewState | null;
|
|
22
|
-
export declare const APP_VERSION_DESIGN_GROUP_VALUES: readonly ["genre", "coreGameplay", "
|
|
22
|
+
export declare const APP_VERSION_DESIGN_GROUP_VALUES: readonly ["genre", "coreGameplay", "perspective", "controls", "visualStyle", "progression", "feel"];
|
|
23
23
|
export type AppVersionDesignGroup = (typeof APP_VERSION_DESIGN_GROUP_VALUES)[number];
|
|
24
|
-
export type
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
};
|
|
29
|
-
export type AppVersionDesign = Partial<Record<AppVersionDesignGroup, AppVersionDesignEntry>>;
|
|
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.";
|
|
31
|
-
export type NormalizeAppVersionDesignOptions = {
|
|
32
|
-
allowedPackRefs?: readonly string[];
|
|
33
|
-
};
|
|
24
|
+
export type AppVersionDesign = Partial<Record<AppVersionDesignGroup, string>>;
|
|
25
|
+
export declare const APP_VERSION_DESIGN_TAG_GROUPS: Record<AppVersionDesignGroup, string>;
|
|
26
|
+
export declare const APP_VERSION_DESIGN_PERSPECTIVE_TAG_REFS: readonly ["perspective/2d-fixed-screen", "perspective/2d-side-view", "perspective/2d-top-down", "perspective/2d-isometric", "perspective/3d-first-person", "perspective/3d-third-person", "perspective/3d-top-down", "perspective/3d-isometric"];
|
|
27
|
+
export declare const APP_VERSION_DESIGN_SHAPE_HELP = "Expected optional catalogue design shape: {\"genre\":\"game-genre/puzzle\",\"coreGameplay\":\"core-gameplay/merge\",\"perspective\":\"perspective/2d-fixed-screen\",\"controls\":\"game-controls/drag\",\"visualStyle\":\"visual-style/stylized\",\"progression\":\"game-progression/levels\",\"feel\":\"game-feel/snappy\"}. Every field is optional and may be blank or null. Each nonempty value must be one tag ref from its matching tag group. Perspective must be one of: perspective/2d-fixed-screen, perspective/2d-side-view, perspective/2d-top-down, perspective/2d-isometric, perspective/3d-first-person, perspective/3d-third-person, perspective/3d-top-down, perspective/3d-isometric.";
|
|
34
28
|
export type NormalizeAppVersionDesignResult = {
|
|
35
29
|
ok: true;
|
|
36
30
|
value: AppVersionDesign;
|
|
@@ -38,7 +32,7 @@ export type NormalizeAppVersionDesignResult = {
|
|
|
38
32
|
ok: false;
|
|
39
33
|
error: string;
|
|
40
34
|
};
|
|
41
|
-
export declare function normalizeAppVersionDesign(value: unknown
|
|
35
|
+
export declare function normalizeAppVersionDesign(value: unknown): NormalizeAppVersionDesignResult;
|
|
42
36
|
export declare const APP_AUTH_MODE_VALUES: readonly ["REQUIRED", "OPTIONAL", "NONE"];
|
|
43
37
|
export type AppAuthMode = (typeof APP_AUTH_MODE_VALUES)[number];
|
|
44
38
|
export declare const DEFAULT_APP_AUTH_MODE: AppAuthMode;
|
|
@@ -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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"}
|
|
@@ -24,7 +24,9 @@ __export(version_exports, {
|
|
|
24
24
|
APP_UPLOAD_LAUNCH_CHECK_STATUS_VALUES: () => APP_UPLOAD_LAUNCH_CHECK_STATUS_VALUES,
|
|
25
25
|
APP_UPLOAD_SESSION_STATUS_VALUES: () => APP_UPLOAD_SESSION_STATUS_VALUES,
|
|
26
26
|
APP_VERSION_DESIGN_GROUP_VALUES: () => APP_VERSION_DESIGN_GROUP_VALUES,
|
|
27
|
+
APP_VERSION_DESIGN_PERSPECTIVE_TAG_REFS: () => APP_VERSION_DESIGN_PERSPECTIVE_TAG_REFS,
|
|
27
28
|
APP_VERSION_DESIGN_SHAPE_HELP: () => APP_VERSION_DESIGN_SHAPE_HELP,
|
|
29
|
+
APP_VERSION_DESIGN_TAG_GROUPS: () => APP_VERSION_DESIGN_TAG_GROUPS,
|
|
28
30
|
APP_VERSION_VISIBILITY_VALUES: () => APP_VERSION_VISIBILITY_VALUES,
|
|
29
31
|
DEFAULT_APP_AUTH_MODE: () => DEFAULT_APP_AUTH_MODE,
|
|
30
32
|
DEFAULT_APP_CONTROLLER_MODE: () => DEFAULT_APP_CONTROLLER_MODE,
|
|
@@ -108,112 +110,68 @@ function parseReviewState(value) {
|
|
|
108
110
|
const APP_VERSION_DESIGN_GROUP_VALUES = [
|
|
109
111
|
"genre",
|
|
110
112
|
"coreGameplay",
|
|
111
|
-
"
|
|
112
|
-
"
|
|
113
|
-
"
|
|
113
|
+
"perspective",
|
|
114
|
+
"controls",
|
|
115
|
+
"visualStyle",
|
|
114
116
|
"progression",
|
|
115
|
-
"
|
|
116
|
-
"coreAssets",
|
|
117
|
-
"assetStrategy",
|
|
118
|
-
"engine",
|
|
119
|
-
"features",
|
|
120
|
-
"references",
|
|
121
|
-
"fantasy",
|
|
122
|
-
"mascot",
|
|
123
|
-
"setting",
|
|
124
|
-
"palette",
|
|
125
|
-
"uiMaterial"
|
|
117
|
+
"feel"
|
|
126
118
|
];
|
|
127
119
|
const APP_VERSION_DESIGN_GROUPS = new Set(APP_VERSION_DESIGN_GROUP_VALUES);
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
progression: { cardinality: "one", values: ["endless", "levels", "waves", "rounds", "story"] },
|
|
137
|
-
artStyle: { cardinality: "one" },
|
|
138
|
-
coreAssets: { cardinality: "many", maxValues: 2 },
|
|
139
|
-
assetStrategy: { cardinality: "one", values: ["pack-first", "owned-assets", "mixed", "procedural"] },
|
|
140
|
-
engine: { cardinality: "one", values: ["phaser-2d", "three-js", "plain-html"] },
|
|
141
|
-
features: { cardinality: "many", values: ["multiplayer", "avatars", "achievements", "leaderboard", "saves", "ai-generation", "shop", "ads"] },
|
|
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" }
|
|
120
|
+
const APP_VERSION_DESIGN_TAG_GROUPS = {
|
|
121
|
+
genre: "game-genre",
|
|
122
|
+
coreGameplay: "core-gameplay",
|
|
123
|
+
perspective: "perspective",
|
|
124
|
+
controls: "game-controls",
|
|
125
|
+
visualStyle: "visual-style",
|
|
126
|
+
progression: "game-progression",
|
|
127
|
+
feel: "game-feel"
|
|
148
128
|
};
|
|
129
|
+
const APP_VERSION_DESIGN_PERSPECTIVE_TAG_REFS = [
|
|
130
|
+
"perspective/2d-fixed-screen",
|
|
131
|
+
"perspective/2d-side-view",
|
|
132
|
+
"perspective/2d-top-down",
|
|
133
|
+
"perspective/2d-isometric",
|
|
134
|
+
"perspective/3d-first-person",
|
|
135
|
+
"perspective/3d-third-person",
|
|
136
|
+
"perspective/3d-top-down",
|
|
137
|
+
"perspective/3d-isometric"
|
|
138
|
+
];
|
|
139
|
+
const APP_VERSION_DESIGN_PERSPECTIVE_TAG_REF_SET = new Set(APP_VERSION_DESIGN_PERSPECTIVE_TAG_REFS);
|
|
140
|
+
const APP_VERSION_DESIGN_SHAPE_HELP = 'Expected optional catalogue design shape: {"genre":"game-genre/puzzle","coreGameplay":"core-gameplay/merge","perspective":"perspective/2d-fixed-screen","controls":"game-controls/drag","visualStyle":"visual-style/stylized","progression":"game-progression/levels","feel":"game-feel/snappy"}. Every field is optional and may be blank or null. Each nonempty value must be one tag ref from its matching tag group. Perspective must be one of: perspective/2d-fixed-screen, perspective/2d-side-view, perspective/2d-top-down, perspective/2d-isometric, perspective/3d-first-person, perspective/3d-third-person, perspective/3d-top-down, perspective/3d-isometric.';
|
|
149
141
|
function formatAppVersionDesignError(error) {
|
|
150
142
|
return `${error}. ${APP_VERSION_DESIGN_SHAPE_HELP}`;
|
|
151
143
|
}
|
|
152
|
-
function
|
|
153
|
-
return typeof value === "string" && value.trim() ? value.trim() : null;
|
|
154
|
-
}
|
|
155
|
-
function normalizeAppVersionDesign(value, options = {}) {
|
|
144
|
+
function normalizeAppVersionDesign(value) {
|
|
156
145
|
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
157
146
|
return { ok: false, error: formatAppVersionDesignError("invalid_design") };
|
|
158
147
|
}
|
|
159
148
|
const record = value;
|
|
160
|
-
const allowedPackRefs = new Set((options.allowedPackRefs ?? []).map((ref) => ref.trim()).filter(Boolean));
|
|
161
149
|
const design = {};
|
|
162
|
-
for (const [
|
|
163
|
-
if (!APP_VERSION_DESIGN_GROUPS.has(
|
|
164
|
-
return { ok: false, error: formatAppVersionDesignError(`
|
|
165
|
-
}
|
|
166
|
-
const group = rawGroup;
|
|
167
|
-
if (!rawEntry || typeof rawEntry !== "object" || Array.isArray(rawEntry)) {
|
|
168
|
-
return { ok: false, error: formatAppVersionDesignError(`invalid_design_entry:${group}`) };
|
|
169
|
-
}
|
|
170
|
-
const entry = rawEntry;
|
|
171
|
-
for (const key of Object.keys(entry)) {
|
|
172
|
-
if (key !== "value" && key !== "values" && key !== "note") {
|
|
173
|
-
return { ok: false, error: formatAppVersionDesignError(`invalid_design_entry_key:${group}:${key}`) };
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
const hasValue = Object.prototype.hasOwnProperty.call(entry, "value");
|
|
177
|
-
const hasValues = Object.prototype.hasOwnProperty.call(entry, "values");
|
|
178
|
-
if (hasValue === hasValues) {
|
|
179
|
-
return { ok: false, error: formatAppVersionDesignError(`invalid_design_value_shape:${group}`) };
|
|
180
|
-
}
|
|
181
|
-
const rule = APP_VERSION_DESIGN_RULES[group];
|
|
182
|
-
const values = hasValue ? [normalizeDesignString(entry["value"])] : Array.isArray(entry["values"]) ? entry["values"].map((item) => normalizeDesignString(item)) : null;
|
|
183
|
-
if (!values || values.some((item) => item === null)) {
|
|
184
|
-
return { ok: false, error: formatAppVersionDesignError(`invalid_design_value:${group}`) };
|
|
185
|
-
}
|
|
186
|
-
const normalizedValues = Array.from(new Set(values));
|
|
187
|
-
if (rule.cardinality === "one" && normalizedValues.length !== 1) {
|
|
188
|
-
return { ok: false, error: formatAppVersionDesignError(`invalid_design_value_count:${group}`) };
|
|
150
|
+
for (const [rawField, rawValue] of Object.entries(record)) {
|
|
151
|
+
if (!APP_VERSION_DESIGN_GROUPS.has(rawField)) {
|
|
152
|
+
return { ok: false, error: formatAppVersionDesignError(`invalid_design_field:${rawField}`) };
|
|
189
153
|
}
|
|
190
|
-
|
|
191
|
-
|
|
154
|
+
const field = rawField;
|
|
155
|
+
if (rawValue === null || typeof rawValue === "string" && !rawValue.trim()) {
|
|
156
|
+
continue;
|
|
192
157
|
}
|
|
193
|
-
if (
|
|
194
|
-
|
|
195
|
-
const invalidValue = normalizedValues.find((item) => !allowedValues.has(item));
|
|
196
|
-
if (invalidValue) {
|
|
197
|
-
return { ok: false, error: formatAppVersionDesignError(`invalid_design_value:${group}:${invalidValue}`) };
|
|
198
|
-
}
|
|
158
|
+
if (typeof rawValue !== "string") {
|
|
159
|
+
return { ok: false, error: formatAppVersionDesignError(`invalid_design_tag_ref:${field}`) };
|
|
199
160
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
}
|
|
161
|
+
const tagRef = rawValue.trim().toLowerCase();
|
|
162
|
+
const separatorIndex = tagRef.indexOf("/");
|
|
163
|
+
if (separatorIndex <= 0 || separatorIndex !== tagRef.lastIndexOf("/") || separatorIndex === tagRef.length - 1) {
|
|
164
|
+
return { ok: false, error: formatAppVersionDesignError(`invalid_design_tag_ref:${field}:${rawValue.trim()}`) };
|
|
205
165
|
}
|
|
206
|
-
const
|
|
207
|
-
|
|
208
|
-
|
|
166
|
+
const expectedGroup = APP_VERSION_DESIGN_TAG_GROUPS[field];
|
|
167
|
+
const actualGroup = tagRef.slice(0, separatorIndex);
|
|
168
|
+
if (actualGroup !== expectedGroup) {
|
|
169
|
+
return { ok: false, error: formatAppVersionDesignError(`invalid_design_tag_group:${field}:${expectedGroup}:${actualGroup}`) };
|
|
209
170
|
}
|
|
210
|
-
if (
|
|
211
|
-
return { ok: false, error: formatAppVersionDesignError(`
|
|
171
|
+
if (field === "perspective" && !APP_VERSION_DESIGN_PERSPECTIVE_TAG_REF_SET.has(tagRef)) {
|
|
172
|
+
return { ok: false, error: formatAppVersionDesignError(`invalid_design_tag_value:${field}:${tagRef}`) };
|
|
212
173
|
}
|
|
213
|
-
design[
|
|
214
|
-
...rule.cardinality === "one" ? { value: normalizedValues[0] } : { values: normalizedValues },
|
|
215
|
-
...note ? { note } : {}
|
|
216
|
-
};
|
|
174
|
+
design[field] = tagRef;
|
|
217
175
|
}
|
|
218
176
|
return { ok: true, value: design };
|
|
219
177
|
}
|
|
@@ -288,7 +246,9 @@ const APP_UPLOAD_LAUNCH_CHECK_STATUS_VALUES = ["NOT_RUN", "PASSED", "FAILED"];
|
|
|
288
246
|
APP_UPLOAD_LAUNCH_CHECK_STATUS_VALUES,
|
|
289
247
|
APP_UPLOAD_SESSION_STATUS_VALUES,
|
|
290
248
|
APP_VERSION_DESIGN_GROUP_VALUES,
|
|
249
|
+
APP_VERSION_DESIGN_PERSPECTIVE_TAG_REFS,
|
|
291
250
|
APP_VERSION_DESIGN_SHAPE_HELP,
|
|
251
|
+
APP_VERSION_DESIGN_TAG_GROUPS,
|
|
292
252
|
APP_VERSION_VISIBILITY_VALUES,
|
|
293
253
|
DEFAULT_APP_AUTH_MODE,
|
|
294
254
|
DEFAULT_APP_CONTROLLER_MODE,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@playdrop/playdrop-cli",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.29",
|
|
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": {
|