@nodetool-ai/dsl 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/core.d.ts +62 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +231 -0
- package/dist/core.js.map +1 -0
- package/dist/export.d.ts +57 -0
- package/dist/export.d.ts.map +1 -0
- package/dist/export.js +467 -0
- package/dist/export.js.map +1 -0
- package/dist/generated/anthropic.agents.d.ts +15 -0
- package/dist/generated/anthropic.agents.d.ts.map +1 -0
- package/dist/generated/anthropic.agents.js +6 -0
- package/dist/generated/anthropic.agents.js.map +1 -0
- package/dist/generated/apify.scraping.d.ts +83 -0
- package/dist/generated/apify.scraping.d.ts.map +1 -0
- package/dist/generated/apify.scraping.js +24 -0
- package/dist/generated/apify.scraping.js.map +1 -0
- package/dist/generated/gemini.audio.d.ts +22 -0
- package/dist/generated/gemini.audio.d.ts.map +1 -0
- package/dist/generated/gemini.audio.js +9 -0
- package/dist/generated/gemini.audio.js.map +1 -0
- package/dist/generated/gemini.image.d.ts +12 -0
- package/dist/generated/gemini.image.d.ts.map +1 -0
- package/dist/generated/gemini.image.js +6 -0
- package/dist/generated/gemini.image.js.map +1 -0
- package/dist/generated/gemini.text.d.ts +19 -0
- package/dist/generated/gemini.text.d.ts.map +1 -0
- package/dist/generated/gemini.text.js +9 -0
- package/dist/generated/gemini.text.js.map +1 -0
- package/dist/generated/gemini.video.d.ts +24 -0
- package/dist/generated/gemini.video.d.ts.map +1 -0
- package/dist/generated/gemini.video.js +9 -0
- package/dist/generated/gemini.video.js.map +1 -0
- package/dist/generated/index.d.ts +69 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +70 -0
- package/dist/generated/index.js.map +1 -0
- package/dist/generated/kie.dynamic_schema.d.ts +8 -0
- package/dist/generated/kie.dynamic_schema.d.ts.map +1 -0
- package/dist/generated/kie.dynamic_schema.js +6 -0
- package/dist/generated/kie.dynamic_schema.js.map +1 -0
- package/dist/generated/lib.audio.d.ts +150 -0
- package/dist/generated/lib.audio.d.ts.map +1 -0
- package/dist/generated/lib.audio.js +51 -0
- package/dist/generated/lib.audio.js.map +1 -0
- package/dist/generated/lib.browser.d.ts +71 -0
- package/dist/generated/lib.browser.d.ts.map +1 -0
- package/dist/generated/lib.browser.js +21 -0
- package/dist/generated/lib.browser.js.map +1 -0
- package/dist/generated/lib.charts.d.ts +16 -0
- package/dist/generated/lib.charts.d.ts.map +1 -0
- package/dist/generated/lib.charts.js +6 -0
- package/dist/generated/lib.charts.js.map +1 -0
- package/dist/generated/lib.convert.d.ts +11 -0
- package/dist/generated/lib.convert.d.ts.map +1 -0
- package/dist/generated/lib.convert.js +6 -0
- package/dist/generated/lib.convert.js.map +1 -0
- package/dist/generated/lib.convert.pandoc.d.ts +22 -0
- package/dist/generated/lib.convert.pandoc.d.ts.map +1 -0
- package/dist/generated/lib.convert.pandoc.js +9 -0
- package/dist/generated/lib.convert.pandoc.js.map +1 -0
- package/dist/generated/lib.docx.d.ts +81 -0
- package/dist/generated/lib.docx.d.ts.map +1 -0
- package/dist/generated/lib.docx.js +30 -0
- package/dist/generated/lib.docx.js.map +1 -0
- package/dist/generated/lib.excel.d.ts +58 -0
- package/dist/generated/lib.excel.d.ts.map +1 -0
- package/dist/generated/lib.excel.js +21 -0
- package/dist/generated/lib.excel.js.map +1 -0
- package/dist/generated/lib.graphql.d.ts +47 -0
- package/dist/generated/lib.graphql.d.ts.map +1 -0
- package/dist/generated/lib.graphql.js +15 -0
- package/dist/generated/lib.graphql.js.map +1 -0
- package/dist/generated/lib.grid.d.ts +20 -0
- package/dist/generated/lib.grid.d.ts.map +1 -0
- package/dist/generated/lib.grid.js +9 -0
- package/dist/generated/lib.grid.js.map +1 -0
- package/dist/generated/lib.html.d.ts +72 -0
- package/dist/generated/lib.html.d.ts.map +1 -0
- package/dist/generated/lib.html.js +27 -0
- package/dist/generated/lib.html.js.map +1 -0
- package/dist/generated/lib.http.d.ts +68 -0
- package/dist/generated/lib.http.d.ts.map +1 -0
- package/dist/generated/lib.http.js +24 -0
- package/dist/generated/lib.http.js.map +1 -0
- package/dist/generated/lib.image.color_grading.d.ts +128 -0
- package/dist/generated/lib.image.color_grading.d.ts.map +1 -0
- package/dist/generated/lib.image.color_grading.js +33 -0
- package/dist/generated/lib.image.color_grading.js.map +1 -0
- package/dist/generated/lib.image.d.ts +21 -0
- package/dist/generated/lib.image.d.ts.map +1 -0
- package/dist/generated/lib.image.draw.d.ts +36 -0
- package/dist/generated/lib.image.draw.d.ts.map +1 -0
- package/dist/generated/lib.image.draw.js +12 -0
- package/dist/generated/lib.image.draw.js.map +1 -0
- package/dist/generated/lib.image.enhance.d.ts +99 -0
- package/dist/generated/lib.image.enhance.d.ts.map +1 -0
- package/dist/generated/lib.image.enhance.js +39 -0
- package/dist/generated/lib.image.enhance.js.map +1 -0
- package/dist/generated/lib.image.filter.d.ts +95 -0
- package/dist/generated/lib.image.filter.d.ts.map +1 -0
- package/dist/generated/lib.image.filter.js +39 -0
- package/dist/generated/lib.image.filter.js.map +1 -0
- package/dist/generated/lib.image.js +9 -0
- package/dist/generated/lib.image.js.map +1 -0
- package/dist/generated/lib.mail.d.ts +49 -0
- package/dist/generated/lib.mail.d.ts.map +1 -0
- package/dist/generated/lib.mail.js +15 -0
- package/dist/generated/lib.mail.js.map +1 -0
- package/dist/generated/lib.markdown.d.ts +47 -0
- package/dist/generated/lib.markdown.d.ts.map +1 -0
- package/dist/generated/lib.markdown.js +21 -0
- package/dist/generated/lib.markdown.js.map +1 -0
- package/dist/generated/lib.nlp.d.ts +69 -0
- package/dist/generated/lib.nlp.d.ts.map +1 -0
- package/dist/generated/lib.nlp.js +24 -0
- package/dist/generated/lib.nlp.js.map +1 -0
- package/dist/generated/lib.notion.d.ts +61 -0
- package/dist/generated/lib.notion.d.ts.map +1 -0
- package/dist/generated/lib.notion.js +21 -0
- package/dist/generated/lib.notion.js.map +1 -0
- package/dist/generated/lib.os.d.ts +215 -0
- package/dist/generated/lib.os.d.ts.map +1 -0
- package/dist/generated/lib.os.js +90 -0
- package/dist/generated/lib.os.js.map +1 -0
- package/dist/generated/lib.pdf.d.ts +97 -0
- package/dist/generated/lib.pdf.d.ts.map +1 -0
- package/dist/generated/lib.pdf.js +33 -0
- package/dist/generated/lib.pdf.js.map +1 -0
- package/dist/generated/lib.rss.d.ts +21 -0
- package/dist/generated/lib.rss.d.ts.map +1 -0
- package/dist/generated/lib.rss.js +9 -0
- package/dist/generated/lib.rss.js.map +1 -0
- package/dist/generated/lib.s3.d.ts +73 -0
- package/dist/generated/lib.s3.d.ts.map +1 -0
- package/dist/generated/lib.s3.js +24 -0
- package/dist/generated/lib.s3.js.map +1 -0
- package/dist/generated/lib.secret.d.ts +10 -0
- package/dist/generated/lib.secret.d.ts.map +1 -0
- package/dist/generated/lib.secret.js +6 -0
- package/dist/generated/lib.secret.js.map +1 -0
- package/dist/generated/lib.sqlite.d.ts +71 -0
- package/dist/generated/lib.sqlite.d.ts.map +1 -0
- package/dist/generated/lib.sqlite.js +24 -0
- package/dist/generated/lib.sqlite.js.map +1 -0
- package/dist/generated/lib.supabase.d.ts +60 -0
- package/dist/generated/lib.supabase.d.ts.map +1 -0
- package/dist/generated/lib.supabase.js +21 -0
- package/dist/generated/lib.supabase.js.map +1 -0
- package/dist/generated/lib.svg.d.ts +157 -0
- package/dist/generated/lib.svg.d.ts.map +1 -0
- package/dist/generated/lib.svg.js +45 -0
- package/dist/generated/lib.svg.js.map +1 -0
- package/dist/generated/lib.twilio.d.ts +46 -0
- package/dist/generated/lib.twilio.d.ts.map +1 -0
- package/dist/generated/lib.twilio.js +15 -0
- package/dist/generated/lib.twilio.js.map +1 -0
- package/dist/generated/lib.video.download.d.ts +22 -0
- package/dist/generated/lib.video.download.d.ts.map +1 -0
- package/dist/generated/lib.video.download.js +6 -0
- package/dist/generated/lib.video.download.js.map +1 -0
- package/dist/generated/messaging.discord.d.ts +31 -0
- package/dist/generated/messaging.discord.d.ts.map +1 -0
- package/dist/generated/messaging.discord.js +9 -0
- package/dist/generated/messaging.discord.js.map +1 -0
- package/dist/generated/messaging.telegram.d.ts +39 -0
- package/dist/generated/messaging.telegram.d.ts.map +1 -0
- package/dist/generated/messaging.telegram.js +9 -0
- package/dist/generated/messaging.telegram.js.map +1 -0
- package/dist/generated/mistral.embeddings.d.ts +11 -0
- package/dist/generated/mistral.embeddings.d.ts.map +1 -0
- package/dist/generated/mistral.embeddings.js +6 -0
- package/dist/generated/mistral.embeddings.js.map +1 -0
- package/dist/generated/mistral.text.d.ts +23 -0
- package/dist/generated/mistral.text.d.ts.map +1 -0
- package/dist/generated/mistral.text.js +9 -0
- package/dist/generated/mistral.text.js.map +1 -0
- package/dist/generated/mistral.vision.d.ts +22 -0
- package/dist/generated/mistral.vision.d.ts.map +1 -0
- package/dist/generated/mistral.vision.js +9 -0
- package/dist/generated/mistral.vision.js.map +1 -0
- package/dist/generated/nodetool.agents.d.ts +282 -0
- package/dist/generated/nodetool.agents.d.ts.map +1 -0
- package/dist/generated/nodetool.agents.js +75 -0
- package/dist/generated/nodetool.agents.js.map +1 -0
- package/dist/generated/nodetool.audio.d.ts +207 -0
- package/dist/generated/nodetool.audio.d.ts.map +1 -0
- package/dist/generated/nodetool.audio.js +72 -0
- package/dist/generated/nodetool.audio.js.map +1 -0
- package/dist/generated/nodetool.code.d.ts +181 -0
- package/dist/generated/nodetool.code.d.ts.map +1 -0
- package/dist/generated/nodetool.code.js +60 -0
- package/dist/generated/nodetool.code.js.map +1 -0
- package/dist/generated/nodetool.compare.d.ts +13 -0
- package/dist/generated/nodetool.compare.d.ts.map +1 -0
- package/dist/generated/nodetool.compare.js +6 -0
- package/dist/generated/nodetool.compare.js.map +1 -0
- package/dist/generated/nodetool.constant.d.ts +211 -0
- package/dist/generated/nodetool.constant.d.ts.map +1 -0
- package/dist/generated/nodetool.constant.js +87 -0
- package/dist/generated/nodetool.constant.js.map +1 -0
- package/dist/generated/nodetool.control.d.ts +54 -0
- package/dist/generated/nodetool.control.d.ts.map +1 -0
- package/dist/generated/nodetool.control.js +21 -0
- package/dist/generated/nodetool.control.js.map +1 -0
- package/dist/generated/nodetool.data.d.ts +245 -0
- package/dist/generated/nodetool.data.d.ts.map +1 -0
- package/dist/generated/nodetool.data.js +93 -0
- package/dist/generated/nodetool.data.js.map +1 -0
- package/dist/generated/nodetool.document.d.ts +90 -0
- package/dist/generated/nodetool.document.d.ts.map +1 -0
- package/dist/generated/nodetool.document.js +27 -0
- package/dist/generated/nodetool.document.js.map +1 -0
- package/dist/generated/nodetool.generators.d.ts +60 -0
- package/dist/generated/nodetool.generators.d.ts.map +1 -0
- package/dist/generated/nodetool.generators.js +18 -0
- package/dist/generated/nodetool.generators.js.map +1 -0
- package/dist/generated/nodetool.image.d.ts +172 -0
- package/dist/generated/nodetool.image.d.ts.map +1 -0
- package/dist/generated/nodetool.image.js +54 -0
- package/dist/generated/nodetool.image.js.map +1 -0
- package/dist/generated/nodetool.input.d.ts +313 -0
- package/dist/generated/nodetool.input.d.ts.map +1 -0
- package/dist/generated/nodetool.input.js +102 -0
- package/dist/generated/nodetool.input.js.map +1 -0
- package/dist/generated/nodetool.model3d.d.ts +142 -0
- package/dist/generated/nodetool.model3d.d.ts.map +1 -0
- package/dist/generated/nodetool.model3d.js +45 -0
- package/dist/generated/nodetool.model3d.js.map +1 -0
- package/dist/generated/nodetool.output.d.ts +11 -0
- package/dist/generated/nodetool.output.d.ts.map +1 -0
- package/dist/generated/nodetool.output.js +6 -0
- package/dist/generated/nodetool.output.js.map +1 -0
- package/dist/generated/nodetool.team.d.ts +27 -0
- package/dist/generated/nodetool.team.d.ts.map +1 -0
- package/dist/generated/nodetool.team.js +9 -0
- package/dist/generated/nodetool.team.js.map +1 -0
- package/dist/generated/nodetool.text.d.ts +453 -0
- package/dist/generated/nodetool.text.d.ts.map +1 -0
- package/dist/generated/nodetool.text.js +153 -0
- package/dist/generated/nodetool.text.js.map +1 -0
- package/dist/generated/nodetool.triggers.d.ts +76 -0
- package/dist/generated/nodetool.triggers.d.ts.map +1 -0
- package/dist/generated/nodetool.triggers.js +18 -0
- package/dist/generated/nodetool.triggers.js.map +1 -0
- package/dist/generated/nodetool.video.d.ts +280 -0
- package/dist/generated/nodetool.video.d.ts.map +1 -0
- package/dist/generated/nodetool.video.js +90 -0
- package/dist/generated/nodetool.video.js.map +1 -0
- package/dist/generated/nodetool.workflows.base_node.d.ts +9 -0
- package/dist/generated/nodetool.workflows.base_node.d.ts.map +1 -0
- package/dist/generated/nodetool.workflows.base_node.js +6 -0
- package/dist/generated/nodetool.workflows.base_node.js.map +1 -0
- package/dist/generated/nodetool.workflows.workflow_node.d.ts +9 -0
- package/dist/generated/nodetool.workflows.workflow_node.d.ts.map +1 -0
- package/dist/generated/nodetool.workflows.workflow_node.js +6 -0
- package/dist/generated/nodetool.workflows.workflow_node.js.map +1 -0
- package/dist/generated/nodetool.workspace.d.ts +146 -0
- package/dist/generated/nodetool.workspace.d.ts.map +1 -0
- package/dist/generated/nodetool.workspace.js +57 -0
- package/dist/generated/nodetool.workspace.js.map +1 -0
- package/dist/generated/openai.agents.d.ts +28 -0
- package/dist/generated/openai.agents.d.ts.map +1 -0
- package/dist/generated/openai.agents.js +9 -0
- package/dist/generated/openai.agents.js.map +1 -0
- package/dist/generated/openai.audio.d.ts +35 -0
- package/dist/generated/openai.audio.d.ts.map +1 -0
- package/dist/generated/openai.audio.js +12 -0
- package/dist/generated/openai.audio.js.map +1 -0
- package/dist/generated/openai.image.d.ts +26 -0
- package/dist/generated/openai.image.d.ts.map +1 -0
- package/dist/generated/openai.image.js +9 -0
- package/dist/generated/openai.image.js.map +1 -0
- package/dist/generated/openai.text.d.ts +28 -0
- package/dist/generated/openai.text.d.ts.map +1 -0
- package/dist/generated/openai.text.js +12 -0
- package/dist/generated/openai.text.js.map +1 -0
- package/dist/generated/search.google.d.ts +78 -0
- package/dist/generated/search.google.d.ts.map +1 -0
- package/dist/generated/search.google.js +27 -0
- package/dist/generated/search.google.js.map +1 -0
- package/dist/generated/vector.d.ts +131 -0
- package/dist/generated/vector.d.ts.map +1 -0
- package/dist/generated/vector.js +42 -0
- package/dist/generated/vector.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +56 -0
package/dist/core.d.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nodetool-ai/dsl – Core DSL primitives
|
|
3
|
+
*
|
|
4
|
+
* OutputHandle, Connectable, DslNode, SingleOutput, createNode(), workflow(), run()
|
|
5
|
+
*/
|
|
6
|
+
import { NodeRegistry } from "@nodetool-ai/node-sdk";
|
|
7
|
+
export interface OutputHandle<T> {
|
|
8
|
+
readonly __brand: "OutputHandle";
|
|
9
|
+
readonly nodeId: string;
|
|
10
|
+
readonly slot: string;
|
|
11
|
+
readonly __phantom?: T;
|
|
12
|
+
}
|
|
13
|
+
export declare function isOutputHandle(value: unknown): value is OutputHandle<unknown>;
|
|
14
|
+
export type Connectable<T> = T | OutputHandle<T>;
|
|
15
|
+
export type SingleOutput<T, TSlot extends string = "output"> = {
|
|
16
|
+
readonly [K in TSlot]: T;
|
|
17
|
+
};
|
|
18
|
+
export type OutputSlot<TOutputs extends object> = Extract<keyof TOutputs, string>;
|
|
19
|
+
export interface OutputAccessor<TOutputs extends object, TDefault extends OutputSlot<TOutputs> | undefined = undefined> {
|
|
20
|
+
(): TDefault extends OutputSlot<TOutputs> ? OutputHandle<TOutputs[TDefault]> : never;
|
|
21
|
+
<K extends OutputSlot<TOutputs>>(slot: K): OutputHandle<TOutputs[K]>;
|
|
22
|
+
}
|
|
23
|
+
export interface DslNode<TOutputs extends object, TDefault extends OutputSlot<TOutputs> | undefined = TOutputs extends SingleOutput<infer _TValue, infer TSlot> ? Extract<TSlot, OutputSlot<TOutputs>> : undefined> {
|
|
24
|
+
readonly nodeId: string;
|
|
25
|
+
readonly nodeType: string;
|
|
26
|
+
readonly inputs: Record<string, unknown>;
|
|
27
|
+
readonly output: OutputAccessor<TOutputs, TDefault>;
|
|
28
|
+
}
|
|
29
|
+
export interface WorkflowNode {
|
|
30
|
+
readonly id: string;
|
|
31
|
+
readonly type: string;
|
|
32
|
+
readonly data: Record<string, unknown>;
|
|
33
|
+
readonly streaming: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface WorkflowEdge {
|
|
36
|
+
readonly source: string;
|
|
37
|
+
readonly sourceHandle: string;
|
|
38
|
+
readonly target: string;
|
|
39
|
+
readonly targetHandle: string;
|
|
40
|
+
}
|
|
41
|
+
export interface Workflow {
|
|
42
|
+
readonly nodes: WorkflowNode[];
|
|
43
|
+
readonly edges: WorkflowEdge[];
|
|
44
|
+
}
|
|
45
|
+
export type CreateNodeOptions<TOutputs extends object, TDefault extends OutputSlot<TOutputs> | undefined = undefined> = {
|
|
46
|
+
streaming?: boolean;
|
|
47
|
+
outputNames?: readonly OutputSlot<TOutputs>[];
|
|
48
|
+
defaultOutput?: TDefault;
|
|
49
|
+
multiOutput?: boolean;
|
|
50
|
+
};
|
|
51
|
+
export declare function createNode<TOutputs extends object, TDefault extends OutputSlot<TOutputs> | undefined = TOutputs extends SingleOutput<infer _TValue, infer TSlot> ? Extract<TSlot, OutputSlot<TOutputs>> : undefined>(nodeType: string, inputs: Record<string, unknown>, opts?: CreateNodeOptions<TOutputs, TDefault>): DslNode<TOutputs, TDefault>;
|
|
52
|
+
export declare function workflow(...terminals: DslNode<any>[]): Workflow;
|
|
53
|
+
export type RunOptions = {
|
|
54
|
+
userId?: string;
|
|
55
|
+
authToken?: string;
|
|
56
|
+
/** Custom node registry; defaults to NodeRegistry.global. */
|
|
57
|
+
registry?: NodeRegistry;
|
|
58
|
+
};
|
|
59
|
+
export type WorkflowResult = Record<string, unknown>;
|
|
60
|
+
export declare function run(wf: Workflow, opts?: RunOptions): Promise<WorkflowResult>;
|
|
61
|
+
export declare function runGraph(...terminals: DslNode<any>[]): Promise<WorkflowResult>;
|
|
62
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
package/dist/core.js
ADDED
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nodetool-ai/dsl – Core DSL primitives
|
|
3
|
+
*
|
|
4
|
+
* OutputHandle, Connectable, DslNode, SingleOutput, createNode(), workflow(), run()
|
|
5
|
+
*/
|
|
6
|
+
import { WorkflowRunner } from "@nodetool-ai/kernel";
|
|
7
|
+
import { NodeRegistry } from "@nodetool-ai/node-sdk";
|
|
8
|
+
import { ProcessingContext } from "@nodetool-ai/runtime";
|
|
9
|
+
export function isOutputHandle(value) {
|
|
10
|
+
return (typeof value === "object" &&
|
|
11
|
+
value !== null &&
|
|
12
|
+
value.__brand === "OutputHandle");
|
|
13
|
+
}
|
|
14
|
+
const nodeRegistry = new Map();
|
|
15
|
+
function createOutputHandle(nodeId, slot) {
|
|
16
|
+
return Object.freeze({
|
|
17
|
+
__brand: "OutputHandle",
|
|
18
|
+
nodeId,
|
|
19
|
+
slot
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// createNode() — used by generated factories
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
export function createNode(nodeType, inputs, opts) {
|
|
26
|
+
const nodeId = crypto.randomUUID();
|
|
27
|
+
const streaming = opts?.streaming ?? false;
|
|
28
|
+
const outputNames = opts?.outputNames
|
|
29
|
+
? [...opts.outputNames]
|
|
30
|
+
: opts?.multiOutput
|
|
31
|
+
? []
|
|
32
|
+
: [opts?.defaultOutput ?? "output"];
|
|
33
|
+
const defaultOutput = opts?.defaultOutput ??
|
|
34
|
+
(outputNames.length === 1 && !opts?.multiOutput
|
|
35
|
+
? outputNames[0]
|
|
36
|
+
: undefined);
|
|
37
|
+
const descriptor = {
|
|
38
|
+
nodeId,
|
|
39
|
+
nodeType,
|
|
40
|
+
inputs,
|
|
41
|
+
streaming
|
|
42
|
+
};
|
|
43
|
+
nodeRegistry.set(nodeId, descriptor);
|
|
44
|
+
const knownOutputs = new Set(outputNames);
|
|
45
|
+
const output = Object.freeze(((slot) => {
|
|
46
|
+
const resolvedSlot = slot ?? defaultOutput;
|
|
47
|
+
if (!resolvedSlot) {
|
|
48
|
+
throw new Error(`Node ${nodeType} requires an explicit output slot`);
|
|
49
|
+
}
|
|
50
|
+
if (knownOutputs.size > 0 && !knownOutputs.has(resolvedSlot)) {
|
|
51
|
+
throw new Error(`Unknown output slot '${resolvedSlot}' for node type ${nodeType}`);
|
|
52
|
+
}
|
|
53
|
+
return createOutputHandle(nodeId, resolvedSlot);
|
|
54
|
+
}));
|
|
55
|
+
const node = Object.freeze({
|
|
56
|
+
nodeId,
|
|
57
|
+
nodeType,
|
|
58
|
+
inputs,
|
|
59
|
+
output
|
|
60
|
+
});
|
|
61
|
+
return node;
|
|
62
|
+
}
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
// workflow() — BFS graph tracing
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
export function workflow(...terminals) {
|
|
67
|
+
if (terminals.length === 0) {
|
|
68
|
+
throw new Error("workflow() requires at least one terminal node");
|
|
69
|
+
}
|
|
70
|
+
const visited = new Map();
|
|
71
|
+
const edges = [];
|
|
72
|
+
const queue = [];
|
|
73
|
+
// Seed BFS with terminal nodes
|
|
74
|
+
for (const terminal of terminals) {
|
|
75
|
+
const desc = nodeRegistry.get(terminal.nodeId);
|
|
76
|
+
if (!desc) {
|
|
77
|
+
throw new Error(`Node not found: ${terminal.nodeId} — this handle may belong to a previous workflow() build`);
|
|
78
|
+
}
|
|
79
|
+
if (!visited.has(terminal.nodeId)) {
|
|
80
|
+
visited.set(terminal.nodeId, desc);
|
|
81
|
+
queue.push(terminal.nodeId);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// BFS
|
|
85
|
+
while (queue.length > 0) {
|
|
86
|
+
const currentId = queue.shift();
|
|
87
|
+
const desc = visited.get(currentId);
|
|
88
|
+
for (const [inputName, value] of Object.entries(desc.inputs)) {
|
|
89
|
+
if (isOutputHandle(value)) {
|
|
90
|
+
// Create edge
|
|
91
|
+
edges.push({
|
|
92
|
+
source: value.nodeId,
|
|
93
|
+
sourceHandle: value.slot,
|
|
94
|
+
target: currentId,
|
|
95
|
+
targetHandle: inputName
|
|
96
|
+
});
|
|
97
|
+
// Enqueue source if not visited
|
|
98
|
+
if (!visited.has(value.nodeId)) {
|
|
99
|
+
const sourceDesc = nodeRegistry.get(value.nodeId);
|
|
100
|
+
if (!sourceDesc) {
|
|
101
|
+
throw new Error(`Node not found: ${value.nodeId} — this handle may belong to a previous workflow() build`);
|
|
102
|
+
}
|
|
103
|
+
visited.set(value.nodeId, sourceDesc);
|
|
104
|
+
queue.push(value.nodeId);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Topological sort + cycle detection (Kahn's algorithm)
|
|
110
|
+
const inDegree = new Map();
|
|
111
|
+
const adjList = new Map();
|
|
112
|
+
for (const id of visited.keys()) {
|
|
113
|
+
inDegree.set(id, 0);
|
|
114
|
+
adjList.set(id, []);
|
|
115
|
+
}
|
|
116
|
+
for (const edge of edges) {
|
|
117
|
+
adjList.get(edge.source).push(edge.target);
|
|
118
|
+
inDegree.set(edge.target, (inDegree.get(edge.target) ?? 0) + 1);
|
|
119
|
+
}
|
|
120
|
+
const topoQueue = [];
|
|
121
|
+
for (const [id, deg] of inDegree) {
|
|
122
|
+
if (deg === 0)
|
|
123
|
+
topoQueue.push(id);
|
|
124
|
+
}
|
|
125
|
+
const sorted = [];
|
|
126
|
+
while (topoQueue.length > 0) {
|
|
127
|
+
const id = topoQueue.shift();
|
|
128
|
+
sorted.push(id);
|
|
129
|
+
for (const neighbor of adjList.get(id)) {
|
|
130
|
+
const newDeg = inDegree.get(neighbor) - 1;
|
|
131
|
+
inDegree.set(neighbor, newDeg);
|
|
132
|
+
if (newDeg === 0)
|
|
133
|
+
topoQueue.push(neighbor);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (sorted.length !== visited.size) {
|
|
137
|
+
throw new Error("Workflow contains a cycle");
|
|
138
|
+
}
|
|
139
|
+
// Build WorkflowNodes — strip OutputHandle values from data
|
|
140
|
+
const nodes = sorted.map((id) => {
|
|
141
|
+
const desc = visited.get(id);
|
|
142
|
+
const data = {};
|
|
143
|
+
for (const [key, val] of Object.entries(desc.inputs)) {
|
|
144
|
+
if (!isOutputHandle(val)) {
|
|
145
|
+
data[key] = val;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
id: desc.nodeId,
|
|
150
|
+
type: desc.nodeType,
|
|
151
|
+
data,
|
|
152
|
+
streaming: desc.streaming
|
|
153
|
+
};
|
|
154
|
+
});
|
|
155
|
+
// Clear registry
|
|
156
|
+
nodeRegistry.clear();
|
|
157
|
+
return Object.freeze({ nodes, edges });
|
|
158
|
+
}
|
|
159
|
+
export async function run(wf, opts) {
|
|
160
|
+
const jobId = crypto.randomUUID();
|
|
161
|
+
const nodes = wf.nodes.map((n) => ({
|
|
162
|
+
id: n.id,
|
|
163
|
+
type: n.type,
|
|
164
|
+
properties: n.data,
|
|
165
|
+
is_streaming_output: n.streaming
|
|
166
|
+
}));
|
|
167
|
+
const edges = wf.edges.map((e) => ({
|
|
168
|
+
source: e.source,
|
|
169
|
+
sourceHandle: e.sourceHandle,
|
|
170
|
+
target: e.target,
|
|
171
|
+
targetHandle: e.targetHandle
|
|
172
|
+
}));
|
|
173
|
+
const context = new ProcessingContext({
|
|
174
|
+
jobId,
|
|
175
|
+
userId: opts?.userId
|
|
176
|
+
});
|
|
177
|
+
const builtinRegistry = new NodeRegistry();
|
|
178
|
+
const { registerBaseNodes } = await import("@nodetool-ai/base-nodes");
|
|
179
|
+
registerBaseNodes(builtinRegistry);
|
|
180
|
+
try {
|
|
181
|
+
const { registerElevenLabsNodes } = await import("@nodetool-ai/elevenlabs-nodes");
|
|
182
|
+
registerElevenLabsNodes(builtinRegistry);
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
// Some environments do not have the ElevenLabs node package in a runnable state.
|
|
186
|
+
}
|
|
187
|
+
try {
|
|
188
|
+
const { registerTransformersJsNodes } = await import("@nodetool-ai/transformers-js-nodes");
|
|
189
|
+
registerTransformersJsNodes(builtinRegistry);
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// Some environments do not have the Transformers.js node package in a runnable state.
|
|
193
|
+
}
|
|
194
|
+
const resolveExecutor = (node) => {
|
|
195
|
+
if (opts?.registry?.has(node.type)) {
|
|
196
|
+
return opts.registry.resolve(node);
|
|
197
|
+
}
|
|
198
|
+
if (NodeRegistry.global.has(node.type)) {
|
|
199
|
+
return NodeRegistry.global.resolve(node);
|
|
200
|
+
}
|
|
201
|
+
if (builtinRegistry.has(node.type)) {
|
|
202
|
+
return builtinRegistry.resolve(node);
|
|
203
|
+
}
|
|
204
|
+
throw new Error(`Unknown node type: ${node.type}`);
|
|
205
|
+
};
|
|
206
|
+
const runner = new WorkflowRunner(jobId, {
|
|
207
|
+
resolveExecutor,
|
|
208
|
+
executionContext: context
|
|
209
|
+
});
|
|
210
|
+
const result = await runner.run({ job_id: jobId }, { nodes, edges });
|
|
211
|
+
if (result.status === "failed") {
|
|
212
|
+
throw new Error(result.error ?? "Workflow execution failed");
|
|
213
|
+
}
|
|
214
|
+
// Surface node-level errors: actors catch exceptions and return them as
|
|
215
|
+
// node_update messages with status "error" without failing the whole run.
|
|
216
|
+
const nodeErrors = (result.messages ?? []).filter((m) => m.type === "node_update" && m.status === "error");
|
|
217
|
+
if (nodeErrors.length > 0) {
|
|
218
|
+
throw new Error(nodeErrors[0].error ?? "A node failed during execution");
|
|
219
|
+
}
|
|
220
|
+
const outputs = {};
|
|
221
|
+
for (const [name, values] of Object.entries(result.outputs)) {
|
|
222
|
+
if (values.length > 0) {
|
|
223
|
+
outputs[name] = values[values.length - 1];
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return outputs;
|
|
227
|
+
}
|
|
228
|
+
export async function runGraph(...terminals) {
|
|
229
|
+
return run(workflow(...terminals));
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=core.js.map
|
package/dist/core.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
package/dist/export.d.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { Edge } from "@nodetool-ai/protocol";
|
|
2
|
+
interface WorkflowLike {
|
|
3
|
+
nodes: Array<Record<string, unknown>>;
|
|
4
|
+
edges: Array<Record<string, unknown>>;
|
|
5
|
+
}
|
|
6
|
+
interface NormalizedNode {
|
|
7
|
+
id: string;
|
|
8
|
+
type: string;
|
|
9
|
+
name?: string;
|
|
10
|
+
properties: Record<string, unknown>;
|
|
11
|
+
outputs: string[];
|
|
12
|
+
dynamicOutputs: string[];
|
|
13
|
+
streaming: boolean;
|
|
14
|
+
}
|
|
15
|
+
interface NormalizedEdge extends Edge {
|
|
16
|
+
}
|
|
17
|
+
export interface WorkflowToDslOptions {
|
|
18
|
+
workflowName?: string | null;
|
|
19
|
+
}
|
|
20
|
+
declare function extractClassName(nodeType: string): string;
|
|
21
|
+
declare function toCamelCase(value: string): string;
|
|
22
|
+
declare function barrelName(namespace: string): string;
|
|
23
|
+
declare function asRecord(value: unknown): Record<string, unknown> | null;
|
|
24
|
+
declare function isValidIdentifier(name: string): boolean;
|
|
25
|
+
declare function formatKey(name: string): string;
|
|
26
|
+
declare function formatLiteral(value: unknown, indentLevel?: number): string;
|
|
27
|
+
declare function normalizeGraph(graph: WorkflowLike): {
|
|
28
|
+
nodes: NormalizedNode[];
|
|
29
|
+
edges: NormalizedEdge[];
|
|
30
|
+
};
|
|
31
|
+
declare function makeIdentifier(raw: string, fallback: string, used: Set<string>): string;
|
|
32
|
+
declare function workflowConstName(workflowName?: string | null): string;
|
|
33
|
+
declare function topologicalSort(nodes: NormalizedNode[], edges: NormalizedEdge[]): NormalizedNode[];
|
|
34
|
+
declare function formatHandleExpression(sourceNodeId: string, sourceHandle: string, variableNames: Map<string, string>, outputNameByNode: Map<string, {
|
|
35
|
+
outputNames: string[];
|
|
36
|
+
defaultOutput?: string;
|
|
37
|
+
}>): string;
|
|
38
|
+
declare function buildCreateNodeOptions(node: NormalizedNode, outputNames: string[]): string;
|
|
39
|
+
/** @internal Exported for unit testing only. */
|
|
40
|
+
export declare const _testing: {
|
|
41
|
+
toCamelCase: typeof toCamelCase;
|
|
42
|
+
barrelName: typeof barrelName;
|
|
43
|
+
extractClassName: typeof extractClassName;
|
|
44
|
+
isValidIdentifier: typeof isValidIdentifier;
|
|
45
|
+
formatKey: typeof formatKey;
|
|
46
|
+
formatLiteral: typeof formatLiteral;
|
|
47
|
+
asRecord: typeof asRecord;
|
|
48
|
+
normalizeGraph: typeof normalizeGraph;
|
|
49
|
+
makeIdentifier: typeof makeIdentifier;
|
|
50
|
+
topologicalSort: typeof topologicalSort;
|
|
51
|
+
workflowConstName: typeof workflowConstName;
|
|
52
|
+
formatHandleExpression: typeof formatHandleExpression;
|
|
53
|
+
buildCreateNodeOptions: typeof buildCreateNodeOptions;
|
|
54
|
+
};
|
|
55
|
+
export declare function workflowToDsl(graph: WorkflowLike, options?: WorkflowToDslOptions): string;
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAElD,UAAU,YAAY;IACpB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvC;AAED,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,cAAe,SAAQ,IAAI;CAAG;AAQxC,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAiID,iBAAS,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAwB1C;AAED,iBAAS,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAe7C;AAED,iBAAS,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAKhE;AAED,iBAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,iBAAS,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvC;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,SAAI,GAAG,MAAM,CA0C9D;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG;IAC5C,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB,CAuDA;AAED,iBAAS,cAAc,CACrB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAChB,MAAM,CAkCR;AAED,iBAAS,iBAAiB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAS/D;AAED,iBAAS,eAAe,CACtB,KAAK,EAAE,cAAc,EAAE,EACvB,KAAK,EAAE,cAAc,EAAE,GACtB,cAAc,EAAE,CAqDlB;AAqCD,iBAAS,sBAAsB,CAC7B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,gBAAgB,EAAE,GAAG,CACnB,MAAM,EACN;IAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,CAClD,GACA,MAAM,CAWR;AAED,iBAAS,sBAAsB,CAC7B,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,CAcR;AAED,gDAAgD;AAChD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;CAcpB,CAAC;AAEF,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE,oBAAyB,GACjC,MAAM,CAmHR"}
|