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.
Files changed (79) hide show
  1. package/README.md +3 -1
  2. package/dist/bundle/client.d.ts +2 -0
  3. package/dist/bundle/client.d.ts.map +1 -1
  4. package/dist/bundle/client.js +6 -0
  5. package/dist/bundle/client.js.map +1 -1
  6. package/dist/download/direct-asset-downloader.d.ts +3 -0
  7. package/dist/download/direct-asset-downloader.d.ts.map +1 -1
  8. package/dist/download/direct-asset-downloader.js +4 -1
  9. package/dist/download/direct-asset-downloader.js.map +1 -1
  10. package/dist/fab/api-download.d.ts.map +1 -1
  11. package/dist/fab/api-download.js +5 -1
  12. package/dist/fab/api-download.js.map +1 -1
  13. package/dist/fab/client.d.ts.map +1 -1
  14. package/dist/fab/client.js +5 -10
  15. package/dist/fab/client.js.map +1 -1
  16. package/dist/fab/direct-transport.d.ts +3 -0
  17. package/dist/fab/direct-transport.d.ts.map +1 -1
  18. package/dist/fab/direct-transport.js.map +1 -1
  19. package/dist/fab/download-store.d.ts.map +1 -1
  20. package/dist/fab/download-store.js +6 -0
  21. package/dist/fab/download-store.js.map +1 -1
  22. package/dist/fab/fabcli.d.ts +1 -1
  23. package/dist/fab/fabcli.d.ts.map +1 -1
  24. package/dist/fab/fabcli.js +12 -3
  25. package/dist/fab/fabcli.js.map +1 -1
  26. package/dist/gltf-size.d.ts +19 -0
  27. package/dist/gltf-size.d.ts.map +1 -0
  28. package/dist/gltf-size.js +33 -0
  29. package/dist/gltf-size.js.map +1 -0
  30. package/dist/server.js +5 -5
  31. package/dist/server.js.map +1 -1
  32. package/dist/tools/bundle.d.ts +10 -0
  33. package/dist/tools/bundle.d.ts.map +1 -1
  34. package/dist/tools/bundle.js +6 -0
  35. package/dist/tools/bundle.js.map +1 -1
  36. package/dist/tools/direct-download.d.ts +10 -0
  37. package/dist/tools/direct-download.d.ts.map +1 -1
  38. package/dist/tools/direct-download.js +7 -0
  39. package/dist/tools/direct-download.js.map +1 -1
  40. package/dist/tools/download-free-asset.d.ts +10 -0
  41. package/dist/tools/download-free-asset.d.ts.map +1 -1
  42. package/dist/tools/download-free-asset.js +6 -0
  43. package/dist/tools/download-free-asset.js.map +1 -1
  44. package/dist/tools/import-unreal.d.ts +40 -0
  45. package/dist/tools/import-unreal.d.ts.map +1 -1
  46. package/dist/tools/import-unreal.js +13 -0
  47. package/dist/tools/import-unreal.js.map +1 -1
  48. package/dist/tools/list-filters.d.ts +1 -15
  49. package/dist/tools/list-filters.d.ts.map +1 -1
  50. package/dist/tools/list-filters.js +1 -3
  51. package/dist/tools/list-filters.js.map +1 -1
  52. package/dist/tools/search-assets.d.ts +2 -4
  53. package/dist/tools/search-assets.d.ts.map +1 -1
  54. package/dist/tools/search-assets.js +1 -2
  55. package/dist/tools/search-assets.js.map +1 -1
  56. package/dist/unreal/cooking.d.ts +7 -0
  57. package/dist/unreal/cooking.d.ts.map +1 -1
  58. package/dist/unreal/cooking.js +101 -62
  59. package/dist/unreal/cooking.js.map +1 -1
  60. package/dist/unreal/importer.d.ts +3 -1
  61. package/dist/unreal/importer.d.ts.map +1 -1
  62. package/dist/unreal/importer.js +129 -59
  63. package/dist/unreal/importer.js.map +1 -1
  64. package/dist/unreal/scenes.d.ts +7 -0
  65. package/dist/unreal/scenes.d.ts.map +1 -1
  66. package/dist/unreal/scenes.js +13 -1
  67. package/dist/unreal/scenes.js.map +1 -1
  68. package/dist/unreal/toolchain.d.ts.map +1 -1
  69. package/dist/unreal/toolchain.js +11 -1
  70. package/dist/unreal/toolchain.js.map +1 -1
  71. package/package.json +1 -1
  72. package/dist/polyhaven/pack.d.ts +0 -53
  73. package/dist/polyhaven/pack.d.ts.map +0 -1
  74. package/dist/polyhaven/pack.js +0 -104
  75. package/dist/polyhaven/pack.js.map +0 -1
  76. package/dist/tools/polyhaven-import.d.ts +0 -58
  77. package/dist/tools/polyhaven-import.d.ts.map +0 -1
  78. package/dist/tools/polyhaven-import.js +0 -121
  79. 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":"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"}