@drawcall/market 0.1.29 → 0.1.31
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/README.md +135 -0
- package/dist/asset-implementation.d.ts +6 -1
- package/dist/asset-implementation.d.ts.map +1 -1
- package/dist/cli.js +3 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +2 -1
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/preview.d.ts +1 -1
- package/dist/commands/preview.d.ts.map +1 -1
- package/dist/commands/preview.js +18 -28
- package/dist/commands/preview.js.map +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +14 -0
- package/dist/constants.js.map +1 -1
- package/dist/contract.d.ts +7 -4
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +1 -1
- package/dist/contract.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/install.d.ts +1 -0
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +1 -0
- package/dist/install.js.map +1 -1
- package/dist/output.d.ts +1 -1
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +29 -2
- package/dist/output.js.map +1 -1
- package/dist/resolve.d.ts +1 -0
- package/dist/resolve.d.ts.map +1 -1
- package/dist/resolve.js +1 -0
- package/dist/resolve.js.map +1 -1
- package/dist/schemas.d.ts +6 -1
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +1 -0
- package/dist/schemas.js.map +1 -1
- package/package.json +1 -1
- package/src/asset-implementation.ts +6 -1
- package/src/cli.ts +8 -15
- package/src/commands/install.ts +3 -1
- package/src/commands/preview.ts +18 -37
- package/src/constants.ts +15 -0
- package/src/contract.ts +4 -2
- package/src/index.ts +6 -1
- package/src/install.ts +2 -0
- package/src/output.ts +33 -2
- package/src/resolve.ts +2 -0
- package/src/schemas.ts +1 -0
- package/tests/install-layout.test.ts +4 -0
- package/tests/output.test.ts +50 -5
package/dist/output.js
CHANGED
|
@@ -18,15 +18,19 @@ export function assetSearchResultLine(item, opts = {}) {
|
|
|
18
18
|
: '';
|
|
19
19
|
return `- ${assetVersionRef(item.name, item.latestVersion)} | ${item.type} | ${assetApproval(item.approved)}${description}`;
|
|
20
20
|
}
|
|
21
|
-
export function installResult(result) {
|
|
21
|
+
export function installResult(result, postInstallMessages = {}) {
|
|
22
22
|
const npmDependencies = Object.entries(result.npmDependencies);
|
|
23
23
|
const lines = ['Installed:'];
|
|
24
24
|
for (const asset of result.assets) {
|
|
25
25
|
const files = unique(asset.files);
|
|
26
|
-
lines.push(`- ${assetVersionRef(asset.name, asset.version)} (asset)`);
|
|
26
|
+
lines.push(`- ${assetVersionRef(asset.name, asset.version)} (${asset.type})`);
|
|
27
27
|
if (files.length > 0) {
|
|
28
28
|
lines.push(' files:', ...indent(fileTree(files), ' '));
|
|
29
29
|
}
|
|
30
|
+
const message = postInstallMessages[asset.type];
|
|
31
|
+
if (message) {
|
|
32
|
+
lines.push(...note(message));
|
|
33
|
+
}
|
|
30
34
|
}
|
|
31
35
|
if (npmDependencies.length > 0) {
|
|
32
36
|
lines.push(...npmDependencies
|
|
@@ -41,6 +45,29 @@ export function installResult(result) {
|
|
|
41
45
|
}
|
|
42
46
|
return lines.join('\n');
|
|
43
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Render an asset's post-install message as a `note:` block, word-wrapped with a
|
|
50
|
+
* hanging indent so continuation lines align under the message text.
|
|
51
|
+
*/
|
|
52
|
+
function note(message, width = 68) {
|
|
53
|
+
const label = ' note: ';
|
|
54
|
+
const hang = ' '.repeat(label.length);
|
|
55
|
+
const words = message.split(/\s+/).filter(Boolean);
|
|
56
|
+
const wrapped = [];
|
|
57
|
+
let line = '';
|
|
58
|
+
for (const word of words) {
|
|
59
|
+
if (line && (line + ' ' + word).length > width) {
|
|
60
|
+
wrapped.push(line);
|
|
61
|
+
line = word;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
line = line ? `${line} ${word}` : word;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (line)
|
|
68
|
+
wrapped.push(line);
|
|
69
|
+
return wrapped.map((text, index) => `${index === 0 ? label : hang}${text}`);
|
|
70
|
+
}
|
|
44
71
|
export function generatedInstallResult(name, version) {
|
|
45
72
|
return `Generated and installed ${assetVersionRef(name, version)}`;
|
|
46
73
|
}
|
package/dist/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,OAAgB;IAC5D,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAiB;IAC7C,OAAO,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAM7B;IACC,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,UAAU,CAAA;IAC7E,MAAM,KAAK,GAAG,UAAU,KAAK,CAAC,KAAK,UAAU,KAAK,CAAC,IAAI,aAAa,QAAQ,EAAE,CAAA;IAC9E,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,eAAe,KAAK,EAAE,CAAA;IAC/B,CAAC;IACD,OAAO,YAAY,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,CAAA;AAC1D,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAAuB,EACvB,OAA8B,EAAE;IAEhC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;QAClC,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAC5D,CAAC,CAAC,EAAE,CAAA;IACN,OAAO,KAAK,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,aAAa,CAC1F,IAAI,CAAC,QAAQ,CACd,GAAG,WAAW,EAAE,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,aAAa,
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
|
package/dist/resolve.d.ts
CHANGED
package/dist/resolve.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG/C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,aAAa,EAAE,CAAA;IACvB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC1C;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAC7B,QAAQ,EAAE,YAAY,EAAE,EACxB,IAAI,GAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAO,GACzC,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG/C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,aAAa,EAAE,CAAA;IACvB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC1C;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAC7B,QAAQ,EAAE,YAAY,EAAE,EACxB,IAAI,GAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAO,GACzC,OAAO,CAAC,aAAa,CAAC,CAgFxB"}
|
package/dist/resolve.js
CHANGED
|
@@ -49,6 +49,7 @@ export async function resolve(client, requests, opts = {}) {
|
|
|
49
49
|
const skillDeps = parseDependencies(meta.skillDependencies, assetName, 'skill');
|
|
50
50
|
resolved.set(assetName, {
|
|
51
51
|
name: assetName,
|
|
52
|
+
type: meta.type,
|
|
52
53
|
version: meta.latestVersion,
|
|
53
54
|
npmDependencies: npmDeps,
|
|
54
55
|
assetDependencies: assetDeps,
|
package/dist/resolve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"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"}
|
package/dist/schemas.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export declare const ASSET_TYPES: readonly ["model", "humanoid-model", "texture", "humanoid-animation", "template", "sound-effect", "background-music", "environment"];
|
|
2
|
+
export declare const ASSET_TYPES: readonly ["model", "humanoid-model", "texture", "humanoid-animation", "template", "sound-effect", "background-music", "environment", "tutorial"];
|
|
3
3
|
export type AssetType = (typeof ASSET_TYPES)[number];
|
|
4
4
|
export declare const assetTypeSchema: z.ZodEnum<{
|
|
5
5
|
model: "model";
|
|
@@ -10,6 +10,7 @@ export declare const assetTypeSchema: z.ZodEnum<{
|
|
|
10
10
|
"sound-effect": "sound-effect";
|
|
11
11
|
"background-music": "background-music";
|
|
12
12
|
environment: "environment";
|
|
13
|
+
tutorial: "tutorial";
|
|
13
14
|
}>;
|
|
14
15
|
export declare const MAX_UPLOAD_ZIP_SIZE_BYTES: number;
|
|
15
16
|
export declare const semverSchema: z.ZodString;
|
|
@@ -33,6 +34,7 @@ export declare const listAssetsSchema: z.ZodObject<{
|
|
|
33
34
|
"sound-effect": "sound-effect";
|
|
34
35
|
"background-music": "background-music";
|
|
35
36
|
environment: "environment";
|
|
37
|
+
tutorial: "tutorial";
|
|
36
38
|
}>>;
|
|
37
39
|
query: z.ZodOptional<z.ZodString>;
|
|
38
40
|
includeUnapproved: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -53,6 +55,7 @@ export declare const exactAssetSchema: z.ZodObject<{
|
|
|
53
55
|
"sound-effect": "sound-effect";
|
|
54
56
|
"background-music": "background-music";
|
|
55
57
|
environment: "environment";
|
|
58
|
+
tutorial: "tutorial";
|
|
56
59
|
}>>;
|
|
57
60
|
includeUnapproved: z.ZodDefault<z.ZodBoolean>;
|
|
58
61
|
}, z.core.$strip>;
|
|
@@ -67,6 +70,7 @@ export declare const uploadZipSchema: z.ZodObject<{
|
|
|
67
70
|
"sound-effect": "sound-effect";
|
|
68
71
|
"background-music": "background-music";
|
|
69
72
|
environment: "environment";
|
|
73
|
+
tutorial: "tutorial";
|
|
70
74
|
}>;
|
|
71
75
|
version: z.ZodString;
|
|
72
76
|
description: z.ZodOptional<z.ZodString>;
|
|
@@ -90,6 +94,7 @@ export declare const generateAssetSchema: z.ZodObject<{
|
|
|
90
94
|
"sound-effect": "sound-effect";
|
|
91
95
|
"background-music": "background-music";
|
|
92
96
|
environment: "environment";
|
|
97
|
+
tutorial: "tutorial";
|
|
93
98
|
}>>;
|
|
94
99
|
}, z.core.$strip>;
|
|
95
100
|
//# sourceMappingURL=schemas.d.ts.map
|
package/dist/schemas.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,WAAW,kJAUd,CAAA;AACV,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AAEpD,eAAO,MAAM,eAAe;;;;;;;;;;EAAsB,CAAA;AAElD,eAAO,MAAM,yBAAyB,QAAqB,CAAA;AAE3D,eAAO,MAAM,YAAY,aAKtB,CAAA;AAEH,eAAO,MAAM,eAAe,aAUxB,CAAA;AAEJ,eAAO,MAAM,qBAAqB,qDAA+C,CAAA;AAEjF,eAAO,MAAM,uBAAuB,qDAA+C,CAAA;AAKnF,eAAO,MAAM,uBAAuB,qDAA+C,CAAA;AAEnF,eAAO,MAAM,mBAAmB;;;iBAG9B,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;iBAO3B,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;iBAI3B,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;iBAS1B,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAA;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;iBAG9B,CAAA"}
|
package/dist/schemas.js
CHANGED
package/dist/schemas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO;IACP,gBAAgB;IAChB,SAAS;IACT,oBAAoB;IACpB,UAAU;IACV,cAAc;IACd,kBAAkB;IAClB,aAAa;
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO;IACP,gBAAgB;IAChB,SAAS;IACT,oBAAoB;IACpB,UAAU;IACV,cAAc;IACd,kBAAkB;IAClB,aAAa;IACb,UAAU;CACF,CAAA;AAGV,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;AAElD,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAE3D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,EAAE;KACR,KAAK,CACJ,oDAAoD,EACpD,6CAA6C,CAC9C,CAAA;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,GAAG,CAAC;KACR,KAAK,CACJ,8BAA8B,EAC9B,0EAA0E,CAC3E;KACA,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;IAC5C,OAAO,EAAE,0EAA0E;CACpF,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;AAEjF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;AAEnF,yEAAyE;AACzE,8EAA8E;AAC9E,4BAA4B;AAC5B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;AAEnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACnD,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACrC,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;CACxE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAE;IAChC,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC9C,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,YAAY;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAC5C,eAAe,EAAE,qBAAqB;IACtC,iBAAiB,EAAE,uBAAuB;IAC1C,iBAAiB,EAAE,uBAAuB;IAC1C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACtC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,YAAY;CACtB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IACxC,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -45,11 +45,16 @@ export interface AssetGenerateInput {
|
|
|
45
45
|
|
|
46
46
|
export interface AssetProvider {
|
|
47
47
|
type: AssetType
|
|
48
|
+
/**
|
|
49
|
+
* Shown to the user after an asset of this type is installed. Use it for
|
|
50
|
+
* type-specific guidance (where files landed, how to use them). Surfaced to
|
|
51
|
+
* the CLI through the `asset.postInstallMessages` contract procedure.
|
|
52
|
+
*/
|
|
53
|
+
postInstallMessage?: string
|
|
48
54
|
search(input: AssetSearchInput): Promise<PaginatedList<AssetSearchResult>>
|
|
49
55
|
exact(input: AssetExactInput): Promise<AssetSearchResult | null>
|
|
50
56
|
uploadZip(input: AssetUploadZipInput, owner: { id: string; role: string }): Promise<AssetVersion>
|
|
51
57
|
downloadZip(input: AssetDownloadZipInput): Promise<Blob>
|
|
52
|
-
downloadPreviewImage?(input: AssetDownloadZipInput): Promise<Blob>
|
|
53
58
|
generate?(input: AssetGenerateInput): Promise<GenerateAssetResult>
|
|
54
59
|
}
|
|
55
60
|
|
package/src/cli.ts
CHANGED
|
@@ -162,25 +162,18 @@ program
|
|
|
162
162
|
|
|
163
163
|
program
|
|
164
164
|
.command('preview')
|
|
165
|
-
.description(
|
|
165
|
+
.description("Save an asset's preview image")
|
|
166
166
|
.argument('<name>', 'Asset name')
|
|
167
|
-
.argument('[version]', 'Semver version')
|
|
168
167
|
.addOption(apiOption)
|
|
169
168
|
.option('--unapproved', 'Include unapproved versions', false)
|
|
170
169
|
.option('--out <file>', 'Output image path')
|
|
171
|
-
.action(
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
)
|
|
177
|
-
|
|
178
|
-
baseUrl: opts.api,
|
|
179
|
-
unapproved: opts.unapproved,
|
|
180
|
-
out: opts.out,
|
|
181
|
-
})
|
|
182
|
-
},
|
|
183
|
-
)
|
|
170
|
+
.action(async (name: string, opts: { api?: string; unapproved: boolean; out?: string }) => {
|
|
171
|
+
await previewCommand(name, {
|
|
172
|
+
baseUrl: opts.api,
|
|
173
|
+
unapproved: opts.unapproved,
|
|
174
|
+
out: opts.out,
|
|
175
|
+
})
|
|
176
|
+
})
|
|
184
177
|
|
|
185
178
|
program
|
|
186
179
|
.command('generate')
|
package/src/commands/install.ts
CHANGED
|
@@ -42,8 +42,10 @@ export async function installCommand(args: string[], opts: InstallCommandOptions
|
|
|
42
42
|
},
|
|
43
43
|
})
|
|
44
44
|
|
|
45
|
+
const messages = await client.asset.postInstallMessages()
|
|
46
|
+
|
|
45
47
|
spinner.stop()
|
|
46
|
-
console.log(installResult(result))
|
|
48
|
+
console.log(installResult(result, messages))
|
|
47
49
|
} catch (err) {
|
|
48
50
|
spinner.stop()
|
|
49
51
|
throw err
|
package/src/commands/preview.ts
CHANGED
|
@@ -3,7 +3,7 @@ import * as path from 'path'
|
|
|
3
3
|
import ora from 'ora'
|
|
4
4
|
import { getCliClient } from '../cli-client.js'
|
|
5
5
|
import { previewResult } from '../output.js'
|
|
6
|
-
import { assetNameSchema
|
|
6
|
+
import { assetNameSchema } from '../schemas.js'
|
|
7
7
|
|
|
8
8
|
export interface PreviewCommandOptions {
|
|
9
9
|
unapproved?: boolean
|
|
@@ -11,17 +11,8 @@ export interface PreviewCommandOptions {
|
|
|
11
11
|
baseUrl?: string
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export async function previewCommand(
|
|
15
|
-
name: string,
|
|
16
|
-
version: string | undefined,
|
|
17
|
-
opts: PreviewCommandOptions,
|
|
18
|
-
): Promise<void> {
|
|
14
|
+
export async function previewCommand(name: string, opts: PreviewCommandOptions): Promise<void> {
|
|
19
15
|
const parsedName = assetNameSchema.parse(name)
|
|
20
|
-
const parsedVersion = version ? semverSchema.parse(version) : undefined
|
|
21
|
-
// The asset name is globally unique, so the server resolves the type. Whether
|
|
22
|
-
// that type supports preview images is also a server concern: the API checks
|
|
23
|
-
// for a provider `downloadPreviewImage` capability and returns a clear,
|
|
24
|
-
// type-specific error rather than us mirroring a list that can drift.
|
|
25
16
|
|
|
26
17
|
const spinner = ora({
|
|
27
18
|
text: `Resolving preview for ${parsedName}`,
|
|
@@ -31,42 +22,32 @@ export async function previewCommand(
|
|
|
31
22
|
|
|
32
23
|
try {
|
|
33
24
|
const { client } = await getCliClient({ baseUrl: opts.baseUrl })
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
includeUnapproved: opts.unapproved ?? false,
|
|
40
|
-
})
|
|
41
|
-
)?.latestVersion
|
|
42
|
-
|
|
43
|
-
if (!resolvedVersion) {
|
|
25
|
+
const asset = await client.asset.exact({
|
|
26
|
+
name: parsedName,
|
|
27
|
+
includeUnapproved: opts.unapproved ?? false,
|
|
28
|
+
})
|
|
29
|
+
if (!asset) {
|
|
44
30
|
throw new Error(`Asset "${parsedName}" not found`)
|
|
45
31
|
}
|
|
32
|
+
if (!asset.previewUrl) {
|
|
33
|
+
throw new Error(`Asset "${parsedName}" has no preview image`)
|
|
34
|
+
}
|
|
46
35
|
|
|
47
|
-
spinner.text = `Downloading preview for ${parsedName}@${
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
const bytes = new Uint8Array(await
|
|
53
|
-
const out = path.resolve(
|
|
54
|
-
opts.out ?? `${parsedName}-${resolvedVersion}-preview${previewExtension(preview.type)}`,
|
|
55
|
-
)
|
|
36
|
+
spinner.text = `Downloading preview for ${parsedName}@${asset.latestVersion}`
|
|
37
|
+
const response = await fetch(asset.previewUrl)
|
|
38
|
+
if (!response.ok) {
|
|
39
|
+
throw new Error(`Failed to download preview (${response.status}) from ${asset.previewUrl}`)
|
|
40
|
+
}
|
|
41
|
+
const bytes = new Uint8Array(await response.arrayBuffer())
|
|
42
|
+
const out = path.resolve(opts.out ?? `${parsedName}-preview.webp`)
|
|
56
43
|
|
|
57
44
|
await fs.mkdir(path.dirname(out), { recursive: true })
|
|
58
45
|
await fs.writeFile(out, bytes)
|
|
59
46
|
|
|
60
47
|
spinner.stop()
|
|
61
|
-
console.log(previewResult(parsedName,
|
|
48
|
+
console.log(previewResult(parsedName, asset.latestVersion, out))
|
|
62
49
|
} catch (err) {
|
|
63
50
|
spinner.stop()
|
|
64
51
|
throw err
|
|
65
52
|
}
|
|
66
53
|
}
|
|
67
|
-
|
|
68
|
-
function previewExtension(contentType: string): string {
|
|
69
|
-
if (contentType === 'image/webp') return '.webp'
|
|
70
|
-
if (contentType === 'image/jpeg') return '.jpg'
|
|
71
|
-
return '.png'
|
|
72
|
-
}
|
package/src/constants.ts
CHANGED
|
@@ -11,6 +11,7 @@ export const ALLOWED_EXTENSIONS: Record<AssetType, string[]> = {
|
|
|
11
11
|
'sound-effect': ['.zip'],
|
|
12
12
|
'background-music': ['.zip'],
|
|
13
13
|
environment: ['.zip'],
|
|
14
|
+
tutorial: ['.zip'],
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
export const ASSET_TYPE_LABELS: Record<AssetType, string> = {
|
|
@@ -22,4 +23,18 @@ export const ASSET_TYPE_LABELS: Record<AssetType, string> = {
|
|
|
22
23
|
'sound-effect': 'Sound Effect',
|
|
23
24
|
'background-music': 'Background Music',
|
|
24
25
|
environment: 'Environment',
|
|
26
|
+
tutorial: 'Tutorial',
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** Human-facing category each asset type belongs to, for browsing the market. */
|
|
30
|
+
export const ASSET_TYPE_CATEGORIES: Record<AssetType, string> = {
|
|
31
|
+
model: 'Models',
|
|
32
|
+
'humanoid-model': 'Models',
|
|
33
|
+
'humanoid-animation': 'Animations',
|
|
34
|
+
texture: 'Materials',
|
|
35
|
+
environment: 'Environments',
|
|
36
|
+
'sound-effect': 'Audio',
|
|
37
|
+
'background-music': 'Audio',
|
|
38
|
+
template: 'Templates',
|
|
39
|
+
tutorial: 'Tutorials',
|
|
25
40
|
}
|
package/src/contract.ts
CHANGED
|
@@ -45,6 +45,8 @@ export interface AssetSearchResult {
|
|
|
45
45
|
npmDependencies: string
|
|
46
46
|
assetDependencies: string
|
|
47
47
|
skillDependencies: string
|
|
48
|
+
/** Public URL of the preview image, or null for types without one. */
|
|
49
|
+
previewUrl: string | null
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
export interface PaginatedList<T> {
|
|
@@ -91,9 +93,9 @@ export const contract = {
|
|
|
91
93
|
|
|
92
94
|
downloadZip: oc.input(downloadZipSchema).output(z.instanceof(Blob)),
|
|
93
95
|
|
|
94
|
-
downloadPreviewImage: oc.input(downloadZipSchema).output(z.instanceof(Blob)),
|
|
95
|
-
|
|
96
96
|
generate: oc.input(generateAssetSchema).output(z.custom<GenerateAssetResult>()),
|
|
97
|
+
|
|
98
|
+
postInstallMessages: oc.output(z.custom<Record<string, string>>()),
|
|
97
99
|
},
|
|
98
100
|
|
|
99
101
|
user: {
|
package/src/index.ts
CHANGED
|
@@ -54,4 +54,9 @@ export {
|
|
|
54
54
|
export type { AssetType } from './schemas.js'
|
|
55
55
|
|
|
56
56
|
// Constants
|
|
57
|
-
export {
|
|
57
|
+
export {
|
|
58
|
+
MAX_FILE_SIZE,
|
|
59
|
+
ALLOWED_EXTENSIONS,
|
|
60
|
+
ASSET_TYPE_LABELS,
|
|
61
|
+
ASSET_TYPE_CATEGORIES,
|
|
62
|
+
} from './constants.js'
|
package/src/install.ts
CHANGED
|
@@ -40,6 +40,7 @@ export interface InstallOptions {
|
|
|
40
40
|
|
|
41
41
|
export interface InstalledAsset {
|
|
42
42
|
name: string
|
|
43
|
+
type: string
|
|
43
44
|
version: string
|
|
44
45
|
files: string[]
|
|
45
46
|
}
|
|
@@ -136,6 +137,7 @@ async function downloadAssets(
|
|
|
136
137
|
|
|
137
138
|
installedAssets.push({
|
|
138
139
|
name: asset.name,
|
|
140
|
+
type: asset.type,
|
|
139
141
|
version: asset.version,
|
|
140
142
|
files: installedFiles,
|
|
141
143
|
})
|
package/src/output.ts
CHANGED
|
@@ -36,17 +36,24 @@ export function assetSearchResultLine(
|
|
|
36
36
|
)}${description}`
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
export function installResult(
|
|
39
|
+
export function installResult(
|
|
40
|
+
result: InstallResult,
|
|
41
|
+
postInstallMessages: Record<string, string> = {},
|
|
42
|
+
): string {
|
|
40
43
|
const npmDependencies = Object.entries(result.npmDependencies)
|
|
41
44
|
|
|
42
45
|
const lines = ['Installed:']
|
|
43
46
|
|
|
44
47
|
for (const asset of result.assets) {
|
|
45
48
|
const files = unique(asset.files)
|
|
46
|
-
lines.push(`- ${assetVersionRef(asset.name, asset.version)} (asset)`)
|
|
49
|
+
lines.push(`- ${assetVersionRef(asset.name, asset.version)} (${asset.type})`)
|
|
47
50
|
if (files.length > 0) {
|
|
48
51
|
lines.push(' files:', ...indent(fileTree(files), ' '))
|
|
49
52
|
}
|
|
53
|
+
const message = postInstallMessages[asset.type]
|
|
54
|
+
if (message) {
|
|
55
|
+
lines.push(...note(message))
|
|
56
|
+
}
|
|
50
57
|
}
|
|
51
58
|
|
|
52
59
|
if (npmDependencies.length > 0) {
|
|
@@ -69,6 +76,30 @@ export function installResult(result: InstallResult): string {
|
|
|
69
76
|
return lines.join('\n')
|
|
70
77
|
}
|
|
71
78
|
|
|
79
|
+
/**
|
|
80
|
+
* Render an asset's post-install message as a `note:` block, word-wrapped with a
|
|
81
|
+
* hanging indent so continuation lines align under the message text.
|
|
82
|
+
*/
|
|
83
|
+
function note(message: string, width = 68): string[] {
|
|
84
|
+
const label = ' note: '
|
|
85
|
+
const hang = ' '.repeat(label.length)
|
|
86
|
+
const words = message.split(/\s+/).filter(Boolean)
|
|
87
|
+
|
|
88
|
+
const wrapped: string[] = []
|
|
89
|
+
let line = ''
|
|
90
|
+
for (const word of words) {
|
|
91
|
+
if (line && (line + ' ' + word).length > width) {
|
|
92
|
+
wrapped.push(line)
|
|
93
|
+
line = word
|
|
94
|
+
} else {
|
|
95
|
+
line = line ? `${line} ${word}` : word
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (line) wrapped.push(line)
|
|
99
|
+
|
|
100
|
+
return wrapped.map((text, index) => `${index === 0 ? label : hang}${text}`)
|
|
101
|
+
}
|
|
102
|
+
|
|
72
103
|
export function generatedInstallResult(name: string, version: string): string {
|
|
73
104
|
return `Generated and installed ${assetVersionRef(name, version)}`
|
|
74
105
|
}
|
package/src/resolve.ts
CHANGED
|
@@ -15,6 +15,7 @@ import type { AssetSearchResult } from './contract.js'
|
|
|
15
15
|
|
|
16
16
|
export interface ResolvedAsset {
|
|
17
17
|
name: string
|
|
18
|
+
type: string
|
|
18
19
|
version: string
|
|
19
20
|
npmDependencies: Record<string, string>
|
|
20
21
|
assetDependencies: Record<string, string>
|
|
@@ -85,6 +86,7 @@ export async function resolve(
|
|
|
85
86
|
|
|
86
87
|
resolved.set(assetName, {
|
|
87
88
|
name: assetName,
|
|
89
|
+
type: meta.type,
|
|
88
90
|
version: meta.latestVersion,
|
|
89
91
|
npmDependencies: npmDeps,
|
|
90
92
|
assetDependencies: assetDeps,
|
package/src/schemas.ts
CHANGED
|
@@ -27,6 +27,7 @@ test('install writes zip files into the package root', async () => {
|
|
|
27
27
|
assets: [
|
|
28
28
|
{
|
|
29
29
|
name: 'idle-loop',
|
|
30
|
+
type: 'humanoid-animation',
|
|
30
31
|
version: '1.0.0',
|
|
31
32
|
npmDependencies: {},
|
|
32
33
|
assetDependencies: {},
|
|
@@ -43,6 +44,7 @@ test('install writes zip files into the package root', async () => {
|
|
|
43
44
|
assets: [
|
|
44
45
|
{
|
|
45
46
|
name: 'idle-loop',
|
|
47
|
+
type: 'humanoid-animation',
|
|
46
48
|
version: '1.0.0',
|
|
47
49
|
files: ['public/humanoid-animation/idle-loop.glb', 'src/generated/idle-loop.ts'],
|
|
48
50
|
},
|
|
@@ -75,6 +77,7 @@ test('install rejects zip paths that escape through parent segments', async () =
|
|
|
75
77
|
assets: [
|
|
76
78
|
{
|
|
77
79
|
name: 'bad-path',
|
|
80
|
+
type: 'template',
|
|
78
81
|
version: '1.0.0',
|
|
79
82
|
npmDependencies: {},
|
|
80
83
|
assetDependencies: {},
|
|
@@ -107,6 +110,7 @@ test('install runs the skills runner per dependency, resolving local paths again
|
|
|
107
110
|
assets: [
|
|
108
111
|
{
|
|
109
112
|
name: 'with-skills',
|
|
113
|
+
type: 'template',
|
|
110
114
|
version: '1.0.0',
|
|
111
115
|
npmDependencies: {},
|
|
112
116
|
assetDependencies: {},
|