@nodetool-ai/node-sdk 0.8.4-a24.2 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.nodetool-build-stamp +1 -1
- package/dist/_sandbox/README.md +176 -0
- package/dist/_sandbox/sandbox-aws/SKILL.md +98 -0
- package/dist/_sandbox/sandbox-aws/package.json +40 -0
- package/dist/_sandbox/sandbox-chrono/SKILL.md +39 -0
- package/dist/_sandbox/sandbox-chrono/package.json +40 -0
- package/dist/_sandbox/sandbox-color/SKILL.md +35 -0
- package/dist/_sandbox/sandbox-color/package.json +43 -0
- package/dist/_sandbox/sandbox-csv/SKILL.md +50 -0
- package/dist/_sandbox/sandbox-csv/package.json +39 -0
- package/dist/_sandbox/sandbox-dates/SKILL.md +47 -0
- package/dist/_sandbox/sandbox-dates/package.json +41 -0
- package/dist/_sandbox/sandbox-decimal/SKILL.md +36 -0
- package/dist/_sandbox/sandbox-decimal/package.json +43 -0
- package/dist/_sandbox/sandbox-diff/SKILL.md +36 -0
- package/dist/_sandbox/sandbox-diff/package.json +39 -0
- package/dist/_sandbox/sandbox-docx/SKILL.md +53 -0
- package/dist/_sandbox/sandbox-docx/package.json +40 -0
- package/dist/_sandbox/sandbox-dsl/SKILL.md +137 -0
- package/dist/_sandbox/sandbox-dsl/package.json +413 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/authoring.js +382 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/core.js +382 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/gemini.audio.js +12 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/gemini.image.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/gemini.text.js +12 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/gemini.video.js +12 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/index.js +149 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/kie.dynamic_schema.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.audio.js +68 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.browser.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.charts.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.comfy.js +16 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.grid.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.image.channel.js +12 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.image.color.js +32 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.image.color_grading.js +44 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.image.draw.js +36 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.image.effects.js +24 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.image.enhance.js +28 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.image.filter.js +64 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.image.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.image.keyer.js +12 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.image.mask.js +16 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.image.warp.js +36 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.pdf.js +32 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.sqlite.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.stable_diffusion_cpp.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.svg.js +12 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/lib.video.download.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/messaging.discord.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/messaging.telegram.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/mistral.embeddings.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/mistral.text.js +12 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/mistral.vision.js +12 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.agents.js +32 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.audio.js +104 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.audio.realtime.js +28 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.audio.synth.js +40 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.blender.js +28 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.code.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.compare.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.constant.js +132 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.control.js +96 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.creative.js +24 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.data.js +12 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.document.js +16 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.entity.js +16 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.fake.js +12 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.game.js +36 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.generators.js +24 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.image.js +120 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.input.js +140 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.manimgx.js +16 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.model3d.js +76 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.output.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.script.js +28 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.sketch.js +16 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.storyboard.js +32 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.text.js +56 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.timeline.js +24 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.triggers.js +24 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.variable.js +12 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.video.js +136 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.workflows.app_node.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.workflows.base_node.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.workflows.subgraph.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/nodetool.workflows.workflow_node.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/openai.agents.js +16 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/openai.audio.js +16 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/openai.image.js +16 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/openai.text.js +16 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/vector.js +56 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/whisper_cpp.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/xai.image.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/xai.text.js +12 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/generated/xai.vision.js +8 -0
- package/dist/_sandbox/sandbox-dsl/sandbox/index.js +13 -0
- package/dist/_sandbox/sandbox-dsl/scripts/build.mjs +116 -0
- package/dist/_sandbox/sandbox-epub/SKILL.md +61 -0
- package/dist/_sandbox/sandbox-epub/package.json +40 -0
- package/dist/_sandbox/sandbox-exif/SKILL.md +30 -0
- package/dist/_sandbox/sandbox-exif/package.json +40 -0
- package/dist/_sandbox/sandbox-expr/SKILL.md +28 -0
- package/dist/_sandbox/sandbox-expr/package.json +40 -0
- package/dist/_sandbox/sandbox-fabric/SKILL.md +113 -0
- package/dist/_sandbox/sandbox-fabric/package.json +40 -0
- package/dist/_sandbox/sandbox-flow/SKILL.md +131 -0
- package/dist/_sandbox/sandbox-flow/package.json +411 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/gemini.audio.js +12 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/gemini.image.js +8 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/gemini.text.js +12 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/gemini.video.js +12 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/kie.dynamic_schema.js +8 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.audio.js +68 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.browser.js +8 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.charts.js +8 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.comfy.js +25 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.grid.js +8 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.image.channel.js +12 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.image.color.js +32 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.image.color_grading.js +44 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.image.draw.js +36 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.image.effects.js +24 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.image.enhance.js +28 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.image.filter.js +64 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.image.js +8 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.image.keyer.js +12 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.image.mask.js +16 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.image.warp.js +36 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.pdf.js +32 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.sqlite.js +8 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.stable_diffusion_cpp.js +8 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.svg.js +12 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/lib.video.download.js +8 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/messaging.discord.js +11 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/messaging.telegram.js +11 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/mistral.embeddings.js +8 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/mistral.text.js +12 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/mistral.vision.js +12 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.agents.js +41 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.audio.js +110 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.audio.realtime.js +46 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.audio.synth.js +67 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.blender.js +28 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.code.js +11 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.compare.js +8 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.constant.js +132 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.control.js +165 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.creative.js +27 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.data.js +18 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.document.js +19 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.entity.js +19 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.fake.js +12 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.game.js +39 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.generators.js +30 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.image.js +126 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.input.js +143 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.manimgx.js +16 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.model3d.js +76 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.output.js +11 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.script.js +28 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.sketch.js +16 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.storyboard.js +35 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.text.js +68 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.timeline.js +24 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.triggers.js +33 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.variable.js +15 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.video.js +145 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.workflows.app_node.js +11 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.workflows.base_node.js +8 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.workflows.subgraph.js +11 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/nodetool.workflows.workflow_node.js +11 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/openai.agents.js +25 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/openai.audio.js +16 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/openai.image.js +16 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/openai.text.js +16 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/vector.js +56 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/whisper_cpp.js +11 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/xai.image.js +8 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/xai.text.js +12 -0
- package/dist/_sandbox/sandbox-flow/sandbox/generated/xai.vision.js +8 -0
- package/dist/_sandbox/sandbox-flow/sandbox/guest-core.js +35 -0
- package/dist/_sandbox/sandbox-flow/sandbox/index.js +10 -0
- package/dist/_sandbox/sandbox-flow/scripts/build.mjs +120 -0
- package/dist/_sandbox/sandbox-game/SKILL.md +116 -0
- package/dist/_sandbox/sandbox-game/package.json +36 -0
- package/dist/_sandbox/sandbox-game/sandbox/index.js +208 -0
- package/dist/_sandbox/sandbox-gif/SKILL.md +36 -0
- package/dist/_sandbox/sandbox-gif/package.json +43 -0
- package/dist/_sandbox/sandbox-html/SKILL.md +107 -0
- package/dist/_sandbox/sandbox-html/package.json +40 -0
- package/dist/_sandbox/sandbox-ics/SKILL.md +41 -0
- package/dist/_sandbox/sandbox-ics/package.json +40 -0
- package/dist/_sandbox/sandbox-jmespath/SKILL.md +26 -0
- package/dist/_sandbox/sandbox-jmespath/package.json +43 -0
- package/dist/_sandbox/sandbox-mammoth/SKILL.md +46 -0
- package/dist/_sandbox/sandbox-mammoth/package.json +41 -0
- package/dist/_sandbox/sandbox-markdown/SKILL.md +123 -0
- package/dist/_sandbox/sandbox-markdown/package.json +41 -0
- package/dist/_sandbox/sandbox-notion/SKILL.md +101 -0
- package/dist/_sandbox/sandbox-notion/package.json +38 -0
- package/dist/_sandbox/sandbox-ocr/SKILL.md +47 -0
- package/dist/_sandbox/sandbox-ocr/package.json +40 -0
- package/dist/_sandbox/sandbox-pdf/SKILL.md +47 -0
- package/dist/_sandbox/sandbox-pdf/package.json +39 -0
- package/dist/_sandbox/sandbox-pdflib/SKILL.md +56 -0
- package/dist/_sandbox/sandbox-pdflib/package.json +38 -0
- package/dist/_sandbox/sandbox-pptx/SKILL.md +42 -0
- package/dist/_sandbox/sandbox-pptx/package.json +40 -0
- package/dist/_sandbox/sandbox-pptxgen/SKILL.md +49 -0
- package/dist/_sandbox/sandbox-pptxgen/package.json +38 -0
- package/dist/_sandbox/sandbox-qr/SKILL.md +43 -0
- package/dist/_sandbox/sandbox-qr/package.json +42 -0
- package/dist/_sandbox/sandbox-rrule/SKILL.md +37 -0
- package/dist/_sandbox/sandbox-rrule/package.json +43 -0
- package/dist/_sandbox/sandbox-stats/SKILL.md +42 -0
- package/dist/_sandbox/sandbox-stats/package.json +43 -0
- package/dist/_sandbox/sandbox-subtitle/SKILL.md +38 -0
- package/dist/_sandbox/sandbox-subtitle/package.json +41 -0
- package/dist/_sandbox/sandbox-supabase/SKILL.md +108 -0
- package/dist/_sandbox/sandbox-supabase/package.json +39 -0
- package/dist/_sandbox/sandbox-tfjs/SKILL.md +76 -0
- package/dist/_sandbox/sandbox-tfjs/package.json +42 -0
- package/dist/_sandbox/sandbox-timeline/SKILL.md +647 -0
- package/dist/_sandbox/sandbox-timeline/package.json +46 -0
- package/dist/_sandbox/sandbox-timeline/sandbox/charts.js +356 -0
- package/dist/_sandbox/sandbox-timeline/sandbox/components.js +171 -0
- package/dist/_sandbox/sandbox-timeline/sandbox/index.d.ts +700 -0
- package/dist/_sandbox/sandbox-timeline/sandbox/index.js +1658 -0
- package/dist/_sandbox/sandbox-tokens/SKILL.md +46 -0
- package/dist/_sandbox/sandbox-tokens/package.json +40 -0
- package/dist/_sandbox/sandbox-twilio/SKILL.md +93 -0
- package/dist/_sandbox/sandbox-twilio/package.json +39 -0
- package/dist/_sandbox/sandbox-xlsx/SKILL.md +74 -0
- package/dist/_sandbox/sandbox-xlsx/package.json +40 -0
- package/dist/_sandbox/sandbox-xml/SKILL.md +36 -0
- package/dist/_sandbox/sandbox-xml/package.json +40 -0
- package/dist/_sandbox/sandbox-yaml/SKILL.md +48 -0
- package/dist/_sandbox/sandbox-yaml/package.json +41 -0
- package/dist/_sandbox/sandbox-zip/SKILL.md +54 -0
- package/dist/_sandbox/sandbox-zip/package.json +40 -0
- package/dist/code-node-validation.d.ts +2 -0
- package/dist/code-node-validation.d.ts.map +1 -1
- package/dist/code-node-validation.js +1 -1
- package/dist/code-node-validation.js.map +1 -1
- package/dist/pack-loader.d.ts +1 -0
- package/dist/pack-loader.d.ts.map +1 -1
- package/dist/pack-loader.js +1 -0
- package/dist/pack-loader.js.map +1 -1
- package/dist/sandbox-catalog-host.js +1 -1
- package/dist/sandbox-catalog-host.js.map +1 -1
- package/dist/sandbox-pack-discovery.d.ts +3 -0
- package/dist/sandbox-pack-discovery.d.ts.map +1 -1
- package/dist/sandbox-pack-discovery.js +7 -3
- package/dist/sandbox-pack-discovery.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The guest half of the NodeTool workflow DSL.
|
|
3
|
+
*
|
|
4
|
+
* `@nodetool-ai/dsl`'s own `core.ts` carries two things: the wiring model
|
|
5
|
+
* (`createNode`, `workflow`) and a host runner (`run`) that imports the kernel,
|
|
6
|
+
* the runtime, and the Python bridge. Only the first half is computation, so
|
|
7
|
+
* only the first half is here — a guest module that imported `WorkflowRunner`
|
|
8
|
+
* would fail admission on the first Node builtin behind it.
|
|
9
|
+
*
|
|
10
|
+
* Two things differ from the host DSL, both on purpose:
|
|
11
|
+
*
|
|
12
|
+
* - Node ids read like the node type (`text_to_image`, `text_to_image_2`)
|
|
13
|
+
* rather than being UUIDs. A model writes and reads these ids, and an id it
|
|
14
|
+
* can say out loud is worth more than one that is globally unique.
|
|
15
|
+
* - `workflow()` returns the kernel graph shape — `{id, type, properties}`
|
|
16
|
+
* nodes and `{id, source, sourceHandle, target, targetHandle}` edges — which
|
|
17
|
+
* is what `validate_workflow` and `create_workflow` already take. The host
|
|
18
|
+
* DSL's `{data, streaming}` node shape is for its own runner.
|
|
19
|
+
*
|
|
20
|
+
* The generated namespace modules import `createNode` from here and nothing
|
|
21
|
+
* else; every type in their signatures is erased at build time.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/** Nodes registered since the last `workflow()` call, by id. */
|
|
25
|
+
let registry = new Map();
|
|
26
|
+
/** Per-stem counters behind the readable auto ids. */
|
|
27
|
+
let counters = new Map();
|
|
28
|
+
const dslNodes = new WeakMap();
|
|
29
|
+
const handleDescriptors = new WeakMap();
|
|
30
|
+
|
|
31
|
+
let nodeScope = "";
|
|
32
|
+
let scopeCounters = new Map();
|
|
33
|
+
let captureConnection;
|
|
34
|
+
|
|
35
|
+
export function withBuildScope(build, capture) {
|
|
36
|
+
const previous = { registry, counters, nodeScope, scopeCounters, captureConnection };
|
|
37
|
+
registry = new Map(); counters = new Map(); nodeScope = ""; scopeCounters = new Map(); captureConnection = capture;
|
|
38
|
+
try { return build(); }
|
|
39
|
+
finally { ({ registry, counters, nodeScope, scopeCounters, captureConnection } = previous); }
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function withNodeScope(id, build) {
|
|
43
|
+
if (id !== undefined && (typeof id !== "string" || !id.length)) throw new Error("Workflow scope id must be a non-empty string");
|
|
44
|
+
const previous = nodeScope;
|
|
45
|
+
const stem = previous + (id ?? "call");
|
|
46
|
+
const count = (scopeCounters.get(stem) ?? 0) + 1;
|
|
47
|
+
if (id && count > 1) throw new Error(`Duplicate workflow scope "${stem}"`);
|
|
48
|
+
scopeCounters.set(stem, count);
|
|
49
|
+
nodeScope = stem + (id ? "/" : `_${count}/`);
|
|
50
|
+
try { return build(); } finally { nodeScope = previous; }
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function resolveConnection(value) {
|
|
54
|
+
if (isOutputHandle(value)) {
|
|
55
|
+
const descriptor = handleDescriptors.get(value);
|
|
56
|
+
return captureConnection && descriptor && registry.get(value.source) !== descriptor ? captureConnection(value) : value;
|
|
57
|
+
}
|
|
58
|
+
if (value !== null && typeof value === "object" && dslNodes.has(value)) {
|
|
59
|
+
if (!value.defaultOutputHandle) {
|
|
60
|
+
throw new Error("Node " + value.nodeType + " requires an explicit output slot");
|
|
61
|
+
}
|
|
62
|
+
return resolveConnection(value.defaultOutputHandle);
|
|
63
|
+
}
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function autoId(nodeType) {
|
|
68
|
+
const last = String(nodeType).split(".").pop() || "node";
|
|
69
|
+
const stem = last
|
|
70
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1_$2")
|
|
71
|
+
.replace(/[^A-Za-z0-9_]/g, "_")
|
|
72
|
+
.toLowerCase();
|
|
73
|
+
let id = nodeScope + stem;
|
|
74
|
+
while (registry.has(id)) {
|
|
75
|
+
const next = (counters.get(stem) || 1) + 1;
|
|
76
|
+
counters.set(stem, next);
|
|
77
|
+
id = nodeScope + stem + "_" + next;
|
|
78
|
+
}
|
|
79
|
+
return id;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export function isOutputHandle(value) {
|
|
83
|
+
return (
|
|
84
|
+
value !== null && typeof value === "object" && value.__handle === true
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Find a handle nested inside a prop value — in an array, or under an object
|
|
90
|
+
* key. Returns the path to the first one, or null.
|
|
91
|
+
*
|
|
92
|
+
* A connection is only made from a handle assigned directly to an input (or,
|
|
93
|
+
* for a list input, from an array of handles). One buried deeper is not wired:
|
|
94
|
+
* it used to be written verbatim into the node's properties, the node
|
|
95
|
+
* producing it was never reached, and the graph validated clean with the
|
|
96
|
+
* producer missing entirely. Reporting the path turns that silent hole into an
|
|
97
|
+
* error a caller can act on.
|
|
98
|
+
*/
|
|
99
|
+
function findNestedHandlePath(value, seen) {
|
|
100
|
+
if (value === null || typeof value !== "object") return null;
|
|
101
|
+
if (seen.indexOf(value) !== -1) return null;
|
|
102
|
+
seen.push(value);
|
|
103
|
+
if (Array.isArray(value)) {
|
|
104
|
+
for (let i = 0; i < value.length; i++) {
|
|
105
|
+
const item = value[i];
|
|
106
|
+
if (resolveConnection(item)) return "[" + i + "]";
|
|
107
|
+
const deeper = findNestedHandlePath(item, seen);
|
|
108
|
+
if (deeper !== null) return "[" + i + "]" + deeper;
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
for (const key of Object.keys(value)) {
|
|
113
|
+
if (resolveConnection(value[key])) return "." + key;
|
|
114
|
+
const deeper = findNestedHandlePath(value[key], seen);
|
|
115
|
+
if (deeper !== null) return "." + key + deeper;
|
|
116
|
+
}
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Classify one non-handle input value for wiring.
|
|
122
|
+
*
|
|
123
|
+
* An array whose every element is a handle is list fan-in — the same shape the
|
|
124
|
+
* editor produces when several sources feed one `list[...]` input — and wires
|
|
125
|
+
* one edge per element. Anything else holding a handle anywhere inside is
|
|
126
|
+
* refused with the path named.
|
|
127
|
+
*/
|
|
128
|
+
function classifyInput(name, value) {
|
|
129
|
+
if (Array.isArray(value)) {
|
|
130
|
+
let sawHandle = false;
|
|
131
|
+
let sawLiteral = false;
|
|
132
|
+
for (const item of value) {
|
|
133
|
+
if (isOutputHandle(item)) {
|
|
134
|
+
sawHandle = true;
|
|
135
|
+
} else {
|
|
136
|
+
sawLiteral = true;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (!sawHandle) return { kind: "plain" };
|
|
140
|
+
if (sawLiteral) {
|
|
141
|
+
throw new Error(
|
|
142
|
+
'Input "' +
|
|
143
|
+
name +
|
|
144
|
+
'" mixes wired outputs and literal values in one array. Wire the ' +
|
|
145
|
+
"whole list — every element an output() handle — or pass plain " +
|
|
146
|
+
"values only."
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
return { kind: "fanin" };
|
|
150
|
+
}
|
|
151
|
+
const nested = findNestedHandlePath(value, []);
|
|
152
|
+
if (nested !== null) {
|
|
153
|
+
throw new Error(
|
|
154
|
+
'Input "' +
|
|
155
|
+
name +
|
|
156
|
+
'" holds a node output at "' +
|
|
157
|
+
name +
|
|
158
|
+
nested +
|
|
159
|
+
'". A connection is only made from a handle assigned directly to an ' +
|
|
160
|
+
"input — one buried in an object is not wired, and the node producing " +
|
|
161
|
+
"it would be left out of the graph. Give each source its own input."
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
return { kind: "plain" };
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/** Original producer identity, including isolated build scopes. */
|
|
168
|
+
export function connectionIdentity(handle) {
|
|
169
|
+
return handleDescriptors.get(handle) ?? handle;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export function connectionSlot(handle) { return handle.sourceHandle; }
|
|
173
|
+
|
|
174
|
+
function createHandle(nodeId, slot, descriptor) {
|
|
175
|
+
const handle = {
|
|
176
|
+
__handle: true,
|
|
177
|
+
source: nodeId,
|
|
178
|
+
sourceHandle: slot,
|
|
179
|
+
...(descriptor.outputTypes && descriptor.outputTypes[slot] ? { valueType: descriptor.outputTypes[slot] } : {})
|
|
180
|
+
};
|
|
181
|
+
// Interpolating a handle into a string silently yields "[object Object]":
|
|
182
|
+
// no edge is created and the node gets that literal text. Refuse the
|
|
183
|
+
// conversion so the mistake surfaces where it was made.
|
|
184
|
+
//
|
|
185
|
+
// The refusal names both ways out. Told only "pass it as the property
|
|
186
|
+
// value", a model that wants one prompt built from four upstream values has
|
|
187
|
+
// nowhere to go and rewrites the same template eight times; the node that
|
|
188
|
+
// does this is `nodetool.text.Template`, and the message has to say so.
|
|
189
|
+
handle[Symbol.toPrimitive] = function () {
|
|
190
|
+
throw new Error(
|
|
191
|
+
"Cannot use " +
|
|
192
|
+
nodeId +
|
|
193
|
+
"." +
|
|
194
|
+
slot +
|
|
195
|
+
" inside a string. A handle wires an edge; it is not text. Pass it " +
|
|
196
|
+
"as the property value itself — { prompt: " +
|
|
197
|
+
nodeId +
|
|
198
|
+
".output() }. To build one string out of several handles plus fixed " +
|
|
199
|
+
'text, wire them into a template node: template({ string: "Hi ' +
|
|
200
|
+
'{{name}}, about {{topic}}", name: a.output(), topic: b.output() }) ' +
|
|
201
|
+
'from "@nodetool-ai/sandbox-dsl/nodetool.text" — each extra key is a ' +
|
|
202
|
+
"dynamic input, and its {{key}} placeholder is replaced at run time. " +
|
|
203
|
+
"An Agent node's fixed instructions belong in its `system` property, " +
|
|
204
|
+
"not in the interpolated prompt."
|
|
205
|
+
);
|
|
206
|
+
};
|
|
207
|
+
handleDescriptors.set(handle, descriptor);
|
|
208
|
+
return Object.freeze(handle);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Register one node and return its handle factory.
|
|
213
|
+
*
|
|
214
|
+
* Called only by the generated namespace modules, which pin `nodeType` and the
|
|
215
|
+
* output names from the node's own metadata. `opts.id` names the node when the
|
|
216
|
+
* program wants a stable id.
|
|
217
|
+
*/
|
|
218
|
+
export function createNode(nodeType, inputs, opts) {
|
|
219
|
+
if (typeof nodeType !== "string" || nodeType.length === 0) {
|
|
220
|
+
throw new Error("createNode(nodeType, inputs): nodeType must be a non-empty string");
|
|
221
|
+
}
|
|
222
|
+
if (inputs !== undefined && (inputs === null || typeof inputs !== "object" || Array.isArray(inputs))) {
|
|
223
|
+
throw new Error("createNode(nodeType, inputs): inputs must be an object");
|
|
224
|
+
}
|
|
225
|
+
if (opts && opts.id !== undefined && (typeof opts.id !== "string" || opts.id.length === 0)) {
|
|
226
|
+
throw new Error("Node id must be a non-empty string");
|
|
227
|
+
}
|
|
228
|
+
const explicit = opts && opts.id;
|
|
229
|
+
|
|
230
|
+
const nodeId = explicit !== undefined ? nodeScope + explicit : nodeScope + autoId(nodeType);
|
|
231
|
+
if (registry.has(nodeId)) throw new Error('Duplicate node id "' + nodeId + '"');
|
|
232
|
+
const outputNames = opts && opts.outputNames ? [...opts.outputNames] : [];
|
|
233
|
+
const defaultOutput =
|
|
234
|
+
(opts && opts.defaultOutput) ??
|
|
235
|
+
(outputNames.length === 1 && !(opts && opts.multiOutput) ? outputNames[0] : undefined);
|
|
236
|
+
|
|
237
|
+
const descriptor = {
|
|
238
|
+
nodeId,
|
|
239
|
+
nodeType,
|
|
240
|
+
inputs: Object.fromEntries(Object.entries(inputs ?? {}).map(([key, value]) => [
|
|
241
|
+
key,
|
|
242
|
+
resolveConnection(value) ?? (Array.isArray(value)
|
|
243
|
+
? value.map((item) => resolveConnection(item) ?? item)
|
|
244
|
+
: value)
|
|
245
|
+
])),
|
|
246
|
+
streaming: Boolean(opts && opts.streaming),
|
|
247
|
+
streamingInput: Boolean(opts && opts.streamingInput),
|
|
248
|
+
outputTypes: opts && opts.outputTypes,
|
|
249
|
+
dynamicOutputs: opts && opts.dynamicOutputs,
|
|
250
|
+
inputMode: opts && opts.inputMode,
|
|
251
|
+
outputCorrelation: opts && opts.outputCorrelation
|
|
252
|
+
};
|
|
253
|
+
registry.set(nodeId, descriptor);
|
|
254
|
+
|
|
255
|
+
const known = new Set(outputNames);
|
|
256
|
+
const output = (slot) => {
|
|
257
|
+
const resolved = slot ?? defaultOutput;
|
|
258
|
+
if (!resolved) {
|
|
259
|
+
throw new Error(
|
|
260
|
+
"Node " + nodeType + " has several outputs; name one: node.output(\"" +
|
|
261
|
+
(outputNames[0] ?? "output") + "\")"
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
if (known.size > 0 && !known.has(resolved)) {
|
|
265
|
+
throw new Error(
|
|
266
|
+
"Unknown output slot '" + resolved + "' for " + nodeType +
|
|
267
|
+
". Available: " + outputNames.join(", ")
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
return createHandle(nodeId, resolved, descriptor);
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
const node = {
|
|
274
|
+
nodeId, nodeType, inputs: descriptor.inputs, output,
|
|
275
|
+
outputs: Object.freeze(Object.fromEntries(outputNames.map((name) => [name, output(name)]))),
|
|
276
|
+
defaultOutputHandle: outputNames.length === 1 && !(opts && opts.multiOutput) && defaultOutput ? output() : undefined,
|
|
277
|
+
[Symbol.toPrimitive]: () => {
|
|
278
|
+
throw new Error("Cannot coerce a DSL node to a primitive. Pass it directly to an input or select node.output(slot).");
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
const reserved = new Set([...Object.keys(node), "then", "constructor", "__proto__"]);
|
|
282
|
+
for (const name of outputNames) {
|
|
283
|
+
if (!reserved.has(name)) Object.defineProperty(node, name, { get: () => output(name) });
|
|
284
|
+
}
|
|
285
|
+
Object.freeze(node);
|
|
286
|
+
dslNodes.set(node, descriptor);
|
|
287
|
+
return node;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Collect the graph reachable from `terminals` and reset the registry.
|
|
292
|
+
*
|
|
293
|
+
* Only nodes an edge path reaches from a terminal are included: a node built
|
|
294
|
+
* and then never wired is dead, and a graph that carried it would fail
|
|
295
|
+
* validation for a property nobody meant to set.
|
|
296
|
+
*/
|
|
297
|
+
export function workflow(...terminals) {
|
|
298
|
+
if (terminals.length === 0) {
|
|
299
|
+
throw new Error("workflow() requires at least one terminal node");
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
const reached = new Map();
|
|
303
|
+
const edges = [];
|
|
304
|
+
const queue = [];
|
|
305
|
+
/** Inputs fully supplied by edges; their stored values are not shipped. */
|
|
306
|
+
const wiredInputs = new Set();
|
|
307
|
+
|
|
308
|
+
const admit = (node) => {
|
|
309
|
+
const id = node && node.nodeId;
|
|
310
|
+
const descriptor = typeof id === "string" ? registry.get(id) : undefined;
|
|
311
|
+
if (descriptor === undefined || (dslNodes.has(node) && dslNodes.get(node) !== descriptor)) {
|
|
312
|
+
throw new Error(
|
|
313
|
+
"workflow(): not a node from this program" +
|
|
314
|
+
(typeof id === "string" ? ' ("' + id + '")' : "") +
|
|
315
|
+
". A handle from an earlier workflow() call is already spent."
|
|
316
|
+
);
|
|
317
|
+
}
|
|
318
|
+
if (!reached.has(id)) {
|
|
319
|
+
reached.set(id, descriptor);
|
|
320
|
+
queue.push(id);
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
|
|
324
|
+
for (const terminal of terminals) admit(terminal);
|
|
325
|
+
|
|
326
|
+
for (let queueIndex = 0; queueIndex < queue.length; queueIndex++) {
|
|
327
|
+
const currentId = queue[queueIndex];
|
|
328
|
+
const descriptor = reached.get(currentId);
|
|
329
|
+
for (const [name, value] of Object.entries(descriptor.inputs)) {
|
|
330
|
+
let sources;
|
|
331
|
+
if (isOutputHandle(value)) {
|
|
332
|
+
sources = [value];
|
|
333
|
+
} else {
|
|
334
|
+
const kind = classifyInput(name, value);
|
|
335
|
+
if (kind.kind !== "fanin") continue;
|
|
336
|
+
sources = value;
|
|
337
|
+
}
|
|
338
|
+
wiredInputs.add(currentId + "." + name);
|
|
339
|
+
for (const handle of sources) {
|
|
340
|
+
if (handleDescriptors.has(handle) && handleDescriptors.get(handle) !== registry.get(handle.source)) {
|
|
341
|
+
throw new Error("workflow(): a handle from an earlier workflow() call is already spent.");
|
|
342
|
+
}
|
|
343
|
+
edges.push({
|
|
344
|
+
id: "e" + (edges.length + 1) + "_" + handle.source + "_" + currentId,
|
|
345
|
+
source: handle.source,
|
|
346
|
+
sourceHandle: handle.sourceHandle,
|
|
347
|
+
target: currentId,
|
|
348
|
+
targetHandle: name
|
|
349
|
+
});
|
|
350
|
+
admit({ nodeId: handle.source });
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
const nodes = [...reached.values()].map((descriptor) => {
|
|
356
|
+
const properties = {};
|
|
357
|
+
for (const [name, value] of Object.entries(descriptor.inputs)) {
|
|
358
|
+
if (
|
|
359
|
+
!isOutputHandle(value) &&
|
|
360
|
+
!wiredInputs.has(descriptor.nodeId + "." + name)
|
|
361
|
+
) {
|
|
362
|
+
properties[name] = value;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
return {
|
|
366
|
+
id: descriptor.nodeId,
|
|
367
|
+
type: descriptor.nodeType,
|
|
368
|
+
properties,
|
|
369
|
+
...(descriptor.streaming ? { is_streaming_output: true } : {}),
|
|
370
|
+
...(descriptor.streamingInput ? { is_streaming_input: true } : {}),
|
|
371
|
+
...(descriptor.dynamicOutputs ? { dynamic_outputs: descriptor.dynamicOutputs } : {}),
|
|
372
|
+
...(descriptor.inputMode ? { input_mode: descriptor.inputMode } : {}),
|
|
373
|
+
...(descriptor.outputCorrelation ? { output_correlation: descriptor.outputCorrelation } : {})
|
|
374
|
+
};
|
|
375
|
+
});
|
|
376
|
+
|
|
377
|
+
registry.clear();
|
|
378
|
+
scopeCounters.clear();
|
|
379
|
+
counters.clear();
|
|
380
|
+
|
|
381
|
+
return { nodes, edges };
|
|
382
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Built from @nodetool-ai/dsl by scripts/build.mjs — do not edit
|
|
2
|
+
import { createNode } from "../core.js";
|
|
3
|
+
function textToSpeech(inputs, options) {
|
|
4
|
+
return createNode("gemini.audio.TextToSpeech", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
5
|
+
}
|
|
6
|
+
function transcribe(inputs, options) {
|
|
7
|
+
return createNode("gemini.audio.Transcribe", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "str" }, defaultOutput: "output" });
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
textToSpeech,
|
|
11
|
+
transcribe
|
|
12
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Built from @nodetool-ai/dsl by scripts/build.mjs — do not edit
|
|
2
|
+
import { createNode } from "../core.js";
|
|
3
|
+
function imageGeneration(inputs, options) {
|
|
4
|
+
return createNode("gemini.image.ImageGeneration", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "image" }, defaultOutput: "output" });
|
|
5
|
+
}
|
|
6
|
+
export {
|
|
7
|
+
imageGeneration
|
|
8
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Built from @nodetool-ai/dsl by scripts/build.mjs — do not edit
|
|
2
|
+
import { createNode } from "../core.js";
|
|
3
|
+
function groundedSearch(inputs, options) {
|
|
4
|
+
return createNode("gemini.text.GroundedSearch", inputs, { id: options?.id, outputNames: ["results", "sources", "text"], outputTypes: { "results": "list[str]", "sources": "list[source]", "text": "str" } });
|
|
5
|
+
}
|
|
6
|
+
function embedding(inputs, options) {
|
|
7
|
+
return createNode("gemini.text.Embedding", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "list" }, defaultOutput: "output" });
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
embedding,
|
|
11
|
+
groundedSearch
|
|
12
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Built from @nodetool-ai/dsl by scripts/build.mjs — do not edit
|
|
2
|
+
import { createNode } from "../core.js";
|
|
3
|
+
function textToVideo(inputs, options) {
|
|
4
|
+
return createNode("gemini.video.TextToVideo", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "video" }, defaultOutput: "output" });
|
|
5
|
+
}
|
|
6
|
+
function imageToVideo(inputs, options) {
|
|
7
|
+
return createNode("gemini.video.ImageToVideo", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "video" }, defaultOutput: "output" });
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
imageToVideo,
|
|
11
|
+
textToVideo
|
|
12
|
+
};
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
// Built from @nodetool-ai/dsl by scripts/build.mjs — do not edit
|
|
2
|
+
import * as geminiAudio from "./gemini.audio.js";
|
|
3
|
+
import * as geminiImage from "./gemini.image.js";
|
|
4
|
+
import * as geminiText from "./gemini.text.js";
|
|
5
|
+
import * as geminiVideo from "./gemini.video.js";
|
|
6
|
+
import * as kieDynamic_schema from "./kie.dynamic_schema.js";
|
|
7
|
+
import * as libAudio from "./lib.audio.js";
|
|
8
|
+
import * as libBrowser from "./lib.browser.js";
|
|
9
|
+
import * as libCharts from "./lib.charts.js";
|
|
10
|
+
import * as libComfy from "./lib.comfy.js";
|
|
11
|
+
import * as libGrid from "./lib.grid.js";
|
|
12
|
+
import * as libImage from "./lib.image.js";
|
|
13
|
+
import * as libImageChannel from "./lib.image.channel.js";
|
|
14
|
+
import * as libImageColor from "./lib.image.color.js";
|
|
15
|
+
import * as libImageColor_grading from "./lib.image.color_grading.js";
|
|
16
|
+
import * as libImageDraw from "./lib.image.draw.js";
|
|
17
|
+
import * as libImageEffects from "./lib.image.effects.js";
|
|
18
|
+
import * as libImageEnhance from "./lib.image.enhance.js";
|
|
19
|
+
import * as libImageFilter from "./lib.image.filter.js";
|
|
20
|
+
import * as libImageKeyer from "./lib.image.keyer.js";
|
|
21
|
+
import * as libImageMask from "./lib.image.mask.js";
|
|
22
|
+
import * as libImageWarp from "./lib.image.warp.js";
|
|
23
|
+
import * as libPdf from "./lib.pdf.js";
|
|
24
|
+
import * as libSqlite from "./lib.sqlite.js";
|
|
25
|
+
import * as libStable_diffusion_cpp from "./lib.stable_diffusion_cpp.js";
|
|
26
|
+
import * as libSvg from "./lib.svg.js";
|
|
27
|
+
import * as libVideoDownload from "./lib.video.download.js";
|
|
28
|
+
import * as messagingDiscord from "./messaging.discord.js";
|
|
29
|
+
import * as messagingTelegram from "./messaging.telegram.js";
|
|
30
|
+
import * as mistralEmbeddings from "./mistral.embeddings.js";
|
|
31
|
+
import * as mistralText from "./mistral.text.js";
|
|
32
|
+
import * as mistralVision from "./mistral.vision.js";
|
|
33
|
+
import * as agents from "./nodetool.agents.js";
|
|
34
|
+
import * as audio from "./nodetool.audio.js";
|
|
35
|
+
import * as audioRealtime from "./nodetool.audio.realtime.js";
|
|
36
|
+
import * as audioSynth from "./nodetool.audio.synth.js";
|
|
37
|
+
import * as blender from "./nodetool.blender.js";
|
|
38
|
+
import * as code from "./nodetool.code.js";
|
|
39
|
+
import * as compare from "./nodetool.compare.js";
|
|
40
|
+
import * as constant from "./nodetool.constant.js";
|
|
41
|
+
import * as control from "./nodetool.control.js";
|
|
42
|
+
import * as creative from "./nodetool.creative.js";
|
|
43
|
+
import * as data from "./nodetool.data.js";
|
|
44
|
+
import * as document from "./nodetool.document.js";
|
|
45
|
+
import * as entity from "./nodetool.entity.js";
|
|
46
|
+
import * as fake from "./nodetool.fake.js";
|
|
47
|
+
import * as game from "./nodetool.game.js";
|
|
48
|
+
import * as generators from "./nodetool.generators.js";
|
|
49
|
+
import * as image from "./nodetool.image.js";
|
|
50
|
+
import * as input from "./nodetool.input.js";
|
|
51
|
+
import * as manimgx from "./nodetool.manimgx.js";
|
|
52
|
+
import * as model3d from "./nodetool.model3d.js";
|
|
53
|
+
import * as output from "./nodetool.output.js";
|
|
54
|
+
import * as script from "./nodetool.script.js";
|
|
55
|
+
import * as sketch from "./nodetool.sketch.js";
|
|
56
|
+
import * as storyboard from "./nodetool.storyboard.js";
|
|
57
|
+
import * as text from "./nodetool.text.js";
|
|
58
|
+
import * as timeline from "./nodetool.timeline.js";
|
|
59
|
+
import * as triggers from "./nodetool.triggers.js";
|
|
60
|
+
import * as variable from "./nodetool.variable.js";
|
|
61
|
+
import * as video from "./nodetool.video.js";
|
|
62
|
+
import * as workflowsApp_node from "./nodetool.workflows.app_node.js";
|
|
63
|
+
import * as workflowsBase_node from "./nodetool.workflows.base_node.js";
|
|
64
|
+
import * as workflowsSubgraph from "./nodetool.workflows.subgraph.js";
|
|
65
|
+
import * as workflowsWorkflow_node from "./nodetool.workflows.workflow_node.js";
|
|
66
|
+
import * as openaiAgents from "./openai.agents.js";
|
|
67
|
+
import * as openaiAudio from "./openai.audio.js";
|
|
68
|
+
import * as openaiImage from "./openai.image.js";
|
|
69
|
+
import * as openaiText from "./openai.text.js";
|
|
70
|
+
import * as vector from "./vector.js";
|
|
71
|
+
import * as whisper_cpp from "./whisper_cpp.js";
|
|
72
|
+
import * as xaiImage from "./xai.image.js";
|
|
73
|
+
import * as xaiText from "./xai.text.js";
|
|
74
|
+
import * as xaiVision from "./xai.vision.js";
|
|
75
|
+
export {
|
|
76
|
+
agents,
|
|
77
|
+
audio,
|
|
78
|
+
audioRealtime,
|
|
79
|
+
audioSynth,
|
|
80
|
+
blender,
|
|
81
|
+
code,
|
|
82
|
+
compare,
|
|
83
|
+
constant,
|
|
84
|
+
control,
|
|
85
|
+
creative,
|
|
86
|
+
data,
|
|
87
|
+
document,
|
|
88
|
+
entity,
|
|
89
|
+
fake,
|
|
90
|
+
game,
|
|
91
|
+
geminiAudio,
|
|
92
|
+
geminiImage,
|
|
93
|
+
geminiText,
|
|
94
|
+
geminiVideo,
|
|
95
|
+
generators,
|
|
96
|
+
image,
|
|
97
|
+
input,
|
|
98
|
+
kieDynamic_schema,
|
|
99
|
+
libAudio,
|
|
100
|
+
libBrowser,
|
|
101
|
+
libCharts,
|
|
102
|
+
libComfy,
|
|
103
|
+
libGrid,
|
|
104
|
+
libImage,
|
|
105
|
+
libImageChannel,
|
|
106
|
+
libImageColor,
|
|
107
|
+
libImageColor_grading,
|
|
108
|
+
libImageDraw,
|
|
109
|
+
libImageEffects,
|
|
110
|
+
libImageEnhance,
|
|
111
|
+
libImageFilter,
|
|
112
|
+
libImageKeyer,
|
|
113
|
+
libImageMask,
|
|
114
|
+
libImageWarp,
|
|
115
|
+
libPdf,
|
|
116
|
+
libSqlite,
|
|
117
|
+
libStable_diffusion_cpp,
|
|
118
|
+
libSvg,
|
|
119
|
+
libVideoDownload,
|
|
120
|
+
manimgx,
|
|
121
|
+
messagingDiscord,
|
|
122
|
+
messagingTelegram,
|
|
123
|
+
mistralEmbeddings,
|
|
124
|
+
mistralText,
|
|
125
|
+
mistralVision,
|
|
126
|
+
model3d,
|
|
127
|
+
openaiAgents,
|
|
128
|
+
openaiAudio,
|
|
129
|
+
openaiImage,
|
|
130
|
+
openaiText,
|
|
131
|
+
output,
|
|
132
|
+
script,
|
|
133
|
+
sketch,
|
|
134
|
+
storyboard,
|
|
135
|
+
text,
|
|
136
|
+
timeline,
|
|
137
|
+
triggers,
|
|
138
|
+
variable,
|
|
139
|
+
vector,
|
|
140
|
+
video,
|
|
141
|
+
whisper_cpp,
|
|
142
|
+
workflowsApp_node,
|
|
143
|
+
workflowsBase_node,
|
|
144
|
+
workflowsSubgraph,
|
|
145
|
+
workflowsWorkflow_node,
|
|
146
|
+
xaiImage,
|
|
147
|
+
xaiText,
|
|
148
|
+
xaiVision
|
|
149
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Built from @nodetool-ai/dsl by scripts/build.mjs — do not edit
|
|
2
|
+
import { createNode } from "../core.js";
|
|
3
|
+
function kieAI(inputs, options) {
|
|
4
|
+
return createNode("kie.dynamic_schema.KieAI", inputs, { id: options?.id, outputNames: [], outputTypes: {} });
|
|
5
|
+
}
|
|
6
|
+
export {
|
|
7
|
+
kieAI
|
|
8
|
+
};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Built from @nodetool-ai/dsl by scripts/build.mjs — do not edit
|
|
2
|
+
import { createNode } from "../core.js";
|
|
3
|
+
function gain(inputs, options) {
|
|
4
|
+
return createNode("lib.audio.Gain", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
5
|
+
}
|
|
6
|
+
function delay(inputs, options) {
|
|
7
|
+
return createNode("lib.audio.Delay", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
8
|
+
}
|
|
9
|
+
function highPassFilter(inputs, options) {
|
|
10
|
+
return createNode("lib.audio.HighPassFilter", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
11
|
+
}
|
|
12
|
+
function lowPassFilter(inputs, options) {
|
|
13
|
+
return createNode("lib.audio.LowPassFilter", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
14
|
+
}
|
|
15
|
+
function highShelfFilter(inputs, options) {
|
|
16
|
+
return createNode("lib.audio.HighShelfFilter", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
17
|
+
}
|
|
18
|
+
function lowShelfFilter(inputs, options) {
|
|
19
|
+
return createNode("lib.audio.LowShelfFilter", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
20
|
+
}
|
|
21
|
+
function peakFilter(inputs, options) {
|
|
22
|
+
return createNode("lib.audio.PeakFilter", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
23
|
+
}
|
|
24
|
+
function bitcrush(inputs, options) {
|
|
25
|
+
return createNode("lib.audio.Bitcrush", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
26
|
+
}
|
|
27
|
+
function compress(inputs, options) {
|
|
28
|
+
return createNode("lib.audio.Compress", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
29
|
+
}
|
|
30
|
+
function distortion(inputs, options) {
|
|
31
|
+
return createNode("lib.audio.Distortion", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
32
|
+
}
|
|
33
|
+
function limiter(inputs, options) {
|
|
34
|
+
return createNode("lib.audio.Limiter", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
35
|
+
}
|
|
36
|
+
function reverb(inputs, options) {
|
|
37
|
+
return createNode("lib.audio.Reverb", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
38
|
+
}
|
|
39
|
+
function noiseGate(inputs, options) {
|
|
40
|
+
return createNode("lib.audio.NoiseGate", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
41
|
+
}
|
|
42
|
+
function phaser(inputs, options) {
|
|
43
|
+
return createNode("lib.audio.Phaser", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
44
|
+
}
|
|
45
|
+
function pitchShift(inputs, options) {
|
|
46
|
+
return createNode("lib.audio.PitchShift", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
47
|
+
}
|
|
48
|
+
function timeStretch(inputs, options) {
|
|
49
|
+
return createNode("lib.audio.TimeStretch", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "audio" }, defaultOutput: "output" });
|
|
50
|
+
}
|
|
51
|
+
export {
|
|
52
|
+
bitcrush,
|
|
53
|
+
compress,
|
|
54
|
+
delay,
|
|
55
|
+
distortion,
|
|
56
|
+
gain,
|
|
57
|
+
highPassFilter,
|
|
58
|
+
highShelfFilter,
|
|
59
|
+
limiter,
|
|
60
|
+
lowPassFilter,
|
|
61
|
+
lowShelfFilter,
|
|
62
|
+
noiseGate,
|
|
63
|
+
peakFilter,
|
|
64
|
+
phaser,
|
|
65
|
+
pitchShift,
|
|
66
|
+
reverb,
|
|
67
|
+
timeStretch
|
|
68
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Built from @nodetool-ai/dsl by scripts/build.mjs — do not edit
|
|
2
|
+
import { createNode } from "../core.js";
|
|
3
|
+
function screenshot(inputs, options) {
|
|
4
|
+
return createNode("lib.browser.Screenshot", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "image" }, defaultOutput: "output" });
|
|
5
|
+
}
|
|
6
|
+
export {
|
|
7
|
+
screenshot
|
|
8
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Built from @nodetool-ai/dsl by scripts/build.mjs — do not edit
|
|
2
|
+
import { createNode } from "../core.js";
|
|
3
|
+
function chartRenderer(inputs, options) {
|
|
4
|
+
return createNode("lib.charts.ChartRenderer", inputs, { id: options?.id, outputNames: ["output"], outputTypes: { "output": "image" }, defaultOutput: "output" });
|
|
5
|
+
}
|
|
6
|
+
export {
|
|
7
|
+
chartRenderer
|
|
8
|
+
};
|