@orbytautomation/engine 0.1.2 → 0.2.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/dist/core/EngineConfig.d.ts +5 -0
  2. package/dist/core/EngineConfig.d.ts.map +1 -1
  3. package/dist/core/EngineConfig.js +4 -0
  4. package/dist/core/EngineConfig.js.map +1 -1
  5. package/dist/core/OrbytEngine.d.ts +207 -76
  6. package/dist/core/OrbytEngine.d.ts.map +1 -1
  7. package/dist/core/OrbytEngine.js +395 -63
  8. package/dist/core/OrbytEngine.js.map +1 -1
  9. package/dist/errors/SecurityErrors.d.ts +75 -0
  10. package/dist/errors/SecurityErrors.d.ts.map +1 -0
  11. package/dist/errors/SecurityErrors.js +145 -0
  12. package/dist/errors/SecurityErrors.js.map +1 -0
  13. package/dist/errors/index.d.ts +1 -0
  14. package/dist/errors/index.d.ts.map +1 -1
  15. package/dist/errors/index.js +1 -0
  16. package/dist/errors/index.js.map +1 -1
  17. package/dist/execution/ExecutionLimits.d.ts +116 -0
  18. package/dist/execution/ExecutionLimits.d.ts.map +1 -0
  19. package/dist/execution/ExecutionLimits.js +280 -0
  20. package/dist/execution/ExecutionLimits.js.map +1 -0
  21. package/dist/execution/ExecutionStrategyResolver.d.ts +140 -0
  22. package/dist/execution/ExecutionStrategyResolver.d.ts.map +1 -0
  23. package/dist/execution/ExecutionStrategyResolver.js +332 -0
  24. package/dist/execution/ExecutionStrategyResolver.js.map +1 -0
  25. package/dist/execution/IntentAnalyzer.d.ts +101 -0
  26. package/dist/execution/IntentAnalyzer.d.ts.map +1 -0
  27. package/dist/execution/IntentAnalyzer.js +348 -0
  28. package/dist/execution/IntentAnalyzer.js.map +1 -0
  29. package/dist/execution/InternalExecutionContext.d.ts +255 -0
  30. package/dist/execution/InternalExecutionContext.d.ts.map +1 -0
  31. package/dist/execution/InternalExecutionContext.js +175 -0
  32. package/dist/execution/InternalExecutionContext.js.map +1 -0
  33. package/dist/execution/index.d.ts +5 -0
  34. package/dist/execution/index.d.ts.map +1 -1
  35. package/dist/execution/index.js +6 -0
  36. package/dist/execution/index.js.map +1 -1
  37. package/dist/index.d.ts +5 -7
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +8 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/loader/WorkflowLoader.d.ts +154 -0
  42. package/dist/loader/WorkflowLoader.d.ts.map +1 -0
  43. package/dist/loader/WorkflowLoader.js +239 -0
  44. package/dist/loader/WorkflowLoader.js.map +1 -0
  45. package/dist/loader/index.d.ts +10 -0
  46. package/dist/loader/index.d.ts.map +1 -0
  47. package/dist/loader/index.js +10 -0
  48. package/dist/loader/index.js.map +1 -0
  49. package/dist/parser/WorkflowParser.d.ts +8 -0
  50. package/dist/parser/WorkflowParser.d.ts.map +1 -1
  51. package/dist/parser/WorkflowParser.js +6 -0
  52. package/dist/parser/WorkflowParser.js.map +1 -1
  53. package/dist/security/ReservedFields.d.ts +64 -0
  54. package/dist/security/ReservedFields.d.ts.map +1 -0
  55. package/dist/security/ReservedFields.js +253 -0
  56. package/dist/security/ReservedFields.js.map +1 -0
  57. package/dist/security/index.d.ts +1 -0
  58. package/dist/security/index.d.ts.map +1 -1
  59. package/dist/security/index.js +1 -0
  60. package/dist/security/index.js.map +1 -1
  61. package/dist/types/core-types.d.ts +59 -0
  62. package/dist/types/core-types.d.ts.map +1 -0
  63. package/dist/types/core-types.js +2 -0
  64. package/dist/types/core-types.js.map +1 -0
  65. package/package.json +1 -1
  66. package/test-security-annotations.yaml +20 -0
  67. package/test-security-context.yaml +21 -0
  68. package/test-security.mjs +148 -0
  69. package/test-security.yaml +19 -0
  70. package/test-valid-workflow.yaml +26 -0
@@ -1,12 +1,70 @@
1
1
  /**
2
2
  * Orbyt Engine - Main Public API
3
3
  *
4
+ * ============================================================================
5
+ * ARCHITECTURE & TRUST BOUNDARIES
6
+ * ============================================================================
7
+ *
8
+ * This class defines the ONLY public API surface for the Orbyt Engine.
9
+ * It establishes clear trust boundaries between different consumers:
10
+ *
11
+ * TRUSTED FIRST-PARTY CONSUMERS (Direct Access):
12
+ * -----------------------------------------------
13
+ * - @orbytautomation/cli (Official CLI)
14
+ * - @orbytautomation/api (Official API Server)
15
+ *
16
+ * These components may import and use:
17
+ * - OrbytEngine class
18
+ * - Public types (WorkflowResult, WorkflowRunOptions)
19
+ * - Event bus for observability
20
+ *
21
+ * They MUST NOT:
22
+ * - Import internal execution modules
23
+ * - Bypass security validation
24
+ * - Directly manipulate internal state
25
+ *
26
+ * EXTERNAL ECOSYSTEM COMPONENTS (Adapter/SDK Access):
27
+ * ----------------------------------------------------
28
+ * - MediaProc, DevForge, Voxa, etc.
29
+ * - Third-party plugins
30
+ * - Marketplace extensions
31
+ *
32
+ * These components must integrate via:
33
+ * - Custom adapters (Adapter interface)
34
+ * - Workflow definitions (YAML)
35
+ * - SDK/client libraries
36
+ *
37
+ * They CANNOT:
38
+ * - Import engine internals
39
+ * - Access ExecutionEngine directly
40
+ * - Manipulate billing/security context
41
+ *
42
+ * SECURITY GUARANTEES:
43
+ * --------------------
44
+ * 1. Users cannot specify reserved internal fields in workflows
45
+ * (Validated at parse time - workflow is rejected if found)
46
+ *
47
+ * 2. Internal context is ALWAYS engine-generated
48
+ * (executionId, billing, ownership, audit fields)
49
+ *
50
+ * 3. CLI/API can pass ownership context but cannot forge billing
51
+ * (Ownership from trusted auth, billing from engine pricing snapshot)
52
+ *
53
+ * 4. All workflow execution goes through this single entry point
54
+ * (No backdoor execution paths)
55
+ *
56
+ * WHY THIS MATTERS:
57
+ * -----------------
58
+ * - Billing integrity: Users cannot manipulate usage tracking
59
+ * - Audit trail: All executions are properly logged
60
+ * - Refactor safety: Internal changes don't break integrations
61
+ * - Security: Clear separation of trusted vs untrusted code
62
+ *
4
63
  * User-facing engine class that provides a clean, intuitive API for running workflows.
5
64
  * Wraps the internal ExecutionEngine with a simpler interface.
6
65
  *
7
66
  * @module core
8
67
  */
9
- import { readFile } from 'fs/promises';
10
68
  import YAML from 'yaml';
11
69
  import { applyConfigDefaults, validateConfig } from './EngineConfig.js';
12
70
  import { createEngineContext } from './EngineContext.js';
@@ -19,12 +77,99 @@ import { HookManager } from '../hooks/HookManager.js';
19
77
  import { AdapterRegistry } from '../adapters/AdapterRegistry.js';
20
78
  import { EngineEventType, createEvent } from '../events/EngineEvents.js';
21
79
  import { CLIAdapter, ShellAdapter, HTTPAdapter, FSAdapter } from '../adapters/builtins/index.js';
80
+ import { InternalContextBuilder } from '../execution/InternalExecutionContext.js';
81
+ import { IntentAnalyzer } from '../execution/IntentAnalyzer.js';
82
+ import { ExecutionStrategyResolver, ExecutionStrategyGuard } from '../execution/ExecutionStrategyResolver.js';
22
83
  /**
23
84
  * OrbytEngine - Main public API
24
85
  *
86
+ * ARCHITECTURE & TRUST BOUNDARIES
87
+ * =================
88
+ *
89
+ * This class defines the ONLY public API surface for the Orbyt Engine.
90
+ * It establishes clear trust boundaries between different consumers:
91
+ *
92
+ * TRUSTED FIRST-PARTY CONSUMERS (Direct Access):
93
+ * -----------------------------------------------
94
+ * - @orbyt/cli (Official CLI)
95
+ * - @orbyt/api (Official API Server)
96
+ *
97
+ * These components may import and use:
98
+ * - OrbytEngine class
99
+ * - Public types (WorkflowResult, WorkflowRunOptions)
100
+ * - Event bus for observability
101
+ *
102
+ * They MUST NOT:
103
+ * - Import internal execution modules
104
+ * - Bypass security validation
105
+ * - Directly manipulate internal state
106
+ *
107
+ * EXTERNAL ECOSYSTEM COMPONENTS (Adapter/SDK Access):
108
+ * ----------------------------------------------------
109
+ * - MediaProc, DevForge, Voxa, etc.
110
+ * - Third-party plugins
111
+ * - Marketplace extensions
112
+ *
113
+ * These components must integrate via:
114
+ * - Custom adapters (Adapter interface)
115
+ * - Workflow definitions (YAML)
116
+ * - SDK/client libraries
117
+ *
118
+ * They CANNOT:
119
+ * - Import engine internals
120
+ * - Access ExecutionEngine directly
121
+ * - Manipulate billing/security context
122
+ *
123
+ * SECURITY GUARANTEES:
124
+ * --------------------
125
+ * 1. Users cannot specify reserved internal fields in workflows
126
+ * (Validated at parse time - workflow is rejected if found)
127
+ *
128
+ * 2. Internal context is ALWAYS engine-generated
129
+ * (executionId, billing, ownership, audit fields)
130
+ *
131
+ * 3. CLI/API can pass ownership context but cannot forge billing
132
+ * (Ownership from trusted auth, billing from engine pricing snapshot)
133
+ *
134
+ * 4. All workflow execution goes through this single entry point
135
+ * (No backdoor execution paths)
136
+ *
137
+ * WHY THIS MATTERS:
138
+ * -----------------
139
+ * - Billing integrity: Users cannot manipulate usage tracking
140
+ * - Audit trail: All executions are properly logged
141
+ * - Refactor safety: Internal changes don't break integrations
142
+ * - Security: Clear separation of trusted vs untrusted code
143
+ *
144
+ * User-facing engine class that provides a clean, intuitive API for running workflows.
145
+ * Wraps the internal ExecutionEngine with a simpler interface.
146
+ *
25
147
  * This is the primary interface for working with Orbyt workflows.
26
148
  * Provides a clean, user-friendly API that abstracts internal complexity.
27
149
  *
150
+ * SECURITY & ARCHITECTURE:
151
+ * =================
152
+ * This class is the SINGLE ENTRY POINT for all workflow execution.
153
+ * All execution paths (run, validate, dryRun) go through this engine.
154
+ *
155
+ * INTERNAL CONTEXT INJECTION:
156
+ * - Engine ALWAYS creates internal execution context
157
+ * - Users CANNOT override billing, identity, or ownership fields
158
+ * - Context sanitization removes any injection attempts
159
+ * - Billing tracking is engine-controlled, never user-controlled
160
+ *
161
+ * FIELDS THAT ARE NEVER USER-CONTROLLED:
162
+ * - executionId, runId, traceId (identity)
163
+ * - userId, workspaceId, subscriptionId (ownership)
164
+ * - billingId, pricingTier, costCalculated (billing)
165
+ * - usage counters, step counts, duration (metrics)
166
+ * - security policies, permissions (access control)
167
+ *
168
+ * WORKFLOW YAML vs ENGINE RUNTIME:
169
+ * - User controls: business logic, step definitions, parameters
170
+ * - Engine controls: billing, identity, execution tracking, security
171
+ * - Clear separation prevents billing manipulation and security bypass
172
+ *
28
173
  * @example
29
174
  * ```ts
30
175
  * // Basic usage
@@ -45,6 +190,17 @@ import { CLIAdapter, ShellAdapter, HTTPAdapter, FSAdapter } from '../adapters/bu
45
190
  * timeout: 60000,
46
191
  * dryRun: false
47
192
  * });
193
+ *
194
+ * // From bridge/API with ownership context
195
+ * const result = await engine.run('./workflow.yaml', {
196
+ * variables: { input: 'data' },
197
+ * _ownershipContext: {
198
+ * userId: 'user_123',
199
+ * workspaceId: 'ws_456',
200
+ * subscriptionTier: 'pro',
201
+ * billingMode: 'ecosystem',
202
+ * }
203
+ * });
48
204
  * ```
49
205
  */
50
206
  export class OrbytEngine {
@@ -57,6 +213,7 @@ export class OrbytEngine {
57
213
  adapterRegistry;
58
214
  context;
59
215
  isStarted = false;
216
+ version = '0.1.2';
60
217
  constructor(config = {}) {
61
218
  // Validate and apply defaults
62
219
  validateConfig(config);
@@ -166,34 +323,45 @@ export class OrbytEngine {
166
323
  /**
167
324
  * Run a workflow
168
325
  *
169
- * Main method for executing workflows. Accepts either a file path or
170
- * a parsed workflow object.
326
+ * ARCHITECTURE NOTE:
327
+ * ==================
328
+ * This method is I/O-AGNOSTIC - it does NOT read files or touch filesystem.
329
+ * File loading is handled byWorkflowLoader (separate utility layer).
330
+ *
331
+ * This keeps the engine:
332
+ * - Testable (no file dependencies)
333
+ * - Embeddable (works in browsers, workers, distributed systems)
334
+ * - API-safe (can accept workflows from any source)
171
335
  *
172
- * @param workflow - Workflow file path, YAML string, or parsed workflow
336
+ * Main method for executing workflows.
337
+ *
338
+ * @param workflow - Parsed workflow object OR YAML string content
173
339
  * @param options - Execution options
174
340
  * @returns Workflow execution result
175
341
  *
176
342
  * @example
177
343
  * ```ts
178
- * // Run from file
179
- * const result = await engine.run('./workflow.yaml');
344
+ * import { WorkflowLoader } from '@orbytautomation/engine';
180
345
  *
181
- * // Run with options
182
- * const result = await engine.run('./workflow.yaml', {
183
- * variables: { input: 'data.json' },
184
- * timeout: 30000
185
- * });
346
+ * // Load from file (use WorkflowLoader)
347
+ * const workflow = await WorkflowLoader.fromFile('./workflow.yaml');
348
+ * const result = await engine.run(workflow);
186
349
  *
187
- * // Run from string
350
+ * // Run from YAML string
188
351
  * const yaml = `
189
- * name: my-workflow
190
- * steps:
191
- * - id: step1
192
- * uses: shell.exec
193
- * with:
194
- * command: echo "Hello"
352
+ * version: "1.0"
353
+ * kind: workflow
354
+ * workflow:
355
+ * steps:
356
+ * - id: step1
357
+ * uses: shell.exec
358
+ * with:
359
+ * command: echo "Hello"
195
360
  * `;
196
361
  * const result = await engine.run(yaml);
362
+ *
363
+ * // Run from object (testing)
364
+ * const result = await engine.run(mockWorkflowObject);
197
365
  * ```
198
366
  */
199
367
  async run(workflow, options = {}) {
@@ -201,96 +369,250 @@ export class OrbytEngine {
201
369
  if (!this.isStarted && this.config.enableScheduler) {
202
370
  await this.start();
203
371
  }
204
- // Load/parse workflow if needed
372
+ // SECURITY: Sanitize user context to prevent injection of internal fields
373
+ const sanitizedOptions = this.sanitizeUserOptions(options);
374
+ // Create internal execution context (billing, ownership, audit)
375
+ // This is NEVER user-controlled - engine injects it
376
+ const internalContext = InternalContextBuilder.build(this.version, sanitizedOptions._ownershipContext);
377
+ this.log('debug', 'Internal execution context created', {
378
+ executionId: internalContext._identity.executionId,
379
+ runId: internalContext._identity.runId,
380
+ userId: internalContext._ownership.userId,
381
+ subscriptionTier: internalContext._ownership.subscriptionTier,
382
+ isBillable: internalContext._billing.isBillable,
383
+ });
384
+ // ============================================================================
385
+ // STEP 1: WORKFLOW PARSING (If string provided)
386
+ // ============================================================================
387
+ // Engine accepts:
388
+ // 1. ParsedWorkflow object (primary - already validated)
389
+ // 2. YAML string content (convenience - will parse and validate)
390
+ //
391
+ // Engine does NOT accept:
392
+ // - File paths (use WorkflowLoader.fromFile() instead)
393
+ //
394
+ // This keeps engine I/O-agnostic.
205
395
  let parsedWorkflow;
206
396
  if (typeof workflow === 'string') {
207
- // Check if it's a file path or YAML string
208
- if (workflow.endsWith('.yaml') || workflow.endsWith('.yml')) {
209
- parsedWorkflow = await this.loadWorkflow(workflow);
210
- }
211
- else {
212
- parsedWorkflow = this.parseWorkflow(workflow);
213
- }
397
+ // String provided - parse as YAML content
398
+ this.log('debug', 'Parsing workflow from YAML string');
399
+ parsedWorkflow = this.parseWorkflow(workflow);
214
400
  }
215
401
  else {
402
+ // Object provided - use directly (already parsed and validated)
403
+ this.log('debug', 'Using pre-parsed workflow object');
216
404
  parsedWorkflow = workflow;
217
405
  }
406
+ // At this point, parsedWorkflow is guaranteed to be:
407
+ // - Parsed from YAML (if string provided)
218
408
  // Handle dry-run mode
219
409
  if (options.dryRun || this.config.mode === 'dry-run') {
220
410
  return this.dryRun(parsedWorkflow, options);
221
411
  }
412
+ // ============================================================================
413
+ // INTELLIGENCE LAYERS (Foundation - doesn't change execution yet)
414
+ // ============================================================================
415
+ // 1. Intent Layer: Understand what the workflow is trying to do
416
+ const classifiedIntent = IntentAnalyzer.classify(parsedWorkflow);
417
+ this.log('debug', `Workflow intent: ${classifiedIntent.intent}`, {
418
+ confidence: classifiedIntent.confidence,
419
+ patterns: classifiedIntent.patterns,
420
+ reasoning: classifiedIntent.reasoning,
421
+ });
422
+ // Log intent-based recommendations (for future optimization)
423
+ const recommendations = IntentAnalyzer.getRecommendations(classifiedIntent.intent);
424
+ if (recommendations.optimizations?.length) {
425
+ this.log('debug', 'Intent-based optimizations available', {
426
+ intent: classifiedIntent.intent,
427
+ tips: recommendations.optimizations,
428
+ });
429
+ }
430
+ // 2. Execution Strategy Layer: Decide HOW to run safely
431
+ const strategyContext = {
432
+ workflow: parsedWorkflow,
433
+ intent: classifiedIntent.intent,
434
+ resourceLimits: {
435
+ maxConcurrentSteps: this.config.maxConcurrentSteps || 10,
436
+ maxMemory: 0,
437
+ timeout: sanitizedOptions.timeout || this.config.defaultTimeout || 300000,
438
+ },
439
+ };
440
+ const executionStrategy = ExecutionStrategyResolver.resolve(strategyContext);
441
+ this.log('debug', `Execution strategy: ${executionStrategy.strategy}`, {
442
+ reason: executionStrategy.reason,
443
+ adjustments: executionStrategy.adjustments,
444
+ });
445
+ // 3. Safety Guard: Check if safe to execute
446
+ const safetyCheck = ExecutionStrategyGuard.isSafeToExecute(strategyContext);
447
+ if (!safetyCheck.safe) {
448
+ this.log('warn', `Execution safety check failed: ${safetyCheck.reason}`);
449
+ // Foundation: Log only, don't block execution
450
+ // Future: Can block or delay execution based on policy
451
+ }
452
+ // ============================================================================
453
+ // END INTELLIGENCE LAYERS
454
+ // ============================================================================
222
455
  // Build execution options
223
456
  const execOptions = {
224
- timeout: options.timeout || this.config.defaultTimeout,
225
- env: options.env,
226
- inputs: options.variables,
227
- secrets: options.secrets,
228
- context: options.context,
229
- continueOnError: options.continueOnError,
230
- triggeredBy: options.triggeredBy || 'manual',
457
+ timeout: sanitizedOptions.timeout || this.config.defaultTimeout,
458
+ env: sanitizedOptions.env,
459
+ inputs: sanitizedOptions.variables,
460
+ secrets: sanitizedOptions.secrets,
461
+ context: {
462
+ ...sanitizedOptions.context,
463
+ _internal: internalContext, // Inject internal context (engine-only)
464
+ },
465
+ continueOnError: sanitizedOptions.continueOnError,
466
+ triggeredBy: sanitizedOptions.triggeredBy || 'manual',
231
467
  };
232
468
  this.log('info', `Running workflow: ${parsedWorkflow.name || 'unnamed'}`);
233
469
  // Execute workflow
234
470
  const result = await this.workflowExecutor.execute(parsedWorkflow, execOptions);
471
+ // Update usage counters after execution
472
+ internalContext._usage.stepCount = result.metadata.totalSteps;
473
+ internalContext._usage.durationSeconds = result.duration / 1000;
474
+ // Calculate weighted step count (future: based on actual step weights)
475
+ internalContext._usage.weightedStepCount = result.metadata.totalSteps;
235
476
  this.log('info', `Workflow completed: ${result.status}`, {
236
477
  duration: result.duration,
237
478
  steps: result.metadata.totalSteps,
479
+ billable: internalContext._billing.isBillable,
480
+ automationCount: internalContext._usage.automationCount,
481
+ stepCount: internalContext._usage.stepCount,
238
482
  });
483
+ // Call billing lifecycle hook
484
+ await this.onWorkflowBillingComplete(internalContext, result);
239
485
  return result;
240
486
  }
241
487
  /**
242
- * Load a workflow from file
243
- *
244
- * @param filePath - Path to workflow file
245
- * @param options - Load options
246
- * @returns Parsed workflow
488
+ * Sanitize user-provided options to prevent injection attacks
489
+ * SECURITY: Users should never be able to override internal fields
247
490
  */
248
- async loadWorkflow(filePath, options = {}) {
249
- this.log('debug', `Loading workflow from: ${filePath}`);
250
- // Read file content
251
- const content = await readFile(filePath, 'utf-8');
252
- // Parse workflow
253
- const parsed = this.parseWorkflow(content);
254
- // Apply variables from options if provided
255
- if (options.variables && parsed.inputs) {
256
- // Merge provided variables with workflow inputs
257
- parsed.inputs = { ...parsed.inputs, ...options.variables };
491
+ sanitizeUserOptions(options) {
492
+ const sanitized = { ...options };
493
+ // Remove any attempts to inject internal fields through context
494
+ if (sanitized.context) {
495
+ const cleanContext = { ...sanitized.context };
496
+ // Remove internal fields that users should never control
497
+ delete cleanContext._internal;
498
+ delete cleanContext._identity;
499
+ delete cleanContext._ownership;
500
+ delete cleanContext._billing;
501
+ delete cleanContext._billingSnapshot;
502
+ delete cleanContext._usage;
503
+ delete cleanContext._audit;
504
+ delete cleanContext.executionId;
505
+ delete cleanContext.runId;
506
+ delete cleanContext.billingId;
507
+ delete cleanContext.subscriptionId;
508
+ delete cleanContext.userId;
509
+ delete cleanContext.workspaceId;
510
+ sanitized.context = cleanContext;
511
+ this.log('debug', 'User context sanitized - removed internal fields');
512
+ }
513
+ // Validate ownership context is only set by trusted sources (bridge/API)
514
+ if (sanitized._ownershipContext) {
515
+ // Future: Add authentication check here
516
+ // For now, allow it (assuming CLI/local mode)
517
+ this.log('debug', 'Ownership context provided by caller');
258
518
  }
259
- return parsed;
519
+ return sanitized;
520
+ }
521
+ /**
522
+ * Billing lifecycle hook - called after workflow completes
523
+ * INTERNAL: Used to track usage and send billing data to analytics bridge
524
+ */
525
+ async onWorkflowBillingComplete(internalContext, result) {
526
+ // Future: Send billing data to analytics bridge
527
+ // This would integrate with the billing bridge to:
528
+ // 1. Record automation execution count
529
+ // 2. Record step execution counts
530
+ // 3. Calculate costs based on pricing snapshot
531
+ // 4. Send to billing system
532
+ this.log('debug', 'Billing tracking', {
533
+ executionId: internalContext._identity.executionId,
534
+ automationCount: internalContext._usage.automationCount,
535
+ stepCount: internalContext._usage.stepCount,
536
+ weightedStepCount: internalContext._usage.weightedStepCount,
537
+ duration: internalContext._usage.durationSeconds,
538
+ isBillable: internalContext._billing.isBillable,
539
+ pricingTier: internalContext._billing.pricingTierResolved,
540
+ workflowStatus: result.status,
541
+ workflowSuccess: result.status === 'success',
542
+ failedSteps: result.metadata.failedSteps || 0,
543
+ });
544
+ // Future implementation:
545
+ // if (this.config.billingBridge) {
546
+ // await this.config.billingBridge.recordUsage({
547
+ // executionId: internalContext._identity.executionId,
548
+ // userId: internalContext._ownership.userId,
549
+ // workspaceId: internalContext._ownership.workspaceId,
550
+ // product: internalContext._billing.effectiveProduct,
551
+ // usage: internalContext._usage,
552
+ // billing: internalContext._billingSnapshot,
553
+ // status: result.status,
554
+ // });
555
+ // }
260
556
  }
261
557
  /**
262
558
  * Parse a workflow from YAML string
263
559
  *
560
+ * WORKFLOW PARSING PIPELINE:
561
+ * ==========================
562
+ * 1. Validate YAML syntax (catch malformed YAML early)
563
+ * 2. Parse YAML to object
564
+ * 3. Security validation (reject reserved internal fields)
565
+ * 4. Schema validation (validate against Zod schema)
566
+ * 5. Step parsing and validation
567
+ * 6. Return parsed workflow ready for execution
568
+ *
264
569
  * @param yaml - YAML workflow definition
265
570
  * @returns Parsed workflow
266
571
  */
267
572
  parseWorkflow(yaml) {
268
- this.log('debug', 'Parsing workflow');
269
- // Validate YAML syntax first for better error messages
573
+ this.log('debug', 'Parsing workflow from YAML string');
574
+ // Step 1: Validate YAML syntax first for better error messages
575
+ let parsedObject;
576
+ try {
577
+ parsedObject = YAML.parse(yaml);
578
+ }
579
+ catch (error) {
580
+ const errorMsg = error instanceof Error ? error.message : String(error);
581
+ this.log('error', `YAML syntax validation failed: ${errorMsg}`);
582
+ throw new Error(`Invalid YAML syntax: ${errorMsg}`);
583
+ }
584
+ this.log('debug', 'YAML syntax validated successfully');
585
+ // Step 2: Use WorkflowParser for security, schema, and step validation
586
+ // This handles: security checks, Zod validation, step parsing
270
587
  try {
271
- YAML.parse(yaml);
588
+ const parsed = WorkflowParser.parse(parsedObject);
589
+ this.log('debug', `Workflow parsed successfully: ${parsed.name || 'unnamed'}`);
590
+ return parsed;
272
591
  }
273
592
  catch (error) {
274
- throw new Error(`Invalid YAML syntax: ${error instanceof Error ? error.message : String(error)}`);
593
+ const errorMsg = error instanceof Error ? error.message : String(error);
594
+ this.log('error', `Workflow validation failed: ${errorMsg}`);
595
+ throw error; // Re-throw with original error (contains security/validation details)
275
596
  }
276
- // Use WorkflowParser for full validation and parsing
277
- return WorkflowParser.parse(yaml);
278
597
  }
279
598
  /**
280
599
  * Validate a workflow without executing it
281
600
  *
282
601
  * @param workflow - Workflow to validate
602
+ * @param options - Validation options (optional ownership context for tracking)
283
603
  * @returns True if valid, throws if invalid
284
604
  */
285
- async validate(workflow) {
605
+ async validate(workflow, options) {
606
+ // Create internal context for tracking validations (non-billable)
607
+ const internalContext = InternalContextBuilder.build(this.version, { ...(options?._ownershipContext || {}), subscriptionTier: 'free' });
608
+ this.log('debug', 'Validating workflow', {
609
+ executionId: internalContext._identity.executionId,
610
+ });
286
611
  let parsedWorkflow;
287
612
  if (typeof workflow === 'string') {
288
- if (workflow.endsWith('.yaml') || workflow.endsWith('.yml')) {
289
- parsedWorkflow = await this.loadWorkflow(workflow);
290
- }
291
- else {
292
- parsedWorkflow = this.parseWorkflow(workflow);
293
- }
613
+ // String provided - parse as YAML content
614
+ // Note: For file paths, use WorkflowLoader.fromFile() before calling validate()
615
+ parsedWorkflow = this.parseWorkflow(workflow);
294
616
  }
295
617
  else {
296
618
  parsedWorkflow = workflow;
@@ -303,9 +625,15 @@ export class OrbytEngine {
303
625
  /**
304
626
  * Perform a dry run of a workflow
305
627
  * Validates and plans execution without running steps
628
+ * INTERNAL: Creates internal context for tracking (non-billable)
306
629
  */
307
630
  async dryRun(workflow, options) {
308
- this.log('info', `Dry run: ${workflow.name || 'unnamed'}`);
631
+ // Create internal context for tracking dry runs (non-billable)
632
+ const internalContext = InternalContextBuilder.build(this.version, { ...(options._ownershipContext || {}), subscriptionTier: 'free' });
633
+ this.log('info', `Dry run: ${workflow.name || 'unnamed'}`, {
634
+ executionId: internalContext._identity.executionId,
635
+ runMode: 'dry-run',
636
+ });
309
637
  // Show what would be executed
310
638
  if (options.variables) {
311
639
  this.log('debug', 'Variables that would be used:', options.variables);
@@ -318,6 +646,10 @@ export class OrbytEngine {
318
646
  for (const step of workflow.steps) {
319
647
  this.log('info', ` - ${step.id}: ${step.adapter}.${step.action}`);
320
648
  }
649
+ // Track dry run in internal context (for analytics)
650
+ internalContext._usage.stepCount = workflow.steps.length;
651
+ internalContext._usage.automationCount = 0; // Dry runs don't count as executions
652
+ this.log('debug', 'Dry run completed - no steps executed');
321
653
  // Return mock result showing what would happen
322
654
  return {
323
655
  workflowName: workflow.name || 'unnamed',
@@ -1 +1 @@
1
- {"version":3,"file":"OrbytEngine.js","sourceRoot":"","sources":["../../src/core/OrbytEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OrbytEngine.js","sourceRoot":"","sources":["../../src/core/OrbytEngine.ts"],"names":[],"mappings":"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"}