@vertesia/cli 0.24.0-dev.202601221707

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 (183) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +34 -0
  3. package/bin/app.js +3 -0
  4. package/bin/docker-credential-vertesia.js +3 -0
  5. package/lib/apps/commands.d.ts +11 -0
  6. package/lib/apps/commands.d.ts.map +1 -0
  7. package/lib/apps/commands.js +246 -0
  8. package/lib/apps/commands.js.map +1 -0
  9. package/lib/apps/index.d.ts +3 -0
  10. package/lib/apps/index.d.ts.map +1 -0
  11. package/lib/apps/index.js +104 -0
  12. package/lib/apps/index.js.map +1 -0
  13. package/lib/artifacts/commands.d.ts +6 -0
  14. package/lib/artifacts/commands.d.ts.map +1 -0
  15. package/lib/artifacts/commands.js +75 -0
  16. package/lib/artifacts/commands.js.map +1 -0
  17. package/lib/artifacts/index.d.ts +3 -0
  18. package/lib/artifacts/index.d.ts.map +1 -0
  19. package/lib/artifacts/index.js +33 -0
  20. package/lib/artifacts/index.js.map +1 -0
  21. package/lib/client.d.ts +12 -0
  22. package/lib/client.d.ts.map +1 -0
  23. package/lib/client.js +44 -0
  24. package/lib/client.js.map +1 -0
  25. package/lib/codegen/CodeBuilder.d.ts +16 -0
  26. package/lib/codegen/CodeBuilder.d.ts.map +1 -0
  27. package/lib/codegen/CodeBuilder.js +115 -0
  28. package/lib/codegen/CodeBuilder.js.map +1 -0
  29. package/lib/codegen/InteractionVersion.d.ts +29 -0
  30. package/lib/codegen/InteractionVersion.d.ts.map +1 -0
  31. package/lib/codegen/InteractionVersion.js +94 -0
  32. package/lib/codegen/InteractionVersion.js.map +1 -0
  33. package/lib/codegen/index.d.ts +3 -0
  34. package/lib/codegen/index.d.ts.map +1 -0
  35. package/lib/codegen/index.js +30 -0
  36. package/lib/codegen/index.js.map +1 -0
  37. package/lib/codegen/template.d.ts +3 -0
  38. package/lib/codegen/template.d.ts.map +1 -0
  39. package/lib/codegen/template.js +28 -0
  40. package/lib/codegen/template.js.map +1 -0
  41. package/lib/codegen/utils.d.ts +2 -0
  42. package/lib/codegen/utils.d.ts.map +1 -0
  43. package/lib/codegen/utils.js +4 -0
  44. package/lib/codegen/utils.js.map +1 -0
  45. package/lib/datagen/index.d.ts +3 -0
  46. package/lib/datagen/index.d.ts.map +1 -0
  47. package/lib/datagen/index.js +81 -0
  48. package/lib/datagen/index.js.map +1 -0
  49. package/lib/envs/index.d.ts +3 -0
  50. package/lib/envs/index.d.ts.map +1 -0
  51. package/lib/envs/index.js +23 -0
  52. package/lib/envs/index.js.map +1 -0
  53. package/lib/index.d.ts +2 -0
  54. package/lib/index.d.ts.map +1 -0
  55. package/lib/index.js +181 -0
  56. package/lib/index.js.map +1 -0
  57. package/lib/interactions/index.d.ts +3 -0
  58. package/lib/interactions/index.d.ts.map +1 -0
  59. package/lib/interactions/index.js +35 -0
  60. package/lib/interactions/index.js.map +1 -0
  61. package/lib/memory/index.d.ts +3 -0
  62. package/lib/memory/index.d.ts.map +1 -0
  63. package/lib/memory/index.js +15 -0
  64. package/lib/memory/index.js.map +1 -0
  65. package/lib/objects/commands.d.ts +15 -0
  66. package/lib/objects/commands.d.ts.map +1 -0
  67. package/lib/objects/commands.js +273 -0
  68. package/lib/objects/commands.js.map +1 -0
  69. package/lib/objects/index.d.ts +3 -0
  70. package/lib/objects/index.d.ts.map +1 -0
  71. package/lib/objects/index.js +43 -0
  72. package/lib/objects/index.js.map +1 -0
  73. package/lib/package.d.ts +8 -0
  74. package/lib/package.d.ts.map +1 -0
  75. package/lib/package.js +63 -0
  76. package/lib/package.js.map +1 -0
  77. package/lib/profiles/commands.d.ts +20 -0
  78. package/lib/profiles/commands.d.ts.map +1 -0
  79. package/lib/profiles/commands.js +207 -0
  80. package/lib/profiles/commands.js.map +1 -0
  81. package/lib/profiles/index.d.ts +65 -0
  82. package/lib/profiles/index.d.ts.map +1 -0
  83. package/lib/profiles/index.js +324 -0
  84. package/lib/profiles/index.js.map +1 -0
  85. package/lib/profiles/server/cors.d.ts +3 -0
  86. package/lib/profiles/server/cors.d.ts.map +1 -0
  87. package/lib/profiles/server/cors.js +22 -0
  88. package/lib/profiles/server/cors.js.map +1 -0
  89. package/lib/profiles/server/index.d.ts +12 -0
  90. package/lib/profiles/server/index.d.ts.map +1 -0
  91. package/lib/profiles/server/index.js +134 -0
  92. package/lib/profiles/server/index.js.map +1 -0
  93. package/lib/profiles/server/server.d.ts +4 -0
  94. package/lib/profiles/server/server.d.ts.map +1 -0
  95. package/lib/profiles/server/server.js +32 -0
  96. package/lib/profiles/server/server.js.map +1 -0
  97. package/lib/projects/index.d.ts +3 -0
  98. package/lib/projects/index.d.ts.map +1 -0
  99. package/lib/projects/index.js +17 -0
  100. package/lib/projects/index.js.map +1 -0
  101. package/lib/run/executor.d.ts +22 -0
  102. package/lib/run/executor.d.ts.map +1 -0
  103. package/lib/run/executor.js +182 -0
  104. package/lib/run/executor.js.map +1 -0
  105. package/lib/run/index.d.ts +3 -0
  106. package/lib/run/index.d.ts.map +1 -0
  107. package/lib/run/index.js +192 -0
  108. package/lib/run/index.js.map +1 -0
  109. package/lib/runs/index.d.ts +3 -0
  110. package/lib/runs/index.d.ts.map +1 -0
  111. package/lib/runs/index.js +48 -0
  112. package/lib/runs/index.js.map +1 -0
  113. package/lib/utils/console.d.ts +42 -0
  114. package/lib/utils/console.d.ts.map +1 -0
  115. package/lib/utils/console.js +256 -0
  116. package/lib/utils/console.js.map +1 -0
  117. package/lib/utils/stdio.d.ts +7 -0
  118. package/lib/utils/stdio.d.ts.map +1 -0
  119. package/lib/utils/stdio.js +35 -0
  120. package/lib/utils/stdio.js.map +1 -0
  121. package/lib/worker/commands.d.ts +11 -0
  122. package/lib/worker/commands.d.ts.map +1 -0
  123. package/lib/worker/commands.js +173 -0
  124. package/lib/worker/commands.js.map +1 -0
  125. package/lib/worker/connect.d.ts +7 -0
  126. package/lib/worker/connect.d.ts.map +1 -0
  127. package/lib/worker/connect.js +68 -0
  128. package/lib/worker/connect.js.map +1 -0
  129. package/lib/worker/docker-credential.d.ts +2 -0
  130. package/lib/worker/docker-credential.d.ts.map +1 -0
  131. package/lib/worker/docker-credential.js +50 -0
  132. package/lib/worker/docker-credential.js.map +1 -0
  133. package/lib/worker/docker.d.ts +10 -0
  134. package/lib/worker/docker.d.ts.map +1 -0
  135. package/lib/worker/docker.js +93 -0
  136. package/lib/worker/docker.js.map +1 -0
  137. package/lib/worker/index.d.ts +3 -0
  138. package/lib/worker/index.d.ts.map +1 -0
  139. package/lib/worker/index.js +90 -0
  140. package/lib/worker/index.js.map +1 -0
  141. package/lib/worker/project.d.ts +58 -0
  142. package/lib/worker/project.d.ts.map +1 -0
  143. package/lib/worker/project.js +148 -0
  144. package/lib/worker/project.js.map +1 -0
  145. package/lib/worker/refresh.d.ts +6 -0
  146. package/lib/worker/refresh.d.ts.map +1 -0
  147. package/lib/worker/refresh.js +47 -0
  148. package/lib/worker/refresh.js.map +1 -0
  149. package/lib/worker/registry.d.ts +7 -0
  150. package/lib/worker/registry.d.ts.map +1 -0
  151. package/lib/worker/registry.js +47 -0
  152. package/lib/worker/registry.js.map +1 -0
  153. package/lib/worker/version.d.ts +2 -0
  154. package/lib/worker/version.d.ts.map +1 -0
  155. package/lib/worker/version.js +4 -0
  156. package/lib/worker/version.js.map +1 -0
  157. package/lib/workflows/commands.d.ts +14 -0
  158. package/lib/workflows/commands.d.ts.map +1 -0
  159. package/lib/workflows/commands.js +243 -0
  160. package/lib/workflows/commands.js.map +1 -0
  161. package/lib/workflows/index.d.ts +3 -0
  162. package/lib/workflows/index.d.ts.map +1 -0
  163. package/lib/workflows/index.js +117 -0
  164. package/lib/workflows/index.js.map +1 -0
  165. package/lib/workflows/json-loader.d.ts +3 -0
  166. package/lib/workflows/json-loader.d.ts.map +1 -0
  167. package/lib/workflows/json-loader.js +16 -0
  168. package/lib/workflows/json-loader.js.map +1 -0
  169. package/lib/workflows/streams.d.ts +2 -0
  170. package/lib/workflows/streams.d.ts.map +1 -0
  171. package/lib/workflows/streams.js +423 -0
  172. package/lib/workflows/streams.js.map +1 -0
  173. package/lib/workflows/ts-loader.d.ts +3 -0
  174. package/lib/workflows/ts-loader.d.ts.map +1 -0
  175. package/lib/workflows/ts-loader.js +94 -0
  176. package/lib/workflows/ts-loader.js.map +1 -0
  177. package/lib/workflows/validation.d.ts +6 -0
  178. package/lib/workflows/validation.d.ts.map +1 -0
  179. package/lib/workflows/validation.js +22 -0
  180. package/lib/workflows/validation.js.map +1 -0
  181. package/package.json +73 -0
  182. package/templates/index.tpl +4 -0
  183. package/templates/interaction.tpl +16 -0
@@ -0,0 +1,423 @@
1
+ import { AgentMessageType } from "@vertesia/common";
2
+ import chalk from "chalk";
3
+ import { getClient } from "../client.js";
4
+ import boxen from "boxen";
5
+ import ora from "ora";
6
+ import gradient from "gradient-string";
7
+ import figures from "figures";
8
+ import logUpdate from "log-update";
9
+ import logSymbols from "log-symbols";
10
+ import * as readline from "readline";
11
+ // Define emoji icons for different message types (using integer enum keys)
12
+ const typeIcons = {
13
+ [AgentMessageType.SYSTEM]: figures.hamburger,
14
+ [AgentMessageType.THOUGHT]: figures.questionMarkPrefix,
15
+ [AgentMessageType.PLAN]: figures.arrowRight,
16
+ [AgentMessageType.UPDATE]: figures.arrowUp,
17
+ [AgentMessageType.COMPLETE]: figures.tick,
18
+ [AgentMessageType.WARNING]: figures.warning,
19
+ [AgentMessageType.ERROR]: figures.cross,
20
+ };
21
+ // Enhanced color palette with gradients (using integer enum keys)
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
+ const typeColors = {
24
+ [AgentMessageType.SYSTEM]: gradient.atlas,
25
+ [AgentMessageType.THOUGHT]: gradient.mind,
26
+ [AgentMessageType.PLAN]: gradient.passion,
27
+ [AgentMessageType.UPDATE]: gradient.cristal,
28
+ [AgentMessageType.COMPLETE]: gradient.summer,
29
+ [AgentMessageType.WARNING]: gradient.morning,
30
+ [AgentMessageType.ERROR]: gradient.fruit,
31
+ };
32
+ // Get display name for message type
33
+ const getTypeName = (type) => {
34
+ return AgentMessageType[type] || 'UPDATE';
35
+ };
36
+ // Define styles for boxen with proper types (using integer enum keys)
37
+ const boxStyles = {
38
+ [AgentMessageType.ERROR]: {
39
+ padding: 1,
40
+ margin: 1,
41
+ borderStyle: "round",
42
+ borderColor: "red",
43
+ backgroundColor: "#400",
44
+ },
45
+ [AgentMessageType.WARNING]: {
46
+ padding: 1,
47
+ margin: 1,
48
+ borderStyle: "round",
49
+ borderColor: "yellow",
50
+ backgroundColor: "#440",
51
+ },
52
+ [AgentMessageType.COMPLETE]: {
53
+ padding: 1,
54
+ margin: 1,
55
+ borderStyle: "round",
56
+ borderColor: "green",
57
+ backgroundColor: "#040",
58
+ },
59
+ };
60
+ export async function streamRun(workflowId, runId, program, options = {}) {
61
+ const client = await getClient(program);
62
+ const since = options.since ? parseInt(options.since, 10) : undefined;
63
+ const interactive = options.interactive === true;
64
+ // Setup cleanup resources
65
+ let spinner = null;
66
+ let isTerminating = false;
67
+ let cleanupTimeouts = [];
68
+ let streamController = null;
69
+ // Signal handler function for proper cleanup - use a variable that can be redefined
70
+ let cleanupFn = () => {
71
+ isTerminating = true;
72
+ // Clean up spinner
73
+ if (spinner) {
74
+ spinner.stop();
75
+ spinner = null;
76
+ }
77
+ // Clean up any pending timeouts
78
+ for (const timeout of cleanupTimeouts) {
79
+ clearTimeout(timeout);
80
+ }
81
+ cleanupTimeouts = [];
82
+ // Clear any log update
83
+ logUpdate.clear();
84
+ // Abort any active streams
85
+ if (streamController) {
86
+ streamController.abort();
87
+ }
88
+ // If interactive mode was on, restore stdin to normal mode
89
+ if (interactive) {
90
+ process.stdin.setRawMode?.(false);
91
+ process.stdin.pause();
92
+ }
93
+ // Console message about termination
94
+ console.log(chalk.yellow("\nStream terminated by user (Ctrl+C)"));
95
+ // Ensure the process exits cleanly
96
+ process.exit(0);
97
+ };
98
+ // Set up signal handlers
99
+ const sigintHandler = () => cleanupFn();
100
+ process.on("SIGINT", sigintHandler);
101
+ process.on("SIGTERM", sigintHandler);
102
+ // Display run header
103
+ console.log("\n");
104
+ console.log(gradient.pastel.multiline("╔═════════════════════════════════════╗\n║ ║\n║ AGENT MESSAGE STREAMING ║\n║ ║\n╚═════════════════════════════════════╝"));
105
+ console.log(gradient.atlas(`Run ID: ${runId}\n`));
106
+ console.log(chalk.gray(`Voice Synthesis: Disabled\n`));
107
+ let lastHeartbeat = Date.now();
108
+ let heartbeatCount = 0;
109
+ spinner = ora("Waiting for messages...").start();
110
+ const onMessage = (message) => {
111
+ // Skip processing if we're terminating
112
+ if (isTerminating)
113
+ return;
114
+ try {
115
+ // Stop spinner when a message arrives
116
+ if (spinner)
117
+ spinner.stop();
118
+ // Check if message is completely empty or malformed (heartbeat)
119
+ if (!message || (message && !message.type && !message.message)) {
120
+ const now = Date.now();
121
+ heartbeatCount++;
122
+ // Only show heartbeat every 5 seconds or if more than 5 have accumulated
123
+ if (now - lastHeartbeat > 5000 || heartbeatCount >= 5) {
124
+ const heartbeatText = chalk.gray(`${logSymbols.info} ${new Date().toISOString()} [HEARTBEAT]: ${heartbeatCount} pings`);
125
+ logUpdate(heartbeatText);
126
+ lastHeartbeat = now;
127
+ heartbeatCount = 0;
128
+ // Reset line after brief pause
129
+ const timeout = setTimeout(() => {
130
+ if (isTerminating)
131
+ return;
132
+ logUpdate.clear();
133
+ spinner = ora("Waiting for messages...").start();
134
+ }, 1000);
135
+ cleanupTimeouts.push(timeout);
136
+ }
137
+ return;
138
+ }
139
+ // Clear any heartbeat displays
140
+ logUpdate.clear();
141
+ // Reset heartbeat count when we get a real message
142
+ heartbeatCount = 0;
143
+ // Safely format the timestamp
144
+ let timeString;
145
+ try {
146
+ timeString = message.timestamp ? new Date(message.timestamp).toISOString() : new Date().toISOString();
147
+ }
148
+ catch (err) {
149
+ console.warn(`Invalid timestamp in message: ${message.timestamp}`);
150
+ timeString = new Date().toISOString();
151
+ }
152
+ const time = chalk.gray(timeString);
153
+ // Handle undefined message type (shouldn't happen with proper conversion)
154
+ if (message.type === undefined || message.type === null) {
155
+ console.log(`${time} [HEARTBEAT]: ping`);
156
+ spinner = ora("Waiting for messages...").start();
157
+ return;
158
+ }
159
+ const messageType = message.type;
160
+ const typeName = getTypeName(messageType);
161
+ const icon = typeIcons[messageType] || figures.bullet;
162
+ const colorGradient = typeColors[messageType] || gradient.rainbow;
163
+ const typeDisplay = colorGradient(`${icon} ${typeName}`);
164
+ // Handle undefined message content
165
+ if (!message.message) {
166
+ console.log(`${time} [${typeDisplay}]: <no content>`);
167
+ spinner = ora("Waiting for messages...").start();
168
+ return;
169
+ }
170
+ const content = formatMessageContent(message.message);
171
+ // Special message formatting based on type
172
+ if (messageType === AgentMessageType.ERROR || messageType === AgentMessageType.WARNING || messageType === AgentMessageType.COMPLETE) {
173
+ const boxStyle = boxStyles[messageType];
174
+ const formattedContent = `${time}\n[${typeDisplay}]:\n\n${content}`;
175
+ console.log(boxen(formattedContent, boxStyle));
176
+ return Promise.resolve();
177
+ }
178
+ else {
179
+ console.log(`${time} [${typeDisplay}]: ${content}`);
180
+ }
181
+ // Check if message details are long plan or complex data
182
+ if (message.details) {
183
+ // Special handling for plans - they can be very long
184
+ if (messageType === AgentMessageType.PLAN && typeof message.details === "object" && message.details.plan) {
185
+ console.log(gradient.passion("\n▸ Plan Summary"));
186
+ try {
187
+ const plan = Array.isArray(message.details.plan)
188
+ ? message.details.plan
189
+ : JSON.parse(message.details.plan);
190
+ plan.forEach((task, index) => {
191
+ console.log(chalk.bold.cyan(`\n${index + 1}. ${task.goal}`));
192
+ if (task.instructions && Array.isArray(task.instructions)) {
193
+ task.instructions.forEach((instruction) => {
194
+ console.log(` ${chalk.gray("•")} ${instruction}`);
195
+ });
196
+ }
197
+ });
198
+ console.log(""); // add spacing
199
+ }
200
+ catch (e) {
201
+ // If parsing fails, fall back to standard formatting
202
+ formatDetails(message.details);
203
+ }
204
+ }
205
+ else {
206
+ formatDetails(message.details);
207
+ }
208
+ }
209
+ // Restart spinner
210
+ if (!isTerminating) {
211
+ spinner = ora("Waiting for messages...").start();
212
+ }
213
+ }
214
+ catch (err) {
215
+ console.error("Error formatting message:", err);
216
+ console.log("Raw message:", JSON.stringify(message));
217
+ if (!isTerminating) {
218
+ spinner = ora("Waiting for messages...").start();
219
+ }
220
+ }
221
+ };
222
+ streamController = new AbortController();
223
+ // Setup for interactive mode if enabled
224
+ if (interactive) {
225
+ // Initialize readline interface
226
+ const rl = readline.createInterface({
227
+ input: process.stdin,
228
+ output: process.stdout,
229
+ prompt: gradient.passion("> "),
230
+ });
231
+ // Set up handler for user input
232
+ rl.on("line", async (input) => {
233
+ // Stop the spinner while processing input
234
+ if (spinner)
235
+ spinner.stop();
236
+ if (input.trim() === "") {
237
+ // Prompt again for empty input
238
+ rl.prompt();
239
+ return;
240
+ }
241
+ try {
242
+ console.log(gradient.atlas(`\nSending message to workflow...`));
243
+ // Send the user input to the workflow run
244
+ const signal = "userInput";
245
+ const payload = {
246
+ message: input,
247
+ };
248
+ await client.workflows.sendSignal(workflowId, runId, signal, payload);
249
+ console.log(gradient.mind(`Message sent successfully!\n`));
250
+ }
251
+ catch (err) {
252
+ console.error(chalk.red(`Error sending message: ${err}`));
253
+ }
254
+ // Restart spinner and prompt
255
+ if (!isTerminating) {
256
+ spinner = ora("Waiting for messages...").start();
257
+ rl.prompt();
258
+ }
259
+ });
260
+ // Add cleanup for readline interface
261
+ const origCleanup = cleanupFn;
262
+ cleanupFn = () => {
263
+ rl.close();
264
+ origCleanup(); // This includes process.exit(0), so anything after won't execute
265
+ // Never reached due to process.exit in origCleanup
266
+ process.exit(0);
267
+ };
268
+ // Show initial instructions
269
+ console.log(gradient.passion("\nInteractive mode enabled. Type messages and press Enter to send to the workflow."));
270
+ console.log(gradient.cristal("Press Ctrl+C to exit.\n"));
271
+ // Start the prompt
272
+ rl.prompt();
273
+ }
274
+ try {
275
+ // Pass abort signal to streamMessages if the API supports it
276
+ // Note: You might need to modify the client implementation to accept this parameter
277
+ await client.workflows.streamMessages(workflowId, runId, onMessage, since);
278
+ if (!isTerminating) {
279
+ if (spinner)
280
+ spinner.stop();
281
+ console.log(gradient.summer.multiline("\n╔═════════════════════════════════════╗\n║ ║\n║ STREAMING COMPLETE ║\n║ ║\n╚═════════════════════════════════════╝\n"));
282
+ // Close readline if interactive mode was on
283
+ if (interactive) {
284
+ const rl = readline.createInterface({
285
+ input: process.stdin,
286
+ output: process.stdout,
287
+ });
288
+ rl.close();
289
+ }
290
+ }
291
+ }
292
+ catch (err) {
293
+ if (!isTerminating) {
294
+ if (spinner)
295
+ spinner.stop();
296
+ console.error(boxen(gradient.fruit("ERROR STREAMING MESSAGES") + "\n\n" + err, {
297
+ padding: 1,
298
+ margin: 1,
299
+ borderStyle: "round",
300
+ borderColor: "red",
301
+ backgroundColor: "#400",
302
+ }));
303
+ }
304
+ }
305
+ finally {
306
+ // Always clean up signal handlers when done
307
+ process.off("SIGINT", sigintHandler);
308
+ process.off("SIGTERM", sigintHandler);
309
+ }
310
+ }
311
+ // Helper function to format message content
312
+ function formatMessageContent(content) {
313
+ if (typeof content === "string") {
314
+ // Replace escaped newlines with actual newlines
315
+ return content.replace(/\\n/g, "\n");
316
+ }
317
+ else {
318
+ // For objects, use pretty-printing with actual newlines
319
+ return JSON.stringify(content, null, 2);
320
+ }
321
+ }
322
+ // Helper function to format details in a cleaner way
323
+ function formatDetails(details) {
324
+ // Check if details are empty or minimal
325
+ const detailsStr = typeof details === "string" ? details : JSON.stringify(details);
326
+ if (!detailsStr || detailsStr === "{}" || detailsStr === '""') {
327
+ return;
328
+ }
329
+ console.log("");
330
+ console.log(gradient.atlas("▸ Details"));
331
+ // Create a cleaner display for object details
332
+ if (typeof details === "object" && details !== null) {
333
+ try {
334
+ // For simple objects with small values, display as simple key-value pairs
335
+ if (!Array.isArray(details) && Object.keys(details).length < 10) {
336
+ const longestKey = Math.max(...Object.keys(details).map((k) => k.length));
337
+ const padding = longestKey + 2;
338
+ Object.entries(details).forEach(([key, value]) => {
339
+ let displayValue;
340
+ let paddedKey = key.padEnd(padding);
341
+ // Format the value based on its type
342
+ if (typeof value === "object" && value !== null) {
343
+ if (JSON.stringify(value).length < 80) {
344
+ displayValue = JSON.stringify(value);
345
+ }
346
+ else {
347
+ // For longer objects, format with indentation
348
+ displayValue =
349
+ "\n" +
350
+ formatColorizedJSON(value)
351
+ .split("\n")
352
+ .map((line) => " " + line)
353
+ .join("\n");
354
+ }
355
+ }
356
+ else {
357
+ displayValue = String(value);
358
+ }
359
+ // Colorize values based on type
360
+ if (typeof value === "string") {
361
+ displayValue = chalk.green(displayValue);
362
+ }
363
+ else if (typeof value === "number") {
364
+ displayValue = chalk.yellow(displayValue);
365
+ }
366
+ else if (typeof value === "boolean") {
367
+ displayValue = chalk.magenta(displayValue);
368
+ }
369
+ else if (value === null) {
370
+ displayValue = chalk.red("null");
371
+ }
372
+ console.log(`${chalk.cyan(paddedKey)}: ${displayValue}`);
373
+ });
374
+ }
375
+ else if (Array.isArray(details)) {
376
+ // For arrays with simple values, show in a compact form
377
+ if (details.length > 0 && typeof details[0] !== "object") {
378
+ console.log(chalk.cyan("["));
379
+ details.forEach((item, i) => {
380
+ const displayValue = typeof item === "string"
381
+ ? chalk.green(`"${item}"`)
382
+ : typeof item === "number"
383
+ ? chalk.yellow(item)
384
+ : typeof item === "boolean"
385
+ ? chalk.magenta(item)
386
+ : item;
387
+ console.log(` ${displayValue}${i < details.length - 1 ? "," : ""}`);
388
+ });
389
+ console.log(chalk.cyan("]"));
390
+ }
391
+ else {
392
+ // For more complex arrays, use the colorized JSON
393
+ console.log(formatColorizedJSON(details));
394
+ }
395
+ }
396
+ else {
397
+ // For complex objects, fall back to pretty-printed JSON
398
+ console.log(formatColorizedJSON(details));
399
+ }
400
+ }
401
+ catch (err) {
402
+ // Fall back to colorized JSON if formatting fails
403
+ console.log(formatColorizedJSON(details));
404
+ }
405
+ }
406
+ else {
407
+ // For non-objects, just display the value
408
+ console.log(detailsStr);
409
+ }
410
+ console.log("");
411
+ }
412
+ // Helper function to format JSON with colors
413
+ function formatColorizedJSON(obj) {
414
+ const jsonString = JSON.stringify(obj, null, 2);
415
+ // Colorize different parts of the JSON
416
+ return jsonString
417
+ .replace(/"([^"]+)":/g, (_, key) => chalk.cyan(`"${key}":`))
418
+ .replace(/: "([^"]+)"/g, (_, value) => `: ${chalk.green(`"${value}"`)}`)
419
+ .replace(/: (\d+)/g, (_, value) => `: ${chalk.yellow(value)}`)
420
+ .replace(/: (true|false)/g, (_, value) => `: ${chalk.magenta(value)}`)
421
+ .replace(/: null/g, `: ${chalk.red("null")}`);
422
+ }
423
+ //# sourceMappingURL=streams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streams.js","sourceRoot":"","sources":["../../src/workflows/streams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AACnF,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC,2EAA2E;AAC3E,MAAM,SAAS,GAA8C;IACzD,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS;IAC5C,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB;IACtD,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU;IAC3C,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO;IAC1C,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,IAAI;IACzC,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO;IAC3C,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK;CAC1C,CAAC;AAEF,kEAAkE;AAClE,8DAA8D;AAC9D,MAAM,UAAU,GAA2C;IACvD,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,KAAK;IACzC,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,IAAI;IACzC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO;IACzC,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,OAAO;IAC3C,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM;IAC5C,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO;IAC5C,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK;CAC3C,CAAC;AAEF,oCAAoC;AACpC,MAAM,WAAW,GAAG,CAAC,IAAsB,EAAU,EAAE;IACnD,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;AAC9C,CAAC,CAAC;AAEF,sEAAsE;AACtE,MAAM,SAAS,GAA+I;IAC1J,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;QACtB,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,OAAgB;QAC7B,WAAW,EAAE,KAAK;QAClB,eAAe,EAAE,MAAM;KAC1B;IACD,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;QACxB,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,OAAgB;QAC7B,WAAW,EAAE,QAAQ;QACrB,eAAe,EAAE,MAAM;KAC1B;IACD,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;QACzB,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,OAAgB;QAC7B,WAAW,EAAE,OAAO;QACpB,eAAe,EAAE,MAAM;KAC1B;CACJ,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,UAAkB,EAAE,KAAa,EAAE,OAAY,EAAE,UAA+B,EAAE;IAC9G,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC;IAEjD,0BAA0B;IAC1B,IAAI,OAAO,GAAkC,IAAI,CAAC;IAClD,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,eAAe,GAAqB,EAAE,CAAC;IAC3C,IAAI,gBAAgB,GAA2B,IAAI,CAAC;IAEpD,oFAAoF;IACpF,IAAI,SAAS,GAAG,GAAG,EAAE;QACjB,aAAa,GAAG,IAAI,CAAC;QAErB,mBAAmB;QACnB,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,GAAG,IAAI,CAAC;QACnB,CAAC;QAED,gCAAgC;QAChC,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACpC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QACD,eAAe,GAAG,EAAE,CAAC;QAErB,uBAAuB;QACvB,SAAS,CAAC,KAAK,EAAE,CAAC;QAElB,2BAA2B;QAC3B,IAAI,gBAAgB,EAAE,CAAC;YACnB,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;QAED,2DAA2D;QAC3D,IAAI,WAAW,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;QAED,oCAAoC;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC,CAAC;QAElE,mCAAmC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,yBAAyB;IACzB,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAErC,qBAAqB;IACrB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CACP,QAAQ,CAAC,MAAM,CAAC,SAAS,CACrB,6MAA6M,CAChN,CACJ,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAEvD,IAAI,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,OAAO,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEjD,MAAM,SAAS,GAAG,CAAC,OAAqB,EAAE,EAAE;QACxC,uCAAuC;QACvC,IAAI,aAAa;YAAE,OAAO;QAE1B,IAAI,CAAC;YACD,sCAAsC;YACtC,IAAI,OAAO;gBAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YAE5B,gEAAgE;YAChE,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,cAAc,EAAE,CAAC;gBAEjB,yEAAyE;gBACzE,IAAI,GAAG,GAAG,aAAa,GAAG,IAAI,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;oBACpD,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAC5B,GAAG,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,iBAAiB,cAAc,QAAQ,CACxF,CAAC;oBACF,SAAS,CAAC,aAAa,CAAC,CAAC;oBACzB,aAAa,GAAG,GAAG,CAAC;oBACpB,cAAc,GAAG,CAAC,CAAC;oBAEnB,+BAA+B;oBAC/B,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;wBAC5B,IAAI,aAAa;4BAAE,OAAO;wBAC1B,SAAS,CAAC,KAAK,EAAE,CAAC;wBAClB,OAAO,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;oBACrD,CAAC,EAAE,IAAI,CAAC,CAAC;oBACT,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAClC,CAAC;gBACD,OAAO;YACX,CAAC;YAED,+BAA+B;YAC/B,SAAS,CAAC,KAAK,EAAE,CAAC;YAElB,mDAAmD;YACnD,cAAc,GAAG,CAAC,CAAC;YAEnB,8BAA8B;YAC9B,IAAI,UAAU,CAAC;YACf,IAAI,CAAC;gBACD,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC1G,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,iCAAiC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;gBACnE,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC1C,CAAC;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEpC,0EAA0E;YAC1E,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAC;gBACzC,OAAO,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;gBACjD,OAAO;YACX,CAAC;YAED,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YACjC,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC;YACtD,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC;YAClE,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC;YAEzD,mCAAmC;YACnC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,WAAW,iBAAiB,CAAC,CAAC;gBACtD,OAAO,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;gBACjD,OAAO;YACX,CAAC;YAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAEtD,2CAA2C;YAC3C,IAAI,WAAW,KAAK,gBAAgB,CAAC,KAAK,IAAI,WAAW,KAAK,gBAAgB,CAAC,OAAO,IAAI,WAAW,KAAK,gBAAgB,CAAC,QAAQ,EAAE,CAAC;gBAClI,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;gBACxC,MAAM,gBAAgB,GAAG,GAAG,IAAI,MAAM,WAAW,SAAS,OAAO,EAAE,CAAC;gBACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC/C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,WAAW,MAAM,OAAO,EAAE,CAAC,CAAC;YACxD,CAAC;YAED,yDAAyD;YACzD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,qDAAqD;gBACrD,IAAI,WAAW,KAAK,gBAAgB,CAAC,IAAI,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBACvG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAElD,IAAI,CAAC;wBACD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;4BAC5C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;4BACtB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBACvC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,KAAa,EAAE,EAAE;4BACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;4BAC7D,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gCACxD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,WAAmB,EAAE,EAAE;oCAC9C,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;gCACxD,CAAC,CAAC,CAAC;4BACP,CAAC;wBACL,CAAC,CAAC,CAAC;wBACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc;oBACnC,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACT,qDAAqD;wBACrD,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBACnC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACnC,CAAC;YACL,CAAC;YAED,kBAAkB;YAClB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjB,OAAO,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;YACrD,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjB,OAAO,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;YACrD,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEF,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;IAEzC,wCAAwC;IACxC,IAAI,WAAW,EAAE,CAAC;QACd,gCAAgC;QAChC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAChC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;SACjC,CAAC,CAAC;QAEH,gCAAgC;QAChC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAa,EAAE,EAAE;YAClC,0CAA0C;YAC1C,IAAI,OAAO;gBAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YAE5B,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACtB,+BAA+B;gBAC/B,EAAE,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;YACX,CAAC;YAED,IAAI,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;gBAEhE,0CAA0C;gBAC1C,MAAM,MAAM,GAAG,WAAW,CAAC;gBAC3B,MAAM,OAAO,GAAoB;oBAC7B,OAAO,EAAE,KAAK;iBACjB,CAAC;gBACF,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBAEtE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;YAC/D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC;YAED,6BAA6B;YAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjB,OAAO,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;gBACjD,EAAE,CAAC,MAAM,EAAE,CAAC;YAChB,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,qCAAqC;QACrC,MAAM,WAAW,GAAG,SAAS,CAAC;QAC9B,SAAS,GAAG,GAAG,EAAE;YACb,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,WAAW,EAAE,CAAC,CAAC,iEAAiE;YAChF,mDAAmD;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC;QAEF,4BAA4B;QAC5B,OAAO,CAAC,GAAG,CACP,QAAQ,CAAC,OAAO,CAAC,oFAAoF,CAAC,CACzG,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAEzD,mBAAmB;QACnB,EAAE,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACD,6DAA6D;QAC7D,oFAAoF;QACpF,MAAM,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAE3E,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,IAAI,OAAO;gBAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CACP,QAAQ,CAAC,MAAM,CAAC,SAAS,CACrB,iNAAiN,CACpN,CACJ,CAAC;YAEF,4CAA4C;YAC5C,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;oBAChC,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;iBACzB,CAAC,CAAC;gBACH,EAAE,CAAC,KAAK,EAAE,CAAC;YACf,CAAC;QACL,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,IAAI,OAAO;gBAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CACT,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,0BAA0B,CAAC,GAAG,MAAM,GAAG,GAAG,EAAE;gBAC7D,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,CAAC;gBACT,WAAW,EAAE,OAAgB;gBAC7B,WAAW,EAAE,KAAc;gBAC3B,eAAe,EAAE,MAAM;aAC1B,CAAC,CACL,CAAC;QACN,CAAC;IACL,CAAC;YAAS,CAAC;QACP,4CAA4C;QAC5C,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAC1C,CAAC;AACL,CAAC;AAED,4CAA4C;AAC5C,SAAS,oBAAoB,CAAC,OAAY;IACtC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC9B,gDAAgD;QAChD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;SAAM,CAAC;QACJ,wDAAwD;QACxD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC;AAED,qDAAqD;AACrD,SAAS,aAAa,CAAC,OAAY;IAC/B,wCAAwC;IACxC,MAAM,UAAU,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAEnF,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QAC5D,OAAO;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAEzC,8CAA8C;IAC9C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC;YACD,0EAA0E;YAC1E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC1E,MAAM,OAAO,GAAG,UAAU,GAAG,CAAC,CAAC;gBAE/B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;oBAC7C,IAAI,YAAoB,CAAC;oBACzB,IAAI,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAEpC,qCAAqC;oBACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;4BACpC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;wBACzC,CAAC;6BAAM,CAAC;4BACJ,8CAA8C;4BAC9C,YAAY;gCACR,IAAI;oCACJ,mBAAmB,CAAC,KAAK,CAAC;yCACrB,KAAK,CAAC,IAAI,CAAC;yCACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;yCAC1B,IAAI,CAAC,IAAI,CAAC,CAAC;wBACxB,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACJ,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;oBACjC,CAAC;oBAED,gCAAgC;oBAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC5B,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;oBAC7C,CAAC;yBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBACnC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oBAC9C,CAAC;yBAAM,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;wBACpC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;oBAC/C,CAAC;yBAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBACxB,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACrC,CAAC;oBAED,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,YAAY,EAAE,CAAC,CAAC;gBAC7D,CAAC,CAAC,CAAC;YACP,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,wDAAwD;gBACxD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC7B,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;wBACxB,MAAM,YAAY,GACd,OAAO,IAAI,KAAK,QAAQ;4BACpB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC;4BAC1B,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ;gCACtB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;gCACpB,CAAC,CAAC,OAAO,IAAI,KAAK,SAAS;oCACvB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oCACrB,CAAC,CAAC,IAAI,CAAC;wBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzE,CAAC,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACJ,kDAAkD;oBAClD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,wDAAwD;gBACxD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,kDAAkD;YAClD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,0CAA0C;QAC1C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC;AAED,6CAA6C;AAC7C,SAAS,mBAAmB,CAAC,GAAQ;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEhD,uCAAuC;IACvC,OAAO,UAAU;SACZ,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;SAC3D,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;SACvE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;SAC7D,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;SACrE,OAAO,CAAC,SAAS,EAAE,KAAK,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { DSLWorkflowSpec } from "@vertesia/common";
2
+ export declare function loadTsWorkflowDefinition(file: string, skipValidation?: boolean): Promise<DSLWorkflowSpec>;
3
+ //# sourceMappingURL=ts-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-loader.d.ts","sourceRoot":"","sources":["../../src/workflows/ts-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAmEnD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,GAAE,OAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CA+BhH"}
@@ -0,0 +1,94 @@
1
+ import { readFileSync, rmSync, writeFileSync } from "fs";
2
+ import { basename, resolve } from "path";
3
+ import * as ts from "typescript";
4
+ import { ValidationError, validateWorkflow } from "./validation.js";
5
+ function compile(fileNames, options) {
6
+ let program = ts.createProgram(fileNames, {
7
+ ...options,
8
+ listEmittedFiles: true,
9
+ });
10
+ let emitResult = program.emit();
11
+ let allDiagnostics = ts
12
+ .getPreEmitDiagnostics(program)
13
+ .concat(emitResult.diagnostics);
14
+ let errors = 0;
15
+ allDiagnostics.forEach(diagnostic => {
16
+ let prefix = '';
17
+ const categories = new Set();
18
+ if (diagnostic.relatedInformation && diagnostic.relatedInformation.length > 0) {
19
+ for (const ri of diagnostic.relatedInformation) {
20
+ categories.add(ri.category);
21
+ }
22
+ if (categories.has(ts.DiagnosticCategory.Error)) {
23
+ prefix: 'Error: ';
24
+ errors++;
25
+ }
26
+ else if (categories.has(ts.DiagnosticCategory.Warning)) {
27
+ prefix: 'Warning: ';
28
+ }
29
+ else if (categories.has(ts.DiagnosticCategory.Suggestion)) {
30
+ prefix: 'Suggestion: ';
31
+ }
32
+ }
33
+ if (diagnostic.file) {
34
+ let { line, character } = ts.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start);
35
+ let message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
36
+ console.log(`${prefix}${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
37
+ }
38
+ else {
39
+ console.log(prefix + ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"));
40
+ }
41
+ });
42
+ return {
43
+ errors,
44
+ emittedFiles: emitResult.emittedFiles
45
+ };
46
+ }
47
+ function transpileFile(source, target, options) {
48
+ const input = readFileSync(source, "utf-8");
49
+ // now simply transpile the module to javascript
50
+ const output = ts.transpileModule(input, {
51
+ compilerOptions: options
52
+ });
53
+ writeFileSync(target, output.outputText, "utf-8");
54
+ }
55
+ function tryDeleteFile(file) {
56
+ try {
57
+ rmSync(file);
58
+ }
59
+ catch (_er) {
60
+ // ignore
61
+ }
62
+ }
63
+ export function loadTsWorkflowDefinition(file, skipValidation = false) {
64
+ if (!file.endsWith('.ts')) {
65
+ throw new Error("Not a type script file: " + file);
66
+ }
67
+ file = resolve(file);
68
+ const baseOptions = {
69
+ skipLibCheck: true,
70
+ moduleResolution: ts.ModuleResolutionKind.Bundler,
71
+ module: ts.ModuleKind.ESNext,
72
+ target: ts.ScriptTarget.ESNext,
73
+ };
74
+ // we nly use compile to find errors. To generate the code we use transpileModule
75
+ // since the compile will generate js files for all the dependencies.
76
+ const result = compile([file], {
77
+ ...baseOptions,
78
+ noEmit: true
79
+ });
80
+ if (result.errors > 0) {
81
+ console.log(`Found ${result.errors} in typescript compilation. Aborting.`);
82
+ process.exit(1);
83
+ }
84
+ const fname = basename(file).slice(0, -3);
85
+ const emittedFile = resolve(`__${fname}.mjs`);
86
+ transpileFile(file, emittedFile, baseOptions);
87
+ return import(emittedFile).then(module => {
88
+ if (!module.default || typeof module.default !== "object") {
89
+ throw new ValidationError("Workflow module does not export a default object");
90
+ }
91
+ return skipValidation ? module.default : validateWorkflow(module.default);
92
+ }).finally(() => tryDeleteFile(emittedFile));
93
+ }
94
+ //# sourceMappingURL=ts-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-loader.js","sourceRoot":"","sources":["../../src/workflows/ts-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { DSLWorkflowSpec } from "@vertesia/common";
2
+ export declare class ValidationError extends Error {
3
+ constructor(message: string);
4
+ }
5
+ export declare function validateWorkflow(spec: DSLWorkflowSpec): DSLWorkflowSpec;
6
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/workflows/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,qBAAa,eAAgB,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI9B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAavE"}
@@ -0,0 +1,22 @@
1
+ import { validateWorkflow as validate } from "@vertesia/workflow/vars";
2
+ export class ValidationError extends Error {
3
+ constructor(message) {
4
+ super("Invalid workflow definition: " + message);
5
+ this.name = "ValidationError";
6
+ }
7
+ }
8
+ export function validateWorkflow(spec) {
9
+ const errors = validate(spec);
10
+ if (errors && errors.length > 0) {
11
+ console.log("");
12
+ console.log("# ");
13
+ console.log("# The workflow has validation errors:");
14
+ console.log("# ");
15
+ console.log("");
16
+ console.log(errors.map((v, i) => `${i + 1}. ${v}`).join("\n"));
17
+ console.log("");
18
+ throw new ValidationError("Exiting because of validation errors.");
19
+ }
20
+ return spec;
21
+ }
22
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/workflows/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEvE,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACtC,YAAY,OAAe;QACvB,KAAK,CAAC,+BAA+B,GAAG,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAClC,CAAC;CACJ;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAqB;IAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,IAAI,eAAe,CAAC,uCAAuC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}