@playdrop/playdrop-cli 0.17.5 → 0.17.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/README.md +12 -0
  2. package/config/client-meta.json +2 -2
  3. package/dist/apps/build.d.ts +2 -1
  4. package/dist/apps/build.js +6 -2
  5. package/dist/apps/index.d.ts +2 -3
  6. package/dist/apps/index.js +17 -49
  7. package/dist/apps/loadCheck.d.ts +3 -1
  8. package/dist/apps/loadCheck.js +123 -64
  9. package/dist/apps/publishingRuntime.d.ts +18 -0
  10. package/dist/apps/publishingRuntime.js +111 -0
  11. package/dist/apps/runtimeSyntax.d.ts +7 -0
  12. package/dist/apps/runtimeSyntax.js +154 -0
  13. package/dist/apps/serverBuild.d.ts +3 -3
  14. package/dist/apps/serverBuild.js +8 -43
  15. package/dist/apps/serverSdk.d.ts +23 -0
  16. package/dist/apps/serverSdk.js +157 -0
  17. package/dist/apps/upload.d.ts +9 -3
  18. package/dist/apps/upload.js +71 -25
  19. package/dist/apps/validate.d.ts +2 -1
  20. package/dist/apps/validate.js +3 -1
  21. package/dist/commandContext.js +34 -10
  22. package/dist/commands/build.js +3 -1
  23. package/dist/commands/create.js +35 -16
  24. package/dist/commands/dev.js +11 -0
  25. package/dist/commands/devGameServer.d.ts +8 -0
  26. package/dist/commands/devGameServer.js +12 -9
  27. package/dist/commands/devServer.d.ts +1 -0
  28. package/dist/commands/devServer.js +21 -3
  29. package/dist/commands/source.d.ts +11 -3
  30. package/dist/commands/source.js +82 -14
  31. package/dist/commands/taskCaptureSession.d.ts +1 -1
  32. package/dist/commands/taskCaptureSession.js +1 -1
  33. package/dist/commands/upload-content.js +13 -12
  34. package/dist/commands/upload.d.ts +2 -9
  35. package/dist/commands/upload.js +5 -21
  36. package/dist/commands/validate.js +1 -1
  37. package/dist/commands/worker/game-server-infra.d.ts +6 -0
  38. package/dist/commands/worker/game-server-infra.js +10 -0
  39. package/dist/commands/worker/game-source-git.d.ts +9 -1
  40. package/dist/commands/worker/game-source-git.js +65 -19
  41. package/dist/commands/worker/generation.d.ts +2 -0
  42. package/dist/commands/worker/generation.js +35 -5
  43. package/dist/commands/worker.d.ts +1 -1
  44. package/dist/commands/worker.js +57 -17
  45. package/dist/environment.d.ts +1 -0
  46. package/dist/environment.js +7 -0
  47. package/dist/index.js +10 -2
  48. package/dist/playwright.d.ts +6 -4
  49. package/dist/playwright.js +24 -9
  50. package/dist/proceduralValidation.d.ts +16 -0
  51. package/dist/proceduralValidation.js +227 -0
  52. package/dist/proceduralValidationBrowser.d.mts +3 -0
  53. package/dist/proceduralValidationBrowser.mjs +67 -0
  54. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts.map +1 -1
  55. package/node_modules/@playdrop/api-client/dist/domains/apps.js +11 -1
  56. package/node_modules/@playdrop/api-client/dist/domains/chat.d.ts +6 -1
  57. package/node_modules/@playdrop/api-client/dist/domains/chat.d.ts.map +1 -1
  58. package/node_modules/@playdrop/api-client/dist/domains/chat.js +13 -1
  59. package/node_modules/@playdrop/config/client-meta.json +2 -2
  60. package/node_modules/@playdrop/procedural/dist/index.d.ts +201 -0
  61. package/node_modules/@playdrop/procedural/dist/index.d.ts.map +1 -0
  62. package/node_modules/@playdrop/procedural/dist/index.js +763 -0
  63. package/node_modules/@playdrop/procedural/package.json +36 -0
  64. package/node_modules/@playdrop/types/dist/api.d.ts +37 -4
  65. package/node_modules/@playdrop/types/dist/api.d.ts.map +1 -1
  66. package/node_modules/@playdrop/types/dist/chat.d.ts +7 -1
  67. package/node_modules/@playdrop/types/dist/chat.d.ts.map +1 -1
  68. package/node_modules/@playdrop/types/dist/social.d.ts +20 -0
  69. package/node_modules/@playdrop/types/dist/social.d.ts.map +1 -1
  70. package/node_modules/@playdrop/types/dist/version.d.ts +2 -0
  71. package/node_modules/@playdrop/types/dist/version.d.ts.map +1 -1
  72. package/package.json +7 -4
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertProceduralAssetIsValid = assertProceduralAssetIsValid;
4
+ const procedural_1 = require("@playdrop/procedural");
5
+ const types_1 = require("@playdrop/types");
6
+ const esbuild_1 = require("esbuild");
7
+ const promises_1 = require("node:fs/promises");
8
+ const node_http_1 = require("node:http");
9
+ const node_path_1 = require("node:path");
10
+ const playwright_1 = require("./playwright");
11
+ const MODULE_TIMEOUT_MS = 30000;
12
+ let browserValidatorBundle;
13
+ async function resolveInputAsset(client, reference) {
14
+ const ref = (0, types_1.parseContentVersionRef)(reference);
15
+ if (!ref || ref.kind !== "asset")
16
+ throw new Error(`Expected an exact asset revision, received ${reference}`);
17
+ const { asset } = await client.fetchAssetBySlug(ref.creatorUsername, ref.name);
18
+ let version = asset.currentVersion?.revision === ref.revision ? asset.currentVersion : undefined;
19
+ for (let offset = 0; !version; offset += 100) {
20
+ const page = await client.listAssetVersions(ref.creatorUsername, ref.name, { limit: 100, offset });
21
+ version = page.versions.find((candidate) => candidate.revision === ref.revision);
22
+ if (!version && (page.versions.length < 100 || page.pagination?.hasMore === false))
23
+ break;
24
+ }
25
+ if (!version)
26
+ throw new Error(`Asset revision ${reference} was not found or is not accessible`);
27
+ const entries = version.fileManifest?.files;
28
+ if (!Array.isArray(entries))
29
+ throw new Error(`Asset revision ${reference} has no file manifest`);
30
+ const files = entries;
31
+ const primary = files.find((file) => file.role === (version.primaryRole ?? "primary"));
32
+ if (!primary?.url)
33
+ throw new Error(`Asset revision ${reference} is missing its primary file URL`);
34
+ return {
35
+ reference,
36
+ title: asset.displayName,
37
+ creator: asset.creatorUsername,
38
+ category: asset.category,
39
+ subcategory: version.subcategory,
40
+ format: version.format,
41
+ assetSpec: version.assetSpecVersionRef ?? null,
42
+ previewUrl: files.find((file) => file.role === "preview")?.url ?? null,
43
+ primary: { url: primary.url, contentType: primary.contentType ?? version.primaryContentType ?? null },
44
+ };
45
+ }
46
+ function loadBrowserValidator() {
47
+ browserValidatorBundle ?? (browserValidatorBundle = (0, esbuild_1.build)({
48
+ entryPoints: [(0, node_path_1.join)(__dirname, "proceduralValidationBrowser.mjs")],
49
+ bundle: true, format: "esm", platform: "browser", target: "es2022",
50
+ external: ["three"], write: false, logLevel: "silent",
51
+ }).then((result) => result.outputFiles[0].contents));
52
+ return browserValidatorBundle;
53
+ }
54
+ async function runModule(input) {
55
+ const [primary, validator] = await Promise.all([(0, promises_1.readFile)(input.primaryPath), loadBrowserValidator()]);
56
+ const threeRoot = (0, node_path_1.dirname)((0, node_path_1.dirname)(require.resolve("three")));
57
+ const assetOrigins = [...new Set(input.assets.map((asset) => new URL(asset.primary.url).origin))].join(" ");
58
+ const csp = [
59
+ "sandbox allow-scripts allow-downloads", "default-src 'none'",
60
+ "script-src 'self' 'unsafe-inline' blob:",
61
+ `connect-src 'self' ${assetOrigins}`, `img-src 'self' data: blob: ${assetOrigins}`,
62
+ "style-src 'self' 'unsafe-inline'", "worker-src blob:", "base-uri 'none'", "form-action 'none'",
63
+ ].join("; ");
64
+ // A real loopback document gives Chromium the correct network address space.
65
+ // Routing a synthetic document blocks native local asset requests from the opaque sandbox.
66
+ const server = (0, node_http_1.createServer)(async (request, response) => {
67
+ try {
68
+ const url = new URL(request.url ?? "/", origin);
69
+ response.setHeader("Access-Control-Allow-Origin", "*");
70
+ if (url.pathname === "/") {
71
+ response.writeHead(200, { "Content-Type": "text/html", "Content-Security-Policy": csp });
72
+ response.end(`<!doctype html><title>Procedural validation</title><script type="importmap">${JSON.stringify(importMap)}</script>`);
73
+ return;
74
+ }
75
+ if (url.href === primaryUrl || url.pathname === "/validator.mjs") {
76
+ // The creator's published module is served unchanged, never bundled or rewritten.
77
+ response.writeHead(200, { "Content-Type": "text/javascript" });
78
+ response.end(url.href === primaryUrl ? primary : validator);
79
+ return;
80
+ }
81
+ const vendorPrefix = "/vendor/three/0.183.2/";
82
+ if (url.pathname.startsWith(vendorPrefix)) {
83
+ const relativePath = decodeURIComponent(url.pathname.slice(vendorPrefix.length));
84
+ const sourceRoot = relativePath.startsWith("addons/") ? (0, node_path_1.join)(threeRoot, "examples", "jsm") : (0, node_path_1.join)(threeRoot, "build");
85
+ const sourcePath = (0, node_path_1.resolve)(sourceRoot, relativePath.replace(/^addons\//, ""));
86
+ if (sourcePath.startsWith(`${sourceRoot}${node_path_1.sep}`)) {
87
+ const bytes = await (0, promises_1.readFile)(sourcePath).catch(() => null);
88
+ if (bytes) {
89
+ response.writeHead(200, { "Content-Type": "text/javascript" });
90
+ response.end(bytes);
91
+ return;
92
+ }
93
+ }
94
+ }
95
+ response.writeHead(404, { "Content-Type": "text/plain" });
96
+ response.end("Resource is not provided by the standalone procedural viewer");
97
+ }
98
+ catch (error) {
99
+ response.writeHead(500, { "Content-Type": "text/plain" });
100
+ response.end(error instanceof Error ? error.message : String(error));
101
+ }
102
+ });
103
+ await new Promise((resolve, reject) => {
104
+ server.once("error", reject);
105
+ server.listen(0, "127.0.0.1", resolve);
106
+ });
107
+ const origin = `http://127.0.0.1:${server.address().port}`;
108
+ const primaryUrl = `${origin}/primary/${encodeURIComponent((0, node_path_1.basename)(input.primaryPath))}`;
109
+ const threeBase = `${origin}/vendor/three/0.183.2`;
110
+ // Keep the same import map and opaque sandbox as the hosted asset renderer.
111
+ const importMap = { imports: {
112
+ three: `${threeBase}/three.module.min.js`,
113
+ "three/addons/": `${threeBase}/addons/`,
114
+ "three/examples/jsm/": `${threeBase}/addons/`,
115
+ } };
116
+ try {
117
+ await (0, playwright_1.withBrowserValidationPage)(async ({ browser, page }) => {
118
+ await page.goto(origin, { waitUntil: "domcontentloaded", timeout: MODULE_TIMEOUT_MS });
119
+ let timeout;
120
+ let closingBrowser;
121
+ try {
122
+ const browserInput = { ...input, primaryPath: primaryUrl };
123
+ const result = await Promise.race([
124
+ page.evaluate(`import(${JSON.stringify(`${origin}/validator.mjs`)}).then(({ validateProceduralBrowser }) => validateProceduralBrowser(${JSON.stringify(browserInput)}))`),
125
+ new Promise((_resolve, reject) => {
126
+ timeout = setTimeout(() => {
127
+ reject(new Error("Module validation exceeded 30 seconds. Remove infinite loops or expensive work from module initialization, create(), controls, animations, and dispose()."));
128
+ // Browser control remains responsive even when the asset's renderer thread is stuck.
129
+ closingBrowser = browser.close();
130
+ }, MODULE_TIMEOUT_MS);
131
+ }),
132
+ ]);
133
+ if (!result.valid)
134
+ throw new Error(result.errors.join("; "));
135
+ }
136
+ finally {
137
+ clearTimeout(timeout);
138
+ await closingBrowser;
139
+ }
140
+ }, { viewport: { width: 256, height: 256 }, serviceWorkers: "block" });
141
+ }
142
+ finally {
143
+ await new Promise((resolve, reject) => {
144
+ server.close((error) => error ? reject(error) : resolve());
145
+ server.closeAllConnections();
146
+ });
147
+ }
148
+ }
149
+ /** The shared publication check used by task preflight, game, asset and pack uploads. */
150
+ async function assertProceduralAssetIsValid(task, input) {
151
+ if (task.subcategory !== "procedural" && !(task.category === "MODEL_3D" && task.format === "CUSTOM"))
152
+ return;
153
+ const label = `Procedural asset "${task.name}" (${task.cataloguePath})`;
154
+ try {
155
+ if (task.category !== "MODEL_3D" || task.subcategory !== "procedural" || task.format !== "CUSTOM") {
156
+ throw new Error('Set category to "MODEL_3D", subcategory to "procedural", and format to "CUSTOM"');
157
+ }
158
+ for (const role of (0, types_1.getRequiredModel3DFileRoles)("CUSTOM")) {
159
+ const path = task.filePaths[role];
160
+ if (!path)
161
+ throw new Error(`files.${role} is required`);
162
+ const file = await (0, promises_1.stat)(path).catch(() => null);
163
+ if (!file?.isFile() || file.size === 0)
164
+ throw new Error(`files.${role} (${path}) must be an existing, non-empty file`);
165
+ }
166
+ const primaryPath = task.filePaths.primary;
167
+ if ((0, node_path_1.extname)(primaryPath) !== ".mjs") {
168
+ throw new Error(`files.primary (${primaryPath}) must be compiled JavaScript in a standalone .mjs file, not TypeScript or a source archive`);
169
+ }
170
+ if (!["text/javascript", "application/javascript"].includes(input.primaryContentType.split(";")[0].trim().toLowerCase())) {
171
+ throw new Error(`files.primary (${primaryPath}) must be served as text/javascript or application/javascript, received ${input.primaryContentType}`);
172
+ }
173
+ let manifest;
174
+ try {
175
+ manifest = JSON.parse(await (0, promises_1.readFile)(task.filePaths.manifest, "utf8"));
176
+ }
177
+ catch (error) {
178
+ throw new Error(`files.manifest (${task.filePaths.manifest}) must contain valid JSON: ${error instanceof Error ? error.message : String(error)}`);
179
+ }
180
+ const validation = (0, procedural_1.validateProceduralManifest)(manifest);
181
+ if (!validation.valid)
182
+ throw new Error(`files.manifest (${task.filePaths.manifest}): ${validation.errors.join("; ")}`);
183
+ if (manifest.id !== task.name)
184
+ throw new Error(`manifest.id must equal catalogue asset name "${task.name}", received "${manifest.id}"`);
185
+ if (manifest.platformAssetRef !== null)
186
+ throw new Error("manifest.platformAssetRef must be null before publication");
187
+ if ((0, node_path_1.basename)(manifest.distFile) !== (0, node_path_1.basename)(primaryPath))
188
+ throw new Error(`manifest.distFile must name files.primary (${(0, node_path_1.basename)(primaryPath)})`);
189
+ const parameters = Object.fromEntries(Object.entries(manifest.parameters).map(([id, definition]) => [id, definition.default]));
190
+ for (const [id, value] of Object.entries(manifest.presentation?.parameters ?? {})) {
191
+ if (value !== undefined)
192
+ parameters[id] = value;
193
+ }
194
+ const parameterValidation = (0, procedural_1.validateCompleteProceduralParameters)(manifest.parameters, parameters);
195
+ if (!parameterValidation.valid)
196
+ throw new Error(`manifest.presentation.parameters: ${parameterValidation.errors.join("; ")}. Supply the required initial inputs in the presentation parameters`);
197
+ const assets = new Map();
198
+ for (const [id, definition] of Object.entries(manifest.parameters)) {
199
+ if (definition.type !== "asset")
200
+ continue;
201
+ const refs = new Set([definition.default, parameters[id]].filter((value) => typeof value === "string"));
202
+ for (const reference of refs) {
203
+ if (!input.client)
204
+ throw new Error(`parameters.${id}: authenticated PlayDrop access is required to resolve ${reference}`);
205
+ try {
206
+ const asset = assets.get(reference) ?? await resolveInputAsset(input.client, reference);
207
+ const compatibility = (0, procedural_1.validateResolvedAssetParameter)(definition, asset);
208
+ if (!compatibility.valid)
209
+ throw new Error(compatibility.errors.join("; "));
210
+ assets.set(reference, asset);
211
+ }
212
+ catch (error) {
213
+ throw new Error(`parameters.${id} (${reference}): ${error instanceof Error ? error.message : String(error)}`);
214
+ }
215
+ }
216
+ }
217
+ try {
218
+ await runModule({ primaryPath, manifest, parameters, assets: [...assets.values()] });
219
+ }
220
+ catch (error) {
221
+ throw new Error(`files.primary (${primaryPath}): ${error instanceof Error ? error.message : String(error)}`);
222
+ }
223
+ }
224
+ catch (error) {
225
+ throw new Error(`${label}: ${error instanceof Error ? error.message : String(error)}`);
226
+ }
227
+ }
@@ -0,0 +1,3 @@
1
+ import { type ProceduralValidationResult } from "@playdrop/procedural";
2
+ import type { ProceduralValidationInput } from "./proceduralValidation.js";
3
+ export declare function validateProceduralBrowser(input: ProceduralValidationInput): Promise<ProceduralValidationResult>;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ import { Object3D } from "three";
3
+ import { validateProceduralModule, } from "@playdrop/procedural";
4
+ async function loadAsset(asset) {
5
+ const contentType = asset.primary.contentType?.toLowerCase() ?? "";
6
+ let data;
7
+ if (contentType.includes("json")) {
8
+ const response = await fetch(asset.primary.url);
9
+ if (!response.ok)
10
+ throw new Error(`Unable to load ${asset.reference}: HTTP ${response.status}`);
11
+ data = await response.json();
12
+ }
13
+ else if (asset.category === "IMAGE" || contentType.startsWith("image/")) {
14
+ // GlbViewer passes a decoded HTMLImageElement, not Node's raw pixel buffer.
15
+ const image = new Image();
16
+ image.crossOrigin = "anonymous";
17
+ await new Promise((resolve, reject) => {
18
+ image.onload = () => resolve();
19
+ image.onerror = () => reject(new Error(`Unable to load ${asset.reference} image`));
20
+ image.src = asset.primary.url;
21
+ });
22
+ data = image;
23
+ }
24
+ else
25
+ return asset;
26
+ return { ...asset, primary: { ...asset.primary, data } };
27
+ }
28
+ export async function validateProceduralBrowser(input) {
29
+ try {
30
+ const imported = await import(input.primaryPath);
31
+ const module = (imported.default ?? imported);
32
+ if (!module?.info || typeof module.create !== "function")
33
+ throw new Error("Module must expose info and create()");
34
+ const assets = new Map();
35
+ for (const asset of input.assets)
36
+ assets.set(asset.reference, await loadAsset(asset));
37
+ const context = { parameters: input.parameters, resolveAsset: (reference) => assets.get(reference) ?? null };
38
+ return validateProceduralModule({
39
+ info: module.info,
40
+ create() {
41
+ const instance = module.create(context);
42
+ if (!(instance.object instanceof Object3D))
43
+ throw new Error("create() must expose an object built with the hosted Three.js 0.183.2 Object3D");
44
+ const controls = instance.capabilities?.controls;
45
+ if (Object.keys(input.parameters).length > 0 && !controls)
46
+ throw new Error("Procedural setup requires the controls capability");
47
+ controls?.configure(input.parameters);
48
+ const timeline = instance.capabilities?.timeline;
49
+ timeline?.pause();
50
+ if (input.manifest.presentation?.animation) {
51
+ const animation = input.manifest.presentation.animation;
52
+ if (!timeline)
53
+ throw new Error("Procedural preview animation requires the timeline capability");
54
+ timeline.play(animation.id);
55
+ timeline.pause();
56
+ timeline.seek(animation.time);
57
+ }
58
+ else
59
+ timeline?.seek(0);
60
+ return instance;
61
+ },
62
+ }, context, input.manifest);
63
+ }
64
+ catch (error) {
65
+ return { valid: false, errors: [error instanceof Error ? error.message : String(error)] };
66
+ }
67
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/domains/apps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/domains/apps.ts"],"names":[],"mappings":"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"}
@@ -678,13 +678,23 @@ function buildAppsApiClientMethods(input) {
678
678
  handleApiError({ status: response.status, body: parsed, headers: response.headers }, "download_app_source");
679
679
  }
680
680
  const blob = await response.blob();
681
- const filename = parseContentDispositionFilename(response.headers.get("content-disposition")) ?? `${name}-${normalizedVersion}-source.zip`;
681
+ const contentType = response.headers.get("content-type")?.split(";")[0]?.trim().toLowerCase();
682
+ const format = contentType === "application/x-git-bundle" ? "git-bundle" : contentType === "application/zip" ? "zip" : null;
683
+ if (!format)
684
+ throw new Error(`app_source_format_invalid: expected application/zip or application/x-git-bundle, received ${contentType ?? "no content type"}`);
685
+ const commitSha = response.headers.get("x-app-source-commit");
686
+ if (format === "git-bundle" && (!commitSha || !/^[0-9a-f]{40}$/.test(commitSha))) {
687
+ throw new Error("app_source_commit_missing: Git source download must identify the requested version commit");
688
+ }
689
+ const filename = parseContentDispositionFilename(response.headers.get("content-disposition")) ?? `${name}-${normalizedVersion}-source.${format === "git-bundle" ? "bundle" : "zip"}`;
682
690
  const headerSize = response.headers.get("content-length");
683
691
  const parsedSize = headerSize ? Number.parseInt(headerSize, 10) : Number.NaN;
684
692
  const checksumHeader = response.headers.get("x-app-source-checksum");
685
693
  return {
686
694
  blob,
687
695
  metadata: {
696
+ format,
697
+ ...commitSha ? { commitSha } : {},
688
698
  filename,
689
699
  sizeBytes: Number.isFinite(parsedSize) && parsedSize >= 0 ? parsedSize : blob.size,
690
700
  checksum: checksumHeader ?? null
@@ -1,4 +1,4 @@
1
- import type { ChatAttachmentUploadSession, ChatChannelReadResponse, ChatContact, ChatContactsResponse, ChatChannelsResponse, ChatConversation, ChatConversationResponse, ChatConversationsResponse, ChatMessageResponse, ChatMessagesResponse, ChatNotificationPreferences, ChatRealtimeEvent, PlayTradeRealtimeActivityFrame, PlayTradeRealtimeActivityUpdate, CreateChatMessageRequest, EditChatMessageRequest, PlatformFriendPresenceEntry, PlatformRealtimeTopic } from "@playdrop/types";
1
+ import type { ChatAttachmentUploadSession, ChatChannelReadResponse, ChatContact, ChatContactsResponse, ChatChannelsResponse, ChatConversation, ChatConversationResponse, ChatConversationsResponse, ChatMessageResponse, ChatMessagesResponse, ChatNotificationPreferences, ChatRealtimeEvent, CreationRealtimeUpdate, PlayTradeRealtimeActivityFrame, PlayTradeRealtimeActivityUpdate, CreateChatMessageRequest, EditChatMessageRequest, PlatformFriendPresenceEntry, PlatformRealtimeTopic } from "@playdrop/types";
2
2
  type ApiResponseLike<T> = {
3
3
  status: number;
4
4
  body: T;
@@ -69,10 +69,15 @@ export type ChatRealtimeConnectionOptions = {
69
69
  onPresenceUpdated?: (entry: PlatformFriendPresenceEntry) => void;
70
70
  onStateChange?: (state: ChatRealtimeConnectionState) => void;
71
71
  onResyncRequired?: (conversationId: string) => void;
72
+ onPlatformSubscribed?: (event: {
73
+ topic: PlatformRealtimeTopic;
74
+ eventVersion: string;
75
+ }) => void;
72
76
  onPlatformEvent?: (event: {
73
77
  topic: PlatformRealtimeTopic;
74
78
  eventVersion: string;
75
79
  resync: boolean;
80
+ creation?: CreationRealtimeUpdate;
76
81
  }) => void;
77
82
  onPlayTradeActivity?: (event: {
78
83
  type: "updated";
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/domains/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/domains/chat.ts"],"names":[],"mappings":"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"}
@@ -76,6 +76,12 @@ function parseRealtimeFrame(value) {
76
76
  return parsed;
77
77
  }
78
78
  if ((type === "platform.subscribed" || type === "platform.event" || type === "platform.resync_required") && typeof frame["topic"] === "string" && typeof frame["eventVersion"] === "string") {
79
+ if (type === "platform.event" && frame["topic"] === "creation") {
80
+ const creation = frame["creation"];
81
+ if (!creation || creation["kind"] !== "task.updated" && creation["kind"] !== "task.changed" || typeof creation["gameRef"] !== "string" || !Number.isInteger(creation["taskId"]) || !Number.isInteger(creation["attempt"]) || creation["kind"] === "task.updated" && (!creation["item"] || typeof creation["item"] !== "object") || creation["kind"] === "task.changed" && (!Array.isArray(creation["items"]) || !creation["conversation"] || !("game" in creation))) {
82
+ throw new Error("chat_realtime_invalid_creation_event");
83
+ }
84
+ }
79
85
  return parsed;
80
86
  }
81
87
  if (type === "error" && typeof frame["code"] === "string")
@@ -480,8 +486,14 @@ function buildChatApiClientMethods(input) {
480
486
  options.onPresenceUpdated?.(frame.entry);
481
487
  } else if (frame.type === "platform.subscribed") {
482
488
  platformSubscriptions.set(frame.topic, frame.eventVersion);
489
+ options.onPlatformSubscribed?.({ topic: frame.topic, eventVersion: frame.eventVersion });
483
490
  } else if (frame.type === "platform.event") {
484
- options.onPlatformEvent?.({ topic: frame.topic, eventVersion: frame.eventVersion, resync: false });
491
+ options.onPlatformEvent?.({
492
+ topic: frame.topic,
493
+ eventVersion: frame.eventVersion,
494
+ resync: false,
495
+ ...frame.topic === "creation" ? { creation: frame.creation } : {}
496
+ });
485
497
  platformSubscriptions.set(frame.topic, frame.eventVersion);
486
498
  } else if (frame.type === "platform.resync_required") {
487
499
  options.onPlatformEvent?.({ topic: frame.topic, eventVersion: frame.eventVersion, resync: true });
@@ -1,7 +1,7 @@
1
1
  {
2
- "version": "0.17.5",
2
+ "version": "0.17.15",
3
3
  "build": 1,
4
- "runtimeSdkVersion": "0.17.5",
4
+ "runtimeSdkVersion": "0.17.15",
5
5
  "runtimeSdkBuild": 1,
6
6
  "clients": {
7
7
  "all": {
@@ -0,0 +1,201 @@
1
+ import type * as THREE from "three";
2
+ export declare const PLAYDROP_PROCEDURAL_PROTOCOL: "playdrop-procedural@1";
3
+ export declare const PLAYDROP_PROCEDURAL_PACK_PROTOCOL: "playdrop-procedural-pack@1";
4
+ export declare const PLAYDROP_PROCEDURAL_MANIFEST_PROTOCOL: "playdrop-procedural-manifest@1";
5
+ export type ProceduralParameterValue = number | string | boolean | null;
6
+ export type ProceduralParameterValues = Record<string, ProceduralParameterValue>;
7
+ export interface ProceduralResolvedAssetV1 {
8
+ readonly reference: string;
9
+ readonly title: string;
10
+ readonly creator: string;
11
+ readonly category: "IMAGE" | "VIDEO" | "AUDIO" | "SPRITESHEET" | "MODEL_3D" | "CUSTOM";
12
+ readonly subcategory: string | null;
13
+ readonly format: string;
14
+ readonly assetSpec: string | null;
15
+ readonly previewUrl: string | null;
16
+ readonly primary: {
17
+ readonly url: string;
18
+ readonly contentType: string | null;
19
+ /** Parsed JSON for JSON-backed assets. Binary and media assets use url. */
20
+ readonly data?: unknown;
21
+ };
22
+ }
23
+ export declare const PROCEDURAL_PARAMETER_ICON_IDS: readonly ["adjust", "asset", "angle", "color", "count", "depth", "height", "length", "light", "material", "radius", "scale", "size", "toggle", "variation", "visibility", "width"];
24
+ export type ProceduralParameterIcon = (typeof PROCEDURAL_PARAMETER_ICON_IDS)[number];
25
+ export type ProceduralParameterAffects = "geometry" | "material" | "animation";
26
+ export type ProceduralParameterControl = "auto" | "slider" | "stepper" | "toggle" | "select" | "segmented" | "color" | "palette" | "asset";
27
+ export interface ProceduralParameterPresentation {
28
+ readonly icon?: ProceduralParameterIcon;
29
+ readonly control?: ProceduralParameterControl;
30
+ readonly unit?: string;
31
+ readonly precision?: number;
32
+ readonly order?: number;
33
+ }
34
+ interface ParameterBase<T extends ProceduralParameterValue> {
35
+ readonly label: string;
36
+ readonly default: T;
37
+ readonly description?: string;
38
+ readonly group?: string;
39
+ readonly affects?: ProceduralParameterAffects;
40
+ readonly presentation?: ProceduralParameterPresentation;
41
+ }
42
+ export interface NumberParameter extends ParameterBase<number> {
43
+ readonly type: "number";
44
+ readonly min: number;
45
+ readonly max: number;
46
+ readonly step: number;
47
+ }
48
+ export interface BooleanParameter extends ParameterBase<boolean> {
49
+ readonly type: "boolean";
50
+ }
51
+ export interface ColorParameter extends ParameterBase<string> {
52
+ readonly type: "color";
53
+ }
54
+ export interface ProceduralSelectOption {
55
+ readonly value: string;
56
+ readonly label: string;
57
+ readonly swatches?: readonly string[];
58
+ }
59
+ export interface SelectParameter extends ParameterBase<string> {
60
+ readonly type: "select";
61
+ readonly options: readonly (string | ProceduralSelectOption)[];
62
+ }
63
+ export interface AssetParameterAccepts {
64
+ readonly category?: ProceduralResolvedAssetV1["category"];
65
+ readonly subcategory?: string;
66
+ readonly formats?: readonly string[];
67
+ readonly assetSpec?: string;
68
+ }
69
+ export interface AssetParameter extends ParameterBase<string | null> {
70
+ readonly type: "asset";
71
+ readonly required?: boolean;
72
+ readonly accepts: AssetParameterAccepts;
73
+ }
74
+ export type ProceduralParameterDefinition = NumberParameter | BooleanParameter | ColorParameter | SelectParameter | AssetParameter;
75
+ export interface ProceduralAnimationDefinition {
76
+ readonly id: string;
77
+ readonly label: string;
78
+ readonly group?: string;
79
+ readonly duration: number;
80
+ readonly loop: boolean;
81
+ }
82
+ export type ProceduralPresentationScenePreset = "studio" | "light" | "dark" | "outdoor";
83
+ export type ProceduralPresentationCameraView = "perspective" | "front" | "side" | "top";
84
+ export interface ProceduralAssetPresentationV1 {
85
+ readonly parameters?: Partial<ProceduralParameterValues>;
86
+ readonly animation?: {
87
+ readonly id: string;
88
+ readonly time: number;
89
+ };
90
+ readonly scene?: ProceduralPresentationScenePreset;
91
+ readonly camera?: {
92
+ readonly view?: ProceduralPresentationCameraView;
93
+ /** Degrees clockwise around the asset from its front (+Z). */
94
+ readonly azimuth?: number;
95
+ /** Degrees above the floor. */
96
+ readonly elevation?: number;
97
+ /** Framing multiplier. Values above one add space around the asset. */
98
+ readonly padding?: number;
99
+ };
100
+ }
101
+ export interface ProceduralAssetInfoV1 {
102
+ readonly protocol: typeof PLAYDROP_PROCEDURAL_PROTOCOL;
103
+ readonly id: string;
104
+ readonly title: string;
105
+ readonly version: string;
106
+ readonly kind: "model" | "vfx" | "character";
107
+ readonly summary: string;
108
+ readonly tags: readonly string[];
109
+ readonly pack: {
110
+ readonly id: string;
111
+ readonly title: string;
112
+ readonly sourceProject: string;
113
+ };
114
+ readonly sourceEntry: string;
115
+ readonly distFile: string;
116
+ readonly requirements: {
117
+ readonly renderer: "webgl";
118
+ readonly three: "0.183.2";
119
+ };
120
+ /** Viewer-owned initial setup, also used to bake the catalogue thumbnail. */
121
+ readonly presentation?: ProceduralAssetPresentationV1;
122
+ readonly character?: {
123
+ readonly rig: string;
124
+ readonly skinProtocol: string;
125
+ readonly supportedTemplates: readonly string[];
126
+ readonly unitsPerMeter: number;
127
+ readonly boneCount: number;
128
+ };
129
+ }
130
+ export interface ProceduralControlsCapability {
131
+ readonly parameters: Readonly<Record<string, ProceduralParameterDefinition>>;
132
+ values(): Readonly<ProceduralParameterValues>;
133
+ configure(values: Partial<ProceduralParameterValues>): void;
134
+ }
135
+ export interface ProceduralSelectionCapability {
136
+ readonly parts: Readonly<Record<string, THREE.Object3D>>;
137
+ readonly sockets: Readonly<Record<string, THREE.Object3D>>;
138
+ }
139
+ export interface ProceduralTimelineCapability {
140
+ readonly animations: readonly ProceduralAnimationDefinition[];
141
+ play(id: string): void;
142
+ pause(): void;
143
+ seek(seconds: number): void;
144
+ }
145
+ export interface ProceduralCharacterCapability {
146
+ readonly rig: string;
147
+ readonly template: string;
148
+ readonly skinProtocol?: string;
149
+ readonly skinId?: string;
150
+ readonly unitsPerMeter: number;
151
+ readonly boneCount: number;
152
+ }
153
+ export interface ProceduralAssetCapabilities {
154
+ readonly controls?: ProceduralControlsCapability;
155
+ readonly selection?: ProceduralSelectionCapability;
156
+ readonly timeline?: ProceduralTimelineCapability;
157
+ readonly character?: ProceduralCharacterCapability;
158
+ }
159
+ export interface ProceduralAssetInstanceV1 {
160
+ readonly object: THREE.Object3D;
161
+ readonly capabilities?: ProceduralAssetCapabilities;
162
+ reset?(): void;
163
+ update?(deltaSeconds: number, elapsedSeconds: number): void;
164
+ dispose(): void;
165
+ }
166
+ export interface ProceduralAssetContextV1 {
167
+ readonly parameters?: Partial<ProceduralParameterValues>;
168
+ /** Host-provided access to assets referenced by typed asset parameters. */
169
+ readonly resolveAsset?: (reference: string) => ProceduralResolvedAssetV1 | null;
170
+ }
171
+ export interface ProceduralAssetModuleV1 {
172
+ readonly info: ProceduralAssetInfoV1;
173
+ create(context?: ProceduralAssetContextV1): ProceduralAssetInstanceV1;
174
+ }
175
+ export interface ProceduralManifestV1 extends ProceduralAssetInfoV1 {
176
+ readonly manifestProtocol: typeof PLAYDROP_PROCEDURAL_MANIFEST_PROTOCOL;
177
+ readonly platformAssetRef: string | null;
178
+ readonly parameters: Readonly<Record<string, ProceduralParameterDefinition>>;
179
+ readonly animations: readonly ProceduralAnimationDefinition[];
180
+ readonly parts: readonly string[];
181
+ readonly sockets: readonly string[];
182
+ readonly capabilities: {
183
+ readonly controls: boolean;
184
+ readonly selection: boolean;
185
+ readonly timeline: boolean;
186
+ readonly character: boolean;
187
+ };
188
+ }
189
+ export interface ProceduralValidationResult {
190
+ readonly valid: boolean;
191
+ readonly errors: readonly string[];
192
+ }
193
+ export declare function validateProceduralParameters(definitions: unknown, values: unknown): ProceduralValidationResult;
194
+ export declare function validateCompleteProceduralParameters(definitions: unknown, values: unknown): ProceduralValidationResult;
195
+ export declare function validateResolvedAssetParameter(definition: AssetParameter, asset: ProceduralResolvedAssetV1): ProceduralValidationResult;
196
+ export declare function requireResolvedAssetParameter(context: ProceduralAssetContextV1, id: string, definition: AssetParameter): ProceduralResolvedAssetV1;
197
+ export declare function validateProceduralManifest(value: unknown): ProceduralValidationResult;
198
+ /** Pass the publication manifest to also verify the viewer's advertised contract. */
199
+ export declare function validateProceduralModule(value: unknown, context?: ProceduralAssetContextV1, manifest?: ProceduralManifestV1): ProceduralValidationResult;
200
+ export {};
201
+ //# sourceMappingURL=index.d.ts.map