threenative-asset-mcp 0.9.3 → 0.9.4
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 +3 -1
- package/dist/bundle/client.d.ts +2 -0
- package/dist/bundle/client.d.ts.map +1 -1
- package/dist/bundle/client.js +6 -0
- package/dist/bundle/client.js.map +1 -1
- package/dist/download/direct-asset-downloader.d.ts +3 -0
- package/dist/download/direct-asset-downloader.d.ts.map +1 -1
- package/dist/download/direct-asset-downloader.js +4 -1
- package/dist/download/direct-asset-downloader.js.map +1 -1
- package/dist/fab/api-download.d.ts.map +1 -1
- package/dist/fab/api-download.js +5 -1
- package/dist/fab/api-download.js.map +1 -1
- package/dist/fab/client.d.ts.map +1 -1
- package/dist/fab/client.js +5 -10
- package/dist/fab/client.js.map +1 -1
- package/dist/fab/direct-transport.d.ts +3 -0
- package/dist/fab/direct-transport.d.ts.map +1 -1
- package/dist/fab/direct-transport.js.map +1 -1
- package/dist/fab/download-store.d.ts.map +1 -1
- package/dist/fab/download-store.js +6 -0
- package/dist/fab/download-store.js.map +1 -1
- package/dist/fab/fabcli.d.ts +1 -1
- package/dist/fab/fabcli.d.ts.map +1 -1
- package/dist/fab/fabcli.js +12 -3
- package/dist/fab/fabcli.js.map +1 -1
- package/dist/gltf-size.d.ts +19 -0
- package/dist/gltf-size.d.ts.map +1 -0
- package/dist/gltf-size.js +33 -0
- package/dist/gltf-size.js.map +1 -0
- package/dist/server.js +5 -5
- package/dist/server.js.map +1 -1
- package/dist/tools/bundle.d.ts +10 -0
- package/dist/tools/bundle.d.ts.map +1 -1
- package/dist/tools/bundle.js +6 -0
- package/dist/tools/bundle.js.map +1 -1
- package/dist/tools/direct-download.d.ts +10 -0
- package/dist/tools/direct-download.d.ts.map +1 -1
- package/dist/tools/direct-download.js +7 -0
- package/dist/tools/direct-download.js.map +1 -1
- package/dist/tools/download-free-asset.d.ts +10 -0
- package/dist/tools/download-free-asset.d.ts.map +1 -1
- package/dist/tools/download-free-asset.js +6 -0
- package/dist/tools/download-free-asset.js.map +1 -1
- package/dist/tools/import-unreal.d.ts +40 -0
- package/dist/tools/import-unreal.d.ts.map +1 -1
- package/dist/tools/import-unreal.js +13 -0
- package/dist/tools/import-unreal.js.map +1 -1
- package/dist/tools/list-filters.d.ts +1 -15
- package/dist/tools/list-filters.d.ts.map +1 -1
- package/dist/tools/list-filters.js +1 -3
- package/dist/tools/list-filters.js.map +1 -1
- package/dist/tools/search-assets.d.ts +2 -4
- package/dist/tools/search-assets.d.ts.map +1 -1
- package/dist/tools/search-assets.js +1 -2
- package/dist/tools/search-assets.js.map +1 -1
- package/dist/unreal/cooking.d.ts +7 -0
- package/dist/unreal/cooking.d.ts.map +1 -1
- package/dist/unreal/cooking.js +101 -62
- package/dist/unreal/cooking.js.map +1 -1
- package/dist/unreal/importer.d.ts +3 -1
- package/dist/unreal/importer.d.ts.map +1 -1
- package/dist/unreal/importer.js +129 -59
- package/dist/unreal/importer.js.map +1 -1
- package/dist/unreal/scenes.d.ts +7 -0
- package/dist/unreal/scenes.d.ts.map +1 -1
- package/dist/unreal/scenes.js +13 -1
- package/dist/unreal/scenes.js.map +1 -1
- package/dist/unreal/toolchain.d.ts.map +1 -1
- package/dist/unreal/toolchain.js +11 -1
- package/dist/unreal/toolchain.js.map +1 -1
- package/package.json +1 -1
- package/dist/polyhaven/pack.d.ts +0 -53
- package/dist/polyhaven/pack.d.ts.map +0 -1
- package/dist/polyhaven/pack.js +0 -104
- package/dist/polyhaven/pack.js.map +0 -1
- package/dist/tools/polyhaven-import.d.ts +0 -58
- package/dist/tools/polyhaven-import.d.ts.map +0 -1
- package/dist/tools/polyhaven-import.js +0 -121
- package/dist/tools/polyhaven-import.js.map +0 -1
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import { basename } from "node:path";
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
import { DirectAssetDownloadError } from "../download/direct-asset-downloader.js";
|
|
4
|
-
import { PolyHavenClientError } from "../polyhaven/client.js";
|
|
5
|
-
import { PolyHavenPackError, packGltfBundle, selectGltfBundle } from "../polyhaven/pack.js";
|
|
6
|
-
export const PolyHavenImportModelInputSchema = z.object({
|
|
7
|
-
assetId: z
|
|
8
|
-
.string()
|
|
9
|
-
.trim()
|
|
10
|
-
.min(1)
|
|
11
|
-
.max(200)
|
|
12
|
-
.regex(/^[A-Za-z0-9_-]+$/),
|
|
13
|
-
outputPath: z
|
|
14
|
-
.string()
|
|
15
|
-
.trim()
|
|
16
|
-
.min(1)
|
|
17
|
-
.max(4_096)
|
|
18
|
-
.describe("Where the packed .glb is written, for example assets/office/metal_office_desk.glb. Parent directories are created."),
|
|
19
|
-
resolution: z
|
|
20
|
-
.string()
|
|
21
|
-
.regex(/^\d+k$/)
|
|
22
|
-
.default("1k")
|
|
23
|
-
.describe("Texture resolution to fetch. A game floor rarely needs more than 1k; 4k and 8k exist and cost tens of megabytes per map."),
|
|
24
|
-
acceptLicense: z.literal(true).describe("Required acknowledgement that the caller reviewed and accepts the license metadata returned by polyhaven_search_assets or polyhaven_get_asset. Poly Haven models are CC0, and Poly Haven asks for a visible credit when its API is used."),
|
|
25
|
-
});
|
|
26
|
-
export const PolyHavenImportModelOutputSchema = z.object({
|
|
27
|
-
assetId: z.string().max(200),
|
|
28
|
-
glbPath: z.string().max(4_096),
|
|
29
|
-
bytes: z.number().int().nonnegative(),
|
|
30
|
-
triangles: z.number().int().nonnegative(),
|
|
31
|
-
meshes: z.number().int().nonnegative(),
|
|
32
|
-
materials: z.number().int().nonnegative(),
|
|
33
|
-
textures: z.array(z.object({
|
|
34
|
-
name: z.string().max(200),
|
|
35
|
-
width: z.number().int().nonnegative(),
|
|
36
|
-
height: z.number().int().nonnegative(),
|
|
37
|
-
})),
|
|
38
|
-
resolution: z.string().max(10),
|
|
39
|
-
sourceUrl: z.string().max(4_096),
|
|
40
|
-
license: z.literal("CC0"),
|
|
41
|
-
attribution: z.string().max(500),
|
|
42
|
-
filesDownloaded: z.number().int().nonnegative(),
|
|
43
|
-
});
|
|
44
|
-
function errorResult(error) {
|
|
45
|
-
const safe = error instanceof PolyHavenPackError
|
|
46
|
-
? { code: error.code, message: error.message, retryable: false }
|
|
47
|
-
: error instanceof PolyHavenClientError
|
|
48
|
-
? { code: error.code, message: error.message, retryable: false }
|
|
49
|
-
: error instanceof DirectAssetDownloadError
|
|
50
|
-
? { code: error.code, message: error.message, retryable: error.retryable }
|
|
51
|
-
: error instanceof z.ZodError
|
|
52
|
-
? {
|
|
53
|
-
code: "POLYHAVEN_IMPORT_INVALID_INPUT",
|
|
54
|
-
message: "The Poly Haven import input is invalid.",
|
|
55
|
-
retryable: false,
|
|
56
|
-
}
|
|
57
|
-
: {
|
|
58
|
-
code: "POLYHAVEN_IMPORT_INTERNAL",
|
|
59
|
-
message: "The asset MCP could not complete the Poly Haven import.",
|
|
60
|
-
retryable: false,
|
|
61
|
-
};
|
|
62
|
-
return {
|
|
63
|
-
isError: true,
|
|
64
|
-
content: [{ type: "text", text: JSON.stringify(safe) }],
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
export function createPolyHavenImportModelHandler(polyhaven, downloader) {
|
|
68
|
-
return async (rawInput) => {
|
|
69
|
-
try {
|
|
70
|
-
const input = PolyHavenImportModelInputSchema.parse(rawInput);
|
|
71
|
-
const bundle = selectGltfBundle(await polyhaven.listFiles(input.assetId), input.resolution);
|
|
72
|
-
// Downloads go through the same guarded path as asset_download_file: allowlisted hosts,
|
|
73
|
-
// revalidated redirects, byte cap. Each lands in its own directory, so the bundle comes back
|
|
74
|
-
// scattered and the glTF's relative URIs are reattached by basename below.
|
|
75
|
-
const downloads = new Map();
|
|
76
|
-
const gltf = await downloader.download({
|
|
77
|
-
provider: "polyhaven",
|
|
78
|
-
url: bundle.gltf.url,
|
|
79
|
-
fileName: basename(new URL(bundle.gltf.url).pathname),
|
|
80
|
-
});
|
|
81
|
-
for (const dependency of bundle.dependencies) {
|
|
82
|
-
const result = await downloader.download({
|
|
83
|
-
provider: "polyhaven",
|
|
84
|
-
url: dependency.url,
|
|
85
|
-
fileName: basename(new URL(dependency.url).pathname),
|
|
86
|
-
});
|
|
87
|
-
downloads.set(dependency.relativePath, result.path);
|
|
88
|
-
downloads.set(basename(dependency.relativePath), result.path);
|
|
89
|
-
}
|
|
90
|
-
const packed = await packGltfBundle({
|
|
91
|
-
gltfPath: gltf.path,
|
|
92
|
-
// Poly Haven's recorded relativePath and the glTF's own URI agree in practice, but the
|
|
93
|
-
// basename fallback keeps a bundle importable when they disagree.
|
|
94
|
-
resolve: (uri) => downloads.get(uri) ?? downloads.get(basename(uri)),
|
|
95
|
-
outputPath: input.outputPath,
|
|
96
|
-
});
|
|
97
|
-
const output = PolyHavenImportModelOutputSchema.parse({
|
|
98
|
-
assetId: input.assetId,
|
|
99
|
-
glbPath: packed.glbPath,
|
|
100
|
-
bytes: packed.bytes,
|
|
101
|
-
triangles: packed.triangles,
|
|
102
|
-
meshes: packed.meshes,
|
|
103
|
-
materials: packed.materials,
|
|
104
|
-
textures: packed.textures,
|
|
105
|
-
resolution: input.resolution,
|
|
106
|
-
sourceUrl: `https://polyhaven.com/a/${input.assetId}`,
|
|
107
|
-
license: "CC0",
|
|
108
|
-
attribution: "Powered by Poly Haven — https://polyhaven.com",
|
|
109
|
-
filesDownloaded: bundle.dependencies.length + 1,
|
|
110
|
-
});
|
|
111
|
-
return {
|
|
112
|
-
content: [{ type: "text", text: JSON.stringify(output) }],
|
|
113
|
-
structuredContent: output,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
catch (error) {
|
|
117
|
-
return errorResult(error);
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
//# sourceMappingURL=polyhaven-import.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"polyhaven-import.js","sourceRoot":"","sources":["../../src/tools/polyhaven-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE5F,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IACtD,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,KAAK,CAAC,kBAAkB,CAAC;IAC5B,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,KAAK,CAAC;SACV,QAAQ,CACP,oHAAoH,CACrH;IACH,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,KAAK,CAAC,QAAQ,CAAC;SACf,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CACP,0HAA0H,CAC3H;IACH,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CACrC,0OAA0O,CAC3O;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACzC,QAAQ,EAAE,CAAC,CAAC,KAAK,CACf,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;QACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;KACvC,CAAC,CACH;IACD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;CAChD,CAAC,CAAC;AAEH,SAAS,WAAW,CAAC,KAAc;IACjC,MAAM,IAAI,GACR,KAAK,YAAY,kBAAkB;QACjC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;QAChE,CAAC,CAAC,KAAK,YAAY,oBAAoB;YACrC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;YAChE,CAAC,CAAC,KAAK,YAAY,wBAAwB;gBACzC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;gBAC1E,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,QAAQ;oBAC3B,CAAC,CAAC;wBACE,IAAI,EAAE,gCAAgC;wBACtC,OAAO,EAAE,yCAAyC;wBAClD,SAAS,EAAE,KAAK;qBACjB;oBACH,CAAC,CAAC;wBACE,IAAI,EAAE,2BAA2B;wBACjC,OAAO,EAAE,yDAAyD;wBAClE,SAAS,EAAE,KAAK;qBACjB,CAAC;IACd,OAAO;QACL,OAAO,EAAE,IAAa;QACtB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,SAA0B,EAC1B,UAAiC;IAEjC,OAAO,KAAK,EAAE,QAAyD,EAAE,EAAE;QACzE,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,+BAA+B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAE5F,wFAAwF;YACxF,6FAA6F;YAC7F,2EAA2E;YAC3E,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC;gBACrC,QAAQ,EAAE,WAAW;gBACrB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;gBACpB,QAAQ,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;aACtD,CAAC,CAAC;YACH,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC7C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC;oBACvC,QAAQ,EAAE,WAAW;oBACrB,GAAG,EAAE,UAAU,CAAC,GAAG;oBACnB,QAAQ,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;iBACrD,CAAC,CAAC;gBACH,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBACpD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAChE,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBAClC,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,uFAAuF;gBACvF,kEAAkE;gBAClE,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACpE,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,gCAAgC,CAAC,KAAK,CAAC;gBACpD,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,SAAS,EAAE,2BAA2B,KAAK,CAAC,OAAO,EAAE;gBACrD,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,+CAA+C;gBAC5D,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;aAChD,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClE,iBAAiB,EAAE,MAAM;aAC1B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|