@bubblelab/bubble-runtime 0.1.0

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 (70) hide show
  1. package/LICENSE.txt +202 -0
  2. package/dist/extraction/BubbleParser.d.ts +80 -0
  3. package/dist/extraction/BubbleParser.d.ts.map +1 -0
  4. package/dist/extraction/BubbleParser.js +926 -0
  5. package/dist/extraction/BubbleParser.js.map +1 -0
  6. package/dist/extraction/index.d.ts +2 -0
  7. package/dist/extraction/index.d.ts.map +1 -0
  8. package/dist/extraction/index.js +4 -0
  9. package/dist/extraction/index.js.map +1 -0
  10. package/dist/index.d.ts +7 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +8 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/injection/BubbleInjector.d.ts +71 -0
  15. package/dist/injection/BubbleInjector.d.ts.map +1 -0
  16. package/dist/injection/BubbleInjector.js +326 -0
  17. package/dist/injection/BubbleInjector.js.map +1 -0
  18. package/dist/injection/LoggerInjector.d.ts +33 -0
  19. package/dist/injection/LoggerInjector.d.ts.map +1 -0
  20. package/dist/injection/LoggerInjector.js +154 -0
  21. package/dist/injection/LoggerInjector.js.map +1 -0
  22. package/dist/injection/index.d.ts +3 -0
  23. package/dist/injection/index.d.ts.map +1 -0
  24. package/dist/injection/index.js +3 -0
  25. package/dist/injection/index.js.map +1 -0
  26. package/dist/parse/BubbleScript.d.ts +141 -0
  27. package/dist/parse/BubbleScript.d.ts.map +1 -0
  28. package/dist/parse/BubbleScript.js +513 -0
  29. package/dist/parse/BubbleScript.js.map +1 -0
  30. package/dist/parse/index.d.ts +3 -0
  31. package/dist/parse/index.d.ts.map +1 -0
  32. package/dist/parse/index.js +3 -0
  33. package/dist/parse/index.js.map +1 -0
  34. package/dist/parse/traceDependencies.d.ts +18 -0
  35. package/dist/parse/traceDependencies.d.ts.map +1 -0
  36. package/dist/parse/traceDependencies.js +181 -0
  37. package/dist/parse/traceDependencies.js.map +1 -0
  38. package/dist/runtime/BubbleRunner.d.ts +91 -0
  39. package/dist/runtime/BubbleRunner.d.ts.map +1 -0
  40. package/dist/runtime/BubbleRunner.js +586 -0
  41. package/dist/runtime/BubbleRunner.js.map +1 -0
  42. package/dist/runtime/index.d.ts +2 -0
  43. package/dist/runtime/index.d.ts.map +1 -0
  44. package/dist/runtime/index.js +2 -0
  45. package/dist/runtime/index.js.map +1 -0
  46. package/dist/runtime/types.d.ts +29 -0
  47. package/dist/runtime/types.d.ts.map +1 -0
  48. package/dist/runtime/types.js +2 -0
  49. package/dist/runtime/types.js.map +1 -0
  50. package/dist/types/index.d.ts +8 -0
  51. package/dist/types/index.d.ts.map +1 -0
  52. package/dist/types/index.js +2 -0
  53. package/dist/types/index.js.map +1 -0
  54. package/dist/utils/bubble-helper.d.ts +11 -0
  55. package/dist/utils/bubble-helper.d.ts.map +1 -0
  56. package/dist/utils/bubble-helper.js +15 -0
  57. package/dist/utils/bubble-helper.js.map +1 -0
  58. package/dist/utils/parameter-formatter.d.ts +22 -0
  59. package/dist/utils/parameter-formatter.d.ts.map +1 -0
  60. package/dist/utils/parameter-formatter.js +219 -0
  61. package/dist/utils/parameter-formatter.js.map +1 -0
  62. package/dist/validation/BubbleValidator.d.ts +43 -0
  63. package/dist/validation/BubbleValidator.d.ts.map +1 -0
  64. package/dist/validation/BubbleValidator.js +172 -0
  65. package/dist/validation/BubbleValidator.js.map +1 -0
  66. package/dist/validation/index.d.ts +27 -0
  67. package/dist/validation/index.d.ts.map +1 -0
  68. package/dist/validation/index.js +126 -0
  69. package/dist/validation/index.js.map +1 -0
  70. package/package.json +47 -0
@@ -0,0 +1,586 @@
1
+ import { BubbleLogger, LogLevel, } from '@bubblelab/bubble-core';
2
+ import { StreamingBubbleLogger } from '@bubblelab/bubble-core';
3
+ import { BubbleValidationError, BubbleExecutionError, BubbleError, } from '@bubblelab/bubble-core';
4
+ import { BubbleScript } from 'src/parse/BubbleScript';
5
+ import { BubbleInjector } from 'src/injection/BubbleInjector';
6
+ import { pathToFileURL } from 'url';
7
+ import path from 'path';
8
+ import fs from 'fs/promises';
9
+ import { existsSync } from 'fs';
10
+ export class BubbleRunner {
11
+ // Bubble script
12
+ // Bubble factory
13
+ // @ts-expect-error - Not implemented
14
+ bubbleFactory;
15
+ bubbleScript;
16
+ // @ts-expect-error - Not implemented
17
+ currentStep;
18
+ // @ts-expect-error - Not implemented
19
+ savedStates; // Callback function and logger for execution context
20
+ plan = null;
21
+ logger;
22
+ injector;
23
+ options;
24
+ constructor(bubbleScript, bubbleFactory, options = {}) {
25
+ this.bubbleScript =
26
+ typeof bubbleScript === 'string'
27
+ ? new BubbleScript(bubbleScript, bubbleFactory)
28
+ : bubbleScript;
29
+ this.currentStep = 0;
30
+ this.savedStates = null;
31
+ this.bubbleFactory = bubbleFactory;
32
+ this.injector = new BubbleInjector(this.bubbleScript);
33
+ this.options = {
34
+ enableLogging: true,
35
+ logLevel: LogLevel.DEBUG, // Changed to DEBUG to see debug logs
36
+ enableLineByLineLogging: true,
37
+ enableBubbleLogging: true,
38
+ ...options,
39
+ };
40
+ // Initialize logger if enabled
41
+ if (this.options.streamCallback) {
42
+ // Use streaming logger when stream callback is provided
43
+ this.logger = new StreamingBubbleLogger('BubbleFlow', {
44
+ minLevel: this.options.logLevel || LogLevel.INFO,
45
+ enableTiming: true,
46
+ enableMemoryTracking: true,
47
+ streamCallback: this.options.streamCallback,
48
+ });
49
+ }
50
+ else {
51
+ // Use regular logger
52
+ this.logger = new BubbleLogger('BubbleFlow', {
53
+ minLevel: this.options.logLevel || LogLevel.INFO,
54
+ enableTiming: true,
55
+ enableMemoryTracking: true,
56
+ });
57
+ }
58
+ this.plan = this.buildExecutionPlan();
59
+ }
60
+ /**
61
+ * Creates a list of steps where length = number of parsed bubbles
62
+ * Contains the bubble and parameters to run
63
+ * Each step represents a continuous line range (e.g., line 1-20, 21-xxx)
64
+ */
65
+ buildExecutionPlan() {
66
+ const steps = [];
67
+ const parsedBubbles = this.bubbleScript.getParsedBubbles();
68
+ const scopeManager = this.bubbleScript.getScopeManager();
69
+ // Get all bubbles sorted by line start
70
+ const bubbleEntries = Object.entries(parsedBubbles)
71
+ .map(([varName, bubble]) => ({ varName, ...bubble }))
72
+ .sort((a, b) => a.location.startLine - b.location.startLine);
73
+ if (bubbleEntries.length === 0) {
74
+ return { steps: [] };
75
+ }
76
+ // Find script boundaries
77
+ const firstBubbleLine = bubbleEntries[0].location.startLine;
78
+ const lastBubbleLine = bubbleEntries[bubbleEntries.length - 1].location.endLine;
79
+ const ast = this.bubbleScript.getAST();
80
+ const fileEndLine = ast.loc?.end.line || lastBubbleLine;
81
+ // Find control flow structures from scope manager
82
+ const controlScopes = scopeManager.scopes.filter((scope) => ['for', 'while', 'if', 'block'].includes(scope.type) &&
83
+ scope.block.loc?.start.line &&
84
+ scope.block.loc?.end.line);
85
+ // 1. Setup step (before first bubble)
86
+ if (firstBubbleLine > 1) {
87
+ steps.push({
88
+ id: 'setup',
89
+ type: 'setup',
90
+ startLine: 1,
91
+ endLine: firstBubbleLine - 1,
92
+ });
93
+ }
94
+ // 2. Process bubbles - group by containing control structures
95
+ const processedBubbles = new Set();
96
+ for (const controlScope of controlScopes) {
97
+ const scopeStart = controlScope.block.loc.start.line;
98
+ const scopeEnd = controlScope.block.loc.end.line;
99
+ // Find bubbles within this control structure
100
+ const bubblesInScope = bubbleEntries.filter((bubble) => bubble.location.startLine >= scopeStart &&
101
+ bubble.location.endLine <= scopeEnd &&
102
+ !processedBubbles.has(bubble.varName));
103
+ if (bubblesInScope.length > 0) {
104
+ // Create control flow step with mini-steps for each bubble
105
+ const miniSteps = [];
106
+ for (const bubble of bubblesInScope) {
107
+ // Bubble instantiation mini-step
108
+ miniSteps.push({
109
+ id: `${bubble.className}_new_${bubble.location.startLine}_${bubble.location.endLine}`,
110
+ type: 'bubble_instantiation',
111
+ startLine: bubble.location.startLine,
112
+ endLine: bubble.location.endLine,
113
+ operation: {
114
+ type: 'new_bubble',
115
+ bubbleName: bubble.className,
116
+ variableName: bubble.varName,
117
+ },
118
+ });
119
+ // Bubble execution mini-step (find .action() call)
120
+ const actionLine = this.findActionCallLine({
121
+ varName: bubble.varName,
122
+ lineEnd: bubble.location.endLine,
123
+ });
124
+ miniSteps.push({
125
+ id: `${bubble.className}_action_${actionLine}_${actionLine}`,
126
+ type: 'bubble_execution',
127
+ startLine: actionLine,
128
+ endLine: actionLine,
129
+ operation: {
130
+ type: 'await_action',
131
+ variableName: bubble.varName,
132
+ },
133
+ });
134
+ processedBubbles.add(bubble.varName);
135
+ }
136
+ steps.push({
137
+ id: `${controlScope.type}_${scopeStart}_${scopeEnd}`,
138
+ type: 'control_flow',
139
+ startLine: scopeStart,
140
+ endLine: scopeEnd,
141
+ controlType: controlScope.type,
142
+ miniSteps,
143
+ });
144
+ }
145
+ }
146
+ // 3. Individual steps for bubbles outside control structures
147
+ for (const bubble of bubbleEntries) {
148
+ if (!processedBubbles.has(bubble.varName)) {
149
+ const actionLine = this.findActionCallLine({
150
+ varName: bubble.varName,
151
+ lineEnd: bubble.location.endLine,
152
+ });
153
+ steps.push({
154
+ id: `${bubble.varName}_${bubble.location.startLine}_${bubble.location.endLine}`,
155
+ type: 'bubble_block',
156
+ startLine: bubble.location.startLine,
157
+ endLine: Math.max(bubble.location.endLine, actionLine),
158
+ miniSteps: [
159
+ {
160
+ id: `${bubble.className}_new_${bubble.location.startLine}_${bubble.location.endLine}`,
161
+ type: 'bubble_instantiation',
162
+ startLine: bubble.location.startLine,
163
+ endLine: bubble.location.endLine,
164
+ operation: {
165
+ type: 'new_bubble',
166
+ bubbleName: bubble.className,
167
+ variableName: bubble.varName,
168
+ },
169
+ },
170
+ {
171
+ id: `${bubble.className}_action_${actionLine}_${actionLine}`,
172
+ type: 'bubble_execution',
173
+ startLine: actionLine,
174
+ endLine: actionLine,
175
+ operation: {
176
+ type: 'await_action',
177
+ variableName: bubble.varName,
178
+ },
179
+ },
180
+ ],
181
+ });
182
+ }
183
+ }
184
+ // 4. Finalization step (after last bubble)
185
+ if (lastBubbleLine < fileEndLine) {
186
+ steps.push({
187
+ id: 'finalization',
188
+ type: 'finalization',
189
+ startLine: lastBubbleLine + 1,
190
+ endLine: fileEndLine,
191
+ });
192
+ }
193
+ // Sort steps by start line
194
+ steps.sort((a, b) => a.startLine - b.startLine);
195
+ return { steps };
196
+ }
197
+ /**
198
+ * Find the line where .action() is called for a bubble
199
+ * Uses AST to locate the method call
200
+ */
201
+ findActionCallLine(bubble) {
202
+ const ast = this.bubbleScript.getAST();
203
+ // Traverse AST to find .action() calls for this variable
204
+ const actionLine = this.findActionCallInAST(ast, bubble.varName);
205
+ // Fallback to estimation if not found
206
+ return actionLine || bubble.lineEnd + 2;
207
+ }
208
+ /**
209
+ * Recursively search AST for .action() calls on a specific variable
210
+ */
211
+ findActionCallInAST(node, variableName) {
212
+ // Check if this is a call expression with property access
213
+ if (node.type === 'CallExpression' &&
214
+ node.callee?.type === 'MemberExpression') {
215
+ const memberExpr = node.callee;
216
+ // Check if it's variableName.action()
217
+ if (memberExpr.object?.type === 'Identifier' &&
218
+ memberExpr.object.name === variableName &&
219
+ memberExpr.property?.type === 'Identifier' &&
220
+ memberExpr.property.name === 'action') {
221
+ return node.loc?.start.line || null;
222
+ }
223
+ }
224
+ // Check if this is an await expression wrapping an action call
225
+ if (node.type === 'AwaitExpression' && node.argument) {
226
+ const actionLine = this.findActionCallInAST(node.argument, variableName);
227
+ if (actionLine)
228
+ return actionLine;
229
+ }
230
+ // Recursively search child nodes
231
+ if (node.body) {
232
+ for (const child of Array.isArray(node.body) ? node.body : [node.body]) {
233
+ const result = this.findActionCallInAST(child, variableName);
234
+ if (result)
235
+ return result;
236
+ }
237
+ }
238
+ // Handle other node types that might contain children
239
+ const childKeys = [
240
+ 'body',
241
+ 'statements',
242
+ 'expression',
243
+ 'consequent',
244
+ 'alternate',
245
+ 'init',
246
+ 'test',
247
+ 'update',
248
+ ];
249
+ for (const key of childKeys) {
250
+ if (node[key]) {
251
+ const child = node[key];
252
+ if (Array.isArray(child)) {
253
+ for (const item of child) {
254
+ const result = this.findActionCallInAST(item, variableName);
255
+ if (result)
256
+ return result;
257
+ }
258
+ }
259
+ else {
260
+ const result = this.findActionCallInAST(child, variableName);
261
+ if (result)
262
+ return result;
263
+ }
264
+ }
265
+ }
266
+ return null;
267
+ }
268
+ getParsedBubbles() {
269
+ return this.bubbleScript.getParsedBubbles();
270
+ }
271
+ getVariables() {
272
+ return this.bubbleScript.getAllUserVariables();
273
+ }
274
+ /**
275
+ * Finds step ID, calls memorizes results on previous bubbles, and runs the script from 1 to line end
276
+ */
277
+ // @ts-expect-error - Not implemented
278
+ runStep(stepId) {
279
+ // No implementation
280
+ }
281
+ /**
282
+ * Run from step 1 to end
283
+ */
284
+ async runAll(payload) {
285
+ let tempFilePath = null;
286
+ console.log('Running all');
287
+ try {
288
+ this.logger?.info('Starting BubbleFlow execution');
289
+ // Inject logging into the script if enabled
290
+ let scriptToExecute = this.bubbleScript.bubblescript;
291
+ if (this.options.enableLogging && this.logger) {
292
+ this.injector.injectBubbleLoggingAndReinitializeBubbleParameters();
293
+ scriptToExecute = this.bubbleScript.bubblescript;
294
+ console.log('[BubbleRunner] scriptToExecute:', scriptToExecute);
295
+ }
296
+ // Create a temporary file with the bubble script code in the project directory
297
+ // This ensures proper module resolution for @nodex packages
298
+ const projectRoot = this.findProjectRoot();
299
+ const tempDir = path.join(projectRoot, '.tmp');
300
+ console.log('[BubbleRunner] projectRoot:', projectRoot);
301
+ console.log('[BubbleRunner] tempDir:', tempDir);
302
+ // Ensure temp directory exists
303
+ try {
304
+ await fs.mkdir(tempDir, { recursive: true });
305
+ console.log('[BubbleRunner] Ensured tempDir exists');
306
+ }
307
+ catch (error) {
308
+ // Directory might already exist, that's okay
309
+ console.warn('[BubbleRunner] mkdir tempDir warning:', error);
310
+ }
311
+ const tempFileName = `bubble-script-${Date.now()}-${Math.random().toString(36).substring(7)}.ts`;
312
+ tempFilePath = path.join(tempDir, tempFileName);
313
+ console.log('[BubbleRunner] tempFilePath:', tempFilePath);
314
+ // Write the script code to the temporary file
315
+ try {
316
+ console.log('[BubbleRunner] About to write script to temp file. Script length:', scriptToExecute?.length);
317
+ await fs.writeFile(tempFilePath, scriptToExecute);
318
+ const stat = await fs.stat(tempFilePath);
319
+ console.log('[BubbleRunner] Wrote temp file. Size:', stat.size);
320
+ }
321
+ catch (writeErr) {
322
+ console.error('[BubbleRunner] Failed to write temp file:', writeErr);
323
+ throw writeErr;
324
+ }
325
+ // Convert to file URL for dynamic import
326
+ const moduleUrl = pathToFileURL(tempFilePath).href;
327
+ console.log('[BubbleRunner] moduleUrl:', moduleUrl);
328
+ try {
329
+ const exists = await fs
330
+ .access(tempFilePath)
331
+ .then(() => true)
332
+ .catch(() => false);
333
+ console.log('[BubbleRunner] temp file exists before import:', exists);
334
+ }
335
+ catch (accessErr) {
336
+ console.warn('[BubbleRunner] access check failed:', accessErr);
337
+ }
338
+ // Dynamically import the module
339
+ console.log('[BubbleRunner] Importing module', moduleUrl);
340
+ let module;
341
+ try {
342
+ module = await import(moduleUrl);
343
+ }
344
+ catch (importErr) {
345
+ console.error('[BubbleRunner] Dynamic import failed:', importErr);
346
+ // Optionally dump first 300 chars of script to help debug syntax errors
347
+ const preview = (scriptToExecute ?? '').slice(0, 300);
348
+ console.error('[BubbleRunner] Script preview (first 300 chars):', preview);
349
+ throw importErr;
350
+ }
351
+ console.log('[BubbleRunner] Done importing module');
352
+ // Find the BubbleFlow class in the module exports
353
+ const FlowClass = this.findBubbleFlowClass(module);
354
+ if (!FlowClass) {
355
+ throw new Error('No BubbleFlow class found in the module exports');
356
+ }
357
+ // Create default webhook payload if none provided
358
+ const webhookPayload = {
359
+ type: 'webhook/http',
360
+ timestamp: new Date().toISOString(),
361
+ path: '/webhook',
362
+ body: {},
363
+ ...payload,
364
+ };
365
+ // Instantiate the flow class with logger
366
+ // Note: We need to determine the constructor parameters from the class
367
+ const flowInstance = this.instantiateFlowClass(FlowClass);
368
+ // Ensure the logger is set on the flow instance
369
+ if (this.logger) {
370
+ if (typeof flowInstance.setLogger === 'function') {
371
+ flowInstance.setLogger(this.logger);
372
+ }
373
+ else {
374
+ // Fallback: directly set the logger property if setLogger method doesn't exist
375
+ flowInstance.logger = this.logger;
376
+ }
377
+ }
378
+ // Execute the handle method
379
+ const startTime = Date.now();
380
+ const result = await flowInstance.handle(webhookPayload);
381
+ const executionTime = Date.now() - startTime;
382
+ this.logger?.info(`BubbleFlow execution completed in ${executionTime}ms`, {
383
+ additionalData: { executionTime, result },
384
+ });
385
+ // Log execution completion for streaming
386
+ if (this.logger instanceof StreamingBubbleLogger) {
387
+ this.logger.logExecutionComplete(true, result);
388
+ }
389
+ return {
390
+ executionId: 0,
391
+ success: true,
392
+ error: '',
393
+ summary: this.logger.getExecutionSummary(),
394
+ data: result,
395
+ };
396
+ }
397
+ catch (error) {
398
+ // Enhanced error handling for bubble-specific errors
399
+ if (error instanceof BubbleValidationError) {
400
+ this.logger?.fatal(`Bubble validation failed: ${error.message}`, error, {
401
+ variableId: error.variableId,
402
+ bubbleName: error.bubbleName,
403
+ additionalData: {
404
+ validationErrors: error.validationErrors,
405
+ variableId: error.variableId,
406
+ bubbleName: error.bubbleName,
407
+ },
408
+ });
409
+ // Log execution failure for streaming
410
+ if (this.logger instanceof StreamingBubbleLogger) {
411
+ this.logger.logExecutionComplete(false, undefined, `Bubble validation failed at ${error.bubbleName} (variableId: ${error.variableId}): ${error.message}`);
412
+ }
413
+ return {
414
+ executionId: 0,
415
+ success: false,
416
+ summary: this.logger.getExecutionSummary(),
417
+ error: `Bubble validation failed at ${error.bubbleName} (variableId: ${error.variableId}): ${error.message}`,
418
+ data: undefined,
419
+ };
420
+ }
421
+ else if (error instanceof BubbleExecutionError) {
422
+ this.logger?.fatal(`Bubble execution failed: ${error.message}`, error, {
423
+ variableId: error.variableId,
424
+ bubbleName: error.bubbleName,
425
+ additionalData: {
426
+ executionPhase: error.executionPhase,
427
+ variableId: error.variableId,
428
+ bubbleName: error.bubbleName,
429
+ },
430
+ });
431
+ // Log execution failure for streaming
432
+ if (this.logger instanceof StreamingBubbleLogger) {
433
+ this.logger.logExecutionComplete(false, undefined, `Bubble execution failed at ${error.bubbleName} (variableId: ${error.variableId}): ${error.message}`);
434
+ }
435
+ return {
436
+ executionId: 0,
437
+ success: false,
438
+ summary: this.logger.getExecutionSummary(),
439
+ error: `Bubble execution failed at ${error.bubbleName} (variableId: ${error.variableId}): ${error.message}`,
440
+ data: undefined,
441
+ };
442
+ }
443
+ else if (error instanceof BubbleError) {
444
+ // Generic bubble error
445
+ this.logger?.fatal(`Bubble error: ${error.message}`, error, {
446
+ variableId: error.variableId,
447
+ bubbleName: error.bubbleName,
448
+ additionalData: {
449
+ variableId: error.variableId,
450
+ bubbleName: error.bubbleName,
451
+ },
452
+ });
453
+ // Log execution failure for streaming
454
+ if (this.logger instanceof StreamingBubbleLogger) {
455
+ this.logger.logExecutionComplete(false, undefined, `Bubble error at ${error.bubbleName} (variableId: ${error.variableId}): ${error.message}`);
456
+ }
457
+ return {
458
+ executionId: 0,
459
+ summary: this.logger.getExecutionSummary(),
460
+ success: false,
461
+ error: `Bubble error at ${error.bubbleName} (variableId: ${error.variableId}): ${error.message}`,
462
+ data: undefined,
463
+ };
464
+ }
465
+ else {
466
+ // Generic error fallback
467
+ this.logger?.fatal('BubbleFlow execution failed', error instanceof Error ? error : undefined);
468
+ // Log execution failure for streaming
469
+ if (this.logger instanceof StreamingBubbleLogger) {
470
+ this.logger.logExecutionComplete(false, undefined, error.message);
471
+ }
472
+ return {
473
+ executionId: 0,
474
+ summary: this.logger.getExecutionSummary(),
475
+ success: false,
476
+ error: error.message,
477
+ data: undefined,
478
+ };
479
+ }
480
+ }
481
+ finally {
482
+ // Clean up temporary file
483
+ if (tempFilePath) {
484
+ try {
485
+ await fs.unlink(tempFilePath);
486
+ }
487
+ catch (cleanupError) {
488
+ // Ignore cleanup errors to avoid masking the original error
489
+ console.warn(`Failed to cleanup temporary file ${tempFilePath}:`, cleanupError);
490
+ }
491
+ }
492
+ }
493
+ }
494
+ /**
495
+ * Find the BubbleFlow class in module exports
496
+ */
497
+ findBubbleFlowClass(module) {
498
+ // Check all exports for a class that extends BubbleFlow
499
+ for (const [, value] of Object.entries(module)) {
500
+ if (typeof value === 'function' &&
501
+ this.isBubbleFlowClass(value)) {
502
+ return value;
503
+ }
504
+ }
505
+ return null;
506
+ }
507
+ /**
508
+ * Check if a function is a BubbleFlow class
509
+ */
510
+ isBubbleFlowClass(func) {
511
+ // Check if it's a class constructor
512
+ if (typeof func !== 'function')
513
+ return false;
514
+ // Check prototype chain for BubbleFlow methods
515
+ const prototype = func.prototype;
516
+ if (!prototype)
517
+ return false;
518
+ // Look for the handle method which is required by BubbleFlow
519
+ return typeof prototype.handle === 'function';
520
+ }
521
+ /**
522
+ * Instantiate the flow class with appropriate constructor parameters
523
+ */
524
+ instantiateFlowClass(FlowClass) {
525
+ return new FlowClass('Generated Flow', 'Automatically generated flow execution', this.logger);
526
+ }
527
+ /**
528
+ * Resume execution from a specific step
529
+ */
530
+ // @ts-expect-error - Not implemented
531
+ resumeFromStep(stepId) {
532
+ // No implementation
533
+ }
534
+ getPlan() {
535
+ if (!this.plan) {
536
+ throw new Error('Plan not found');
537
+ }
538
+ return this.plan;
539
+ }
540
+ /**
541
+ * Get the logger instance
542
+ */
543
+ getLogger() {
544
+ return this.logger;
545
+ }
546
+ /**
547
+ * Get execution summary with detailed analytics
548
+ */
549
+ getExecutionSummary() {
550
+ return this.logger?.getExecutionSummary() || null;
551
+ }
552
+ /**
553
+ * Export execution logs in various formats
554
+ */
555
+ exportLogs(format = 'json') {
556
+ return this.logger?.exportLogs(format) || null;
557
+ }
558
+ /**
559
+ * Find the project root directory by looking for package.json
560
+ */
561
+ findProjectRoot() {
562
+ console.log('Finding project root');
563
+ let currentDir = process.cwd();
564
+ while (currentDir !== path.dirname(currentDir)) {
565
+ try {
566
+ const packageJsonPath = path.join(currentDir, 'package.json');
567
+ if (existsSync(packageJsonPath)) {
568
+ return currentDir;
569
+ }
570
+ }
571
+ catch (error) {
572
+ // Continue searching
573
+ }
574
+ currentDir = path.dirname(currentDir);
575
+ }
576
+ // Fallback to current working directory
577
+ return process.cwd();
578
+ }
579
+ /**
580
+ * Dispose of resources (logger, etc.)
581
+ */
582
+ dispose() {
583
+ this.logger?.dispose();
584
+ }
585
+ }
586
+ //# sourceMappingURL=BubbleRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BubbleRunner.js","sourceRoot":"","sources":["../../src/runtime/BubbleRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { BubbleRunner } from './BubbleRunner';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { BubbleRunner } from './BubbleRunner';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { ScopeType } from '@typescript-eslint/scope-manager';
2
+ export type StepType = 'control_flow' | 'bubble_block' | 'setup' | 'finalization';
3
+ export type ControlType = 'for_loop' | 'while_loop' | 'if_statement' | 'try_catch';
4
+ export interface Operation {
5
+ type: 'new_bubble' | 'await_action' | 'assign' | 'if_condition' | 'for_iteration' | 'try_catch';
6
+ bubbleName?: string;
7
+ variableName?: string;
8
+ expression?: string;
9
+ condition?: string;
10
+ }
11
+ export interface MiniStep {
12
+ id: string;
13
+ type: 'bubble_instantiation' | 'bubble_execution' | 'variable_assignment' | 'condition' | 'loop_iteration' | 'script';
14
+ startLine: number;
15
+ endLine: number;
16
+ operation: Operation;
17
+ }
18
+ export interface ExecutionStep {
19
+ id: string;
20
+ type: StepType;
21
+ startLine: number;
22
+ endLine: number;
23
+ controlType?: ScopeType;
24
+ miniSteps?: MiniStep[];
25
+ }
26
+ export interface ExecutionPlan {
27
+ steps: ExecutionStep[];
28
+ }
29
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAE7D,MAAM,MAAM,QAAQ,GAChB,cAAc,GACd,cAAc,GACd,OAAO,GACP,cAAc,CAAC;AAEnB,MAAM,MAAM,WAAW,GACnB,UAAU,GACV,YAAY,GACZ,cAAc,GACd,WAAW,CAAC;AAEhB,MAAM,WAAW,SAAS;IACxB,IAAI,EACA,YAAY,GACZ,cAAc,GACd,QAAQ,GACR,cAAc,GACd,eAAe,GACf,WAAW,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EACA,sBAAsB,GACtB,kBAAkB,GAClB,qBAAqB,GACrB,WAAW,GACX,gBAAgB,GAChB,QAAQ,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map