@drawcall/market 0.1.16 → 0.1.18
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/dist/commands/install.js +2 -2
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/preview.js +2 -2
- package/dist/commands/preview.js.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +4 -2
- package/dist/constants.js.map +1 -1
- package/dist/contract.d.ts +8 -4
- package/dist/contract.d.ts.map +1 -1
- package/dist/install-entry.d.ts +1 -1
- package/dist/install-entry.d.ts.map +1 -1
- package/dist/install.d.ts +10 -1
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +15 -4
- package/dist/install.js.map +1 -1
- package/dist/output.d.ts +2 -4
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +53 -5
- package/dist/output.js.map +1 -1
- package/dist/schemas.d.ts +11 -6
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +2 -1
- package/dist/schemas.js.map +1 -1
- package/dist/skill.d.ts +1 -1
- package/dist/skill.d.ts.map +1 -1
- package/dist/skill.js +2 -2
- package/package.json +1 -1
- package/src/commands/install.ts +2 -2
- package/src/commands/preview.ts +2 -2
- package/src/constants.ts +4 -2
- package/src/install-entry.ts +1 -1
- package/src/install.ts +32 -6
- package/src/output.ts +70 -5
- package/src/schemas.ts +2 -1
- package/src/skill.ts +2 -2
- package/tests/install-layout.test.ts +11 -1
- package/tests/output.test.ts +37 -0
package/dist/commands/install.js
CHANGED
|
@@ -22,14 +22,14 @@ export async function installCommand(args, opts) {
|
|
|
22
22
|
const resolution = await resolve(client.asset, requests, {
|
|
23
23
|
includeUnapproved: opts.unapproved ?? false,
|
|
24
24
|
});
|
|
25
|
-
await runInstall(client, resolution, {
|
|
25
|
+
const result = await runInstall(client, resolution, {
|
|
26
26
|
cwd: opts.cwd,
|
|
27
27
|
onProgress: (msg) => {
|
|
28
28
|
spinner.text = msg;
|
|
29
29
|
},
|
|
30
30
|
});
|
|
31
31
|
spinner.stop();
|
|
32
|
-
console.log(installResult(
|
|
32
|
+
console.log(installResult(result));
|
|
33
33
|
}
|
|
34
34
|
catch (err) {
|
|
35
35
|
spinner.stop();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,GAAiB,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAkB,MAAM,eAAe,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAe7E,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc,EAAE,IAA2B;IAC9E,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3E,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAEtC,MAAM,OAAO,GAAG,GAAG,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QACxC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;KAChC,CAAC,CAAC,KAAK,EAAE,CAAA;IACV,IAAI,CAAC;QACH,MAAM,QAAQ,GAAmB,EAAE,CAAA;QACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,GAAG,cAAc,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAA;YACjD,QAAQ,CAAC,IAAI,CACX,MAAM,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,CACzF,CAAA;QACH,CAAC;QAED,OAAO,CAAC,IAAI,GAAG,2BAA2B,CAAA;QAC1C,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE;YACvD,iBAAiB,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;SAC5C,CAAC,CAAA;QAEF,MAAM,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE;
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/preview.js
CHANGED
|
@@ -9,7 +9,7 @@ export async function previewCommand(name, version, opts) {
|
|
|
9
9
|
const parsedVersion = version ? semverSchema.parse(version) : undefined;
|
|
10
10
|
if (opts.type === 'humanoid-animation' ||
|
|
11
11
|
opts.type === 'template' ||
|
|
12
|
-
opts.type === 'sound-
|
|
12
|
+
opts.type === 'sound-effect') {
|
|
13
13
|
throw new Error(`Preview images are not supported for ${opts.type}`);
|
|
14
14
|
}
|
|
15
15
|
const spinner = ora({
|
|
@@ -22,7 +22,7 @@ export async function previewCommand(name, version, opts) {
|
|
|
22
22
|
const resolvedVersion = parsedVersion ??
|
|
23
23
|
(await client.asset.exact({
|
|
24
24
|
name: parsedName,
|
|
25
|
-
type: opts.type
|
|
25
|
+
type: opts.type,
|
|
26
26
|
includeUnapproved: opts.unapproved ?? false,
|
|
27
27
|
}))?.latestVersion;
|
|
28
28
|
if (!resolvedVersion) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAkB,MAAM,eAAe,CAAA;AAS7E,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,OAA2B,EAC3B,IAA2B;IAE3B,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACvE,IACE,IAAI,CAAC,IAAI,KAAK,oBAAoB;QAClC,IAAI,CAAC,IAAI,KAAK,UAAU;QACxB,IAAI,CAAC,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,cAAc,CAAA;AAExE,eAAO,MAAM,aAAa,QAA4B,CAAA;AAEtD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,cAAc,CAAA;AAExE,eAAO,MAAM,aAAa,QAA4B,CAAA;AAEtD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAO1D,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAOvD,CAAA"}
|
package/dist/constants.js
CHANGED
|
@@ -2,16 +2,18 @@ import { MAX_UPLOAD_ZIP_SIZE_BYTES } from './schemas.js';
|
|
|
2
2
|
export const MAX_FILE_SIZE = MAX_UPLOAD_ZIP_SIZE_BYTES;
|
|
3
3
|
export const ALLOWED_EXTENSIONS = {
|
|
4
4
|
model: ['.zip'],
|
|
5
|
+
'humanoid-model': ['.zip'],
|
|
5
6
|
texture: ['.zip'],
|
|
6
7
|
'humanoid-animation': ['.zip'],
|
|
7
8
|
template: ['.zip'],
|
|
8
|
-
'sound-
|
|
9
|
+
'sound-effect': ['.zip'],
|
|
9
10
|
};
|
|
10
11
|
export const ASSET_TYPE_LABELS = {
|
|
11
12
|
model: 'Model',
|
|
13
|
+
'humanoid-model': 'Humanoid Model',
|
|
12
14
|
texture: 'Texture',
|
|
13
15
|
'humanoid-animation': 'Humanoid Animation',
|
|
14
16
|
template: 'Template',
|
|
15
|
-
'sound-
|
|
17
|
+
'sound-effect': 'Sound Effect',
|
|
16
18
|
};
|
|
17
19
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAkB,MAAM,cAAc,CAAA;AAExE,MAAM,CAAC,MAAM,aAAa,GAAG,yBAAyB,CAAA;AAEtD,MAAM,CAAC,MAAM,kBAAkB,GAAgC;IAC7D,KAAK,EAAE,CAAC,MAAM,CAAC;IACf,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,oBAAoB,EAAE,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAkB,MAAM,cAAc,CAAA;AAExE,MAAM,CAAC,MAAM,aAAa,GAAG,yBAAyB,CAAA;AAEtD,MAAM,CAAC,MAAM,kBAAkB,GAAgC;IAC7D,KAAK,EAAE,CAAC,MAAM,CAAC;IACf,gBAAgB,EAAE,CAAC,MAAM,CAAC;IAC1B,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,oBAAoB,EAAE,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,cAAc,EAAE,CAAC,MAAM,CAAC;CACzB,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAA8B;IAC1D,KAAK,EAAE,OAAO;IACd,gBAAgB,EAAE,gBAAgB;IAClC,OAAO,EAAE,SAAS;IAClB,oBAAoB,EAAE,oBAAoB;IAC1C,QAAQ,EAAE,UAAU;IACpB,cAAc,EAAE,cAAc;CAC/B,CAAA"}
|
package/dist/contract.d.ts
CHANGED
|
@@ -60,10 +60,11 @@ export declare const contract: {
|
|
|
60
60
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
61
61
|
type: z.ZodOptional<z.ZodEnum<{
|
|
62
62
|
model: "model";
|
|
63
|
+
"humanoid-model": "humanoid-model";
|
|
63
64
|
texture: "texture";
|
|
64
65
|
"humanoid-animation": "humanoid-animation";
|
|
65
66
|
template: "template";
|
|
66
|
-
"sound-
|
|
67
|
+
"sound-effect": "sound-effect";
|
|
67
68
|
}>>;
|
|
68
69
|
query: z.ZodOptional<z.ZodString>;
|
|
69
70
|
includeUnapproved: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -77,10 +78,11 @@ export declare const contract: {
|
|
|
77
78
|
name: z.ZodString;
|
|
78
79
|
type: z.ZodOptional<z.ZodEnum<{
|
|
79
80
|
model: "model";
|
|
81
|
+
"humanoid-model": "humanoid-model";
|
|
80
82
|
texture: "texture";
|
|
81
83
|
"humanoid-animation": "humanoid-animation";
|
|
82
84
|
template: "template";
|
|
83
|
-
"sound-
|
|
85
|
+
"sound-effect": "sound-effect";
|
|
84
86
|
}>>;
|
|
85
87
|
includeUnapproved: z.ZodDefault<z.ZodBoolean>;
|
|
86
88
|
}, z.core.$strip>, z.ZodCustom<AssetSearchResult | null, AssetSearchResult | null>, Record<never, never>, Record<never, never>>;
|
|
@@ -88,10 +90,11 @@ export declare const contract: {
|
|
|
88
90
|
name: z.ZodString;
|
|
89
91
|
type: z.ZodEnum<{
|
|
90
92
|
model: "model";
|
|
93
|
+
"humanoid-model": "humanoid-model";
|
|
91
94
|
texture: "texture";
|
|
92
95
|
"humanoid-animation": "humanoid-animation";
|
|
93
96
|
template: "template";
|
|
94
|
-
"sound-
|
|
97
|
+
"sound-effect": "sound-effect";
|
|
95
98
|
}>;
|
|
96
99
|
version: z.ZodString;
|
|
97
100
|
description: z.ZodOptional<z.ZodString>;
|
|
@@ -112,10 +115,11 @@ export declare const contract: {
|
|
|
112
115
|
description: z.ZodString;
|
|
113
116
|
type: z.ZodOptional<z.ZodEnum<{
|
|
114
117
|
model: "model";
|
|
118
|
+
"humanoid-model": "humanoid-model";
|
|
115
119
|
texture: "texture";
|
|
116
120
|
"humanoid-animation": "humanoid-animation";
|
|
117
121
|
template: "template";
|
|
118
|
-
"sound-
|
|
122
|
+
"sound-effect": "sound-effect";
|
|
119
123
|
}>>;
|
|
120
124
|
}, z.core.$strip>, z.ZodCustom<GenerateAssetResult, GenerateAssetResult>, Record<never, never>, Record<never, never>>;
|
|
121
125
|
};
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAWvB,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,OAAO,CAAA;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAWvB,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,OAAO,CAAA;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA6B0B,MAAM;uBAAa,IAAI;;oBAAvB,MAAM;uBAAa,IAAI;;;;;;;CAIrE,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,QAAQ,CAAA"}
|
package/dist/install-entry.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ export type { MarketClient, MarketClientOptions } from './client.js';
|
|
|
3
3
|
export { resolve, ResolutionError } from './resolve.js';
|
|
4
4
|
export type { ResolvedAsset, ResolveResult } from './resolve.js';
|
|
5
5
|
export { install } from './install.js';
|
|
6
|
-
export type { InstallOptions } from './install.js';
|
|
6
|
+
export type { InstalledAsset, InstallOptions, InstallResult } from './install.js';
|
|
7
7
|
//# sourceMappingURL=install-entry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-entry.d.ts","sourceRoot":"","sources":["../src/install-entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEpE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACvD,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEhE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"install-entry.d.ts","sourceRoot":"","sources":["../src/install-entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEpE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACvD,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEhE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA"}
|
package/dist/install.d.ts
CHANGED
|
@@ -16,6 +16,15 @@ export interface InstallOptions {
|
|
|
16
16
|
/** Log progress */
|
|
17
17
|
onProgress?: (message: string) => void;
|
|
18
18
|
}
|
|
19
|
-
export
|
|
19
|
+
export interface InstalledAsset {
|
|
20
|
+
name: string;
|
|
21
|
+
version: string;
|
|
22
|
+
files: string[];
|
|
23
|
+
}
|
|
24
|
+
export interface InstallResult {
|
|
25
|
+
assets: InstalledAsset[];
|
|
26
|
+
npmDependencies: Record<string, string>;
|
|
27
|
+
}
|
|
28
|
+
export declare function install(client: MarketClient, resolution: ResolveResult, opts?: InstallOptions): Promise<InstallResult>;
|
|
20
29
|
export declare function findInstallRoot(cwd?: string): Promise<string>;
|
|
21
30
|
//# sourceMappingURL=install.d.ts.map
|
package/dist/install.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AASjD,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,mBAAmB;IACnB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,aAAa,EACzB,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AASjD,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,mBAAmB;IACnB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACxC;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,aAAa,EACzB,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,aAAa,CAAC,CAaxB;AAED,wBAAsB,eAAe,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBlF"}
|
package/dist/install.js
CHANGED
|
@@ -15,10 +15,14 @@ import { detectPackageManager, installDependencies } from 'nypm';
|
|
|
15
15
|
export async function install(client, resolution, opts = {}) {
|
|
16
16
|
const log = opts.onProgress ?? (() => { });
|
|
17
17
|
const installRoot = await findInstallRoot(opts.cwd ?? process.cwd());
|
|
18
|
-
await Promise.all([
|
|
18
|
+
const [assets] = await Promise.all([
|
|
19
19
|
downloadAssets(client, resolution, installRoot, log),
|
|
20
20
|
installNpmDeps(resolution, installRoot, log),
|
|
21
21
|
]);
|
|
22
|
+
return {
|
|
23
|
+
assets,
|
|
24
|
+
npmDependencies: resolution.npmDependencies,
|
|
25
|
+
};
|
|
22
26
|
}
|
|
23
27
|
export async function findInstallRoot(cwd = process.cwd()) {
|
|
24
28
|
const start = path.resolve(cwd);
|
|
@@ -36,11 +40,12 @@ export async function findInstallRoot(cwd = process.cwd()) {
|
|
|
36
40
|
return packageRoot ?? start;
|
|
37
41
|
}
|
|
38
42
|
async function downloadAssets(client, resolution, projectRoot, log) {
|
|
43
|
+
const installedAssets = [];
|
|
39
44
|
for (const asset of resolution.assets) {
|
|
40
45
|
log(`Downloading ${asset.name}@${asset.version}...`);
|
|
41
46
|
const zip = await client.asset.downloadZip({ name: asset.name, version: asset.version });
|
|
42
47
|
const files = unzipSync(new Uint8Array(await zip.arrayBuffer()));
|
|
43
|
-
|
|
48
|
+
const installedFiles = [];
|
|
44
49
|
for (const [relativePath, content] of Object.entries(files)) {
|
|
45
50
|
const zipPath = relativePath.replace(/\\/g, '/');
|
|
46
51
|
if (zipPath.split('/').includes('..') ||
|
|
@@ -57,10 +62,16 @@ async function downloadAssets(client, resolution, projectRoot, log) {
|
|
|
57
62
|
const filePath = path.join(projectRoot, normalizedPath);
|
|
58
63
|
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
59
64
|
await fs.writeFile(filePath, content);
|
|
60
|
-
installedFiles
|
|
65
|
+
installedFiles.push(normalizedPath);
|
|
61
66
|
}
|
|
62
|
-
|
|
67
|
+
installedAssets.push({
|
|
68
|
+
name: asset.name,
|
|
69
|
+
version: asset.version,
|
|
70
|
+
files: installedFiles,
|
|
71
|
+
});
|
|
72
|
+
log(`Downloaded ${installedFiles.length} files.`);
|
|
63
73
|
}
|
|
74
|
+
return installedAssets;
|
|
64
75
|
}
|
|
65
76
|
async function isFile(file) {
|
|
66
77
|
try {
|
package/dist/install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
package/dist/output.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AssetSearchResult } from './contract.js';
|
|
2
|
+
import type { InstallResult } from './install.js';
|
|
2
3
|
export declare function assetVersionRef(name: string, version?: string): string;
|
|
3
4
|
export declare function assetApproval(approved: boolean): 'approved' | 'unapproved';
|
|
4
5
|
export declare function searchSummary(input: {
|
|
@@ -11,10 +12,7 @@ export declare function searchSummary(input: {
|
|
|
11
12
|
export declare function assetSearchResultLine(item: AssetSearchResult, opts?: {
|
|
12
13
|
verbose?: boolean;
|
|
13
14
|
}): string;
|
|
14
|
-
export declare function installResult(
|
|
15
|
-
name: string;
|
|
16
|
-
version: string;
|
|
17
|
-
}>): string;
|
|
15
|
+
export declare function installResult(result: InstallResult): string;
|
|
18
16
|
export declare function generatedInstallResult(name: string, version: string): string;
|
|
19
17
|
export declare function uploadResult(name: string, version: string): string;
|
|
20
18
|
export declare function unchangedUploadResult(name: string, version: string): string;
|
package/dist/output.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEjD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,UAAU,GAAG,YAAY,CAE1E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,iBAAiB,EAAE,OAAO,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,GAAG,MAAM,CAOT;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,iBAAiB,EACvB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/B,MAAM,CAOR;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAsB3D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAK,GAAG,MAAM,CAGvD"}
|
package/dist/output.js
CHANGED
|
@@ -18,11 +18,22 @@ 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(
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
.
|
|
21
|
+
export function installResult(result) {
|
|
22
|
+
const npmDependencies = Object.entries(result.npmDependencies);
|
|
23
|
+
const lines = ['Installed:'];
|
|
24
|
+
for (const asset of result.assets) {
|
|
25
|
+
const files = unique(asset.files);
|
|
26
|
+
lines.push(`- ${assetVersionRef(asset.name, asset.version)} (asset)`);
|
|
27
|
+
if (files.length > 0) {
|
|
28
|
+
lines.push(' files:', ...indent(fileTree(files), ' '));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (npmDependencies.length > 0) {
|
|
32
|
+
lines.push(...npmDependencies
|
|
33
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
34
|
+
.map(([name, version]) => `- ${assetVersionRef(name, version)} (npm)`));
|
|
35
|
+
}
|
|
36
|
+
return lines.join('\n');
|
|
26
37
|
}
|
|
27
38
|
export function generatedInstallResult(name, version) {
|
|
28
39
|
return `Generated and installed ${assetVersionRef(name, version)}`;
|
|
@@ -49,4 +60,41 @@ export function compact(value, max = 96) {
|
|
|
49
60
|
const normalized = value.replace(/\s+/g, ' ').trim();
|
|
50
61
|
return normalized.length > max ? normalized.slice(0, max - 3) + '...' : normalized;
|
|
51
62
|
}
|
|
63
|
+
function fileTree(paths) {
|
|
64
|
+
const root = { children: new Map() };
|
|
65
|
+
for (const filePath of paths) {
|
|
66
|
+
const parts = filePath.split('/').filter(Boolean);
|
|
67
|
+
let node = root;
|
|
68
|
+
for (const part of parts) {
|
|
69
|
+
let child = node.children.get(part);
|
|
70
|
+
if (!child) {
|
|
71
|
+
child = { children: new Map() };
|
|
72
|
+
node.children.set(part, child);
|
|
73
|
+
}
|
|
74
|
+
node = child;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return renderFileTree(root);
|
|
78
|
+
}
|
|
79
|
+
function renderFileTree(node, prefix = '', showConnector = false) {
|
|
80
|
+
const entries = [...node.children.entries()].sort(([aName, aNode], [bName, bNode]) => {
|
|
81
|
+
const aIsDir = aNode.children.size > 0;
|
|
82
|
+
const bIsDir = bNode.children.size > 0;
|
|
83
|
+
if (aIsDir !== bIsDir)
|
|
84
|
+
return aIsDir ? -1 : 1;
|
|
85
|
+
return aName.localeCompare(bName);
|
|
86
|
+
});
|
|
87
|
+
return entries.flatMap(([name, child], index) => {
|
|
88
|
+
const isLast = index === entries.length - 1;
|
|
89
|
+
const connector = showConnector ? (isLast ? '└─ ' : '├─ ') : '';
|
|
90
|
+
const childPrefix = showConnector ? prefix + (isLast ? ' ' : '│ ') : '';
|
|
91
|
+
return [`${prefix}${connector}${name}`, ...renderFileTree(child, childPrefix, true)];
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
function unique(values) {
|
|
95
|
+
return [...new Set(values)];
|
|
96
|
+
}
|
|
97
|
+
function indent(lines, prefix) {
|
|
98
|
+
return lines.map((line) => `${prefix}${line}`);
|
|
99
|
+
}
|
|
52
100
|
//# sourceMappingURL=output.js.map
|
package/dist/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
|
package/dist/schemas.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export declare const ASSET_TYPES: readonly ["model", "texture", "humanoid-animation", "template", "sound-
|
|
2
|
+
export declare const ASSET_TYPES: readonly ["model", "humanoid-model", "texture", "humanoid-animation", "template", "sound-effect"];
|
|
3
3
|
export type AssetType = (typeof ASSET_TYPES)[number];
|
|
4
4
|
export declare const assetTypeSchema: z.ZodEnum<{
|
|
5
5
|
model: "model";
|
|
6
|
+
"humanoid-model": "humanoid-model";
|
|
6
7
|
texture: "texture";
|
|
7
8
|
"humanoid-animation": "humanoid-animation";
|
|
8
9
|
template: "template";
|
|
9
|
-
"sound-
|
|
10
|
+
"sound-effect": "sound-effect";
|
|
10
11
|
}>;
|
|
11
12
|
export declare const MAX_UPLOAD_ZIP_SIZE_BYTES: number;
|
|
12
13
|
export declare const semverSchema: z.ZodString;
|
|
@@ -22,10 +23,11 @@ export declare const listAssetsSchema: z.ZodObject<{
|
|
|
22
23
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
23
24
|
type: z.ZodOptional<z.ZodEnum<{
|
|
24
25
|
model: "model";
|
|
26
|
+
"humanoid-model": "humanoid-model";
|
|
25
27
|
texture: "texture";
|
|
26
28
|
"humanoid-animation": "humanoid-animation";
|
|
27
29
|
template: "template";
|
|
28
|
-
"sound-
|
|
30
|
+
"sound-effect": "sound-effect";
|
|
29
31
|
}>>;
|
|
30
32
|
query: z.ZodOptional<z.ZodString>;
|
|
31
33
|
includeUnapproved: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -39,10 +41,11 @@ export declare const exactAssetSchema: z.ZodObject<{
|
|
|
39
41
|
name: z.ZodString;
|
|
40
42
|
type: z.ZodOptional<z.ZodEnum<{
|
|
41
43
|
model: "model";
|
|
44
|
+
"humanoid-model": "humanoid-model";
|
|
42
45
|
texture: "texture";
|
|
43
46
|
"humanoid-animation": "humanoid-animation";
|
|
44
47
|
template: "template";
|
|
45
|
-
"sound-
|
|
48
|
+
"sound-effect": "sound-effect";
|
|
46
49
|
}>>;
|
|
47
50
|
includeUnapproved: z.ZodDefault<z.ZodBoolean>;
|
|
48
51
|
}, z.core.$strip>;
|
|
@@ -50,10 +53,11 @@ export declare const uploadZipSchema: z.ZodObject<{
|
|
|
50
53
|
name: z.ZodString;
|
|
51
54
|
type: z.ZodEnum<{
|
|
52
55
|
model: "model";
|
|
56
|
+
"humanoid-model": "humanoid-model";
|
|
53
57
|
texture: "texture";
|
|
54
58
|
"humanoid-animation": "humanoid-animation";
|
|
55
59
|
template: "template";
|
|
56
|
-
"sound-
|
|
60
|
+
"sound-effect": "sound-effect";
|
|
57
61
|
}>;
|
|
58
62
|
version: z.ZodString;
|
|
59
63
|
description: z.ZodOptional<z.ZodString>;
|
|
@@ -69,10 +73,11 @@ export declare const generateAssetSchema: z.ZodObject<{
|
|
|
69
73
|
description: z.ZodString;
|
|
70
74
|
type: z.ZodOptional<z.ZodEnum<{
|
|
71
75
|
model: "model";
|
|
76
|
+
"humanoid-model": "humanoid-model";
|
|
72
77
|
texture: "texture";
|
|
73
78
|
"humanoid-animation": "humanoid-animation";
|
|
74
79
|
template: "template";
|
|
75
|
-
"sound-
|
|
80
|
+
"sound-effect": "sound-effect";
|
|
76
81
|
}>>;
|
|
77
82
|
}, z.core.$strip>;
|
|
78
83
|
//# 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,mGAOd,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;AAEnF,eAAO,MAAM,mBAAmB;;;iBAG9B,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;iBAO3B,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;iBAI3B,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;iBAQ1B,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAA;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;iBAG9B,CAAA"}
|
package/dist/schemas.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export const ASSET_TYPES = [
|
|
3
3
|
'model',
|
|
4
|
+
'humanoid-model',
|
|
4
5
|
'texture',
|
|
5
6
|
'humanoid-animation',
|
|
6
7
|
'template',
|
|
7
|
-
'sound-
|
|
8
|
+
'sound-effect',
|
|
8
9
|
];
|
|
9
10
|
export const assetTypeSchema = z.enum(ASSET_TYPES);
|
|
10
11
|
export const MAX_UPLOAD_ZIP_SIZE_BYTES = 1024 * 1024 * 1024;
|
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,SAAS;IACT,oBAAoB;IACpB,UAAU;IACV,
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
|
package/dist/skill.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const marketSkill = "---\nname: market\ndescription: Find, preview, install, generate, and publish Drawcall Market assets from a coding agent.\n---\n\n# Drawcall Market\n\nUse the `market` CLI. Keep commands short and read the summary line plus asset bullets.\n\n## Quick Start\n\n```sh\nmarket search \"wooden chair\" --type model --limit 3\nmarket install wooden-chair --type model --cwd \"$PWD\"\nmarket preview wooden-chair --out /tmp/wooden-chair.png\n```\n\n## Workflow\n\n1. Search first unless the user gave an exact asset name.\n2. Search requires `--type`; use `model` unless the user names another supported type: `texture`, `humanoid-animation`, `template`, or `sound-
|
|
1
|
+
export declare const marketSkill = "---\nname: market\ndescription: Find, preview, install, generate, and publish Drawcall Market assets from a coding agent.\n---\n\n# Drawcall Market\n\nUse the `market` CLI. Keep commands short and read the summary line plus asset bullets.\n\n## Quick Start\n\n```sh\nmarket search \"wooden chair\" --type model --limit 3\nmarket install wooden-chair --type model --cwd \"$PWD\"\nmarket preview wooden-chair --out /tmp/wooden-chair.png\n```\n\n## Workflow\n\n1. Search first unless the user gave an exact asset name.\n2. Search requires `--type`; use `model` unless the user names another supported type: `humanoid-model`, `texture`, `humanoid-animation`, `template`, or `sound-effect`.\n3. Use `--limit 1` for lookup, `--limit 3` for choice. Search caps at 5.\n4. Use `--verbose` only when the one-line descriptions are not enough.\n5. Use `--unapproved` only when the user asks for unapproved/private/admin assets. Do not install unapproved assets without explicit acceptance.\n6. Preview before installing when visual fit matters: `market preview <name> --out <file>`. Preview is not supported for `humanoid-animation`, `template`, or `sound-effect`.\n7. Generate only when the user wants a new asset and auth is available. Generate is not supported for `template`.\n8. Upload only when publishing is requested.\n\n## Output\n\nCommands print concise summaries:\n\n```text\nResults: 2/8 query=\"wooden chair\" type=model approval=approved\n- wooden-chair@1.0.0 | model | approved | Low-poly wooden chair\nInstalled 1 asset: wooden-chair@1.0.0\nSaved preview for wooden-chair@1.0.0: /tmp/wooden-chair.png\n```\n\nIf search returns no results, try one broader noun phrase before generating. If a command returns `Error: Not logged in...`, ask before running `market login`.\n";
|
|
2
2
|
//# sourceMappingURL=skill.d.ts.map
|
package/dist/skill.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,ovDAwCvB,CAAA"}
|
package/dist/skill.js
CHANGED
|
@@ -18,11 +18,11 @@ market preview wooden-chair --out /tmp/wooden-chair.png
|
|
|
18
18
|
## Workflow
|
|
19
19
|
|
|
20
20
|
1. Search first unless the user gave an exact asset name.
|
|
21
|
-
2. Search requires \`--type\`; use \`model\` unless the user names another supported type: \`texture\`, \`humanoid-animation\`, \`template\`, or \`sound-
|
|
21
|
+
2. Search requires \`--type\`; use \`model\` unless the user names another supported type: \`humanoid-model\`, \`texture\`, \`humanoid-animation\`, \`template\`, or \`sound-effect\`.
|
|
22
22
|
3. Use \`--limit 1\` for lookup, \`--limit 3\` for choice. Search caps at 5.
|
|
23
23
|
4. Use \`--verbose\` only when the one-line descriptions are not enough.
|
|
24
24
|
5. Use \`--unapproved\` only when the user asks for unapproved/private/admin assets. Do not install unapproved assets without explicit acceptance.
|
|
25
|
-
6. Preview before installing when visual fit matters: \`market preview <name> --out <file>\`. Preview is not supported for \`humanoid-animation\`, \`template\`, or \`sound-
|
|
25
|
+
6. Preview before installing when visual fit matters: \`market preview <name> --out <file>\`. Preview is not supported for \`humanoid-animation\`, \`template\`, or \`sound-effect\`.
|
|
26
26
|
7. Generate only when the user wants a new asset and auth is available. Generate is not supported for \`template\`.
|
|
27
27
|
8. Upload only when publishing is requested.
|
|
28
28
|
|
package/package.json
CHANGED
package/src/commands/install.ts
CHANGED
|
@@ -41,7 +41,7 @@ export async function installCommand(args: string[], opts: InstallCommandOptions
|
|
|
41
41
|
includeUnapproved: opts.unapproved ?? false,
|
|
42
42
|
})
|
|
43
43
|
|
|
44
|
-
await runInstall(client, resolution, {
|
|
44
|
+
const result = await runInstall(client, resolution, {
|
|
45
45
|
cwd: opts.cwd,
|
|
46
46
|
onProgress: (msg) => {
|
|
47
47
|
spinner.text = msg
|
|
@@ -49,7 +49,7 @@ export async function installCommand(args: string[], opts: InstallCommandOptions
|
|
|
49
49
|
})
|
|
50
50
|
|
|
51
51
|
spinner.stop()
|
|
52
|
-
console.log(installResult(
|
|
52
|
+
console.log(installResult(result))
|
|
53
53
|
} catch (err) {
|
|
54
54
|
spinner.stop()
|
|
55
55
|
throw err
|
package/src/commands/preview.ts
CHANGED
|
@@ -22,7 +22,7 @@ export async function previewCommand(
|
|
|
22
22
|
if (
|
|
23
23
|
opts.type === 'humanoid-animation' ||
|
|
24
24
|
opts.type === 'template' ||
|
|
25
|
-
opts.type === 'sound-
|
|
25
|
+
opts.type === 'sound-effect'
|
|
26
26
|
) {
|
|
27
27
|
throw new Error(`Preview images are not supported for ${opts.type}`)
|
|
28
28
|
}
|
|
@@ -40,7 +40,7 @@ export async function previewCommand(
|
|
|
40
40
|
(
|
|
41
41
|
await client.asset.exact({
|
|
42
42
|
name: parsedName,
|
|
43
|
-
type: opts.type
|
|
43
|
+
type: opts.type,
|
|
44
44
|
includeUnapproved: opts.unapproved ?? false,
|
|
45
45
|
})
|
|
46
46
|
)?.latestVersion
|
package/src/constants.ts
CHANGED
|
@@ -4,16 +4,18 @@ export const MAX_FILE_SIZE = MAX_UPLOAD_ZIP_SIZE_BYTES
|
|
|
4
4
|
|
|
5
5
|
export const ALLOWED_EXTENSIONS: Record<AssetType, string[]> = {
|
|
6
6
|
model: ['.zip'],
|
|
7
|
+
'humanoid-model': ['.zip'],
|
|
7
8
|
texture: ['.zip'],
|
|
8
9
|
'humanoid-animation': ['.zip'],
|
|
9
10
|
template: ['.zip'],
|
|
10
|
-
'sound-
|
|
11
|
+
'sound-effect': ['.zip'],
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
export const ASSET_TYPE_LABELS: Record<AssetType, string> = {
|
|
14
15
|
model: 'Model',
|
|
16
|
+
'humanoid-model': 'Humanoid Model',
|
|
15
17
|
texture: 'Texture',
|
|
16
18
|
'humanoid-animation': 'Humanoid Animation',
|
|
17
19
|
template: 'Template',
|
|
18
|
-
'sound-
|
|
20
|
+
'sound-effect': 'Sound Effect',
|
|
19
21
|
}
|
package/src/install-entry.ts
CHANGED
|
@@ -5,4 +5,4 @@ export { resolve, ResolutionError } from './resolve.js'
|
|
|
5
5
|
export type { ResolvedAsset, ResolveResult } from './resolve.js'
|
|
6
6
|
|
|
7
7
|
export { install } from './install.js'
|
|
8
|
-
export type { InstallOptions } from './install.js'
|
|
8
|
+
export type { InstalledAsset, InstallOptions, InstallResult } from './install.js'
|
package/src/install.ts
CHANGED
|
@@ -30,18 +30,34 @@ export interface InstallOptions {
|
|
|
30
30
|
onProgress?: (message: string) => void
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
export interface InstalledAsset {
|
|
34
|
+
name: string
|
|
35
|
+
version: string
|
|
36
|
+
files: string[]
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface InstallResult {
|
|
40
|
+
assets: InstalledAsset[]
|
|
41
|
+
npmDependencies: Record<string, string>
|
|
42
|
+
}
|
|
43
|
+
|
|
33
44
|
export async function install(
|
|
34
45
|
client: MarketClient,
|
|
35
46
|
resolution: ResolveResult,
|
|
36
47
|
opts: InstallOptions = {},
|
|
37
|
-
): Promise<
|
|
48
|
+
): Promise<InstallResult> {
|
|
38
49
|
const log = opts.onProgress ?? (() => {})
|
|
39
50
|
const installRoot = await findInstallRoot(opts.cwd ?? process.cwd())
|
|
40
51
|
|
|
41
|
-
await Promise.all([
|
|
52
|
+
const [assets] = await Promise.all([
|
|
42
53
|
downloadAssets(client, resolution, installRoot, log),
|
|
43
54
|
installNpmDeps(resolution, installRoot, log),
|
|
44
55
|
])
|
|
56
|
+
|
|
57
|
+
return {
|
|
58
|
+
assets,
|
|
59
|
+
npmDependencies: resolution.npmDependencies,
|
|
60
|
+
}
|
|
45
61
|
}
|
|
46
62
|
|
|
47
63
|
export async function findInstallRoot(cwd: string = process.cwd()): Promise<string> {
|
|
@@ -67,13 +83,15 @@ async function downloadAssets(
|
|
|
67
83
|
resolution: ResolveResult,
|
|
68
84
|
projectRoot: string,
|
|
69
85
|
log: (msg: string) => void,
|
|
70
|
-
): Promise<
|
|
86
|
+
): Promise<InstalledAsset[]> {
|
|
87
|
+
const installedAssets: InstalledAsset[] = []
|
|
88
|
+
|
|
71
89
|
for (const asset of resolution.assets) {
|
|
72
90
|
log(`Downloading ${asset.name}@${asset.version}...`)
|
|
73
91
|
|
|
74
92
|
const zip = await client.asset.downloadZip({ name: asset.name, version: asset.version })
|
|
75
93
|
const files = unzipSync(new Uint8Array(await zip.arrayBuffer()))
|
|
76
|
-
|
|
94
|
+
const installedFiles: string[] = []
|
|
77
95
|
|
|
78
96
|
for (const [relativePath, content] of Object.entries(files) as [string, Uint8Array][]) {
|
|
79
97
|
const zipPath = relativePath.replace(/\\/g, '/')
|
|
@@ -97,11 +115,19 @@ async function downloadAssets(
|
|
|
97
115
|
const filePath = path.join(projectRoot, normalizedPath)
|
|
98
116
|
await fs.mkdir(path.dirname(filePath), { recursive: true })
|
|
99
117
|
await fs.writeFile(filePath, content)
|
|
100
|
-
installedFiles
|
|
118
|
+
installedFiles.push(normalizedPath)
|
|
101
119
|
}
|
|
102
120
|
|
|
103
|
-
|
|
121
|
+
installedAssets.push({
|
|
122
|
+
name: asset.name,
|
|
123
|
+
version: asset.version,
|
|
124
|
+
files: installedFiles,
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
log(`Downloaded ${installedFiles.length} files.`)
|
|
104
128
|
}
|
|
129
|
+
|
|
130
|
+
return installedAssets
|
|
105
131
|
}
|
|
106
132
|
|
|
107
133
|
async function isFile(file: string): Promise<boolean> {
|
package/src/output.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AssetSearchResult } from './contract.js'
|
|
2
|
+
import type { InstallResult } from './install.js'
|
|
2
3
|
|
|
3
4
|
export function assetVersionRef(name: string, version?: string): string {
|
|
4
5
|
return version ? `${name}@${version}` : name
|
|
@@ -35,11 +36,28 @@ export function assetSearchResultLine(
|
|
|
35
36
|
)}${description}`
|
|
36
37
|
}
|
|
37
38
|
|
|
38
|
-
export function installResult(
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
export function installResult(result: InstallResult): string {
|
|
40
|
+
const npmDependencies = Object.entries(result.npmDependencies)
|
|
41
|
+
|
|
42
|
+
const lines = ['Installed:']
|
|
43
|
+
|
|
44
|
+
for (const asset of result.assets) {
|
|
45
|
+
const files = unique(asset.files)
|
|
46
|
+
lines.push(`- ${assetVersionRef(asset.name, asset.version)} (asset)`)
|
|
47
|
+
if (files.length > 0) {
|
|
48
|
+
lines.push(' files:', ...indent(fileTree(files), ' '))
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (npmDependencies.length > 0) {
|
|
53
|
+
lines.push(
|
|
54
|
+
...npmDependencies
|
|
55
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
56
|
+
.map(([name, version]) => `- ${assetVersionRef(name, version)} (npm)`),
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return lines.join('\n')
|
|
43
61
|
}
|
|
44
62
|
|
|
45
63
|
export function generatedInstallResult(name: string, version: string): string {
|
|
@@ -74,3 +92,50 @@ export function compact(value: string, max = 96): string {
|
|
|
74
92
|
const normalized = value.replace(/\s+/g, ' ').trim()
|
|
75
93
|
return normalized.length > max ? normalized.slice(0, max - 3) + '...' : normalized
|
|
76
94
|
}
|
|
95
|
+
|
|
96
|
+
interface FileTreeNode {
|
|
97
|
+
children: Map<string, FileTreeNode>
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function fileTree(paths: string[]): string[] {
|
|
101
|
+
const root: FileTreeNode = { children: new Map() }
|
|
102
|
+
|
|
103
|
+
for (const filePath of paths) {
|
|
104
|
+
const parts = filePath.split('/').filter(Boolean)
|
|
105
|
+
let node = root
|
|
106
|
+
for (const part of parts) {
|
|
107
|
+
let child = node.children.get(part)
|
|
108
|
+
if (!child) {
|
|
109
|
+
child = { children: new Map() }
|
|
110
|
+
node.children.set(part, child)
|
|
111
|
+
}
|
|
112
|
+
node = child
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return renderFileTree(root)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function renderFileTree(node: FileTreeNode, prefix = '', showConnector = false): string[] {
|
|
120
|
+
const entries = [...node.children.entries()].sort(([aName, aNode], [bName, bNode]) => {
|
|
121
|
+
const aIsDir = aNode.children.size > 0
|
|
122
|
+
const bIsDir = bNode.children.size > 0
|
|
123
|
+
if (aIsDir !== bIsDir) return aIsDir ? -1 : 1
|
|
124
|
+
return aName.localeCompare(bName)
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
return entries.flatMap(([name, child], index) => {
|
|
128
|
+
const isLast = index === entries.length - 1
|
|
129
|
+
const connector = showConnector ? (isLast ? '└─ ' : '├─ ') : ''
|
|
130
|
+
const childPrefix = showConnector ? prefix + (isLast ? ' ' : '│ ') : ''
|
|
131
|
+
return [`${prefix}${connector}${name}`, ...renderFileTree(child, childPrefix, true)]
|
|
132
|
+
})
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function unique<T>(values: T[]): T[] {
|
|
136
|
+
return [...new Set(values)]
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function indent(lines: string[], prefix: string): string[] {
|
|
140
|
+
return lines.map((line) => `${prefix}${line}`)
|
|
141
|
+
}
|
package/src/schemas.ts
CHANGED
package/src/skill.ts
CHANGED
|
@@ -18,11 +18,11 @@ market preview wooden-chair --out /tmp/wooden-chair.png
|
|
|
18
18
|
## Workflow
|
|
19
19
|
|
|
20
20
|
1. Search first unless the user gave an exact asset name.
|
|
21
|
-
2. Search requires \`--type\`; use \`model\` unless the user names another supported type: \`texture\`, \`humanoid-animation\`, \`template\`, or \`sound-
|
|
21
|
+
2. Search requires \`--type\`; use \`model\` unless the user names another supported type: \`humanoid-model\`, \`texture\`, \`humanoid-animation\`, \`template\`, or \`sound-effect\`.
|
|
22
22
|
3. Use \`--limit 1\` for lookup, \`--limit 3\` for choice. Search caps at 5.
|
|
23
23
|
4. Use \`--verbose\` only when the one-line descriptions are not enough.
|
|
24
24
|
5. Use \`--unapproved\` only when the user asks for unapproved/private/admin assets. Do not install unapproved assets without explicit acceptance.
|
|
25
|
-
6. Preview before installing when visual fit matters: \`market preview <name> --out <file>\`. Preview is not supported for \`humanoid-animation\`, \`template\`, or \`sound-
|
|
25
|
+
6. Preview before installing when visual fit matters: \`market preview <name> --out <file>\`. Preview is not supported for \`humanoid-animation\`, \`template\`, or \`sound-effect\`.
|
|
26
26
|
7. Generate only when the user wants a new asset and auth is available. Generate is not supported for \`template\`.
|
|
27
27
|
8. Upload only when publishing is requested.
|
|
28
28
|
|
|
@@ -17,7 +17,7 @@ test('install writes zip files into the package root', async () => {
|
|
|
17
17
|
await fs.writeFile(path.join(appRoot, 'package.json'), '{}\n')
|
|
18
18
|
await fs.writeFile(path.join(appRoot, 'README.md'), 'project readme\n')
|
|
19
19
|
|
|
20
|
-
await install(
|
|
20
|
+
const result = await install(
|
|
21
21
|
clientWithZip({
|
|
22
22
|
'public/humanoid-animation/idle-loop.glb': textEncoder.encode('glb'),
|
|
23
23
|
'src/generated/idle-loop.ts': textEncoder.encode('export const idleLoop = true\n'),
|
|
@@ -37,6 +37,16 @@ test('install writes zip files into the package root', async () => {
|
|
|
37
37
|
{ cwd },
|
|
38
38
|
)
|
|
39
39
|
|
|
40
|
+
assert.deepEqual(result, {
|
|
41
|
+
assets: [
|
|
42
|
+
{
|
|
43
|
+
name: 'idle-loop',
|
|
44
|
+
version: '1.0.0',
|
|
45
|
+
files: ['public/humanoid-animation/idle-loop.glb', 'src/generated/idle-loop.ts'],
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
npmDependencies: {},
|
|
49
|
+
})
|
|
40
50
|
assert.equal(
|
|
41
51
|
await fs.readFile(path.join(appRoot, 'public', 'humanoid-animation', 'idle-loop.glb'), 'utf-8'),
|
|
42
52
|
'glb',
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import assert from 'node:assert/strict'
|
|
2
|
+
import test from 'node:test'
|
|
3
|
+
import { installResult } from '../src/output.js'
|
|
4
|
+
|
|
5
|
+
test('installResult prints asset and npm lists with a file tree', () => {
|
|
6
|
+
assert.equal(
|
|
7
|
+
installResult({
|
|
8
|
+
assets: [
|
|
9
|
+
{
|
|
10
|
+
name: 'wooden-chair',
|
|
11
|
+
version: '1.2.0',
|
|
12
|
+
files: ['public/models/wooden-chair.glb'],
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'oak-material',
|
|
16
|
+
version: '1.0.0',
|
|
17
|
+
files: ['public/textures/oak/basecolor.png', 'public/textures/oak/normal.png'],
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
npmDependencies: { '@react-three/drei': 'latest' },
|
|
21
|
+
}),
|
|
22
|
+
`Installed:
|
|
23
|
+
- wooden-chair@1.2.0 (asset)
|
|
24
|
+
files:
|
|
25
|
+
public
|
|
26
|
+
└─ models
|
|
27
|
+
└─ wooden-chair.glb
|
|
28
|
+
- oak-material@1.0.0 (asset)
|
|
29
|
+
files:
|
|
30
|
+
public
|
|
31
|
+
└─ textures
|
|
32
|
+
└─ oak
|
|
33
|
+
├─ basecolor.png
|
|
34
|
+
└─ normal.png
|
|
35
|
+
- @react-three/drei@latest (npm)`,
|
|
36
|
+
)
|
|
37
|
+
})
|