@nodetool-ai/base-nodes 0.7.0-rc.11
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/index.d.ts +72 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +270 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/audio-wav.d.ts +66 -0
- package/dist/lib/audio-wav.d.ts.map +1 -0
- package/dist/lib/audio-wav.js +215 -0
- package/dist/lib/audio-wav.js.map +1 -0
- package/dist/nodes/agents.d.ts +253 -0
- package/dist/nodes/agents.d.ts.map +1 -0
- package/dist/nodes/agents.js +2784 -0
- package/dist/nodes/agents.js.map +1 -0
- package/dist/nodes/anthropic.d.ts +26 -0
- package/dist/nodes/anthropic.d.ts.map +1 -0
- package/dist/nodes/anthropic.js +133 -0
- package/dist/nodes/anthropic.js.map +1 -0
- package/dist/nodes/apify.d.ts +120 -0
- package/dist/nodes/apify.d.ts.map +1 -0
- package/dist/nodes/apify.js +618 -0
- package/dist/nodes/apify.js.map +1 -0
- package/dist/nodes/audio.d.ts +301 -0
- package/dist/nodes/audio.d.ts.map +1 -0
- package/dist/nodes/audio.js +1274 -0
- package/dist/nodes/audio.js.map +1 -0
- package/dist/nodes/code-node.d.ts +34 -0
- package/dist/nodes/code-node.d.ts.map +1 -0
- package/dist/nodes/code-node.js +343 -0
- package/dist/nodes/code-node.js.map +1 -0
- package/dist/nodes/code.d.ts +301 -0
- package/dist/nodes/code.d.ts.map +1 -0
- package/dist/nodes/code.js +850 -0
- package/dist/nodes/code.js.map +1 -0
- package/dist/nodes/compare.d.ts +18 -0
- package/dist/nodes/compare.d.ts.map +1 -0
- package/dist/nodes/compare.js +122 -0
- package/dist/nodes/compare.js.map +1 -0
- package/dist/nodes/constant.d.ts +315 -0
- package/dist/nodes/constant.d.ts.map +1 -0
- package/dist/nodes/constant.js +715 -0
- package/dist/nodes/constant.js.map +1 -0
- package/dist/nodes/control.d.ts +83 -0
- package/dist/nodes/control.d.ts.map +1 -0
- package/dist/nodes/control.js +212 -0
- package/dist/nodes/control.js.map +1 -0
- package/dist/nodes/data.d.ts +369 -0
- package/dist/nodes/data.d.ts.map +1 -0
- package/dist/nodes/data.js +1590 -0
- package/dist/nodes/data.js.map +1 -0
- package/dist/nodes/document.d.ts +134 -0
- package/dist/nodes/document.d.ts.map +1 -0
- package/dist/nodes/document.js +984 -0
- package/dist/nodes/document.js.map +1 -0
- package/dist/nodes/extended-placeholders.d.ts +6 -0
- package/dist/nodes/extended-placeholders.d.ts.map +1 -0
- package/dist/nodes/extended-placeholders.js +19 -0
- package/dist/nodes/extended-placeholders.js.map +1 -0
- package/dist/nodes/gemini.d.ts +109 -0
- package/dist/nodes/gemini.d.ts.map +1 -0
- package/dist/nodes/gemini.js +861 -0
- package/dist/nodes/gemini.js.map +1 -0
- package/dist/nodes/generators.d.ts +84 -0
- package/dist/nodes/generators.d.ts.map +1 -0
- package/dist/nodes/generators.js +937 -0
- package/dist/nodes/generators.js.map +1 -0
- package/dist/nodes/image.d.ts +232 -0
- package/dist/nodes/image.d.ts.map +1 -0
- package/dist/nodes/image.js +1395 -0
- package/dist/nodes/image.js.map +1 -0
- package/dist/nodes/input.d.ts +445 -0
- package/dist/nodes/input.d.ts.map +1 -0
- package/dist/nodes/input.js +1459 -0
- package/dist/nodes/input.js.map +1 -0
- package/dist/nodes/kie-dynamic.d.ts +31 -0
- package/dist/nodes/kie-dynamic.d.ts.map +1 -0
- package/dist/nodes/kie-dynamic.js +270 -0
- package/dist/nodes/kie-dynamic.js.map +1 -0
- package/dist/nodes/lib-audio-dsp.d.ts +85 -0
- package/dist/nodes/lib-audio-dsp.d.ts.map +1 -0
- package/dist/nodes/lib-audio-dsp.js +450 -0
- package/dist/nodes/lib-audio-dsp.js.map +1 -0
- package/dist/nodes/lib-audio-effects.d.ts +116 -0
- package/dist/nodes/lib-audio-effects.d.ts.map +1 -0
- package/dist/nodes/lib-audio-effects.js +905 -0
- package/dist/nodes/lib-audio-effects.js.map +1 -0
- package/dist/nodes/lib-browser.d.ts +99 -0
- package/dist/nodes/lib-browser.d.ts.map +1 -0
- package/dist/nodes/lib-browser.js +692 -0
- package/dist/nodes/lib-browser.js.map +1 -0
- package/dist/nodes/lib-charts.d.ts +20 -0
- package/dist/nodes/lib-charts.d.ts.map +1 -0
- package/dist/nodes/lib-charts.js +245 -0
- package/dist/nodes/lib-charts.js.map +1 -0
- package/dist/nodes/lib-datetime.d.ts +108 -0
- package/dist/nodes/lib-datetime.d.ts.map +1 -0
- package/dist/nodes/lib-datetime.js +421 -0
- package/dist/nodes/lib-datetime.js.map +1 -0
- package/dist/nodes/lib-doc-convert.d.ts +19 -0
- package/dist/nodes/lib-doc-convert.d.ts.map +1 -0
- package/dist/nodes/lib-doc-convert.js +257 -0
- package/dist/nodes/lib-doc-convert.js.map +1 -0
- package/dist/nodes/lib-doc-transform.d.ts +39 -0
- package/dist/nodes/lib-doc-transform.d.ts.map +1 -0
- package/dist/nodes/lib-doc-transform.js +335 -0
- package/dist/nodes/lib-doc-transform.js.map +1 -0
- package/dist/nodes/lib-docx.d.ts +106 -0
- package/dist/nodes/lib-docx.d.ts.map +1 -0
- package/dist/nodes/lib-docx.js +595 -0
- package/dist/nodes/lib-docx.js.map +1 -0
- package/dist/nodes/lib-epub.d.ts +55 -0
- package/dist/nodes/lib-epub.d.ts.map +1 -0
- package/dist/nodes/lib-epub.js +220 -0
- package/dist/nodes/lib-epub.js.map +1 -0
- package/dist/nodes/lib-excel.d.ts +74 -0
- package/dist/nodes/lib-excel.d.ts.map +1 -0
- package/dist/nodes/lib-excel.js +448 -0
- package/dist/nodes/lib-excel.js.map +1 -0
- package/dist/nodes/lib-graphql.d.ts +66 -0
- package/dist/nodes/lib-graphql.d.ts.map +1 -0
- package/dist/nodes/lib-graphql.js +333 -0
- package/dist/nodes/lib-graphql.js.map +1 -0
- package/dist/nodes/lib-grid.d.ts +27 -0
- package/dist/nodes/lib-grid.d.ts.map +1 -0
- package/dist/nodes/lib-grid.js +172 -0
- package/dist/nodes/lib-grid.js.map +1 -0
- package/dist/nodes/lib-html-parse.d.ts +108 -0
- package/dist/nodes/lib-html-parse.d.ts.map +1 -0
- package/dist/nodes/lib-html-parse.js +365 -0
- package/dist/nodes/lib-html-parse.js.map +1 -0
- package/dist/nodes/lib-http.d.ts +98 -0
- package/dist/nodes/lib-http.d.ts.map +1 -0
- package/dist/nodes/lib-http.js +267 -0
- package/dist/nodes/lib-http.js.map +1 -0
- package/dist/nodes/lib-image-color-grading.d.ts +3 -0
- package/dist/nodes/lib-image-color-grading.d.ts.map +1 -0
- package/dist/nodes/lib-image-color-grading.js +1386 -0
- package/dist/nodes/lib-image-color-grading.js.map +1 -0
- package/dist/nodes/lib-image-draw.d.ts +3 -0
- package/dist/nodes/lib-image-draw.d.ts.map +1 -0
- package/dist/nodes/lib-image-draw.js +470 -0
- package/dist/nodes/lib-image-draw.js.map +1 -0
- package/dist/nodes/lib-image-enhance.d.ts +3 -0
- package/dist/nodes/lib-image-enhance.d.ts.map +1 -0
- package/dist/nodes/lib-image-enhance.js +731 -0
- package/dist/nodes/lib-image-enhance.js.map +1 -0
- package/dist/nodes/lib-image-filter.d.ts +3 -0
- package/dist/nodes/lib-image-filter.d.ts.map +1 -0
- package/dist/nodes/lib-image-filter.js +684 -0
- package/dist/nodes/lib-image-filter.js.map +1 -0
- package/dist/nodes/lib-image-utils.d.ts +24 -0
- package/dist/nodes/lib-image-utils.d.ts.map +1 -0
- package/dist/nodes/lib-image-utils.js +150 -0
- package/dist/nodes/lib-image-utils.js.map +1 -0
- package/dist/nodes/lib-mail.d.ts +74 -0
- package/dist/nodes/lib-mail.d.ts.map +1 -0
- package/dist/nodes/lib-mail.js +452 -0
- package/dist/nodes/lib-mail.js.map +1 -0
- package/dist/nodes/lib-markdown.d.ts +70 -0
- package/dist/nodes/lib-markdown.d.ts.map +1 -0
- package/dist/nodes/lib-markdown.js +236 -0
- package/dist/nodes/lib-markdown.js.map +1 -0
- package/dist/nodes/lib-nlp.d.ts +98 -0
- package/dist/nodes/lib-nlp.d.ts.map +1 -0
- package/dist/nodes/lib-nlp.js +374 -0
- package/dist/nodes/lib-nlp.js.map +1 -0
- package/dist/nodes/lib-notion.d.ts +99 -0
- package/dist/nodes/lib-notion.d.ts.map +1 -0
- package/dist/nodes/lib-notion.js +601 -0
- package/dist/nodes/lib-notion.js.map +1 -0
- package/dist/nodes/lib-ocr.d.ts +31 -0
- package/dist/nodes/lib-ocr.d.ts.map +1 -0
- package/dist/nodes/lib-ocr.js +143 -0
- package/dist/nodes/lib-ocr.js.map +1 -0
- package/dist/nodes/lib-os.d.ts +312 -0
- package/dist/nodes/lib-os.d.ts.map +1 -0
- package/dist/nodes/lib-os.js +909 -0
- package/dist/nodes/lib-os.js.map +1 -0
- package/dist/nodes/lib-pdf.d.ts +142 -0
- package/dist/nodes/lib-pdf.d.ts.map +1 -0
- package/dist/nodes/lib-pdf.js +871 -0
- package/dist/nodes/lib-pdf.js.map +1 -0
- package/dist/nodes/lib-pptx.d.ts +29 -0
- package/dist/nodes/lib-pptx.d.ts.map +1 -0
- package/dist/nodes/lib-pptx.js +122 -0
- package/dist/nodes/lib-pptx.js.map +1 -0
- package/dist/nodes/lib-rss.d.ts +31 -0
- package/dist/nodes/lib-rss.d.ts.map +1 -0
- package/dist/nodes/lib-rss.js +163 -0
- package/dist/nodes/lib-rss.js.map +1 -0
- package/dist/nodes/lib-s3.d.ts +112 -0
- package/dist/nodes/lib-s3.d.ts.map +1 -0
- package/dist/nodes/lib-s3.js +521 -0
- package/dist/nodes/lib-s3.js.map +1 -0
- package/dist/nodes/lib-secret.d.ts +15 -0
- package/dist/nodes/lib-secret.d.ts.map +1 -0
- package/dist/nodes/lib-secret.js +42 -0
- package/dist/nodes/lib-secret.js.map +1 -0
- package/dist/nodes/lib-sqlite.d.ts +102 -0
- package/dist/nodes/lib-sqlite.d.ts.map +1 -0
- package/dist/nodes/lib-sqlite.js +532 -0
- package/dist/nodes/lib-sqlite.js.map +1 -0
- package/dist/nodes/lib-supabase.d.ts +86 -0
- package/dist/nodes/lib-supabase.d.ts.map +1 -0
- package/dist/nodes/lib-supabase.js +425 -0
- package/dist/nodes/lib-supabase.js.map +1 -0
- package/dist/nodes/lib-svg.d.ts +199 -0
- package/dist/nodes/lib-svg.d.ts.map +1 -0
- package/dist/nodes/lib-svg.js +1027 -0
- package/dist/nodes/lib-svg.js.map +1 -0
- package/dist/nodes/lib-tensorflow.d.ts +71 -0
- package/dist/nodes/lib-tensorflow.d.ts.map +1 -0
- package/dist/nodes/lib-tensorflow.js +351 -0
- package/dist/nodes/lib-tensorflow.js.map +1 -0
- package/dist/nodes/lib-twilio.d.ts +71 -0
- package/dist/nodes/lib-twilio.d.ts.map +1 -0
- package/dist/nodes/lib-twilio.js +469 -0
- package/dist/nodes/lib-twilio.js.map +1 -0
- package/dist/nodes/lib-validate.d.ts +84 -0
- package/dist/nodes/lib-validate.d.ts.map +1 -0
- package/dist/nodes/lib-validate.js +215 -0
- package/dist/nodes/lib-validate.js.map +1 -0
- package/dist/nodes/lib-video-download.d.ts +26 -0
- package/dist/nodes/lib-video-download.d.ts.map +1 -0
- package/dist/nodes/lib-video-download.js +299 -0
- package/dist/nodes/lib-video-download.js.map +1 -0
- package/dist/nodes/messaging.d.ts +88 -0
- package/dist/nodes/messaging.d.ts.map +1 -0
- package/dist/nodes/messaging.js +418 -0
- package/dist/nodes/messaging.js.map +1 -0
- package/dist/nodes/mistral.d.ts +83 -0
- package/dist/nodes/mistral.d.ts.map +1 -0
- package/dist/nodes/mistral.js +450 -0
- package/dist/nodes/mistral.js.map +1 -0
- package/dist/nodes/model3d/analysis.d.ts +13 -0
- package/dist/nodes/model3d/analysis.d.ts.map +1 -0
- package/dist/nodes/model3d/analysis.js +36 -0
- package/dist/nodes/model3d/analysis.js.map +1 -0
- package/dist/nodes/model3d/base.d.ts +11 -0
- package/dist/nodes/model3d/base.d.ts.map +1 -0
- package/dist/nodes/model3d/base.js +20 -0
- package/dist/nodes/model3d/base.js.map +1 -0
- package/dist/nodes/model3d/boolean-ops.d.ts +2 -0
- package/dist/nodes/model3d/boolean-ops.d.ts.map +1 -0
- package/dist/nodes/model3d/boolean-ops.js +172 -0
- package/dist/nodes/model3d/boolean-ops.js.map +1 -0
- package/dist/nodes/model3d/cleanup.d.ts +47 -0
- package/dist/nodes/model3d/cleanup.d.ts.map +1 -0
- package/dist/nodes/model3d/cleanup.js +136 -0
- package/dist/nodes/model3d/cleanup.js.map +1 -0
- package/dist/nodes/model3d/convert.d.ts +14 -0
- package/dist/nodes/model3d/convert.d.ts.map +1 -0
- package/dist/nodes/model3d/convert.js +64 -0
- package/dist/nodes/model3d/convert.js.map +1 -0
- package/dist/nodes/model3d/defaults.d.ts +34 -0
- package/dist/nodes/model3d/defaults.d.ts.map +1 -0
- package/dist/nodes/model3d/defaults.js +28 -0
- package/dist/nodes/model3d/defaults.js.map +1 -0
- package/dist/nodes/model3d/document-ops.d.ts +4 -0
- package/dist/nodes/model3d/document-ops.d.ts.map +1 -0
- package/dist/nodes/model3d/document-ops.js +40 -0
- package/dist/nodes/model3d/document-ops.js.map +1 -0
- package/dist/nodes/model3d/generation.d.ts +39 -0
- package/dist/nodes/model3d/generation.d.ts.map +1 -0
- package/dist/nodes/model3d/generation.js +179 -0
- package/dist/nodes/model3d/generation.js.map +1 -0
- package/dist/nodes/model3d/glb.d.ts +29 -0
- package/dist/nodes/model3d/glb.d.ts.map +1 -0
- package/dist/nodes/model3d/glb.js +255 -0
- package/dist/nodes/model3d/glb.js.map +1 -0
- package/dist/nodes/model3d/index.d.ts +20 -0
- package/dist/nodes/model3d/index.d.ts.map +1 -0
- package/dist/nodes/model3d/index.js +38 -0
- package/dist/nodes/model3d/index.js.map +1 -0
- package/dist/nodes/model3d/io.d.ts +38 -0
- package/dist/nodes/model3d/io.d.ts.map +1 -0
- package/dist/nodes/model3d/io.js +162 -0
- package/dist/nodes/model3d/io.js.map +1 -0
- package/dist/nodes/model3d/mesh-ops.d.ts +40 -0
- package/dist/nodes/model3d/mesh-ops.d.ts.map +1 -0
- package/dist/nodes/model3d/mesh-ops.js +775 -0
- package/dist/nodes/model3d/mesh-ops.js.map +1 -0
- package/dist/nodes/model3d/nodes.d.ts +2 -0
- package/dist/nodes/model3d/nodes.d.ts.map +1 -0
- package/dist/nodes/model3d/nodes.js +2 -0
- package/dist/nodes/model3d/nodes.js.map +1 -0
- package/dist/nodes/model3d/ops.d.ts +37 -0
- package/dist/nodes/model3d/ops.d.ts.map +1 -0
- package/dist/nodes/model3d/ops.js +137 -0
- package/dist/nodes/model3d/ops.js.map +1 -0
- package/dist/nodes/model3d/transforms.d.ts +49 -0
- package/dist/nodes/model3d/transforms.d.ts.map +1 -0
- package/dist/nodes/model3d/transforms.js +142 -0
- package/dist/nodes/model3d/transforms.js.map +1 -0
- package/dist/nodes/model3d/types.d.ts +81 -0
- package/dist/nodes/model3d/types.d.ts.map +1 -0
- package/dist/nodes/model3d/types.js +2 -0
- package/dist/nodes/model3d/types.js.map +1 -0
- package/dist/nodes/model3d/utils.d.ts +34 -0
- package/dist/nodes/model3d/utils.d.ts.map +1 -0
- package/dist/nodes/model3d/utils.js +185 -0
- package/dist/nodes/model3d/utils.js.map +1 -0
- package/dist/nodes/model3d.d.ts +2 -0
- package/dist/nodes/model3d.d.ts.map +1 -0
- package/dist/nodes/model3d.js +2 -0
- package/dist/nodes/model3d.js.map +1 -0
- package/dist/nodes/openai.d.ts +172 -0
- package/dist/nodes/openai.d.ts.map +1 -0
- package/dist/nodes/openai.js +1294 -0
- package/dist/nodes/openai.js.map +1 -0
- package/dist/nodes/output.d.ts +29 -0
- package/dist/nodes/output.d.ts.map +1 -0
- package/dist/nodes/output.js +87 -0
- package/dist/nodes/output.js.map +1 -0
- package/dist/nodes/sandbox.d.ts +67 -0
- package/dist/nodes/sandbox.d.ts.map +1 -0
- package/dist/nodes/sandbox.js +681 -0
- package/dist/nodes/sandbox.js.map +1 -0
- package/dist/nodes/search.d.ts +117 -0
- package/dist/nodes/search.d.ts.map +1 -0
- package/dist/nodes/search.js +607 -0
- package/dist/nodes/search.js.map +1 -0
- package/dist/nodes/team.d.ts +74 -0
- package/dist/nodes/team.d.ts.map +1 -0
- package/dist/nodes/team.js +304 -0
- package/dist/nodes/team.js.map +1 -0
- package/dist/nodes/text-extra.d.ts +633 -0
- package/dist/nodes/text-extra.d.ts.map +1 -0
- package/dist/nodes/text-extra.js +2226 -0
- package/dist/nodes/text-extra.js.map +1 -0
- package/dist/nodes/tool-agents.d.ts +334 -0
- package/dist/nodes/tool-agents.d.ts.map +1 -0
- package/dist/nodes/tool-agents.js +1861 -0
- package/dist/nodes/tool-agents.js.map +1 -0
- package/dist/nodes/triggers.d.ts +107 -0
- package/dist/nodes/triggers.d.ts.map +1 -0
- package/dist/nodes/triggers.js +706 -0
- package/dist/nodes/triggers.js.map +1 -0
- package/dist/nodes/vector.d.ts +168 -0
- package/dist/nodes/vector.d.ts.map +1 -0
- package/dist/nodes/vector.js +1121 -0
- package/dist/nodes/vector.js.map +1 -0
- package/dist/nodes/video.d.ts +387 -0
- package/dist/nodes/video.d.ts.map +1 -0
- package/dist/nodes/video.js +2361 -0
- package/dist/nodes/video.js.map +1 -0
- package/dist/nodes/workflow.d.ts +24 -0
- package/dist/nodes/workflow.d.ts.map +1 -0
- package/dist/nodes/workflow.js +146 -0
- package/dist/nodes/workflow.js.map +1 -0
- package/dist/nodes/workspace.d.ts +203 -0
- package/dist/nodes/workspace.d.ts.map +1 -0
- package/dist/nodes/workspace.js +795 -0
- package/dist/nodes/workspace.js.map +1 -0
- package/package.json +103 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { BaseNode, prop } from "@nodetool-ai/node-sdk";
|
|
8
|
+
import { DEFAULT_IMAGE, DEFAULT_IMAGE_TO_3D_MODEL, DEFAULT_TEXT_TO_3D_MODEL } from "./defaults.js";
|
|
9
|
+
import { glbOutput } from "./base.js";
|
|
10
|
+
import { imageRefToBytes } from "./utils.js";
|
|
11
|
+
const SUPPORTED_OUTPUT_FORMATS = ["glb", "obj", "fbx", "usdz"];
|
|
12
|
+
/**
|
|
13
|
+
* Build the {@link Model3D} object expected by the runtime providers from the
|
|
14
|
+
* `model_3d_model`-shaped value carried by the node prop. The node prop uses
|
|
15
|
+
* snake_case (`supported_tasks`, `output_formats`) to match the persisted
|
|
16
|
+
* workflow JSON; the provider layer uses camelCase.
|
|
17
|
+
*/
|
|
18
|
+
function nodeModelToProviderModel(raw) {
|
|
19
|
+
const obj = raw ?? {};
|
|
20
|
+
const provider = String(obj.provider ?? "").trim();
|
|
21
|
+
const id = String(obj.id ?? "").trim();
|
|
22
|
+
if (!provider)
|
|
23
|
+
throw new Error("3D model is missing a provider id");
|
|
24
|
+
if (!id)
|
|
25
|
+
throw new Error("3D model is missing a model id");
|
|
26
|
+
return {
|
|
27
|
+
id,
|
|
28
|
+
name: String(obj.name ?? id),
|
|
29
|
+
provider,
|
|
30
|
+
supportedTasks: Array.isArray(obj.supported_tasks)
|
|
31
|
+
? obj.supported_tasks
|
|
32
|
+
: undefined,
|
|
33
|
+
outputFormats: Array.isArray(obj.output_formats)
|
|
34
|
+
? obj.output_formats
|
|
35
|
+
: undefined
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/** Treat 0 (the field's "use provider default" sentinel) as undefined. */
|
|
39
|
+
function normalizeTimeoutSeconds(v) {
|
|
40
|
+
if (typeof v !== "number" || !Number.isFinite(v) || v <= 0)
|
|
41
|
+
return null;
|
|
42
|
+
return v;
|
|
43
|
+
}
|
|
44
|
+
/** -1 is the random-seed sentinel; convert to null so providers omit it. */
|
|
45
|
+
function normalizeSeed(v) {
|
|
46
|
+
if (typeof v !== "number" || !Number.isFinite(v) || v < 0)
|
|
47
|
+
return null;
|
|
48
|
+
return v;
|
|
49
|
+
}
|
|
50
|
+
function normalizeOutputFormat(value, model, nodeType) {
|
|
51
|
+
const format = String(value ?? "glb")
|
|
52
|
+
.trim()
|
|
53
|
+
.toLowerCase();
|
|
54
|
+
if (!SUPPORTED_OUTPUT_FORMATS.includes(format)) {
|
|
55
|
+
throw new Error(`${nodeType} output_format must be one of: ${SUPPORTED_OUTPUT_FORMATS.join(", ")}`);
|
|
56
|
+
}
|
|
57
|
+
const modelFormats = (model.outputFormats ?? [])
|
|
58
|
+
.map((f) => String(f).trim().toLowerCase())
|
|
59
|
+
.filter((f) => f.length > 0);
|
|
60
|
+
if (modelFormats.length > 0 && !modelFormats.includes(format)) {
|
|
61
|
+
throw new Error(`Model "${model.id}" does not support output format "${format}". Supported formats: ${modelFormats.join(", ")}`);
|
|
62
|
+
}
|
|
63
|
+
return format;
|
|
64
|
+
}
|
|
65
|
+
export class TextTo3DNode extends BaseNode {
|
|
66
|
+
static nodeType = "nodetool.model3d.TextTo3D";
|
|
67
|
+
static title = "Text To 3D";
|
|
68
|
+
static description = "Generate 3D models from text prompts using AI providers (Meshy, Rodin).\n 3d, generation, AI, text-to-3d, t3d, mesh, create\n\n Use cases:\n - Create 3D models from text descriptions\n - Generate game assets from prompts\n - Prototype 3D concepts quickly\n - Create 3D content for AR/VR";
|
|
69
|
+
static metadataOutputTypes = {
|
|
70
|
+
output: "model_3d"
|
|
71
|
+
};
|
|
72
|
+
static basicFields = ["model", "prompt", "enable_textures", "output_format", "seed"];
|
|
73
|
+
static exposeAsTool = true;
|
|
74
|
+
async process(context) {
|
|
75
|
+
if (!context) {
|
|
76
|
+
throw new Error("TextTo3DNode requires a ProcessingContext to resolve the provider");
|
|
77
|
+
}
|
|
78
|
+
if (!this.prompt || typeof this.prompt !== "string") {
|
|
79
|
+
throw new Error("Prompt is required");
|
|
80
|
+
}
|
|
81
|
+
const model = nodeModelToProviderModel(this.model);
|
|
82
|
+
const provider = await context.getProvider(model.provider);
|
|
83
|
+
const params = {
|
|
84
|
+
model,
|
|
85
|
+
prompt: this.prompt,
|
|
86
|
+
negativePrompt: this.negative_prompt || null,
|
|
87
|
+
artStyle: this.art_style || null,
|
|
88
|
+
outputFormat: normalizeOutputFormat(this.output_format, model, "TextTo3DNode"),
|
|
89
|
+
seed: normalizeSeed(this.seed),
|
|
90
|
+
timeoutSeconds: normalizeTimeoutSeconds(this.timeout_seconds),
|
|
91
|
+
enableTextures: this.enable_textures === true
|
|
92
|
+
};
|
|
93
|
+
const bytes = await provider.textTo3D(params);
|
|
94
|
+
return glbOutput(bytes);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
__decorate([
|
|
98
|
+
prop({
|
|
99
|
+
type: "model_3d_model",
|
|
100
|
+
default: DEFAULT_TEXT_TO_3D_MODEL,
|
|
101
|
+
title: "Model",
|
|
102
|
+
description: "The 3D generation model to use"
|
|
103
|
+
})
|
|
104
|
+
], TextTo3DNode.prototype, "model", void 0);
|
|
105
|
+
__decorate([
|
|
106
|
+
prop({ type: "str", default: "", title: "Prompt", description: "Text description of the 3D model to generate" })
|
|
107
|
+
], TextTo3DNode.prototype, "prompt", void 0);
|
|
108
|
+
__decorate([
|
|
109
|
+
prop({ type: "str", default: "", title: "Negative Prompt", description: "Elements to avoid in the generated model" })
|
|
110
|
+
], TextTo3DNode.prototype, "negative_prompt", void 0);
|
|
111
|
+
__decorate([
|
|
112
|
+
prop({ type: "str", default: "", title: "Art Style", description: "Art style for the model (e.g., 'realistic', 'cartoon', 'low-poly')" })
|
|
113
|
+
], TextTo3DNode.prototype, "art_style", void 0);
|
|
114
|
+
__decorate([
|
|
115
|
+
prop({ type: "enum", default: "glb", title: "Output Format", description: "Output format for the 3D model", values: [...SUPPORTED_OUTPUT_FORMATS] })
|
|
116
|
+
], TextTo3DNode.prototype, "output_format", void 0);
|
|
117
|
+
__decorate([
|
|
118
|
+
prop({ type: "bool", default: true, title: "Enable Textures", description: "Generate PBR textures after shape generation (Meshy only; adds a second API call)" })
|
|
119
|
+
], TextTo3DNode.prototype, "enable_textures", void 0);
|
|
120
|
+
__decorate([
|
|
121
|
+
prop({ type: "int", default: -1, title: "Seed", description: "Random seed for reproducibility (-1 for random)", min: -1 })
|
|
122
|
+
], TextTo3DNode.prototype, "seed", void 0);
|
|
123
|
+
__decorate([
|
|
124
|
+
prop({ type: "int", default: 600, title: "Timeout Seconds", description: "Timeout in seconds for API calls (0 = use provider default)", min: 0, max: 7200 })
|
|
125
|
+
], TextTo3DNode.prototype, "timeout_seconds", void 0);
|
|
126
|
+
export class ImageTo3DNode extends BaseNode {
|
|
127
|
+
static nodeType = "nodetool.model3d.ImageTo3D";
|
|
128
|
+
static title = "Image To 3D";
|
|
129
|
+
static description = "Generate 3D models from images using AI providers (Meshy, Rodin).\n 3d, generation, AI, image-to-3d, i3d, mesh, reconstruction\n\n Use cases:\n - Convert product photos to 3D models\n - Create 3D assets from concept art\n - Generate 3D characters from drawings\n - Reconstruct objects from images";
|
|
130
|
+
static metadataOutputTypes = {
|
|
131
|
+
output: "model_3d"
|
|
132
|
+
};
|
|
133
|
+
static basicFields = ["model", "image", "output_format", "seed"];
|
|
134
|
+
static exposeAsTool = true;
|
|
135
|
+
async process(context) {
|
|
136
|
+
if (!context) {
|
|
137
|
+
throw new Error("ImageTo3DNode requires a ProcessingContext to resolve the provider");
|
|
138
|
+
}
|
|
139
|
+
const model = nodeModelToProviderModel(this.model);
|
|
140
|
+
const provider = await context.getProvider(model.provider);
|
|
141
|
+
const imageBytes = await imageRefToBytes(this.image, context);
|
|
142
|
+
if (imageBytes.length === 0) {
|
|
143
|
+
throw new Error("Image input is empty");
|
|
144
|
+
}
|
|
145
|
+
const params = {
|
|
146
|
+
model,
|
|
147
|
+
prompt: this.prompt ? String(this.prompt) : null,
|
|
148
|
+
outputFormat: normalizeOutputFormat(this.output_format, model, "ImageTo3DNode"),
|
|
149
|
+
seed: normalizeSeed(this.seed),
|
|
150
|
+
timeoutSeconds: normalizeTimeoutSeconds(this.timeout_seconds)
|
|
151
|
+
};
|
|
152
|
+
const bytes = await provider.imageTo3D(imageBytes, params);
|
|
153
|
+
return glbOutput(bytes);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
__decorate([
|
|
157
|
+
prop({
|
|
158
|
+
type: "model_3d_model",
|
|
159
|
+
default: DEFAULT_IMAGE_TO_3D_MODEL,
|
|
160
|
+
title: "Model",
|
|
161
|
+
description: "The 3D generation model to use"
|
|
162
|
+
})
|
|
163
|
+
], ImageTo3DNode.prototype, "model", void 0);
|
|
164
|
+
__decorate([
|
|
165
|
+
prop({ type: "image", default: DEFAULT_IMAGE, title: "Image", description: "Input image to convert to 3D" })
|
|
166
|
+
], ImageTo3DNode.prototype, "image", void 0);
|
|
167
|
+
__decorate([
|
|
168
|
+
prop({ type: "str", default: "", title: "Prompt", description: "Optional text prompt to guide the 3D generation" })
|
|
169
|
+
], ImageTo3DNode.prototype, "prompt", void 0);
|
|
170
|
+
__decorate([
|
|
171
|
+
prop({ type: "enum", default: "glb", title: "Output Format", description: "Output format for the 3D model", values: [...SUPPORTED_OUTPUT_FORMATS] })
|
|
172
|
+
], ImageTo3DNode.prototype, "output_format", void 0);
|
|
173
|
+
__decorate([
|
|
174
|
+
prop({ type: "int", default: -1, title: "Seed", description: "Random seed for reproducibility (-1 for random)", min: -1 })
|
|
175
|
+
], ImageTo3DNode.prototype, "seed", void 0);
|
|
176
|
+
__decorate([
|
|
177
|
+
prop({ type: "int", default: 600, title: "Timeout Seconds", description: "Timeout in seconds for API calls (0 = use provider default)", min: 0, max: 7200 })
|
|
178
|
+
], ImageTo3DNode.prototype, "timeout_seconds", void 0);
|
|
179
|
+
//# sourceMappingURL=generation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generation.js","sourceRoot":"","sources":["../../../src/nodes/model3d/generation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { GltfAccessor, GltfBufferView, GltfJson, Model3DMetadata, Model3DRefLike } from "./types.js";
|
|
2
|
+
export declare const GLB_MAGIC = 1179937895;
|
|
3
|
+
export declare const CHUNK_JSON = 1313821514;
|
|
4
|
+
export declare const CHUNK_BIN = 5130562;
|
|
5
|
+
export declare const COMP_UNSIGNED_SHORT = 5123;
|
|
6
|
+
export declare const COMP_UNSIGNED_INT = 5125;
|
|
7
|
+
export declare const COMP_FLOAT = 5126;
|
|
8
|
+
export declare function parseGlb(data: Uint8Array): {
|
|
9
|
+
json: GltfJson;
|
|
10
|
+
bin: Uint8Array;
|
|
11
|
+
} | null;
|
|
12
|
+
export declare function buildGlb(json: GltfJson, bin: Uint8Array): Uint8Array;
|
|
13
|
+
export declare function glbReadVec3(bin: Uint8Array, acc: GltfAccessor, bv: GltfBufferView): Float32Array;
|
|
14
|
+
export declare function glbWriteVec3(bin: Uint8Array, acc: GltfAccessor, bv: GltfBufferView, data: Float32Array): void;
|
|
15
|
+
export declare function glbReadIndices(bin: Uint8Array, acc: GltfAccessor, bv: GltfBufferView): Uint32Array | null;
|
|
16
|
+
export declare function glbWriteIndices(bin: Uint8Array, acc: GltfAccessor, bv: GltfBufferView, data: Uint32Array): void;
|
|
17
|
+
export declare function glbUpdateMinMax(acc: GltfAccessor, data: Float32Array): void;
|
|
18
|
+
export declare function glbGetVec3Accessor(json: GltfJson, accIdx: number): {
|
|
19
|
+
acc: GltfAccessor;
|
|
20
|
+
bv: GltfBufferView;
|
|
21
|
+
} | null;
|
|
22
|
+
export declare function glbGetIndexAccessor(json: GltfJson, accIdx: number): {
|
|
23
|
+
acc: GltfAccessor;
|
|
24
|
+
bv: GltfBufferView;
|
|
25
|
+
} | null;
|
|
26
|
+
export declare function analyzeGlbMetadata(model: Model3DRefLike, bytes: Uint8Array): Model3DMetadata;
|
|
27
|
+
export declare function fallbackMetadata(model: Model3DRefLike, bytes: Uint8Array): Model3DMetadata;
|
|
28
|
+
export declare function requireGlbBytes(model: Model3DRefLike, bytes: Uint8Array, purpose: string): Uint8Array;
|
|
29
|
+
//# sourceMappingURL=glb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glb.d.ts","sourceRoot":"","sources":["../../../src/nodes/model3d/glb.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,eAAe,EACf,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,SAAS,aAAa,CAAC;AACpC,eAAO,MAAM,UAAU,aAAa,CAAC;AACrC,eAAO,MAAM,SAAS,UAAa,CAAC;AACpC,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,UAAU,OAAO,CAAC;AAE/B,wBAAgB,QAAQ,CACtB,IAAI,EAAE,UAAU,GACf;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,UAAU,CAAA;CAAE,GAAG,IAAI,CAqB5C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAsBpE;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,YAAY,EACjB,EAAE,EAAE,cAAc,GACjB,YAAY,CAYd;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,YAAY,EACjB,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,YAAY,GACjB,IAAI,CAUN;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,YAAY,EACjB,EAAE,EAAE,cAAc,GACjB,WAAW,GAAG,IAAI,CAgBpB;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,YAAY,EACjB,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,WAAW,GAChB,IAAI,CAYN;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAY3E;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,GACb;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,cAAc,CAAA;CAAE,GAAG,IAAI,CAQlD;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,GACb;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,cAAc,CAAA;CAAE,GAAG,IAAI,CAMlD;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,UAAU,GAChB,eAAe,CAsFjB;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,UAAU,GAChB,eAAe,CAoBjB;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,GACd,UAAU,CAQZ"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { modelFormat } from "./utils.js";
|
|
2
|
+
export const GLB_MAGIC = 0x46546c67;
|
|
3
|
+
export const CHUNK_JSON = 0x4e4f534a;
|
|
4
|
+
export const CHUNK_BIN = 0x004e4942;
|
|
5
|
+
export const COMP_UNSIGNED_SHORT = 5123;
|
|
6
|
+
export const COMP_UNSIGNED_INT = 5125;
|
|
7
|
+
export const COMP_FLOAT = 5126;
|
|
8
|
+
export function parseGlb(data) {
|
|
9
|
+
if (data.length < 12)
|
|
10
|
+
return null;
|
|
11
|
+
const dv = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
12
|
+
if (dv.getUint32(0, true) !== GLB_MAGIC)
|
|
13
|
+
return null;
|
|
14
|
+
let off = 12;
|
|
15
|
+
let json = {};
|
|
16
|
+
let bin = new Uint8Array(0);
|
|
17
|
+
while (off + 8 <= data.length) {
|
|
18
|
+
const len = dv.getUint32(off, true);
|
|
19
|
+
const type = dv.getUint32(off + 4, true);
|
|
20
|
+
off += 8;
|
|
21
|
+
if (type === CHUNK_JSON) {
|
|
22
|
+
json = JSON.parse(new TextDecoder().decode(data.slice(off, off + len)));
|
|
23
|
+
}
|
|
24
|
+
else if (type === CHUNK_BIN) {
|
|
25
|
+
bin = data.slice(off, off + len);
|
|
26
|
+
}
|
|
27
|
+
off += len;
|
|
28
|
+
}
|
|
29
|
+
return { json, bin };
|
|
30
|
+
}
|
|
31
|
+
export function buildGlb(json, bin) {
|
|
32
|
+
const jsonStr = JSON.stringify(json);
|
|
33
|
+
const encodedJsonBytes = new TextEncoder().encode(jsonStr);
|
|
34
|
+
const jsonPad = (4 - (encodedJsonBytes.length % 4)) % 4;
|
|
35
|
+
const jsonBytes = new Uint8Array(encodedJsonBytes.length + jsonPad);
|
|
36
|
+
jsonBytes.set(encodedJsonBytes);
|
|
37
|
+
jsonBytes.fill(0x20, encodedJsonBytes.length);
|
|
38
|
+
const binPad = (4 - (bin.length % 4)) % 4;
|
|
39
|
+
const total = 12 + 8 + jsonBytes.length + 8 + bin.length + binPad;
|
|
40
|
+
const out = new Uint8Array(total);
|
|
41
|
+
const dv = new DataView(out.buffer);
|
|
42
|
+
dv.setUint32(0, GLB_MAGIC, true);
|
|
43
|
+
dv.setUint32(4, 2, true);
|
|
44
|
+
dv.setUint32(8, total, true);
|
|
45
|
+
dv.setUint32(12, jsonBytes.length, true);
|
|
46
|
+
dv.setUint32(16, CHUNK_JSON, true);
|
|
47
|
+
out.set(jsonBytes, 20);
|
|
48
|
+
const binOff = 20 + jsonBytes.length;
|
|
49
|
+
dv.setUint32(binOff, bin.length + binPad, true);
|
|
50
|
+
dv.setUint32(binOff + 4, CHUNK_BIN, true);
|
|
51
|
+
out.set(bin, binOff + 8);
|
|
52
|
+
return out;
|
|
53
|
+
}
|
|
54
|
+
export function glbReadVec3(bin, acc, bv) {
|
|
55
|
+
const baseOff = (bv.byteOffset ?? 0) + (acc.byteOffset ?? 0);
|
|
56
|
+
const stride = bv.byteStride ?? 12;
|
|
57
|
+
const result = new Float32Array(acc.count * 3);
|
|
58
|
+
const dv = new DataView(bin.buffer, bin.byteOffset);
|
|
59
|
+
for (let i = 0; i < acc.count; i++) {
|
|
60
|
+
const o = baseOff + i * stride;
|
|
61
|
+
result[i * 3] = dv.getFloat32(o, true);
|
|
62
|
+
result[i * 3 + 1] = dv.getFloat32(o + 4, true);
|
|
63
|
+
result[i * 3 + 2] = dv.getFloat32(o + 8, true);
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
export function glbWriteVec3(bin, acc, bv, data) {
|
|
68
|
+
const baseOff = (bv.byteOffset ?? 0) + (acc.byteOffset ?? 0);
|
|
69
|
+
const stride = bv.byteStride ?? 12;
|
|
70
|
+
const dv = new DataView(bin.buffer, bin.byteOffset);
|
|
71
|
+
for (let i = 0; i < acc.count; i++) {
|
|
72
|
+
const o = baseOff + i * stride;
|
|
73
|
+
dv.setFloat32(o, data[i * 3], true);
|
|
74
|
+
dv.setFloat32(o + 4, data[i * 3 + 1], true);
|
|
75
|
+
dv.setFloat32(o + 8, data[i * 3 + 2], true);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
export function glbReadIndices(bin, acc, bv) {
|
|
79
|
+
const baseOff = (bv.byteOffset ?? 0) + (acc.byteOffset ?? 0);
|
|
80
|
+
const dv = new DataView(bin.buffer, bin.byteOffset);
|
|
81
|
+
const result = new Uint32Array(acc.count);
|
|
82
|
+
if (acc.componentType === COMP_UNSIGNED_SHORT) {
|
|
83
|
+
for (let i = 0; i < acc.count; i++) {
|
|
84
|
+
result[i] = dv.getUint16(baseOff + i * 2, true);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else if (acc.componentType === COMP_UNSIGNED_INT) {
|
|
88
|
+
for (let i = 0; i < acc.count; i++) {
|
|
89
|
+
result[i] = dv.getUint32(baseOff + i * 4, true);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
export function glbWriteIndices(bin, acc, bv, data) {
|
|
98
|
+
const baseOff = (bv.byteOffset ?? 0) + (acc.byteOffset ?? 0);
|
|
99
|
+
const dv = new DataView(bin.buffer, bin.byteOffset);
|
|
100
|
+
if (acc.componentType === COMP_UNSIGNED_SHORT) {
|
|
101
|
+
for (let i = 0; i < data.length; i++) {
|
|
102
|
+
dv.setUint16(baseOff + i * 2, data[i], true);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else if (acc.componentType === COMP_UNSIGNED_INT) {
|
|
106
|
+
for (let i = 0; i < data.length; i++) {
|
|
107
|
+
dv.setUint32(baseOff + i * 4, data[i], true);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
export function glbUpdateMinMax(acc, data) {
|
|
112
|
+
if (acc.type !== "VEC3")
|
|
113
|
+
return;
|
|
114
|
+
const min = [Infinity, Infinity, Infinity];
|
|
115
|
+
const max = [-Infinity, -Infinity, -Infinity];
|
|
116
|
+
for (let i = 0; i < data.length; i += 3) {
|
|
117
|
+
for (let j = 0; j < 3; j++) {
|
|
118
|
+
if (data[i + j] < min[j])
|
|
119
|
+
min[j] = data[i + j];
|
|
120
|
+
if (data[i + j] > max[j])
|
|
121
|
+
max[j] = data[i + j];
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
acc.min = min;
|
|
125
|
+
acc.max = max;
|
|
126
|
+
}
|
|
127
|
+
export function glbGetVec3Accessor(json, accIdx) {
|
|
128
|
+
const acc = json.accessors?.[accIdx];
|
|
129
|
+
if (!acc || acc.componentType !== COMP_FLOAT || acc.type !== "VEC3") {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
const bv = json.bufferViews?.[acc.bufferView];
|
|
133
|
+
if (!bv)
|
|
134
|
+
return null;
|
|
135
|
+
return { acc, bv };
|
|
136
|
+
}
|
|
137
|
+
export function glbGetIndexAccessor(json, accIdx) {
|
|
138
|
+
const acc = json.accessors?.[accIdx];
|
|
139
|
+
if (!acc)
|
|
140
|
+
return null;
|
|
141
|
+
const bv = json.bufferViews?.[acc.bufferView];
|
|
142
|
+
if (!bv)
|
|
143
|
+
return null;
|
|
144
|
+
return { acc, bv };
|
|
145
|
+
}
|
|
146
|
+
export function analyzeGlbMetadata(model, bytes) {
|
|
147
|
+
const glb = parseGlb(bytes);
|
|
148
|
+
if (!glb) {
|
|
149
|
+
throw new Error("Expected valid GLB bytes.");
|
|
150
|
+
}
|
|
151
|
+
let vertexCount = 0;
|
|
152
|
+
let faceCount = 0;
|
|
153
|
+
let primitiveCount = 0;
|
|
154
|
+
const meshCount = glb.json.meshes?.length ?? 0;
|
|
155
|
+
const min = [Infinity, Infinity, Infinity];
|
|
156
|
+
const max = [-Infinity, -Infinity, -Infinity];
|
|
157
|
+
let hasBounds = false;
|
|
158
|
+
for (const mesh of glb.json.meshes ?? []) {
|
|
159
|
+
for (const primitive of mesh.primitives) {
|
|
160
|
+
primitiveCount += 1;
|
|
161
|
+
const posIndex = primitive.attributes["POSITION"];
|
|
162
|
+
if (posIndex !== undefined) {
|
|
163
|
+
const accessorRef = glbGetVec3Accessor(glb.json, posIndex);
|
|
164
|
+
if (accessorRef) {
|
|
165
|
+
vertexCount += accessorRef.acc.count;
|
|
166
|
+
const accMin = accessorRef.acc.min;
|
|
167
|
+
const accMax = accessorRef.acc.max;
|
|
168
|
+
if (accMin && accMax && accMin.length >= 3 && accMax.length >= 3) {
|
|
169
|
+
for (let i = 0; i < 3; i++) {
|
|
170
|
+
if (accMin[i] < min[i])
|
|
171
|
+
min[i] = accMin[i];
|
|
172
|
+
if (accMax[i] > max[i])
|
|
173
|
+
max[i] = accMax[i];
|
|
174
|
+
}
|
|
175
|
+
hasBounds = true;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
const positions = glbReadVec3(glb.bin, accessorRef.acc, accessorRef.bv);
|
|
179
|
+
for (let i = 0; i < positions.length; i += 3) {
|
|
180
|
+
for (let j = 0; j < 3; j++) {
|
|
181
|
+
if (positions[i + j] < min[j])
|
|
182
|
+
min[j] = positions[i + j];
|
|
183
|
+
if (positions[i + j] > max[j])
|
|
184
|
+
max[j] = positions[i + j];
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
hasBounds = positions.length > 0 || hasBounds;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
const mode = primitive.mode ?? 4;
|
|
192
|
+
if (mode !== 4)
|
|
193
|
+
continue;
|
|
194
|
+
if (primitive.indices !== undefined) {
|
|
195
|
+
const indexRef = glbGetIndexAccessor(glb.json, primitive.indices);
|
|
196
|
+
if (indexRef) {
|
|
197
|
+
faceCount += Math.floor(indexRef.acc.count / 3);
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
const positionAccessor = posIndex !== undefined ? glbGetVec3Accessor(glb.json, posIndex) : null;
|
|
202
|
+
if (positionAccessor) {
|
|
203
|
+
faceCount += Math.floor(positionAccessor.acc.count / 3);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return {
|
|
208
|
+
uri: model.uri ?? "",
|
|
209
|
+
format: "glb",
|
|
210
|
+
size_bytes: bytes.length,
|
|
211
|
+
vertices: vertexCount,
|
|
212
|
+
faces: faceCount,
|
|
213
|
+
vertex_count: vertexCount,
|
|
214
|
+
face_count: faceCount,
|
|
215
|
+
mesh_count: meshCount,
|
|
216
|
+
primitive_count: primitiveCount,
|
|
217
|
+
bounds_min: hasBounds ? min : [],
|
|
218
|
+
bounds_max: hasBounds ? max : [],
|
|
219
|
+
is_watertight: false,
|
|
220
|
+
center_of_mass: null,
|
|
221
|
+
volume: null,
|
|
222
|
+
surface_area: null
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
export function fallbackMetadata(model, bytes) {
|
|
226
|
+
const vertices = model.vertices ?? Math.floor(bytes.length / 32);
|
|
227
|
+
const faces = model.faces ?? Math.floor(vertices / 3);
|
|
228
|
+
return {
|
|
229
|
+
uri: model.uri ?? "",
|
|
230
|
+
format: modelFormat(model),
|
|
231
|
+
size_bytes: bytes.length,
|
|
232
|
+
vertices,
|
|
233
|
+
faces,
|
|
234
|
+
vertex_count: vertices,
|
|
235
|
+
face_count: faces,
|
|
236
|
+
mesh_count: 0,
|
|
237
|
+
primitive_count: 0,
|
|
238
|
+
bounds_min: [],
|
|
239
|
+
bounds_max: [],
|
|
240
|
+
is_watertight: false,
|
|
241
|
+
center_of_mass: null,
|
|
242
|
+
volume: null,
|
|
243
|
+
surface_area: null
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
export function requireGlbBytes(model, bytes, purpose) {
|
|
247
|
+
if (modelFormat(model) !== "glb") {
|
|
248
|
+
throw new Error(`Unsupported model ${purpose}: only GLB is supported.`);
|
|
249
|
+
}
|
|
250
|
+
if (!parseGlb(bytes)) {
|
|
251
|
+
throw new Error(`Unsupported model ${purpose}: expected valid GLB bytes.`);
|
|
252
|
+
}
|
|
253
|
+
return bytes;
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=glb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glb.js","sourceRoot":"","sources":["../../../src/nodes/model3d/glb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { GlbTransformNode, glbOutput } from "./base.js";
|
|
2
|
+
export * from "./defaults.js";
|
|
3
|
+
export * from "./io.js";
|
|
4
|
+
export * from "./convert.js";
|
|
5
|
+
export * from "./analysis.js";
|
|
6
|
+
export * from "./transforms.js";
|
|
7
|
+
export * from "./cleanup.js";
|
|
8
|
+
export * from "./ops.js";
|
|
9
|
+
export * from "./generation.js";
|
|
10
|
+
import { LoadModel3DFileNode } from "./io.js";
|
|
11
|
+
import { SaveModel3DFileNode } from "./io.js";
|
|
12
|
+
import { SaveModel3DNode } from "./io.js";
|
|
13
|
+
import { FormatConverterNode } from "./convert.js";
|
|
14
|
+
import { GetModel3DMetadataNode } from "./analysis.js";
|
|
15
|
+
import { Transform3DNode, CenterMeshNode, NormalizeModel3DNode } from "./transforms.js";
|
|
16
|
+
import { DecimateNode, Boolean3DNode, MergeMeshesNode } from "./ops.js";
|
|
17
|
+
import { RecalculateNormalsNode, FlipNormalsNode, ExtractLargestComponentNode, RepairMeshNode } from "./cleanup.js";
|
|
18
|
+
import { TextTo3DNode, ImageTo3DNode } from "./generation.js";
|
|
19
|
+
export declare const MODEL3D_NODES: readonly [typeof LoadModel3DFileNode, typeof SaveModel3DFileNode, typeof SaveModel3DNode, typeof FormatConverterNode, typeof GetModel3DMetadataNode, typeof Transform3DNode, typeof DecimateNode, typeof Boolean3DNode, typeof RecalculateNormalsNode, typeof CenterMeshNode, typeof FlipNormalsNode, typeof NormalizeModel3DNode, typeof ExtractLargestComponentNode, typeof RepairMeshNode, typeof MergeMeshesNode, typeof TextTo3DNode, typeof ImageTo3DNode];
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nodes/model3d/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACxD,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,2BAA2B,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACpH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE9D,eAAO,MAAM,aAAa,kcAkBhB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export { GlbTransformNode, glbOutput } from "./base.js";
|
|
2
|
+
export * from "./defaults.js";
|
|
3
|
+
export * from "./io.js";
|
|
4
|
+
export * from "./convert.js";
|
|
5
|
+
export * from "./analysis.js";
|
|
6
|
+
export * from "./transforms.js";
|
|
7
|
+
export * from "./cleanup.js";
|
|
8
|
+
export * from "./ops.js";
|
|
9
|
+
export * from "./generation.js";
|
|
10
|
+
import { LoadModel3DFileNode } from "./io.js";
|
|
11
|
+
import { SaveModel3DFileNode } from "./io.js";
|
|
12
|
+
import { SaveModel3DNode } from "./io.js";
|
|
13
|
+
import { FormatConverterNode } from "./convert.js";
|
|
14
|
+
import { GetModel3DMetadataNode } from "./analysis.js";
|
|
15
|
+
import { Transform3DNode, CenterMeshNode, NormalizeModel3DNode } from "./transforms.js";
|
|
16
|
+
import { DecimateNode, Boolean3DNode, MergeMeshesNode } from "./ops.js";
|
|
17
|
+
import { RecalculateNormalsNode, FlipNormalsNode, ExtractLargestComponentNode, RepairMeshNode } from "./cleanup.js";
|
|
18
|
+
import { TextTo3DNode, ImageTo3DNode } from "./generation.js";
|
|
19
|
+
export const MODEL3D_NODES = [
|
|
20
|
+
LoadModel3DFileNode,
|
|
21
|
+
SaveModel3DFileNode,
|
|
22
|
+
SaveModel3DNode,
|
|
23
|
+
FormatConverterNode,
|
|
24
|
+
GetModel3DMetadataNode,
|
|
25
|
+
Transform3DNode,
|
|
26
|
+
DecimateNode,
|
|
27
|
+
Boolean3DNode,
|
|
28
|
+
RecalculateNormalsNode,
|
|
29
|
+
CenterMeshNode,
|
|
30
|
+
FlipNormalsNode,
|
|
31
|
+
NormalizeModel3DNode,
|
|
32
|
+
ExtractLargestComponentNode,
|
|
33
|
+
RepairMeshNode,
|
|
34
|
+
MergeMeshesNode,
|
|
35
|
+
TextTo3DNode,
|
|
36
|
+
ImageTo3DNode
|
|
37
|
+
];
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nodes/model3d/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACxD,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,2BAA2B,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACpH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,mBAAmB;IACnB,mBAAmB;IACnB,eAAe;IACf,mBAAmB;IACnB,sBAAsB;IACtB,eAAe;IACf,YAAY;IACZ,aAAa;IACb,sBAAsB;IACtB,cAAc;IACd,eAAe;IACf,oBAAoB;IACpB,2BAA2B;IAC3B,cAAc;IACd,eAAe;IACf,YAAY;IACZ,aAAa;CACL,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { BaseNode } from "@nodetool-ai/node-sdk";
|
|
2
|
+
import type { ProcessingContext } from "@nodetool-ai/runtime";
|
|
3
|
+
export declare class LoadModel3DFileNode extends BaseNode {
|
|
4
|
+
static readonly nodeType = "nodetool.model3d.LoadModel3DFile";
|
|
5
|
+
static readonly title = "Load Model 3D File";
|
|
6
|
+
static readonly description = "Load a 3D model file from disk.\n 3d, mesh, model, input, load, file, obj, glb, stl, ply\n\n Use cases:\n - Load 3D models for processing\n - Import meshes from CAD software\n - Read 3D assets for a workflow";
|
|
7
|
+
static readonly metadataOutputTypes: {
|
|
8
|
+
output: string;
|
|
9
|
+
};
|
|
10
|
+
path: any;
|
|
11
|
+
process(): Promise<Record<string, unknown>>;
|
|
12
|
+
}
|
|
13
|
+
export declare class SaveModel3DFileNode extends BaseNode {
|
|
14
|
+
static readonly nodeType = "nodetool.model3d.SaveModel3DFile";
|
|
15
|
+
static readonly title = "Save Model 3D File";
|
|
16
|
+
static readonly description = "Save a 3D model to disk.\n 3d, mesh, model, output, save, file, export\n\n Use cases:\n - Save processed 3D models\n - Export meshes to different formats\n - Archive 3D model results";
|
|
17
|
+
static readonly metadataOutputTypes: {
|
|
18
|
+
output: string;
|
|
19
|
+
};
|
|
20
|
+
model: any;
|
|
21
|
+
folder: any;
|
|
22
|
+
filename: any;
|
|
23
|
+
overwrite: any;
|
|
24
|
+
process(context?: ProcessingContext): Promise<Record<string, unknown>>;
|
|
25
|
+
}
|
|
26
|
+
export declare class SaveModel3DNode extends BaseNode {
|
|
27
|
+
static readonly nodeType = "nodetool.model3d.SaveModel3D";
|
|
28
|
+
static readonly title = "Save Model3D Asset";
|
|
29
|
+
static readonly description = "Save a 3D model to an asset folder with customizable name format.\n save, 3d, mesh, model, folder, naming, asset\n\n Use cases:\n - Save generated 3D models with timestamps\n - Organize outputs into specific folders\n - Create backups of processed models";
|
|
30
|
+
static readonly metadataOutputTypes: {
|
|
31
|
+
output: string;
|
|
32
|
+
};
|
|
33
|
+
model: any;
|
|
34
|
+
folder: any;
|
|
35
|
+
name: any;
|
|
36
|
+
process(context?: ProcessingContext): Promise<Record<string, unknown>>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=io.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../../src/nodes/model3d/io.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAQ,MAAM,uBAAuB,CAAC;AAIvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAmC9D,qBAAa,mBAAoB,SAAQ,QAAQ;IAC/C,MAAM,CAAC,QAAQ,CAAC,QAAQ,sCAAsC;IAC9D,MAAM,CAAC,QAAQ,CAAC,KAAK,wBAAwB;IAC7C,MAAM,CAAC,QAAQ,CAAC,WAAW,oOACwM;IACnO,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;MAEjC;IAQM,IAAI,EAAE,GAAG,CAAC;IAEZ,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAOlD;AAED,qBAAa,mBAAoB,SAAQ,QAAQ;IAC/C,MAAM,CAAC,QAAQ,CAAC,QAAQ,sCAAsC;IAC9D,MAAM,CAAC,QAAQ,CAAC,KAAK,wBAAwB;IAC7C,MAAM,CAAC,QAAQ,CAAC,WAAW,2MAC+K;IAC1M,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;MAEjC;IAQM,KAAK,EAAE,GAAG,CAAC;IAQX,MAAM,EAAE,GAAG,CAAC;IASZ,QAAQ,EAAE,GAAG,CAAC;IASd,SAAS,EAAE,GAAG,CAAC;IAEjB,OAAO,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAqB7E;AAED,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,MAAM,CAAC,QAAQ,CAAC,QAAQ,kCAAkC;IAC1D,MAAM,CAAC,QAAQ,CAAC,KAAK,wBAAwB;IAC7C,MAAM,CAAC,QAAQ,CAAC,WAAW,mRACuP;IAClR,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;MAEjC;IAQM,KAAK,EAAE,GAAG,CAAC;IAQX,MAAM,EAAE,GAAG,CAAC;IASZ,IAAI,EAAE,GAAG,CAAC;IAEZ,OAAO,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAc7E"}
|