@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.
Files changed (293) hide show
  1. package/dist/core.d.ts +62 -0
  2. package/dist/core.d.ts.map +1 -0
  3. package/dist/core.js +231 -0
  4. package/dist/core.js.map +1 -0
  5. package/dist/export.d.ts +57 -0
  6. package/dist/export.d.ts.map +1 -0
  7. package/dist/export.js +467 -0
  8. package/dist/export.js.map +1 -0
  9. package/dist/generated/anthropic.agents.d.ts +15 -0
  10. package/dist/generated/anthropic.agents.d.ts.map +1 -0
  11. package/dist/generated/anthropic.agents.js +6 -0
  12. package/dist/generated/anthropic.agents.js.map +1 -0
  13. package/dist/generated/apify.scraping.d.ts +83 -0
  14. package/dist/generated/apify.scraping.d.ts.map +1 -0
  15. package/dist/generated/apify.scraping.js +24 -0
  16. package/dist/generated/apify.scraping.js.map +1 -0
  17. package/dist/generated/gemini.audio.d.ts +22 -0
  18. package/dist/generated/gemini.audio.d.ts.map +1 -0
  19. package/dist/generated/gemini.audio.js +9 -0
  20. package/dist/generated/gemini.audio.js.map +1 -0
  21. package/dist/generated/gemini.image.d.ts +12 -0
  22. package/dist/generated/gemini.image.d.ts.map +1 -0
  23. package/dist/generated/gemini.image.js +6 -0
  24. package/dist/generated/gemini.image.js.map +1 -0
  25. package/dist/generated/gemini.text.d.ts +19 -0
  26. package/dist/generated/gemini.text.d.ts.map +1 -0
  27. package/dist/generated/gemini.text.js +9 -0
  28. package/dist/generated/gemini.text.js.map +1 -0
  29. package/dist/generated/gemini.video.d.ts +24 -0
  30. package/dist/generated/gemini.video.d.ts.map +1 -0
  31. package/dist/generated/gemini.video.js +9 -0
  32. package/dist/generated/gemini.video.js.map +1 -0
  33. package/dist/generated/index.d.ts +69 -0
  34. package/dist/generated/index.d.ts.map +1 -0
  35. package/dist/generated/index.js +70 -0
  36. package/dist/generated/index.js.map +1 -0
  37. package/dist/generated/kie.dynamic_schema.d.ts +8 -0
  38. package/dist/generated/kie.dynamic_schema.d.ts.map +1 -0
  39. package/dist/generated/kie.dynamic_schema.js +6 -0
  40. package/dist/generated/kie.dynamic_schema.js.map +1 -0
  41. package/dist/generated/lib.audio.d.ts +150 -0
  42. package/dist/generated/lib.audio.d.ts.map +1 -0
  43. package/dist/generated/lib.audio.js +51 -0
  44. package/dist/generated/lib.audio.js.map +1 -0
  45. package/dist/generated/lib.browser.d.ts +71 -0
  46. package/dist/generated/lib.browser.d.ts.map +1 -0
  47. package/dist/generated/lib.browser.js +21 -0
  48. package/dist/generated/lib.browser.js.map +1 -0
  49. package/dist/generated/lib.charts.d.ts +16 -0
  50. package/dist/generated/lib.charts.d.ts.map +1 -0
  51. package/dist/generated/lib.charts.js +6 -0
  52. package/dist/generated/lib.charts.js.map +1 -0
  53. package/dist/generated/lib.convert.d.ts +11 -0
  54. package/dist/generated/lib.convert.d.ts.map +1 -0
  55. package/dist/generated/lib.convert.js +6 -0
  56. package/dist/generated/lib.convert.js.map +1 -0
  57. package/dist/generated/lib.convert.pandoc.d.ts +22 -0
  58. package/dist/generated/lib.convert.pandoc.d.ts.map +1 -0
  59. package/dist/generated/lib.convert.pandoc.js +9 -0
  60. package/dist/generated/lib.convert.pandoc.js.map +1 -0
  61. package/dist/generated/lib.docx.d.ts +81 -0
  62. package/dist/generated/lib.docx.d.ts.map +1 -0
  63. package/dist/generated/lib.docx.js +30 -0
  64. package/dist/generated/lib.docx.js.map +1 -0
  65. package/dist/generated/lib.excel.d.ts +58 -0
  66. package/dist/generated/lib.excel.d.ts.map +1 -0
  67. package/dist/generated/lib.excel.js +21 -0
  68. package/dist/generated/lib.excel.js.map +1 -0
  69. package/dist/generated/lib.graphql.d.ts +47 -0
  70. package/dist/generated/lib.graphql.d.ts.map +1 -0
  71. package/dist/generated/lib.graphql.js +15 -0
  72. package/dist/generated/lib.graphql.js.map +1 -0
  73. package/dist/generated/lib.grid.d.ts +20 -0
  74. package/dist/generated/lib.grid.d.ts.map +1 -0
  75. package/dist/generated/lib.grid.js +9 -0
  76. package/dist/generated/lib.grid.js.map +1 -0
  77. package/dist/generated/lib.html.d.ts +72 -0
  78. package/dist/generated/lib.html.d.ts.map +1 -0
  79. package/dist/generated/lib.html.js +27 -0
  80. package/dist/generated/lib.html.js.map +1 -0
  81. package/dist/generated/lib.http.d.ts +68 -0
  82. package/dist/generated/lib.http.d.ts.map +1 -0
  83. package/dist/generated/lib.http.js +24 -0
  84. package/dist/generated/lib.http.js.map +1 -0
  85. package/dist/generated/lib.image.color_grading.d.ts +128 -0
  86. package/dist/generated/lib.image.color_grading.d.ts.map +1 -0
  87. package/dist/generated/lib.image.color_grading.js +33 -0
  88. package/dist/generated/lib.image.color_grading.js.map +1 -0
  89. package/dist/generated/lib.image.d.ts +21 -0
  90. package/dist/generated/lib.image.d.ts.map +1 -0
  91. package/dist/generated/lib.image.draw.d.ts +36 -0
  92. package/dist/generated/lib.image.draw.d.ts.map +1 -0
  93. package/dist/generated/lib.image.draw.js +12 -0
  94. package/dist/generated/lib.image.draw.js.map +1 -0
  95. package/dist/generated/lib.image.enhance.d.ts +99 -0
  96. package/dist/generated/lib.image.enhance.d.ts.map +1 -0
  97. package/dist/generated/lib.image.enhance.js +39 -0
  98. package/dist/generated/lib.image.enhance.js.map +1 -0
  99. package/dist/generated/lib.image.filter.d.ts +95 -0
  100. package/dist/generated/lib.image.filter.d.ts.map +1 -0
  101. package/dist/generated/lib.image.filter.js +39 -0
  102. package/dist/generated/lib.image.filter.js.map +1 -0
  103. package/dist/generated/lib.image.js +9 -0
  104. package/dist/generated/lib.image.js.map +1 -0
  105. package/dist/generated/lib.mail.d.ts +49 -0
  106. package/dist/generated/lib.mail.d.ts.map +1 -0
  107. package/dist/generated/lib.mail.js +15 -0
  108. package/dist/generated/lib.mail.js.map +1 -0
  109. package/dist/generated/lib.markdown.d.ts +47 -0
  110. package/dist/generated/lib.markdown.d.ts.map +1 -0
  111. package/dist/generated/lib.markdown.js +21 -0
  112. package/dist/generated/lib.markdown.js.map +1 -0
  113. package/dist/generated/lib.nlp.d.ts +69 -0
  114. package/dist/generated/lib.nlp.d.ts.map +1 -0
  115. package/dist/generated/lib.nlp.js +24 -0
  116. package/dist/generated/lib.nlp.js.map +1 -0
  117. package/dist/generated/lib.notion.d.ts +61 -0
  118. package/dist/generated/lib.notion.d.ts.map +1 -0
  119. package/dist/generated/lib.notion.js +21 -0
  120. package/dist/generated/lib.notion.js.map +1 -0
  121. package/dist/generated/lib.os.d.ts +215 -0
  122. package/dist/generated/lib.os.d.ts.map +1 -0
  123. package/dist/generated/lib.os.js +90 -0
  124. package/dist/generated/lib.os.js.map +1 -0
  125. package/dist/generated/lib.pdf.d.ts +97 -0
  126. package/dist/generated/lib.pdf.d.ts.map +1 -0
  127. package/dist/generated/lib.pdf.js +33 -0
  128. package/dist/generated/lib.pdf.js.map +1 -0
  129. package/dist/generated/lib.rss.d.ts +21 -0
  130. package/dist/generated/lib.rss.d.ts.map +1 -0
  131. package/dist/generated/lib.rss.js +9 -0
  132. package/dist/generated/lib.rss.js.map +1 -0
  133. package/dist/generated/lib.s3.d.ts +73 -0
  134. package/dist/generated/lib.s3.d.ts.map +1 -0
  135. package/dist/generated/lib.s3.js +24 -0
  136. package/dist/generated/lib.s3.js.map +1 -0
  137. package/dist/generated/lib.secret.d.ts +10 -0
  138. package/dist/generated/lib.secret.d.ts.map +1 -0
  139. package/dist/generated/lib.secret.js +6 -0
  140. package/dist/generated/lib.secret.js.map +1 -0
  141. package/dist/generated/lib.sqlite.d.ts +71 -0
  142. package/dist/generated/lib.sqlite.d.ts.map +1 -0
  143. package/dist/generated/lib.sqlite.js +24 -0
  144. package/dist/generated/lib.sqlite.js.map +1 -0
  145. package/dist/generated/lib.supabase.d.ts +60 -0
  146. package/dist/generated/lib.supabase.d.ts.map +1 -0
  147. package/dist/generated/lib.supabase.js +21 -0
  148. package/dist/generated/lib.supabase.js.map +1 -0
  149. package/dist/generated/lib.svg.d.ts +157 -0
  150. package/dist/generated/lib.svg.d.ts.map +1 -0
  151. package/dist/generated/lib.svg.js +45 -0
  152. package/dist/generated/lib.svg.js.map +1 -0
  153. package/dist/generated/lib.twilio.d.ts +46 -0
  154. package/dist/generated/lib.twilio.d.ts.map +1 -0
  155. package/dist/generated/lib.twilio.js +15 -0
  156. package/dist/generated/lib.twilio.js.map +1 -0
  157. package/dist/generated/lib.video.download.d.ts +22 -0
  158. package/dist/generated/lib.video.download.d.ts.map +1 -0
  159. package/dist/generated/lib.video.download.js +6 -0
  160. package/dist/generated/lib.video.download.js.map +1 -0
  161. package/dist/generated/messaging.discord.d.ts +31 -0
  162. package/dist/generated/messaging.discord.d.ts.map +1 -0
  163. package/dist/generated/messaging.discord.js +9 -0
  164. package/dist/generated/messaging.discord.js.map +1 -0
  165. package/dist/generated/messaging.telegram.d.ts +39 -0
  166. package/dist/generated/messaging.telegram.d.ts.map +1 -0
  167. package/dist/generated/messaging.telegram.js +9 -0
  168. package/dist/generated/messaging.telegram.js.map +1 -0
  169. package/dist/generated/mistral.embeddings.d.ts +11 -0
  170. package/dist/generated/mistral.embeddings.d.ts.map +1 -0
  171. package/dist/generated/mistral.embeddings.js +6 -0
  172. package/dist/generated/mistral.embeddings.js.map +1 -0
  173. package/dist/generated/mistral.text.d.ts +23 -0
  174. package/dist/generated/mistral.text.d.ts.map +1 -0
  175. package/dist/generated/mistral.text.js +9 -0
  176. package/dist/generated/mistral.text.js.map +1 -0
  177. package/dist/generated/mistral.vision.d.ts +22 -0
  178. package/dist/generated/mistral.vision.d.ts.map +1 -0
  179. package/dist/generated/mistral.vision.js +9 -0
  180. package/dist/generated/mistral.vision.js.map +1 -0
  181. package/dist/generated/nodetool.agents.d.ts +282 -0
  182. package/dist/generated/nodetool.agents.d.ts.map +1 -0
  183. package/dist/generated/nodetool.agents.js +75 -0
  184. package/dist/generated/nodetool.agents.js.map +1 -0
  185. package/dist/generated/nodetool.audio.d.ts +207 -0
  186. package/dist/generated/nodetool.audio.d.ts.map +1 -0
  187. package/dist/generated/nodetool.audio.js +72 -0
  188. package/dist/generated/nodetool.audio.js.map +1 -0
  189. package/dist/generated/nodetool.code.d.ts +181 -0
  190. package/dist/generated/nodetool.code.d.ts.map +1 -0
  191. package/dist/generated/nodetool.code.js +60 -0
  192. package/dist/generated/nodetool.code.js.map +1 -0
  193. package/dist/generated/nodetool.compare.d.ts +13 -0
  194. package/dist/generated/nodetool.compare.d.ts.map +1 -0
  195. package/dist/generated/nodetool.compare.js +6 -0
  196. package/dist/generated/nodetool.compare.js.map +1 -0
  197. package/dist/generated/nodetool.constant.d.ts +211 -0
  198. package/dist/generated/nodetool.constant.d.ts.map +1 -0
  199. package/dist/generated/nodetool.constant.js +87 -0
  200. package/dist/generated/nodetool.constant.js.map +1 -0
  201. package/dist/generated/nodetool.control.d.ts +54 -0
  202. package/dist/generated/nodetool.control.d.ts.map +1 -0
  203. package/dist/generated/nodetool.control.js +21 -0
  204. package/dist/generated/nodetool.control.js.map +1 -0
  205. package/dist/generated/nodetool.data.d.ts +245 -0
  206. package/dist/generated/nodetool.data.d.ts.map +1 -0
  207. package/dist/generated/nodetool.data.js +93 -0
  208. package/dist/generated/nodetool.data.js.map +1 -0
  209. package/dist/generated/nodetool.document.d.ts +90 -0
  210. package/dist/generated/nodetool.document.d.ts.map +1 -0
  211. package/dist/generated/nodetool.document.js +27 -0
  212. package/dist/generated/nodetool.document.js.map +1 -0
  213. package/dist/generated/nodetool.generators.d.ts +60 -0
  214. package/dist/generated/nodetool.generators.d.ts.map +1 -0
  215. package/dist/generated/nodetool.generators.js +18 -0
  216. package/dist/generated/nodetool.generators.js.map +1 -0
  217. package/dist/generated/nodetool.image.d.ts +172 -0
  218. package/dist/generated/nodetool.image.d.ts.map +1 -0
  219. package/dist/generated/nodetool.image.js +54 -0
  220. package/dist/generated/nodetool.image.js.map +1 -0
  221. package/dist/generated/nodetool.input.d.ts +313 -0
  222. package/dist/generated/nodetool.input.d.ts.map +1 -0
  223. package/dist/generated/nodetool.input.js +102 -0
  224. package/dist/generated/nodetool.input.js.map +1 -0
  225. package/dist/generated/nodetool.model3d.d.ts +142 -0
  226. package/dist/generated/nodetool.model3d.d.ts.map +1 -0
  227. package/dist/generated/nodetool.model3d.js +45 -0
  228. package/dist/generated/nodetool.model3d.js.map +1 -0
  229. package/dist/generated/nodetool.output.d.ts +11 -0
  230. package/dist/generated/nodetool.output.d.ts.map +1 -0
  231. package/dist/generated/nodetool.output.js +6 -0
  232. package/dist/generated/nodetool.output.js.map +1 -0
  233. package/dist/generated/nodetool.team.d.ts +27 -0
  234. package/dist/generated/nodetool.team.d.ts.map +1 -0
  235. package/dist/generated/nodetool.team.js +9 -0
  236. package/dist/generated/nodetool.team.js.map +1 -0
  237. package/dist/generated/nodetool.text.d.ts +453 -0
  238. package/dist/generated/nodetool.text.d.ts.map +1 -0
  239. package/dist/generated/nodetool.text.js +153 -0
  240. package/dist/generated/nodetool.text.js.map +1 -0
  241. package/dist/generated/nodetool.triggers.d.ts +76 -0
  242. package/dist/generated/nodetool.triggers.d.ts.map +1 -0
  243. package/dist/generated/nodetool.triggers.js +18 -0
  244. package/dist/generated/nodetool.triggers.js.map +1 -0
  245. package/dist/generated/nodetool.video.d.ts +280 -0
  246. package/dist/generated/nodetool.video.d.ts.map +1 -0
  247. package/dist/generated/nodetool.video.js +90 -0
  248. package/dist/generated/nodetool.video.js.map +1 -0
  249. package/dist/generated/nodetool.workflows.base_node.d.ts +9 -0
  250. package/dist/generated/nodetool.workflows.base_node.d.ts.map +1 -0
  251. package/dist/generated/nodetool.workflows.base_node.js +6 -0
  252. package/dist/generated/nodetool.workflows.base_node.js.map +1 -0
  253. package/dist/generated/nodetool.workflows.workflow_node.d.ts +9 -0
  254. package/dist/generated/nodetool.workflows.workflow_node.d.ts.map +1 -0
  255. package/dist/generated/nodetool.workflows.workflow_node.js +6 -0
  256. package/dist/generated/nodetool.workflows.workflow_node.js.map +1 -0
  257. package/dist/generated/nodetool.workspace.d.ts +146 -0
  258. package/dist/generated/nodetool.workspace.d.ts.map +1 -0
  259. package/dist/generated/nodetool.workspace.js +57 -0
  260. package/dist/generated/nodetool.workspace.js.map +1 -0
  261. package/dist/generated/openai.agents.d.ts +28 -0
  262. package/dist/generated/openai.agents.d.ts.map +1 -0
  263. package/dist/generated/openai.agents.js +9 -0
  264. package/dist/generated/openai.agents.js.map +1 -0
  265. package/dist/generated/openai.audio.d.ts +35 -0
  266. package/dist/generated/openai.audio.d.ts.map +1 -0
  267. package/dist/generated/openai.audio.js +12 -0
  268. package/dist/generated/openai.audio.js.map +1 -0
  269. package/dist/generated/openai.image.d.ts +26 -0
  270. package/dist/generated/openai.image.d.ts.map +1 -0
  271. package/dist/generated/openai.image.js +9 -0
  272. package/dist/generated/openai.image.js.map +1 -0
  273. package/dist/generated/openai.text.d.ts +28 -0
  274. package/dist/generated/openai.text.d.ts.map +1 -0
  275. package/dist/generated/openai.text.js +12 -0
  276. package/dist/generated/openai.text.js.map +1 -0
  277. package/dist/generated/search.google.d.ts +78 -0
  278. package/dist/generated/search.google.d.ts.map +1 -0
  279. package/dist/generated/search.google.js +27 -0
  280. package/dist/generated/search.google.js.map +1 -0
  281. package/dist/generated/vector.d.ts +131 -0
  282. package/dist/generated/vector.d.ts.map +1 -0
  283. package/dist/generated/vector.js +42 -0
  284. package/dist/generated/vector.js.map +1 -0
  285. package/dist/index.d.ts +5 -0
  286. package/dist/index.d.ts.map +1 -0
  287. package/dist/index.js +5 -0
  288. package/dist/index.js.map +1 -0
  289. package/dist/types.d.ts +2 -0
  290. package/dist/types.d.ts.map +1 -0
  291. package/dist/types.js +2 -0
  292. package/dist/types.js.map +1 -0
  293. 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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
@@ -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"}