@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,450 @@
|
|
|
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
|
+
function getApiKey(secrets) {
|
|
9
|
+
const key = secrets.MISTRAL_API_KEY || process.env.MISTRAL_API_KEY || "";
|
|
10
|
+
if (!key)
|
|
11
|
+
throw new Error("Mistral API key not configured");
|
|
12
|
+
return key;
|
|
13
|
+
}
|
|
14
|
+
function imageToDataUri(image) {
|
|
15
|
+
if (typeof image.data === "string") {
|
|
16
|
+
return `data:image/png;base64,${image.data}`;
|
|
17
|
+
}
|
|
18
|
+
if (image.data instanceof Uint8Array) {
|
|
19
|
+
return `data:image/png;base64,${Buffer.from(image.data).toString("base64")}`;
|
|
20
|
+
}
|
|
21
|
+
if (image.uri)
|
|
22
|
+
return image.uri;
|
|
23
|
+
throw new Error("Image must include data or uri");
|
|
24
|
+
}
|
|
25
|
+
async function mistralPost(apiKey, endpoint, body) {
|
|
26
|
+
const res = await fetch(`https://api.mistral.ai/v1/${endpoint}`, {
|
|
27
|
+
method: "POST",
|
|
28
|
+
headers: {
|
|
29
|
+
Authorization: `Bearer ${apiKey}`,
|
|
30
|
+
"Content-Type": "application/json"
|
|
31
|
+
},
|
|
32
|
+
body: JSON.stringify(body)
|
|
33
|
+
});
|
|
34
|
+
if (!res.ok) {
|
|
35
|
+
const text = await res.text().catch(() => "");
|
|
36
|
+
throw new Error(`Mistral API error ${res.status}: ${text}`);
|
|
37
|
+
}
|
|
38
|
+
return (await res.json());
|
|
39
|
+
}
|
|
40
|
+
// ── Chat Completion ─────────────────────────────────────────────────────────
|
|
41
|
+
export class ChatComplete extends BaseNode {
|
|
42
|
+
static nodeType = "mistral.text.ChatComplete";
|
|
43
|
+
static title = "Chat Complete";
|
|
44
|
+
static description = "Generate text using Mistral AI's chat completion models.\n mistral, chat, ai, text generation, llm, completion\n\n Uses Mistral AI's chat models to generate responses from prompts.\n Requires a Mistral API key.\n\n Use cases:\n - Generate text responses to prompts\n - Build conversational AI applications\n - Code generation with Codestral\n - Multi-modal understanding with Pixtral";
|
|
45
|
+
static metadataOutputTypes = {
|
|
46
|
+
output: "str"
|
|
47
|
+
};
|
|
48
|
+
static basicFields = ["prompt", "model"];
|
|
49
|
+
static requiredSettings = ["MISTRAL_API_KEY"];
|
|
50
|
+
static exposeAsTool = true;
|
|
51
|
+
async process() {
|
|
52
|
+
const apiKey = getApiKey(this._secrets);
|
|
53
|
+
const prompt = String(this.prompt ?? "");
|
|
54
|
+
if (!prompt)
|
|
55
|
+
throw new Error("Prompt cannot be empty");
|
|
56
|
+
const model = String(this.model ?? "mistral-small-latest");
|
|
57
|
+
const systemPrompt = String(this.system_prompt ?? "");
|
|
58
|
+
const temperature = Number(this.temperature ?? 0.7);
|
|
59
|
+
const maxTokens = Number(this.max_tokens ?? 1024);
|
|
60
|
+
const messages = [];
|
|
61
|
+
if (systemPrompt)
|
|
62
|
+
messages.push({ role: "system", content: systemPrompt });
|
|
63
|
+
messages.push({ role: "user", content: prompt });
|
|
64
|
+
const data = await mistralPost(apiKey, "chat/completions", {
|
|
65
|
+
model,
|
|
66
|
+
messages,
|
|
67
|
+
temperature,
|
|
68
|
+
max_tokens: maxTokens
|
|
69
|
+
});
|
|
70
|
+
const choices = data.choices;
|
|
71
|
+
if (!choices || choices.length === 0)
|
|
72
|
+
throw new Error("No response from Mistral API");
|
|
73
|
+
return { output: choices[0].message.content ?? "" };
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
__decorate([
|
|
77
|
+
prop({
|
|
78
|
+
type: "enum",
|
|
79
|
+
default: "mistral-small-latest",
|
|
80
|
+
title: "Model",
|
|
81
|
+
description: "The Mistral model to use for generation",
|
|
82
|
+
values: [
|
|
83
|
+
"mistral-large-latest",
|
|
84
|
+
"mistral-medium-latest",
|
|
85
|
+
"mistral-small-latest",
|
|
86
|
+
"pixtral-large-latest",
|
|
87
|
+
"codestral-latest",
|
|
88
|
+
"ministral-8b-latest",
|
|
89
|
+
"ministral-3b-latest"
|
|
90
|
+
]
|
|
91
|
+
})
|
|
92
|
+
], ChatComplete.prototype, "model", void 0);
|
|
93
|
+
__decorate([
|
|
94
|
+
prop({
|
|
95
|
+
type: "str",
|
|
96
|
+
default: "",
|
|
97
|
+
title: "Prompt",
|
|
98
|
+
description: "The prompt for text generation"
|
|
99
|
+
})
|
|
100
|
+
], ChatComplete.prototype, "prompt", void 0);
|
|
101
|
+
__decorate([
|
|
102
|
+
prop({
|
|
103
|
+
type: "str",
|
|
104
|
+
default: "",
|
|
105
|
+
title: "System Prompt",
|
|
106
|
+
description: "Optional system prompt to guide the model's behavior"
|
|
107
|
+
})
|
|
108
|
+
], ChatComplete.prototype, "system_prompt", void 0);
|
|
109
|
+
__decorate([
|
|
110
|
+
prop({
|
|
111
|
+
type: "float",
|
|
112
|
+
default: 0.7,
|
|
113
|
+
title: "Temperature",
|
|
114
|
+
description: "Sampling temperature. Higher values make output more random.",
|
|
115
|
+
min: 0,
|
|
116
|
+
max: 1
|
|
117
|
+
})
|
|
118
|
+
], ChatComplete.prototype, "temperature", void 0);
|
|
119
|
+
__decorate([
|
|
120
|
+
prop({
|
|
121
|
+
type: "int",
|
|
122
|
+
default: 1024,
|
|
123
|
+
title: "Max Tokens",
|
|
124
|
+
description: "Maximum number of tokens to generate",
|
|
125
|
+
min: 1,
|
|
126
|
+
max: 32768
|
|
127
|
+
})
|
|
128
|
+
], ChatComplete.prototype, "max_tokens", void 0);
|
|
129
|
+
// ── Code Completion ─────────────────────────────────────────────────────────
|
|
130
|
+
export class CodeComplete extends BaseNode {
|
|
131
|
+
static nodeType = "mistral.text.CodeComplete";
|
|
132
|
+
static title = "Code Complete";
|
|
133
|
+
static description = "Generate code using Mistral AI's Codestral model.\n mistral, code, codestral, ai, programming, completion\n\n Uses Mistral AI's Codestral model specifically designed for code generation.\n Supports fill-in-the-middle (FIM) for code completion tasks.\n Requires a Mistral API key.\n\n Use cases:\n - Generate code from natural language descriptions\n - Complete partial code snippets\n - Fill in code between prefix and suffix\n - Automated code generation for various programming languages";
|
|
134
|
+
static metadataOutputTypes = {
|
|
135
|
+
output: "str"
|
|
136
|
+
};
|
|
137
|
+
static basicFields = ["prompt", "suffix"];
|
|
138
|
+
static requiredSettings = ["MISTRAL_API_KEY"];
|
|
139
|
+
static exposeAsTool = true;
|
|
140
|
+
async process() {
|
|
141
|
+
const apiKey = getApiKey(this._secrets);
|
|
142
|
+
const prompt = String(this.prompt ?? "");
|
|
143
|
+
if (!prompt)
|
|
144
|
+
throw new Error("Prompt cannot be empty");
|
|
145
|
+
const suffix = String(this.suffix ?? "");
|
|
146
|
+
const temperature = Number(this.temperature ?? 0.0);
|
|
147
|
+
const maxTokens = Number(this.max_tokens ?? 2048);
|
|
148
|
+
const model = "codestral-latest";
|
|
149
|
+
let data;
|
|
150
|
+
if (suffix) {
|
|
151
|
+
data = await mistralPost(apiKey, "fim/completions", {
|
|
152
|
+
model,
|
|
153
|
+
prompt,
|
|
154
|
+
suffix,
|
|
155
|
+
temperature,
|
|
156
|
+
max_tokens: maxTokens
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
data = await mistralPost(apiKey, "chat/completions", {
|
|
161
|
+
model,
|
|
162
|
+
messages: [{ role: "user", content: prompt }],
|
|
163
|
+
temperature,
|
|
164
|
+
max_tokens: maxTokens
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
const choices = data.choices;
|
|
168
|
+
if (!choices || choices.length === 0)
|
|
169
|
+
throw new Error("No response from Mistral API");
|
|
170
|
+
return { output: choices[0].message.content ?? "" };
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
__decorate([
|
|
174
|
+
prop({
|
|
175
|
+
type: "str",
|
|
176
|
+
default: "",
|
|
177
|
+
title: "Prompt",
|
|
178
|
+
description: "The prompt or code prefix for generation"
|
|
179
|
+
})
|
|
180
|
+
], CodeComplete.prototype, "prompt", void 0);
|
|
181
|
+
__decorate([
|
|
182
|
+
prop({
|
|
183
|
+
type: "str",
|
|
184
|
+
default: "",
|
|
185
|
+
title: "Suffix",
|
|
186
|
+
description: "Optional suffix for fill-in-the-middle completion"
|
|
187
|
+
})
|
|
188
|
+
], CodeComplete.prototype, "suffix", void 0);
|
|
189
|
+
__decorate([
|
|
190
|
+
prop({
|
|
191
|
+
type: "float",
|
|
192
|
+
default: 0,
|
|
193
|
+
title: "Temperature",
|
|
194
|
+
description: "Sampling temperature. Lower values for code generation.",
|
|
195
|
+
min: 0,
|
|
196
|
+
max: 1
|
|
197
|
+
})
|
|
198
|
+
], CodeComplete.prototype, "temperature", void 0);
|
|
199
|
+
__decorate([
|
|
200
|
+
prop({
|
|
201
|
+
type: "int",
|
|
202
|
+
default: 2048,
|
|
203
|
+
title: "Max Tokens",
|
|
204
|
+
description: "Maximum number of tokens to generate",
|
|
205
|
+
min: 1,
|
|
206
|
+
max: 32768
|
|
207
|
+
})
|
|
208
|
+
], CodeComplete.prototype, "max_tokens", void 0);
|
|
209
|
+
// ── Embeddings ──────────────────────────────────────────────────────────────
|
|
210
|
+
export class Embedding extends BaseNode {
|
|
211
|
+
static nodeType = "mistral.embeddings.Embedding";
|
|
212
|
+
static title = "Embedding";
|
|
213
|
+
static description = "Generate vector embeddings using Mistral AI.\n mistral, embeddings, vectors, semantic, similarity, search\n\n Uses Mistral AI's embedding model to create dense vector representations of text.\n These vectors capture semantic meaning, enabling:\n - Semantic search\n - Text clustering\n - Document classification\n - Recommendation systems\n - Measuring text similarity\n\n Requires a Mistral API key.";
|
|
214
|
+
static metadataOutputTypes = {
|
|
215
|
+
output: "list"
|
|
216
|
+
};
|
|
217
|
+
static basicFields = ["input"];
|
|
218
|
+
static requiredSettings = ["MISTRAL_API_KEY"];
|
|
219
|
+
static exposeAsTool = true;
|
|
220
|
+
async process() {
|
|
221
|
+
const apiKey = getApiKey(this._secrets);
|
|
222
|
+
const input = String(this.input ?? "");
|
|
223
|
+
if (!input)
|
|
224
|
+
throw new Error("Input text cannot be empty");
|
|
225
|
+
const model = String(this.model ?? "mistral-embed");
|
|
226
|
+
const chunkSize = Number(this.chunk_size ?? 4096);
|
|
227
|
+
// Chunk the input
|
|
228
|
+
const chunks = [];
|
|
229
|
+
for (let i = 0; i < input.length; i += chunkSize) {
|
|
230
|
+
chunks.push(input.slice(i, i + chunkSize));
|
|
231
|
+
}
|
|
232
|
+
const data = await mistralPost(apiKey, "embeddings", {
|
|
233
|
+
model,
|
|
234
|
+
input: chunks
|
|
235
|
+
});
|
|
236
|
+
const embData = data.data;
|
|
237
|
+
if (!embData || embData.length === 0)
|
|
238
|
+
throw new Error("No embeddings from Mistral API");
|
|
239
|
+
// Average embeddings if multiple chunks
|
|
240
|
+
const dim = embData[0].embedding.length;
|
|
241
|
+
const avg = new Array(dim).fill(0);
|
|
242
|
+
for (const item of embData) {
|
|
243
|
+
for (let i = 0; i < dim; i++) {
|
|
244
|
+
avg[i] += item.embedding[i];
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
if (embData.length > 1) {
|
|
248
|
+
for (let i = 0; i < dim; i++) {
|
|
249
|
+
avg[i] /= embData.length;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return { output: { data: avg, shape: [dim], dtype: "float32" } };
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
__decorate([
|
|
256
|
+
prop({
|
|
257
|
+
type: "str",
|
|
258
|
+
default: "",
|
|
259
|
+
title: "Input",
|
|
260
|
+
description: "The text to embed"
|
|
261
|
+
})
|
|
262
|
+
], Embedding.prototype, "input", void 0);
|
|
263
|
+
__decorate([
|
|
264
|
+
prop({
|
|
265
|
+
type: "enum",
|
|
266
|
+
default: "mistral-embed",
|
|
267
|
+
title: "Model",
|
|
268
|
+
description: "The embedding model to use",
|
|
269
|
+
values: ["mistral-embed"]
|
|
270
|
+
})
|
|
271
|
+
], Embedding.prototype, "model", void 0);
|
|
272
|
+
__decorate([
|
|
273
|
+
prop({
|
|
274
|
+
type: "int",
|
|
275
|
+
default: 4096,
|
|
276
|
+
title: "Chunk Size",
|
|
277
|
+
description: "Size of text chunks for embedding",
|
|
278
|
+
min: 1,
|
|
279
|
+
max: 8192
|
|
280
|
+
})
|
|
281
|
+
], Embedding.prototype, "chunk_size", void 0);
|
|
282
|
+
// ── Image to Text ───────────────────────────────────────────────────────────
|
|
283
|
+
export class ImageToText extends BaseNode {
|
|
284
|
+
static nodeType = "mistral.vision.ImageToText";
|
|
285
|
+
static title = "Image To Text";
|
|
286
|
+
static description = "Analyze images and generate text descriptions using Mistral AI's Pixtral models.\n mistral, pixtral, vision, image, ocr, analysis, multimodal\n\n Uses Mistral AI's Pixtral vision models to understand and describe images.\n Can perform OCR, image analysis, and answer questions about images.\n Requires a Mistral API key.\n\n Use cases:\n - Extract text from images (OCR)\n - Describe image contents\n - Answer questions about images\n - Analyze charts and diagrams\n - Document understanding";
|
|
287
|
+
static metadataOutputTypes = {
|
|
288
|
+
output: "str"
|
|
289
|
+
};
|
|
290
|
+
static basicFields = ["image", "prompt"];
|
|
291
|
+
static requiredSettings = ["MISTRAL_API_KEY"];
|
|
292
|
+
static exposeAsTool = true;
|
|
293
|
+
async process() {
|
|
294
|
+
const apiKey = getApiKey(this._secrets);
|
|
295
|
+
const image = (this.image ?? {});
|
|
296
|
+
if (!image.data && !image.uri)
|
|
297
|
+
throw new Error("Image is required");
|
|
298
|
+
const prompt = String(this.prompt ?? "Describe this image in detail.");
|
|
299
|
+
if (!prompt)
|
|
300
|
+
throw new Error("Prompt cannot be empty");
|
|
301
|
+
const model = String(this.model ?? "pixtral-large-latest");
|
|
302
|
+
const temperature = Number(this.temperature ?? 0.3);
|
|
303
|
+
const maxTokens = Number(this.max_tokens ?? 1024);
|
|
304
|
+
const dataUri = imageToDataUri(image);
|
|
305
|
+
const data = await mistralPost(apiKey, "chat/completions", {
|
|
306
|
+
model,
|
|
307
|
+
messages: [
|
|
308
|
+
{
|
|
309
|
+
role: "user",
|
|
310
|
+
content: [
|
|
311
|
+
{ type: "image_url", image_url: { url: dataUri } },
|
|
312
|
+
{ type: "text", text: prompt }
|
|
313
|
+
]
|
|
314
|
+
}
|
|
315
|
+
],
|
|
316
|
+
temperature,
|
|
317
|
+
max_tokens: maxTokens
|
|
318
|
+
});
|
|
319
|
+
const choices = data.choices;
|
|
320
|
+
if (!choices || choices.length === 0)
|
|
321
|
+
throw new Error("No response from Mistral API");
|
|
322
|
+
return { output: choices[0].message.content ?? "" };
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
__decorate([
|
|
326
|
+
prop({
|
|
327
|
+
type: "image",
|
|
328
|
+
default: {
|
|
329
|
+
type: "image",
|
|
330
|
+
uri: "",
|
|
331
|
+
asset_id: null,
|
|
332
|
+
data: null,
|
|
333
|
+
metadata: null
|
|
334
|
+
},
|
|
335
|
+
title: "Image",
|
|
336
|
+
description: "The image to analyze"
|
|
337
|
+
})
|
|
338
|
+
], ImageToText.prototype, "image", void 0);
|
|
339
|
+
__decorate([
|
|
340
|
+
prop({
|
|
341
|
+
type: "str",
|
|
342
|
+
default: "Describe this image in detail.",
|
|
343
|
+
title: "Prompt",
|
|
344
|
+
description: "The prompt/question about the image"
|
|
345
|
+
})
|
|
346
|
+
], ImageToText.prototype, "prompt", void 0);
|
|
347
|
+
__decorate([
|
|
348
|
+
prop({
|
|
349
|
+
type: "enum",
|
|
350
|
+
default: "pixtral-large-latest",
|
|
351
|
+
title: "Model",
|
|
352
|
+
description: "The Pixtral model to use for vision tasks",
|
|
353
|
+
values: ["pixtral-large-latest", "pixtral-12b-2409"]
|
|
354
|
+
})
|
|
355
|
+
], ImageToText.prototype, "model", void 0);
|
|
356
|
+
__decorate([
|
|
357
|
+
prop({
|
|
358
|
+
type: "float",
|
|
359
|
+
default: 0.3,
|
|
360
|
+
title: "Temperature",
|
|
361
|
+
description: "Sampling temperature for response generation",
|
|
362
|
+
min: 0,
|
|
363
|
+
max: 1
|
|
364
|
+
})
|
|
365
|
+
], ImageToText.prototype, "temperature", void 0);
|
|
366
|
+
__decorate([
|
|
367
|
+
prop({
|
|
368
|
+
type: "int",
|
|
369
|
+
default: 1024,
|
|
370
|
+
title: "Max Tokens",
|
|
371
|
+
description: "Maximum number of tokens to generate",
|
|
372
|
+
min: 1,
|
|
373
|
+
max: 16384
|
|
374
|
+
})
|
|
375
|
+
], ImageToText.prototype, "max_tokens", void 0);
|
|
376
|
+
// ── OCR ─────────────────────────────────────────────────────────────────────
|
|
377
|
+
export class OCR extends BaseNode {
|
|
378
|
+
static nodeType = "mistral.vision.OCR";
|
|
379
|
+
static title = "OCR";
|
|
380
|
+
static description = "Extract text from images using Mistral AI's Pixtral models.\n mistral, pixtral, ocr, text extraction, document, image\n\n Specialized node for optical character recognition (OCR) using Pixtral.\n Optimized for extracting text content from documents, screenshots, and images.\n Requires a Mistral API key.\n\n Use cases:\n - Extract text from scanned documents\n - Read text from screenshots\n - Digitize printed materials\n - Extract data from forms and receipts";
|
|
381
|
+
static metadataOutputTypes = {
|
|
382
|
+
output: "str"
|
|
383
|
+
};
|
|
384
|
+
static basicFields = ["image"];
|
|
385
|
+
static requiredSettings = ["MISTRAL_API_KEY"];
|
|
386
|
+
static exposeAsTool = true;
|
|
387
|
+
async process() {
|
|
388
|
+
const apiKey = getApiKey(this._secrets);
|
|
389
|
+
const image = (this.image ?? {});
|
|
390
|
+
if (!image.data && !image.uri)
|
|
391
|
+
throw new Error("Image is required");
|
|
392
|
+
const model = String(this.model ?? "pixtral-large-latest");
|
|
393
|
+
const dataUri = imageToDataUri(image);
|
|
394
|
+
const data = await mistralPost(apiKey, "chat/completions", {
|
|
395
|
+
model,
|
|
396
|
+
messages: [
|
|
397
|
+
{
|
|
398
|
+
role: "user",
|
|
399
|
+
content: [
|
|
400
|
+
{ type: "image_url", image_url: { url: dataUri } },
|
|
401
|
+
{
|
|
402
|
+
type: "text",
|
|
403
|
+
text: "Extract and return all text visible in this image. " +
|
|
404
|
+
"Preserve the original formatting and structure as much as possible. " +
|
|
405
|
+
"Return only the extracted text without any additional commentary."
|
|
406
|
+
}
|
|
407
|
+
]
|
|
408
|
+
}
|
|
409
|
+
],
|
|
410
|
+
temperature: 0.0,
|
|
411
|
+
max_tokens: 8192
|
|
412
|
+
});
|
|
413
|
+
const choices = data.choices;
|
|
414
|
+
if (!choices || choices.length === 0)
|
|
415
|
+
throw new Error("No response from Mistral API");
|
|
416
|
+
return { output: choices[0].message.content ?? "" };
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
__decorate([
|
|
420
|
+
prop({
|
|
421
|
+
type: "image",
|
|
422
|
+
default: {
|
|
423
|
+
type: "image",
|
|
424
|
+
uri: "",
|
|
425
|
+
asset_id: null,
|
|
426
|
+
data: null,
|
|
427
|
+
metadata: null
|
|
428
|
+
},
|
|
429
|
+
title: "Image",
|
|
430
|
+
description: "The image to extract text from"
|
|
431
|
+
})
|
|
432
|
+
], OCR.prototype, "image", void 0);
|
|
433
|
+
__decorate([
|
|
434
|
+
prop({
|
|
435
|
+
type: "enum",
|
|
436
|
+
default: "pixtral-large-latest",
|
|
437
|
+
title: "Model",
|
|
438
|
+
description: "The Pixtral model to use for OCR",
|
|
439
|
+
values: ["pixtral-large-latest", "pixtral-12b-2409"]
|
|
440
|
+
})
|
|
441
|
+
], OCR.prototype, "model", void 0);
|
|
442
|
+
// ── Export ───────────────────────────────────────────────────────────────────
|
|
443
|
+
export const MISTRAL_NODES = [
|
|
444
|
+
ChatComplete,
|
|
445
|
+
CodeComplete,
|
|
446
|
+
Embedding,
|
|
447
|
+
ImageToText,
|
|
448
|
+
OCR
|
|
449
|
+
];
|
|
450
|
+
//# sourceMappingURL=mistral.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mistral.js","sourceRoot":"","sources":["../../src/nodes/mistral.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAKvD,SAAS,SAAS,CAAC,OAA+B;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;IACzE,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAC5D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CAAC,KAAmB;IACzC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,yBAAyB,KAAK,CAAC,IAAI,EAAE,CAAC;IAC/C,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,YAAY,UAAU,EAAE,CAAC;QACrC,OAAO,yBAAyB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC/E,CAAC;IACD,IAAI,KAAK,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC;IAChC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,MAAc,EACd,QAAgB,EAChB,IAA6B;IAE7B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,6BAA6B,QAAQ,EAAE,EAAE;QAC/D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,EAAE;YACjC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAC;AACvD,CAAC;AAED,+EAA+E;AAE/E,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,MAAM,CAAU,QAAQ,GAAG,2BAA2B,CAAC;IACvD,MAAM,CAAU,KAAK,GAAG,eAAe,CAAC;IACxC,MAAM,CAAU,WAAW,GACzB,yZAAyZ,CAAC;IAC5Z,MAAM,CAAU,mBAAmB,GAAG;QACpC,MAAM,EAAE,KAAK;KACd,CAAC;IACF,MAAM,CAAU,WAAW,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,CAAU,gBAAgB,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACvD,MAAM,CAAU,YAAY,GAAG,IAAI,CAAC;IAuDpC,KAAK,CAAC,OAAO;QACX,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAEvD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,sBAAsB,CAAC,CAAC;QAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC;QAElD,MAAM,QAAQ,GAA8B,EAAE,CAAC;QAC/C,IAAI,YAAY;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAEjD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,kBAAkB,EAAE;YACzD,KAAK;YACL,QAAQ;YACR,WAAW;YACX,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,OAER,CAAC;QACd,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAElD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;IACtD,CAAC;;AAlEO;IAfP,IAAI,CAAC;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,sBAAsB;QAC/B,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,yCAAyC;QACtD,MAAM,EAAE;YACN,sBAAsB;YACtB,uBAAuB;YACvB,sBAAsB;YACtB,sBAAsB;YACtB,kBAAkB;YAClB,qBAAqB;YACrB,qBAAqB;SACtB;KACF,CAAC;2CACiB;AAQX;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,gCAAgC;KAC9C,CAAC;4CACkB;AAQZ;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,sDAAsD;KACpE,CAAC;mDACyB;AAUnB;IARP,IAAI,CAAC;QACJ,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,8DAA8D;QAC3E,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,CAAC;KACP,CAAC;iDACuB;AAUjB;IARP,IAAI,CAAC;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,sCAAsC;QACnD,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,KAAK;KACX,CAAC;gDACsB;AAiC1B,+EAA+E;AAE/E,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,MAAM,CAAU,QAAQ,GAAG,2BAA2B,CAAC;IACvD,MAAM,CAAU,KAAK,GAAG,eAAe,CAAC;IACxC,MAAM,CAAU,WAAW,GACzB,sgBAAsgB,CAAC;IACzgB,MAAM,CAAU,mBAAmB,GAAG;QACpC,MAAM,EAAE,KAAK;KACd,CAAC;IACF,MAAM,CAAU,WAAW,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,CAAU,gBAAgB,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACvD,MAAM,CAAU,YAAY,GAAG,IAAI,CAAC;IAsCpC,KAAK,CAAC,OAAO;QACX,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAEvD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,kBAAkB,CAAC;QAEjC,IAAI,IAA6B,CAAC;QAElC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,iBAAiB,EAAE;gBAClD,KAAK;gBACL,MAAM;gBACN,MAAM;gBACN,WAAW;gBACX,UAAU,EAAE,SAAS;aACtB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,kBAAkB,EAAE;gBACnD,KAAK;gBACL,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;gBAC7C,WAAW;gBACX,UAAU,EAAE,SAAS;aACtB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAER,CAAC;QACd,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAElD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;IACtD,CAAC;;AAlEO;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,0CAA0C;KACxD,CAAC;4CACkB;AAQZ;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,mDAAmD;KACjE,CAAC;4CACkB;AAUZ;IARP,IAAI,CAAC;QACJ,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,yDAAyD;QACtE,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,CAAC;KACP,CAAC;iDACuB;AAUjB;IARP,IAAI,CAAC;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,sCAAsC;QACnD,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,KAAK;KACX,CAAC;gDACsB;AAyC1B,+EAA+E;AAE/E,MAAM,OAAO,SAAU,SAAQ,QAAQ;IACrC,MAAM,CAAU,QAAQ,GAAG,8BAA8B,CAAC;IAC1D,MAAM,CAAU,KAAK,GAAG,WAAW,CAAC;IACpC,MAAM,CAAU,WAAW,GACzB,6aAA6a,CAAC;IAChb,MAAM,CAAU,mBAAmB,GAAG;QACpC,MAAM,EAAE,MAAM;KACf,CAAC;IACF,MAAM,CAAU,WAAW,GAAG,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,CAAU,gBAAgB,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACvD,MAAM,CAAU,YAAY,GAAG,IAAI,CAAC;IA6BpC,KAAK,CAAC,OAAO;QACX,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE1D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC;QAElD,kBAAkB;QAClB,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE;YACnD,KAAK;YACL,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,IAA6C,CAAC;QACnE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAEpD,wCAAwC;QACxC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;IACnE,CAAC;;AA3DO;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,mBAAmB;KACjC,CAAC;wCACiB;AASX;IAPP,IAAI,CAAC;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,eAAe;QACxB,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,4BAA4B;QACzC,MAAM,EAAE,CAAC,eAAe,CAAC;KAC1B,CAAC;wCACiB;AAUX;IARP,IAAI,CAAC;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,mCAAmC;QAChD,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,IAAI;KACV,CAAC;6CACsB;AA2C1B,+EAA+E;AAE/E,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,MAAM,CAAU,QAAQ,GAAG,4BAA4B,CAAC;IACxD,MAAM,CAAU,KAAK,GAAG,eAAe,CAAC;IACxC,MAAM,CAAU,WAAW,GACzB,2gBAA2gB,CAAC;IAC9gB,MAAM,CAAU,mBAAmB,GAAG;QACpC,MAAM,EAAE,KAAK;KACd,CAAC;IACF,MAAM,CAAU,WAAW,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,CAAU,gBAAgB,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACvD,MAAM,CAAU,YAAY,GAAG,IAAI,CAAC;IAqDpC,KAAK,CAAC,OAAO;QACX,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAiB,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,gCAAgC,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAEvD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,sBAAsB,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC;QAElD,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,kBAAkB,EAAE;YACzD,KAAK;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;wBAClD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;qBAC/B;iBACF;aACF;YACD,WAAW;YACX,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,OAER,CAAC;QACd,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAElD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;IACtD,CAAC;;AA3EO;IAZP,IAAI,CAAC;QACJ,IAAI,EAAE,OAAO;QACb,OAAO,EAAE;YACP,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,EAAE;YACP,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,IAAI;SACf;QACD,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,sBAAsB;KACpC,CAAC;0CACiB;AAQX;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,gCAAgC;QACzC,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,qCAAqC;KACnD,CAAC;2CACkB;AASZ;IAPP,IAAI,CAAC;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,sBAAsB;QAC/B,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,2CAA2C;QACxD,MAAM,EAAE,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;KACrD,CAAC;0CACiB;AAUX;IARP,IAAI,CAAC;QACJ,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,8CAA8C;QAC3D,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,CAAC;KACP,CAAC;gDACuB;AAUjB;IARP,IAAI,CAAC;QACJ,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,sCAAsC;QACnD,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,KAAK;KACX,CAAC;+CACsB;AAyC1B,+EAA+E;AAE/E,MAAM,OAAO,GAAI,SAAQ,QAAQ;IAC/B,MAAM,CAAU,QAAQ,GAAG,oBAAoB,CAAC;IAChD,MAAM,CAAU,KAAK,GAAG,KAAK,CAAC;IAC9B,MAAM,CAAU,WAAW,GACzB,2eAA2e,CAAC;IAC9e,MAAM,CAAU,mBAAmB,GAAG;QACpC,MAAM,EAAE,KAAK;KACd,CAAC;IACF,MAAM,CAAU,WAAW,GAAG,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,CAAU,gBAAgB,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACvD,MAAM,CAAU,YAAY,GAAG,IAAI,CAAC;IAyBpC,KAAK,CAAC,OAAO;QACX,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAiB,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAEpE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,sBAAsB,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,kBAAkB,EAAE;YACzD,KAAK;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;wBAClD;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EACF,qDAAqD;gCACrD,sEAAsE;gCACtE,mEAAmE;yBACtE;qBACF;iBACF;aACF;YACD,WAAW,EAAE,GAAG;YAChB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,OAER,CAAC;QACd,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAElD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;IACtD,CAAC;;AA/CO;IAZP,IAAI,CAAC;QACJ,IAAI,EAAE,OAAO;QACb,OAAO,EAAE;YACP,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,EAAE;YACP,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,IAAI;SACf;QACD,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,gCAAgC;KAC9C,CAAC;kCACiB;AASX;IAPP,IAAI,CAAC;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,sBAAsB;QAC/B,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,kCAAkC;QAC/C,MAAM,EAAE,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;KACrD,CAAC;kCACiB;AAyCrB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,aAAa,GAAyB;IACjD,YAAY;IACZ,YAAY;IACZ,SAAS;IACT,WAAW;IACX,GAAG;CACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BaseNode } from "@nodetool-ai/node-sdk";
|
|
2
|
+
import type { ProcessingContext } from "@nodetool-ai/runtime";
|
|
3
|
+
export declare class GetModel3DMetadataNode extends BaseNode {
|
|
4
|
+
static readonly nodeType = "nodetool.model3d.GetModel3DMetadata";
|
|
5
|
+
static readonly title = "Get Model 3D Metadata";
|
|
6
|
+
static readonly description = "Get metadata about a 3D model.\n 3d, mesh, model, metadata, info, properties\n\n Use cases:\n - Get vertex and face counts for processing decisions\n - Analyze model properties\n - Gather information for model cataloging";
|
|
7
|
+
static readonly metadataOutputTypes: {
|
|
8
|
+
output: string;
|
|
9
|
+
};
|
|
10
|
+
model: any;
|
|
11
|
+
process(context?: ProcessingContext): Promise<Record<string, unknown>>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=analysis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../../src/nodes/model3d/analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAQ,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAO9D,qBAAa,sBAAuB,SAAQ,QAAQ;IAClD,MAAM,CAAC,QAAQ,CAAC,QAAQ,yCAAyC;IACjE,MAAM,CAAC,QAAQ,CAAC,KAAK,2BAA2B;IAChD,MAAM,CAAC,QAAQ,CAAC,WAAW,iPACqN;IAEhP,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;MAEjC;IAQM,KAAK,EAAE,GAAG,CAAC;IAEb,OAAO,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAS7E"}
|
|
@@ -0,0 +1,36 @@
|
|
|
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_MODEL_3D } from "./defaults.js";
|
|
9
|
+
import { analyzeGlbMetadata, fallbackMetadata, parseGlb } from "./glb.js";
|
|
10
|
+
import { modelFormat, modelRefToBytes } from "./utils.js";
|
|
11
|
+
export class GetModel3DMetadataNode extends BaseNode {
|
|
12
|
+
static nodeType = "nodetool.model3d.GetModel3DMetadata";
|
|
13
|
+
static title = "Get Model 3D Metadata";
|
|
14
|
+
static description = "Get metadata about a 3D model.\n 3d, mesh, model, metadata, info, properties\n\n Use cases:\n - Get vertex and face counts for processing decisions\n - Analyze model properties\n - Gather information for model cataloging";
|
|
15
|
+
// Returns { output: <metadata dict> } — use output: "dict" to match the actual return shape.
|
|
16
|
+
static metadataOutputTypes = {
|
|
17
|
+
output: "dict"
|
|
18
|
+
};
|
|
19
|
+
async process(context) {
|
|
20
|
+
const model = (this.model ?? {});
|
|
21
|
+
const bytes = await modelRefToBytes(model, context);
|
|
22
|
+
const metadata = modelFormat(model) === "glb" && parseGlb(bytes)
|
|
23
|
+
? analyzeGlbMetadata(model, bytes)
|
|
24
|
+
: fallbackMetadata(model, bytes);
|
|
25
|
+
return { output: metadata };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
__decorate([
|
|
29
|
+
prop({
|
|
30
|
+
type: "model_3d",
|
|
31
|
+
default: DEFAULT_MODEL_3D,
|
|
32
|
+
title: "Model",
|
|
33
|
+
description: "The 3D model to analyze"
|
|
34
|
+
})
|
|
35
|
+
], GetModel3DMetadataNode.prototype, "model", void 0);
|
|
36
|
+
//# sourceMappingURL=analysis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../src/nodes/model3d/analysis.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,OAAO,sBAAuB,SAAQ,QAAQ;IAClD,MAAM,CAAU,QAAQ,GAAG,qCAAqC,CAAC;IACjE,MAAM,CAAU,KAAK,GAAG,uBAAuB,CAAC;IAChD,MAAM,CAAU,WAAW,GACzB,6OAA6O,CAAC;IAChP,6FAA6F;IAC7F,MAAM,CAAU,mBAAmB,GAAG;QACpC,MAAM,EAAE,MAAM;KACf,CAAC;IAUF,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAmB,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,QAAQ,GACZ,WAAW,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;YAC7C,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC;YAClC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;;AAVO;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,yBAAyB;KACvC,CAAC;qDACiB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseNode } from "@nodetool-ai/node-sdk";
|
|
2
|
+
import type { ProcessingContext } from "@nodetool-ai/runtime";
|
|
3
|
+
import type { Model3DRefLike } from "./types.js";
|
|
4
|
+
export declare abstract class GlbTransformNode extends BaseNode {
|
|
5
|
+
model: any;
|
|
6
|
+
protected getModel(): Model3DRefLike;
|
|
7
|
+
protected abstract transform(bytes: Uint8Array): Uint8Array | null | Promise<Uint8Array | null>;
|
|
8
|
+
process(context?: ProcessingContext): Promise<Record<string, unknown>>;
|
|
9
|
+
}
|
|
10
|
+
export declare const glbOutput: (bytes: Uint8Array, uri?: string) => Record<string, unknown>;
|
|
11
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/nodes/model3d/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,8BAAsB,gBAAiB,SAAQ,QAAQ;IAC7C,KAAK,EAAE,GAAG,CAAC;IAEnB,SAAS,CAAC,QAAQ,IAAI,cAAc;IAKpC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAC1B,KAAK,EAAE,UAAU,GAChB,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAE3C,OAAO,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAO7E;AAED,eAAO,MAAM,SAAS,GAAI,OAAO,UAAU,EAAE,YAAQ,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAE5E,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseNode } from "@nodetool-ai/node-sdk";
|
|
2
|
+
import { modelRef, modelRefToBytes } from "./utils.js";
|
|
3
|
+
export class GlbTransformNode extends BaseNode {
|
|
4
|
+
getModel() {
|
|
5
|
+
const v = this.model;
|
|
6
|
+
return v && typeof v === "object" ? v : {};
|
|
7
|
+
}
|
|
8
|
+
async process(context) {
|
|
9
|
+
const model = this.getModel();
|
|
10
|
+
const bytes = await modelRefToBytes(model, context);
|
|
11
|
+
const out = await this.transform(bytes);
|
|
12
|
+
if (!out)
|
|
13
|
+
return { output: modelRef(bytes, { uri: model.uri ?? "", format: model.format ?? "glb" }) };
|
|
14
|
+
return { output: modelRef(out, { uri: model.uri ?? "", format: "glb" }) };
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export const glbOutput = (bytes, uri = "") => ({
|
|
18
|
+
output: modelRef(bytes, { uri, format: "glb" })
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/nodes/model3d/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,OAAgB,gBAAiB,SAAQ,QAAQ;IAG3C,QAAQ;QAChB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACrB,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,CAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAMD,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC;QACtG,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC5E,CAAC;CACF;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAiB,EAAE,GAAG,GAAG,EAAE,EAA2B,EAAE,CAAC,CAAC;IAClF,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;CAChD,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boolean-ops.d.ts","sourceRoot":"","sources":["../../../src/nodes/model3d/boolean-ops.ts"],"names":[],"mappings":"AA4LA,wBAAsB,UAAU,CAC9B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC,CAsBrB"}
|