@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.
- package/dist/core/EngineConfig.d.ts +5 -0
- package/dist/core/EngineConfig.d.ts.map +1 -1
- package/dist/core/EngineConfig.js +4 -0
- package/dist/core/EngineConfig.js.map +1 -1
- package/dist/core/OrbytEngine.d.ts +207 -76
- package/dist/core/OrbytEngine.d.ts.map +1 -1
- package/dist/core/OrbytEngine.js +395 -63
- package/dist/core/OrbytEngine.js.map +1 -1
- package/dist/errors/SecurityErrors.d.ts +75 -0
- package/dist/errors/SecurityErrors.d.ts.map +1 -0
- package/dist/errors/SecurityErrors.js +145 -0
- package/dist/errors/SecurityErrors.js.map +1 -0
- package/dist/errors/index.d.ts +1 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +1 -0
- package/dist/errors/index.js.map +1 -1
- package/dist/execution/ExecutionLimits.d.ts +116 -0
- package/dist/execution/ExecutionLimits.d.ts.map +1 -0
- package/dist/execution/ExecutionLimits.js +280 -0
- package/dist/execution/ExecutionLimits.js.map +1 -0
- package/dist/execution/ExecutionStrategyResolver.d.ts +140 -0
- package/dist/execution/ExecutionStrategyResolver.d.ts.map +1 -0
- package/dist/execution/ExecutionStrategyResolver.js +332 -0
- package/dist/execution/ExecutionStrategyResolver.js.map +1 -0
- package/dist/execution/IntentAnalyzer.d.ts +101 -0
- package/dist/execution/IntentAnalyzer.d.ts.map +1 -0
- package/dist/execution/IntentAnalyzer.js +348 -0
- package/dist/execution/IntentAnalyzer.js.map +1 -0
- package/dist/execution/InternalExecutionContext.d.ts +255 -0
- package/dist/execution/InternalExecutionContext.d.ts.map +1 -0
- package/dist/execution/InternalExecutionContext.js +175 -0
- package/dist/execution/InternalExecutionContext.js.map +1 -0
- package/dist/execution/index.d.ts +5 -0
- package/dist/execution/index.d.ts.map +1 -1
- package/dist/execution/index.js +6 -0
- package/dist/execution/index.js.map +1 -1
- package/dist/index.d.ts +5 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/loader/WorkflowLoader.d.ts +154 -0
- package/dist/loader/WorkflowLoader.d.ts.map +1 -0
- package/dist/loader/WorkflowLoader.js +239 -0
- package/dist/loader/WorkflowLoader.js.map +1 -0
- package/dist/loader/index.d.ts +10 -0
- package/dist/loader/index.d.ts.map +1 -0
- package/dist/loader/index.js +10 -0
- package/dist/loader/index.js.map +1 -0
- package/dist/parser/WorkflowParser.d.ts +8 -0
- package/dist/parser/WorkflowParser.d.ts.map +1 -1
- package/dist/parser/WorkflowParser.js +6 -0
- package/dist/parser/WorkflowParser.js.map +1 -1
- package/dist/security/ReservedFields.d.ts +64 -0
- package/dist/security/ReservedFields.d.ts.map +1 -0
- package/dist/security/ReservedFields.js +253 -0
- package/dist/security/ReservedFields.js.map +1 -0
- package/dist/security/index.d.ts +1 -0
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +1 -0
- package/dist/security/index.js.map +1 -1
- package/dist/types/core-types.d.ts +59 -0
- package/dist/types/core-types.d.ts.map +1 -0
- package/dist/types/core-types.js +2 -0
- package/dist/types/core-types.js.map +1 -0
- package/package.json +1 -1
- package/test-security-annotations.yaml +20 -0
- package/test-security-context.yaml +21 -0
- package/test-security.mjs +148 -0
- package/test-security.yaml +19 -0
- package/test-valid-workflow.yaml +26 -0
package/dist/core/OrbytEngine.js
CHANGED
|
@@ -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
|
-
*
|
|
170
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
179
|
-
* const result = await engine.run('./workflow.yaml');
|
|
344
|
+
* import { WorkflowLoader } from '@orbytautomation/engine';
|
|
180
345
|
*
|
|
181
|
-
* //
|
|
182
|
-
* const
|
|
183
|
-
*
|
|
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
|
-
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
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
|
-
//
|
|
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
|
-
//
|
|
208
|
-
|
|
209
|
-
|
|
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:
|
|
225
|
-
env:
|
|
226
|
-
inputs:
|
|
227
|
-
secrets:
|
|
228
|
-
context:
|
|
229
|
-
|
|
230
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
249
|
-
|
|
250
|
-
//
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
289
|
-
|
|
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
|
-
|
|
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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"}
|