@principal-ai/principal-view-core 0.9.0 → 0.9.1

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.
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Execution loader for managing execution artifact files
3
+ *
4
+ * Supports loading execution files (.otel.json) from __executions__/ folders
5
+ * using the adapter pattern for environment-agnostic file operations.
6
+ *
7
+ * Automatically handles both OTLP standard format and legacy formats
8
+ * through ExecutionValidator conversion.
9
+ */
10
+ import type { FileSystemAdapter } from '@principal-ai/repository-abstraction';
11
+ import { type ExecutionData } from './ExecutionValidator';
12
+ /**
13
+ * Represents a single execution file
14
+ */
15
+ export interface ExecutionFile {
16
+ /** Execution name (filename without .otel.json extension) */
17
+ name: string;
18
+ /** Full path to the execution file */
19
+ path: string;
20
+ /** Parsed and validated execution data */
21
+ data: ExecutionData;
22
+ }
23
+ /**
24
+ * Result of loading all executions
25
+ */
26
+ export interface ExecutionLoadResult {
27
+ /** Successfully loaded executions */
28
+ executions: ExecutionFile[];
29
+ /** Errors encountered during loading */
30
+ errors: Array<{
31
+ file: string;
32
+ error: string;
33
+ }>;
34
+ }
35
+ /**
36
+ * Loader for managing execution artifact files from __executions__/ folders
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const loader = new ExecutionLoader(fsAdapter);
41
+ *
42
+ * // Check if __executions__/ exists
43
+ * if (loader.hasExecutionDirectory('/path/to/project')) {
44
+ * // Load all execution files
45
+ * const result = loader.loadAll('/path/to/project');
46
+ * console.log(`Loaded ${result.executions.length} executions`);
47
+ *
48
+ * // Load specific execution
49
+ * const execution = loader.loadByName('test-run', '/path/to/project');
50
+ * }
51
+ * ```
52
+ */
53
+ export declare class ExecutionLoader {
54
+ private fsAdapter;
55
+ private static readonly EXECUTION_DIR;
56
+ private static readonly EXECUTION_EXTENSION;
57
+ private validator;
58
+ constructor(fsAdapter: FileSystemAdapter);
59
+ /**
60
+ * Check if __executions__/ directory exists
61
+ *
62
+ * @param baseDir - Base directory to search from
63
+ * @returns True if __executions__/ directory exists
64
+ */
65
+ hasExecutionDirectory(baseDir: string): boolean;
66
+ /**
67
+ * List all available execution names in __executions__/ folder
68
+ *
69
+ * @param baseDir - Base directory containing __executions__/ folder
70
+ * @returns Array of execution names (without .otel.json extensions)
71
+ */
72
+ listExecutions(baseDir: string): string[];
73
+ /**
74
+ * Load a specific execution by name
75
+ *
76
+ * Automatically handles OTLP format conversion through ExecutionValidator.
77
+ *
78
+ * @param name - Execution name (without .otel.json extension)
79
+ * @param baseDir - Base directory containing __executions__/ folder
80
+ * @returns Execution file or null if not found/invalid
81
+ */
82
+ loadByName(name: string, baseDir: string): ExecutionFile | null;
83
+ /**
84
+ * Load all executions from __executions__/ folder
85
+ *
86
+ * Automatically handles OTLP format conversion for all files.
87
+ *
88
+ * @param baseDir - Base directory containing __executions__/ folder
89
+ * @returns Result containing all loaded executions and any errors
90
+ */
91
+ loadAll(baseDir: string): ExecutionLoadResult;
92
+ /**
93
+ * Get the execution directory path
94
+ *
95
+ * @param baseDir - Base directory
96
+ * @returns Full path to __executions__/ directory
97
+ */
98
+ getExecutionDirectoryPath(baseDir: string): string;
99
+ /**
100
+ * Search for __executions__/ directories recursively in a project
101
+ *
102
+ * Useful for monorepos where executions might be in multiple packages.
103
+ *
104
+ * @param baseDir - Base directory to search from
105
+ * @param maxDepth - Maximum directory depth to search (default: 3)
106
+ * @returns Array of paths to __executions__/ directories
107
+ */
108
+ findExecutionDirectories(baseDir: string, maxDepth?: number): string[];
109
+ /**
110
+ * Load all executions from multiple __executions__/ directories
111
+ *
112
+ * Useful for monorepos where executions are spread across packages.
113
+ *
114
+ * @param baseDir - Base directory to search from
115
+ * @param maxDepth - Maximum directory depth to search (default: 3)
116
+ * @returns Result containing all loaded executions and any errors
117
+ */
118
+ loadAllRecursive(baseDir: string, maxDepth?: number): ExecutionLoadResult;
119
+ /**
120
+ * Check if a filename is an execution file
121
+ */
122
+ private isExecutionFile;
123
+ /**
124
+ * Extract execution name from filename
125
+ */
126
+ private getExecutionNameFromFilename;
127
+ }
128
+ /**
129
+ * Create a new execution loader instance
130
+ *
131
+ * @param fsAdapter - File system adapter for environment-agnostic operations
132
+ * @returns ExecutionLoader instance
133
+ */
134
+ export declare function createExecutionLoader(fsAdapter: FileSystemAdapter): ExecutionLoader;
135
+ //# sourceMappingURL=ExecutionLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecutionLoader.d.ts","sourceRoot":"","sources":["../../src/execution/ExecutionLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,IAAI,EAAE,aAAa,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,wCAAwC;IACxC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,eAAe;IAKd,OAAO,CAAC,SAAS;IAJ7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAoB;IACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAgB;IAC3D,OAAO,CAAC,SAAS,CAAqB;gBAElB,SAAS,EAAE,iBAAiB;IAIhD;;;;;OAKG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAW/C;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAiBzC;;;;;;;;OAQG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAkC/D;;;;;;;OAOG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB;IAsE7C;;;;;OAKG;IACH,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIlD;;;;;;;;OAQG;IACH,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM,EAAE;IAgCzE;;;;;;;;OAQG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,mBAAmB;IAuB5E;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,4BAA4B;CAGrC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,iBAAiB,GAC3B,eAAe,CAEjB"}
@@ -0,0 +1,260 @@
1
+ /**
2
+ * Execution loader for managing execution artifact files
3
+ *
4
+ * Supports loading execution files (.otel.json) from __executions__/ folders
5
+ * using the adapter pattern for environment-agnostic file operations.
6
+ *
7
+ * Automatically handles both OTLP standard format and legacy formats
8
+ * through ExecutionValidator conversion.
9
+ */
10
+ import { ExecutionValidator } from './ExecutionValidator';
11
+ /**
12
+ * Loader for managing execution artifact files from __executions__/ folders
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const loader = new ExecutionLoader(fsAdapter);
17
+ *
18
+ * // Check if __executions__/ exists
19
+ * if (loader.hasExecutionDirectory('/path/to/project')) {
20
+ * // Load all execution files
21
+ * const result = loader.loadAll('/path/to/project');
22
+ * console.log(`Loaded ${result.executions.length} executions`);
23
+ *
24
+ * // Load specific execution
25
+ * const execution = loader.loadByName('test-run', '/path/to/project');
26
+ * }
27
+ * ```
28
+ */
29
+ class ExecutionLoader {
30
+ constructor(fsAdapter) {
31
+ this.fsAdapter = fsAdapter;
32
+ this.validator = new ExecutionValidator();
33
+ }
34
+ /**
35
+ * Check if __executions__/ directory exists
36
+ *
37
+ * @param baseDir - Base directory to search from
38
+ * @returns True if __executions__/ directory exists
39
+ */
40
+ hasExecutionDirectory(baseDir) {
41
+ const executionPath = this.fsAdapter.join(baseDir, ExecutionLoader.EXECUTION_DIR);
42
+ return (this.fsAdapter.exists(executionPath) &&
43
+ this.fsAdapter.isDirectory(executionPath));
44
+ }
45
+ /**
46
+ * List all available execution names in __executions__/ folder
47
+ *
48
+ * @param baseDir - Base directory containing __executions__/ folder
49
+ * @returns Array of execution names (without .otel.json extensions)
50
+ */
51
+ listExecutions(baseDir) {
52
+ if (!this.hasExecutionDirectory(baseDir)) {
53
+ return [];
54
+ }
55
+ const executionPath = this.fsAdapter.join(baseDir, ExecutionLoader.EXECUTION_DIR);
56
+ const files = this.fsAdapter.readDir(executionPath);
57
+ return files
58
+ .filter((f) => this.isExecutionFile(f))
59
+ .map((f) => this.getExecutionNameFromFilename(f))
60
+ .sort();
61
+ }
62
+ /**
63
+ * Load a specific execution by name
64
+ *
65
+ * Automatically handles OTLP format conversion through ExecutionValidator.
66
+ *
67
+ * @param name - Execution name (without .otel.json extension)
68
+ * @param baseDir - Base directory containing __executions__/ folder
69
+ * @returns Execution file or null if not found/invalid
70
+ */
71
+ loadByName(name, baseDir) {
72
+ if (!this.hasExecutionDirectory(baseDir)) {
73
+ return null;
74
+ }
75
+ const executionPath = this.fsAdapter.join(baseDir, ExecutionLoader.EXECUTION_DIR);
76
+ const filename = `${name}${ExecutionLoader.EXECUTION_EXTENSION}`;
77
+ const fullPath = this.fsAdapter.join(executionPath, filename);
78
+ if (!this.fsAdapter.exists(fullPath)) {
79
+ return null;
80
+ }
81
+ try {
82
+ const content = this.fsAdapter.readFile(fullPath);
83
+ const parsed = JSON.parse(content);
84
+ // Use validateOrThrow to both validate and get converted ExecutionData
85
+ const data = this.validator.validateOrThrow(parsed, fullPath);
86
+ return {
87
+ name,
88
+ path: fullPath,
89
+ data,
90
+ };
91
+ }
92
+ catch (error) {
93
+ // File exists but couldn't be read, parsed, or validated
94
+ return null;
95
+ }
96
+ }
97
+ /**
98
+ * Load all executions from __executions__/ folder
99
+ *
100
+ * Automatically handles OTLP format conversion for all files.
101
+ *
102
+ * @param baseDir - Base directory containing __executions__/ folder
103
+ * @returns Result containing all loaded executions and any errors
104
+ */
105
+ loadAll(baseDir) {
106
+ const result = {
107
+ executions: [],
108
+ errors: [],
109
+ };
110
+ if (!this.hasExecutionDirectory(baseDir)) {
111
+ result.errors.push({
112
+ file: '__executions__',
113
+ error: 'Execution directory __executions__/ not found',
114
+ });
115
+ return result;
116
+ }
117
+ const executionPath = this.fsAdapter.join(baseDir, ExecutionLoader.EXECUTION_DIR);
118
+ const files = this.fsAdapter.readDir(executionPath);
119
+ for (const filename of files) {
120
+ if (!this.isExecutionFile(filename)) {
121
+ continue; // Skip non-.otel.json files
122
+ }
123
+ const fullPath = this.fsAdapter.join(executionPath, filename);
124
+ const name = this.getExecutionNameFromFilename(filename);
125
+ try {
126
+ const content = this.fsAdapter.readFile(fullPath);
127
+ const parsed = JSON.parse(content);
128
+ // Validate and convert OTLP format if needed
129
+ const validationResult = this.validator.validate(parsed, fullPath);
130
+ if (validationResult.valid) {
131
+ // Use validateOrThrow to get converted ExecutionData
132
+ const data = this.validator.validateOrThrow(parsed, fullPath);
133
+ result.executions.push({
134
+ name,
135
+ path: fullPath,
136
+ data,
137
+ });
138
+ }
139
+ else {
140
+ // Collect validation errors
141
+ const errorMessages = validationResult.errors
142
+ .map((e) => `${e.path}: ${e.message}`)
143
+ .join('; ');
144
+ result.errors.push({
145
+ file: filename,
146
+ error: `Validation failed: ${errorMessages}`,
147
+ });
148
+ }
149
+ }
150
+ catch (error) {
151
+ const errorMessage = error instanceof Error ? error.message : String(error);
152
+ result.errors.push({
153
+ file: filename,
154
+ error: `Failed to read/parse file: ${errorMessage}`,
155
+ });
156
+ }
157
+ }
158
+ // Sort executions by name for consistent ordering
159
+ result.executions.sort((a, b) => a.name.localeCompare(b.name));
160
+ return result;
161
+ }
162
+ /**
163
+ * Get the execution directory path
164
+ *
165
+ * @param baseDir - Base directory
166
+ * @returns Full path to __executions__/ directory
167
+ */
168
+ getExecutionDirectoryPath(baseDir) {
169
+ return this.fsAdapter.join(baseDir, ExecutionLoader.EXECUTION_DIR);
170
+ }
171
+ /**
172
+ * Search for __executions__/ directories recursively in a project
173
+ *
174
+ * Useful for monorepos where executions might be in multiple packages.
175
+ *
176
+ * @param baseDir - Base directory to search from
177
+ * @param maxDepth - Maximum directory depth to search (default: 3)
178
+ * @returns Array of paths to __executions__/ directories
179
+ */
180
+ findExecutionDirectories(baseDir, maxDepth = 3) {
181
+ const found = [];
182
+ const search = (dir, depth) => {
183
+ if (depth > maxDepth)
184
+ return;
185
+ try {
186
+ const items = this.fsAdapter.readDir(dir);
187
+ for (const item of items) {
188
+ const fullPath = this.fsAdapter.join(dir, item);
189
+ if (!this.fsAdapter.isDirectory(fullPath))
190
+ continue;
191
+ // Skip node_modules and hidden directories
192
+ if (item === 'node_modules' || item.startsWith('.'))
193
+ continue;
194
+ if (item === ExecutionLoader.EXECUTION_DIR) {
195
+ found.push(fullPath);
196
+ }
197
+ else {
198
+ search(fullPath, depth + 1);
199
+ }
200
+ }
201
+ }
202
+ catch (error) {
203
+ // Skip directories we can't read
204
+ }
205
+ };
206
+ search(baseDir, 0);
207
+ return found;
208
+ }
209
+ /**
210
+ * Load all executions from multiple __executions__/ directories
211
+ *
212
+ * Useful for monorepos where executions are spread across packages.
213
+ *
214
+ * @param baseDir - Base directory to search from
215
+ * @param maxDepth - Maximum directory depth to search (default: 3)
216
+ * @returns Result containing all loaded executions and any errors
217
+ */
218
+ loadAllRecursive(baseDir, maxDepth = 3) {
219
+ const result = {
220
+ executions: [],
221
+ errors: [],
222
+ };
223
+ const directories = this.findExecutionDirectories(baseDir, maxDepth);
224
+ for (const execDir of directories) {
225
+ // Get parent directory for loadAll
226
+ const parentDir = this.fsAdapter.dirname(execDir);
227
+ const dirResult = this.loadAll(parentDir);
228
+ result.executions.push(...dirResult.executions);
229
+ result.errors.push(...dirResult.errors);
230
+ }
231
+ // Sort by name
232
+ result.executions.sort((a, b) => a.name.localeCompare(b.name));
233
+ return result;
234
+ }
235
+ /**
236
+ * Check if a filename is an execution file
237
+ */
238
+ isExecutionFile(filename) {
239
+ return filename.endsWith(ExecutionLoader.EXECUTION_EXTENSION);
240
+ }
241
+ /**
242
+ * Extract execution name from filename
243
+ */
244
+ getExecutionNameFromFilename(filename) {
245
+ return filename.replace(ExecutionLoader.EXECUTION_EXTENSION, '');
246
+ }
247
+ }
248
+ ExecutionLoader.EXECUTION_DIR = '__executions__';
249
+ ExecutionLoader.EXECUTION_EXTENSION = '.otel.json';
250
+ export { ExecutionLoader };
251
+ /**
252
+ * Create a new execution loader instance
253
+ *
254
+ * @param fsAdapter - File system adapter for environment-agnostic operations
255
+ * @returns ExecutionLoader instance
256
+ */
257
+ export function createExecutionLoader(fsAdapter) {
258
+ return new ExecutionLoader(fsAdapter);
259
+ }
260
+ //# sourceMappingURL=ExecutionLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecutionLoader.js","sourceRoot":"","sources":["../../src/execution/ExecutionLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,kBAAkB,EAAsB,MAAM,sBAAsB,CAAC;AAwB9E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAa,eAAe;IAK1B,YAAoB,SAA4B;QAA5B,cAAS,GAAT,SAAS,CAAmB;QAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACH,qBAAqB,CAAC,OAAe;QACnC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACvC,OAAO,EACP,eAAe,CAAC,aAAa,CAC9B,CAAC;QACF,OAAO,CACL,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;YACpC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,OAAe;QAC5B,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE;YACxC,OAAO,EAAE,CAAC;SACX;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACvC,OAAO,EACP,eAAe,CAAC,aAAa,CAC9B,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAEpD,OAAO,KAAK;aACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;aAChD,IAAI,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;;;OAQG;IACH,UAAU,CAAC,IAAY,EAAE,OAAe;QACtC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE;YACxC,OAAO,IAAI,CAAC;SACb;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACvC,OAAO,EACP,eAAe,CAAC,aAAa,CAC9B,CAAC;QACF,MAAM,QAAQ,GAAG,GAAG,IAAI,GAAG,eAAe,CAAC,mBAAmB,EAAE,CAAC;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAE9D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;YACpC,OAAO,IAAI,CAAC;SACb;QAED,IAAI;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEnC,uEAAuE;YACvE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAE9D,OAAO;gBACL,IAAI;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI;aACL,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACd,yDAAyD;YACzD,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,OAAe;QACrB,MAAM,MAAM,GAAwB;YAClC,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE;YACxC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,+CAA+C;aACvD,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;SACf;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACvC,OAAO,EACP,eAAe,CAAC,aAAa,CAC9B,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAEpD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;gBACnC,SAAS,CAAC,4BAA4B;aACvC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;YAEzD,IAAI;gBACF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAEnC,6CAA6C;gBAC7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAEnE,IAAI,gBAAgB,CAAC,KAAK,EAAE;oBAC1B,qDAAqD;oBACrD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAE9D,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;wBACrB,IAAI;wBACJ,IAAI,EAAE,QAAQ;wBACd,IAAI;qBACL,CAAC,CAAC;iBACJ;qBAAM;oBACL,4BAA4B;oBAC5B,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM;yBAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;yBACrC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACd,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;wBACjB,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,sBAAsB,aAAa,EAAE;qBAC7C,CAAC,CAAC;iBACJ;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,8BAA8B,YAAY,EAAE;iBACpD,CAAC,CAAC;aACJ;SACF;QAED,kDAAkD;QAClD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,yBAAyB,CAAC,OAAe;QACvC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;;;OAQG;IACH,wBAAwB,CAAC,OAAe,EAAE,WAAmB,CAAC;QAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE;YAC5C,IAAI,KAAK,GAAG,QAAQ;gBAAE,OAAO;YAE7B,IAAI;gBACF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAE1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBAEhD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC;wBAAE,SAAS;oBAEpD,2CAA2C;oBAC3C,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;wBAAE,SAAS;oBAE9D,IAAI,IAAI,KAAK,eAAe,CAAC,aAAa,EAAE;wBAC1C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;qBACtB;yBAAM;wBACL,MAAM,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;qBAC7B;iBACF;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,iCAAiC;aAClC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;OAQG;IACH,gBAAgB,CAAC,OAAe,EAAE,WAAmB,CAAC;QACpD,MAAM,MAAM,GAAwB;YAClC,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAErE,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE;YACjC,mCAAmC;YACnC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAE1C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;SACzC;QAED,eAAe;QACf,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,QAAgB;QACtC,OAAO,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACK,4BAA4B,CAAC,QAAgB;QACnD,OAAO,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;;AAxQuB,6BAAa,GAAG,gBAAgB,CAAC;AACjC,mCAAmB,GAAG,YAAY,CAAC;SAFhD,eAAe;AA4Q5B;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAA4B;IAE5B,OAAO,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC"}
@@ -78,6 +78,8 @@ export declare class ExecutionValidator {
78
78
  validate(data: unknown, filePath?: string): ExecutionValidationResult;
79
79
  /**
80
80
  * Validate and throw if invalid
81
+ *
82
+ * Returns converted ExecutionData (OTLP format is automatically converted)
81
83
  */
82
84
  validateOrThrow(data: unknown, filePath?: string): ExecutionData;
83
85
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionValidator.d.ts","sourceRoot":"","sources":["../../src/execution/ExecutionValidator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,0BAA0B,EAK3B,MAAM,gEAAgE,CAAC;AAOxE;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,0BAA0B,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,MAAM,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACrC,CAAC,CAAC;KACJ,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAqFD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,CAwExE;AAcD;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,yBAAyB;IAsRrE;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa;IAehE;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,yBAAyB,GAAG,MAAM;CAkCxD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,kBAAkB,CAE7D"}
1
+ {"version":3,"file":"ExecutionValidator.d.ts","sourceRoot":"","sources":["../../src/execution/ExecutionValidator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,0BAA0B,EAK3B,MAAM,gEAAgE,CAAC;AAOxE;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,0BAA0B,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,MAAM,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACrC,CAAC,CAAC;KACJ,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAqFD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,CAwExE;AAcD;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,yBAAyB;IAsRrE;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa;IAoBhE;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,yBAAyB,GAAG,MAAM;CAkCxD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,kBAAkB,CAE7D"}
@@ -438,6 +438,8 @@ export class ExecutionValidator {
438
438
  }
439
439
  /**
440
440
  * Validate and throw if invalid
441
+ *
442
+ * Returns converted ExecutionData (OTLP format is automatically converted)
441
443
  */
442
444
  validateOrThrow(data, filePath) {
443
445
  const result = this.validate(data, filePath);
@@ -445,6 +447,10 @@ export class ExecutionValidator {
445
447
  const errorMessages = result.errors.map((e) => `${e.path}: ${e.message}${e.suggestion ? ` (${e.suggestion})` : ''}`);
446
448
  throw new Error(`Invalid execution data:\n${errorMessages.join('\n')}`);
447
449
  }
450
+ // Convert OTLP format if needed
451
+ if (isOtlpFormat(data)) {
452
+ return convertOtlpToExecutionData(data);
453
+ }
448
454
  return data;
449
455
  }
450
456
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionValidator.js","sourceRoot":"","sources":["../../src/execution/ExecutionValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExecutionValidator.js","sourceRoot":"","sources":["../../src/execution/ExecutionValidator.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -44,4 +44,6 @@ export { CanvasDiscovery } from './discovery/CanvasDiscovery';
44
44
  export type { DiscoveredCanvas, DiscoveredExecution, CanvasDiscoveryResult, DiscoveryOptions, CanvasType, ExecutionType, DiscoveredCanvasWithContent, DiscoveredExecutionWithContent, CanvasDiscoveryResultWithContent, } from './discovery/types';
45
45
  export { ExecutionValidator, createExecutionValidator } from './execution/ExecutionValidator';
46
46
  export type { ExecutionData, ValidationError, ExecutionValidationResult, } from './execution/ExecutionValidator';
47
+ export { ExecutionLoader, createExecutionLoader } from './execution/ExecutionLoader';
48
+ export type { ExecutionFile, ExecutionLoadResult, } from './execution/ExecutionLoader';
47
49
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -45,4 +45,6 @@ export { renderNarrative, parseTemplate, evaluateExpression, selectScenario, mat
45
45
  export { CanvasDiscovery } from './discovery/CanvasDiscovery';
46
46
  // Export execution validation
47
47
  export { ExecutionValidator, createExecutionValidator } from './execution/ExecutionValidator';
48
+ // Export execution loading
49
+ export { ExecutionLoader, createExecutionLoader } from './execution/ExecutionLoader';
48
50
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mBAAmB;AACnB,cAAc,SAAS,CAAC;AAExB,sBAAsB;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAMlE,iBAAiB;AACjB,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAElF,iDAAiD;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,wBAAwB;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,oCAAoC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,oCAAoC;AACpC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAG3G,qCAAqC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,yBAAyB;AACzB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGjG,oCAAoC;AACpC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAQzE,qDAAqD;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAYlD,gCAAgC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAqB9D,+DAA+D;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAGtF,mCAAmC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAK5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,sBAAsB;AACtB,cAAc,SAAS,CAAC;AAExB,mCAAmC;AACnC,OAAO,EACL,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAsBrB,wCAAwC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAa9D,8BAA8B;AAC9B,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mBAAmB;AACnB,cAAc,SAAS,CAAC;AAExB,sBAAsB;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAMlE,iBAAiB;AACjB,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAElF,iDAAiD;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,wBAAwB;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,oCAAoC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,oCAAoC;AACpC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAG3G,qCAAqC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,yBAAyB;AACzB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGjG,oCAAoC;AACpC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAQzE,qDAAqD;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAYlD,gCAAgC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAqB9D,+DAA+D;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAGtF,mCAAmC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAK5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,sBAAsB;AACtB,cAAc,SAAS,CAAC;AAExB,mCAAmC;AACnC,OAAO,EACL,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAsBrB,wCAAwC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAa9D,8BAA8B;AAC9B,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAO9F,2BAA2B;AAC3B,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@principal-ai/principal-view-core",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "description": "Core logic and types for graph-based principal view framework",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -0,0 +1,378 @@
1
+ import { describe, expect, test } from 'bun:test';
2
+ import { ExecutionLoader, createExecutionLoader } from './ExecutionLoader';
3
+ import type { FileSystemAdapter } from '@principal-ai/repository-abstraction';
4
+ import type { OtlpData } from './ExecutionValidator';
5
+
6
+ // Mock file system adapter
7
+ class MockFileSystemAdapter implements FileSystemAdapter {
8
+ private files: Map<string, string> = new Map();
9
+ private dirs: Set<string> = new Set();
10
+
11
+ constructor() {
12
+ // Set up directory structure
13
+ this.dirs.add('/project');
14
+ this.dirs.add('/project/__executions__');
15
+ }
16
+
17
+ addFile(path: string, content: string) {
18
+ this.files.set(path, content);
19
+ }
20
+
21
+ addDirectory(path: string) {
22
+ this.dirs.add(path);
23
+ }
24
+
25
+ exists(path: string): boolean {
26
+ return this.files.has(path) || this.dirs.has(path);
27
+ }
28
+
29
+ isDirectory(path: string): boolean {
30
+ return this.dirs.has(path);
31
+ }
32
+
33
+ readFile(path: string): string {
34
+ const content = this.files.get(path);
35
+ if (!content) {
36
+ throw new Error(`File not found: ${path}`);
37
+ }
38
+ return content;
39
+ }
40
+
41
+ readDir(path: string): string[] {
42
+ if (!this.dirs.has(path)) {
43
+ throw new Error(`Directory not found: ${path}`);
44
+ }
45
+
46
+ const prefix = path.endsWith('/') ? path : `${path}/`;
47
+ const items: Set<string> = new Set();
48
+
49
+ // Add files
50
+ for (const filePath of this.files.keys()) {
51
+ if (filePath.startsWith(prefix)) {
52
+ const relativePath = filePath.substring(prefix.length);
53
+ if (!relativePath.includes('/')) {
54
+ items.add(relativePath);
55
+ }
56
+ }
57
+ }
58
+
59
+ // Add directories
60
+ for (const dirPath of this.dirs) {
61
+ if (dirPath.startsWith(prefix) && dirPath !== path) {
62
+ const relativePath = dirPath.substring(prefix.length);
63
+ const firstSegment = relativePath.split('/')[0];
64
+ if (firstSegment) {
65
+ items.add(firstSegment);
66
+ }
67
+ }
68
+ }
69
+
70
+ return Array.from(items);
71
+ }
72
+
73
+ join(...paths: string[]): string {
74
+ return paths
75
+ .join('/')
76
+ .replace(/\/+/g, '/')
77
+ .replace(/\/\./g, '')
78
+ .replace(/\/[^/]+\/\.\./g, '');
79
+ }
80
+
81
+ resolve(...paths: string[]): string {
82
+ return this.join(...paths);
83
+ }
84
+
85
+ dirname(path: string): string {
86
+ return path.split('/').slice(0, -1).join('/');
87
+ }
88
+
89
+ basename(path: string): string {
90
+ return path.split('/').pop() || '';
91
+ }
92
+
93
+ writeFile(_path: string, _content: string): void {
94
+ // Not implemented
95
+ }
96
+
97
+ copyFile(_src: string, _dest: string): void {
98
+ // Not implemented
99
+ }
100
+
101
+ mkdirSync(_path: string): void {
102
+ // Not implemented
103
+ }
104
+ }
105
+
106
+ describe('ExecutionLoader', () => {
107
+ test('hasExecutionDirectory returns true when __executions__/ exists', () => {
108
+ const fsAdapter = new MockFileSystemAdapter();
109
+ const loader = new ExecutionLoader(fsAdapter);
110
+
111
+ expect(loader.hasExecutionDirectory('/project')).toBe(true);
112
+ });
113
+
114
+ test('hasExecutionDirectory returns false when __executions__/ does not exist', () => {
115
+ const fsAdapter = new MockFileSystemAdapter();
116
+ const loader = new ExecutionLoader(fsAdapter);
117
+
118
+ expect(loader.hasExecutionDirectory('/other')).toBe(false);
119
+ });
120
+
121
+ test('listExecutions returns execution names', () => {
122
+ const fsAdapter = new MockFileSystemAdapter();
123
+ fsAdapter.addFile(
124
+ '/project/__executions__/test-run.otel.json',
125
+ JSON.stringify({ spans: [] })
126
+ );
127
+ fsAdapter.addFile(
128
+ '/project/__executions__/feature-test.otel.json',
129
+ JSON.stringify({ spans: [] })
130
+ );
131
+
132
+ const loader = new ExecutionLoader(fsAdapter);
133
+ const executions = loader.listExecutions('/project');
134
+
135
+ expect(executions).toEqual(['feature-test', 'test-run']);
136
+ });
137
+
138
+ test('listExecutions ignores non-.otel.json files', () => {
139
+ const fsAdapter = new MockFileSystemAdapter();
140
+ fsAdapter.addFile(
141
+ '/project/__executions__/test-run.otel.json',
142
+ JSON.stringify({ spans: [] })
143
+ );
144
+ fsAdapter.addFile('/project/__executions__/README.md', '# README');
145
+
146
+ const loader = new ExecutionLoader(fsAdapter);
147
+ const executions = loader.listExecutions('/project');
148
+
149
+ expect(executions).toEqual(['test-run']);
150
+ });
151
+
152
+ test('loadByName loads valid execution with flattened format', () => {
153
+ const fsAdapter = new MockFileSystemAdapter();
154
+ const executionData = {
155
+ metadata: {
156
+ serviceName: 'test-service',
157
+ exportedAt: '2024-01-01T00:00:00Z',
158
+ },
159
+ spans: [
160
+ {
161
+ id: 'span-1',
162
+ name: 'test-span',
163
+ startTime: 1000,
164
+ endTime: 2000,
165
+ duration: 1000,
166
+ status: 'OK',
167
+ attributes: {},
168
+ events: [],
169
+ },
170
+ ],
171
+ };
172
+
173
+ fsAdapter.addFile(
174
+ '/project/__executions__/test-run.otel.json',
175
+ JSON.stringify(executionData)
176
+ );
177
+
178
+ const loader = new ExecutionLoader(fsAdapter);
179
+ const result = loader.loadByName('test-run', '/project');
180
+
181
+ expect(result).not.toBeNull();
182
+ expect(result?.name).toBe('test-run');
183
+ expect(result?.data.spans).toHaveLength(1);
184
+ expect(result?.data.spans[0].name).toBe('test-span');
185
+ });
186
+
187
+ test('loadByName loads and converts OTLP format', () => {
188
+ const fsAdapter = new MockFileSystemAdapter();
189
+ const otlpData: OtlpData = {
190
+ resourceSpans: [
191
+ {
192
+ resource: {
193
+ attributes: [
194
+ {
195
+ key: 'service.name',
196
+ value: { stringValue: 'test-service' },
197
+ },
198
+ ],
199
+ droppedAttributesCount: 0,
200
+ },
201
+ scopeSpans: [
202
+ {
203
+ scope: {
204
+ name: 'test-tracer',
205
+ version: '1.0.0',
206
+ },
207
+ spans: [
208
+ {
209
+ traceId: '4bf92f3577b34da6a3ce929d0e0e4736',
210
+ spanId: '00f067aa0ba902b7',
211
+ name: 'test.operation',
212
+ kind: 1,
213
+ startTimeUnixNano: '1000000000',
214
+ endTimeUnixNano: '2000000000',
215
+ attributes: [],
216
+ events: [],
217
+ status: { code: 1 },
218
+ droppedAttributesCount: 0,
219
+ droppedEventsCount: 0,
220
+ droppedLinksCount: 0,
221
+ links: [],
222
+ },
223
+ ],
224
+ },
225
+ ],
226
+ },
227
+ ],
228
+ };
229
+
230
+ fsAdapter.addFile(
231
+ '/project/__executions__/otlp-test.otel.json',
232
+ JSON.stringify(otlpData)
233
+ );
234
+
235
+ const loader = new ExecutionLoader(fsAdapter);
236
+ const result = loader.loadByName('otlp-test', '/project');
237
+
238
+ expect(result).not.toBeNull();
239
+ expect(result?.name).toBe('otlp-test');
240
+ expect(result?.data.spans).toHaveLength(1);
241
+ expect(result?.data.spans[0].name).toBe('test.operation');
242
+ expect(result?.data.spans[0].id).toBe('00f067aa0ba902b7');
243
+ expect(result?.data.metadata?.serviceName).toBe('test-service');
244
+ });
245
+
246
+ test('loadByName returns null for non-existent execution', () => {
247
+ const fsAdapter = new MockFileSystemAdapter();
248
+ const loader = new ExecutionLoader(fsAdapter);
249
+
250
+ const result = loader.loadByName('non-existent', '/project');
251
+
252
+ expect(result).toBeNull();
253
+ });
254
+
255
+ test('loadByName returns null for invalid JSON', () => {
256
+ const fsAdapter = new MockFileSystemAdapter();
257
+ fsAdapter.addFile(
258
+ '/project/__executions__/invalid.otel.json',
259
+ 'invalid json{'
260
+ );
261
+
262
+ const loader = new ExecutionLoader(fsAdapter);
263
+ const result = loader.loadByName('invalid', '/project');
264
+
265
+ expect(result).toBeNull();
266
+ });
267
+
268
+ test('loadAll loads all valid executions', () => {
269
+ const fsAdapter = new MockFileSystemAdapter();
270
+ fsAdapter.addFile(
271
+ '/project/__executions__/test-1.otel.json',
272
+ JSON.stringify({ spans: [{ id: '1', name: 'span1', events: [] }] })
273
+ );
274
+ fsAdapter.addFile(
275
+ '/project/__executions__/test-2.otel.json',
276
+ JSON.stringify({ spans: [{ id: '2', name: 'span2', events: [] }] })
277
+ );
278
+
279
+ const loader = new ExecutionLoader(fsAdapter);
280
+ const result = loader.loadAll('/project');
281
+
282
+ expect(result.executions).toHaveLength(2);
283
+ expect(result.errors).toHaveLength(0);
284
+ expect(result.executions[0].name).toBe('test-1');
285
+ expect(result.executions[1].name).toBe('test-2');
286
+ });
287
+
288
+ test('loadAll reports errors for invalid files', () => {
289
+ const fsAdapter = new MockFileSystemAdapter();
290
+ fsAdapter.addFile(
291
+ '/project/__executions__/valid.otel.json',
292
+ JSON.stringify({ spans: [{ id: '1', name: 'span1', events: [] }] })
293
+ );
294
+ fsAdapter.addFile(
295
+ '/project/__executions__/invalid.otel.json',
296
+ 'invalid json{'
297
+ );
298
+
299
+ const loader = new ExecutionLoader(fsAdapter);
300
+ const result = loader.loadAll('/project');
301
+
302
+ expect(result.executions).toHaveLength(1);
303
+ expect(result.errors).toHaveLength(1);
304
+ expect(result.errors[0].file).toBe('invalid.otel.json');
305
+ });
306
+
307
+ test('loadAll returns error when __executions__/ does not exist', () => {
308
+ const fsAdapter = new MockFileSystemAdapter();
309
+ const loader = new ExecutionLoader(fsAdapter);
310
+
311
+ const result = loader.loadAll('/non-existent');
312
+
313
+ expect(result.executions).toHaveLength(0);
314
+ expect(result.errors).toHaveLength(1);
315
+ expect(result.errors[0].file).toBe('__executions__');
316
+ });
317
+
318
+ test('getExecutionDirectoryPath returns correct path', () => {
319
+ const fsAdapter = new MockFileSystemAdapter();
320
+ const loader = new ExecutionLoader(fsAdapter);
321
+
322
+ const path = loader.getExecutionDirectoryPath('/project');
323
+
324
+ expect(path).toBe('/project/__executions__');
325
+ });
326
+
327
+ test('findExecutionDirectories finds nested __executions__/ folders', () => {
328
+ const fsAdapter = new MockFileSystemAdapter();
329
+ fsAdapter.addDirectory('/project/packages');
330
+ fsAdapter.addDirectory('/project/packages/core');
331
+ fsAdapter.addDirectory('/project/packages/core/__executions__');
332
+ fsAdapter.addDirectory('/project/packages/cli');
333
+ fsAdapter.addDirectory('/project/packages/cli/__executions__');
334
+
335
+ const loader = new ExecutionLoader(fsAdapter);
336
+ const dirs = loader.findExecutionDirectories('/project');
337
+
338
+ expect(dirs).toHaveLength(3); // root + core + cli
339
+ expect(dirs).toContain('/project/__executions__');
340
+ expect(dirs).toContain('/project/packages/core/__executions__');
341
+ expect(dirs).toContain('/project/packages/cli/__executions__');
342
+ });
343
+
344
+ test('loadAllRecursive loads executions from multiple directories', () => {
345
+ const fsAdapter = new MockFileSystemAdapter();
346
+
347
+ // Root executions
348
+ fsAdapter.addFile(
349
+ '/project/__executions__/root-test.otel.json',
350
+ JSON.stringify({ spans: [{ id: '1', name: 'root', events: [] }] })
351
+ );
352
+
353
+ // Package executions
354
+ fsAdapter.addDirectory('/project/packages');
355
+ fsAdapter.addDirectory('/project/packages/core');
356
+ fsAdapter.addDirectory('/project/packages/core/__executions__');
357
+ fsAdapter.addFile(
358
+ '/project/packages/core/__executions__/core-test.otel.json',
359
+ JSON.stringify({ spans: [{ id: '2', name: 'core', events: [] }] })
360
+ );
361
+
362
+ const loader = new ExecutionLoader(fsAdapter);
363
+ const result = loader.loadAllRecursive('/project');
364
+
365
+ expect(result.executions).toHaveLength(2);
366
+ expect(result.executions.map((e) => e.name)).toContain('root-test');
367
+ expect(result.executions.map((e) => e.name)).toContain('core-test');
368
+ });
369
+ });
370
+
371
+ describe('createExecutionLoader', () => {
372
+ test('creates ExecutionLoader instance', () => {
373
+ const fsAdapter = new MockFileSystemAdapter();
374
+ const loader = createExecutionLoader(fsAdapter);
375
+
376
+ expect(loader).toBeInstanceOf(ExecutionLoader);
377
+ });
378
+ });
@@ -0,0 +1,332 @@
1
+ /**
2
+ * Execution loader for managing execution artifact files
3
+ *
4
+ * Supports loading execution files (.otel.json) from __executions__/ folders
5
+ * using the adapter pattern for environment-agnostic file operations.
6
+ *
7
+ * Automatically handles both OTLP standard format and legacy formats
8
+ * through ExecutionValidator conversion.
9
+ */
10
+
11
+ import type { FileSystemAdapter } from '@principal-ai/repository-abstraction';
12
+ import { ExecutionValidator, type ExecutionData } from './ExecutionValidator';
13
+
14
+ /**
15
+ * Represents a single execution file
16
+ */
17
+ export interface ExecutionFile {
18
+ /** Execution name (filename without .otel.json extension) */
19
+ name: string;
20
+ /** Full path to the execution file */
21
+ path: string;
22
+ /** Parsed and validated execution data */
23
+ data: ExecutionData;
24
+ }
25
+
26
+ /**
27
+ * Result of loading all executions
28
+ */
29
+ export interface ExecutionLoadResult {
30
+ /** Successfully loaded executions */
31
+ executions: ExecutionFile[];
32
+ /** Errors encountered during loading */
33
+ errors: Array<{ file: string; error: string }>;
34
+ }
35
+
36
+ /**
37
+ * Loader for managing execution artifact files from __executions__/ folders
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const loader = new ExecutionLoader(fsAdapter);
42
+ *
43
+ * // Check if __executions__/ exists
44
+ * if (loader.hasExecutionDirectory('/path/to/project')) {
45
+ * // Load all execution files
46
+ * const result = loader.loadAll('/path/to/project');
47
+ * console.log(`Loaded ${result.executions.length} executions`);
48
+ *
49
+ * // Load specific execution
50
+ * const execution = loader.loadByName('test-run', '/path/to/project');
51
+ * }
52
+ * ```
53
+ */
54
+ export class ExecutionLoader {
55
+ private static readonly EXECUTION_DIR = '__executions__';
56
+ private static readonly EXECUTION_EXTENSION = '.otel.json';
57
+ private validator: ExecutionValidator;
58
+
59
+ constructor(private fsAdapter: FileSystemAdapter) {
60
+ this.validator = new ExecutionValidator();
61
+ }
62
+
63
+ /**
64
+ * Check if __executions__/ directory exists
65
+ *
66
+ * @param baseDir - Base directory to search from
67
+ * @returns True if __executions__/ directory exists
68
+ */
69
+ hasExecutionDirectory(baseDir: string): boolean {
70
+ const executionPath = this.fsAdapter.join(
71
+ baseDir,
72
+ ExecutionLoader.EXECUTION_DIR
73
+ );
74
+ return (
75
+ this.fsAdapter.exists(executionPath) &&
76
+ this.fsAdapter.isDirectory(executionPath)
77
+ );
78
+ }
79
+
80
+ /**
81
+ * List all available execution names in __executions__/ folder
82
+ *
83
+ * @param baseDir - Base directory containing __executions__/ folder
84
+ * @returns Array of execution names (without .otel.json extensions)
85
+ */
86
+ listExecutions(baseDir: string): string[] {
87
+ if (!this.hasExecutionDirectory(baseDir)) {
88
+ return [];
89
+ }
90
+
91
+ const executionPath = this.fsAdapter.join(
92
+ baseDir,
93
+ ExecutionLoader.EXECUTION_DIR
94
+ );
95
+ const files = this.fsAdapter.readDir(executionPath);
96
+
97
+ return files
98
+ .filter((f) => this.isExecutionFile(f))
99
+ .map((f) => this.getExecutionNameFromFilename(f))
100
+ .sort();
101
+ }
102
+
103
+ /**
104
+ * Load a specific execution by name
105
+ *
106
+ * Automatically handles OTLP format conversion through ExecutionValidator.
107
+ *
108
+ * @param name - Execution name (without .otel.json extension)
109
+ * @param baseDir - Base directory containing __executions__/ folder
110
+ * @returns Execution file or null if not found/invalid
111
+ */
112
+ loadByName(name: string, baseDir: string): ExecutionFile | null {
113
+ if (!this.hasExecutionDirectory(baseDir)) {
114
+ return null;
115
+ }
116
+
117
+ const executionPath = this.fsAdapter.join(
118
+ baseDir,
119
+ ExecutionLoader.EXECUTION_DIR
120
+ );
121
+ const filename = `${name}${ExecutionLoader.EXECUTION_EXTENSION}`;
122
+ const fullPath = this.fsAdapter.join(executionPath, filename);
123
+
124
+ if (!this.fsAdapter.exists(fullPath)) {
125
+ return null;
126
+ }
127
+
128
+ try {
129
+ const content = this.fsAdapter.readFile(fullPath);
130
+ const parsed = JSON.parse(content);
131
+
132
+ // Use validateOrThrow to both validate and get converted ExecutionData
133
+ const data = this.validator.validateOrThrow(parsed, fullPath);
134
+
135
+ return {
136
+ name,
137
+ path: fullPath,
138
+ data,
139
+ };
140
+ } catch (error) {
141
+ // File exists but couldn't be read, parsed, or validated
142
+ return null;
143
+ }
144
+ }
145
+
146
+ /**
147
+ * Load all executions from __executions__/ folder
148
+ *
149
+ * Automatically handles OTLP format conversion for all files.
150
+ *
151
+ * @param baseDir - Base directory containing __executions__/ folder
152
+ * @returns Result containing all loaded executions and any errors
153
+ */
154
+ loadAll(baseDir: string): ExecutionLoadResult {
155
+ const result: ExecutionLoadResult = {
156
+ executions: [],
157
+ errors: [],
158
+ };
159
+
160
+ if (!this.hasExecutionDirectory(baseDir)) {
161
+ result.errors.push({
162
+ file: '__executions__',
163
+ error: 'Execution directory __executions__/ not found',
164
+ });
165
+ return result;
166
+ }
167
+
168
+ const executionPath = this.fsAdapter.join(
169
+ baseDir,
170
+ ExecutionLoader.EXECUTION_DIR
171
+ );
172
+ const files = this.fsAdapter.readDir(executionPath);
173
+
174
+ for (const filename of files) {
175
+ if (!this.isExecutionFile(filename)) {
176
+ continue; // Skip non-.otel.json files
177
+ }
178
+
179
+ const fullPath = this.fsAdapter.join(executionPath, filename);
180
+ const name = this.getExecutionNameFromFilename(filename);
181
+
182
+ try {
183
+ const content = this.fsAdapter.readFile(fullPath);
184
+ const parsed = JSON.parse(content);
185
+
186
+ // Validate and convert OTLP format if needed
187
+ const validationResult = this.validator.validate(parsed, fullPath);
188
+
189
+ if (validationResult.valid) {
190
+ // Use validateOrThrow to get converted ExecutionData
191
+ const data = this.validator.validateOrThrow(parsed, fullPath);
192
+
193
+ result.executions.push({
194
+ name,
195
+ path: fullPath,
196
+ data,
197
+ });
198
+ } else {
199
+ // Collect validation errors
200
+ const errorMessages = validationResult.errors
201
+ .map((e) => `${e.path}: ${e.message}`)
202
+ .join('; ');
203
+ result.errors.push({
204
+ file: filename,
205
+ error: `Validation failed: ${errorMessages}`,
206
+ });
207
+ }
208
+ } catch (error) {
209
+ const errorMessage =
210
+ error instanceof Error ? error.message : String(error);
211
+ result.errors.push({
212
+ file: filename,
213
+ error: `Failed to read/parse file: ${errorMessage}`,
214
+ });
215
+ }
216
+ }
217
+
218
+ // Sort executions by name for consistent ordering
219
+ result.executions.sort((a, b) => a.name.localeCompare(b.name));
220
+
221
+ return result;
222
+ }
223
+
224
+ /**
225
+ * Get the execution directory path
226
+ *
227
+ * @param baseDir - Base directory
228
+ * @returns Full path to __executions__/ directory
229
+ */
230
+ getExecutionDirectoryPath(baseDir: string): string {
231
+ return this.fsAdapter.join(baseDir, ExecutionLoader.EXECUTION_DIR);
232
+ }
233
+
234
+ /**
235
+ * Search for __executions__/ directories recursively in a project
236
+ *
237
+ * Useful for monorepos where executions might be in multiple packages.
238
+ *
239
+ * @param baseDir - Base directory to search from
240
+ * @param maxDepth - Maximum directory depth to search (default: 3)
241
+ * @returns Array of paths to __executions__/ directories
242
+ */
243
+ findExecutionDirectories(baseDir: string, maxDepth: number = 3): string[] {
244
+ const found: string[] = [];
245
+
246
+ const search = (dir: string, depth: number) => {
247
+ if (depth > maxDepth) return;
248
+
249
+ try {
250
+ const items = this.fsAdapter.readDir(dir);
251
+
252
+ for (const item of items) {
253
+ const fullPath = this.fsAdapter.join(dir, item);
254
+
255
+ if (!this.fsAdapter.isDirectory(fullPath)) continue;
256
+
257
+ // Skip node_modules and hidden directories
258
+ if (item === 'node_modules' || item.startsWith('.')) continue;
259
+
260
+ if (item === ExecutionLoader.EXECUTION_DIR) {
261
+ found.push(fullPath);
262
+ } else {
263
+ search(fullPath, depth + 1);
264
+ }
265
+ }
266
+ } catch (error) {
267
+ // Skip directories we can't read
268
+ }
269
+ };
270
+
271
+ search(baseDir, 0);
272
+ return found;
273
+ }
274
+
275
+ /**
276
+ * Load all executions from multiple __executions__/ directories
277
+ *
278
+ * Useful for monorepos where executions are spread across packages.
279
+ *
280
+ * @param baseDir - Base directory to search from
281
+ * @param maxDepth - Maximum directory depth to search (default: 3)
282
+ * @returns Result containing all loaded executions and any errors
283
+ */
284
+ loadAllRecursive(baseDir: string, maxDepth: number = 3): ExecutionLoadResult {
285
+ const result: ExecutionLoadResult = {
286
+ executions: [],
287
+ errors: [],
288
+ };
289
+
290
+ const directories = this.findExecutionDirectories(baseDir, maxDepth);
291
+
292
+ for (const execDir of directories) {
293
+ // Get parent directory for loadAll
294
+ const parentDir = this.fsAdapter.dirname(execDir);
295
+ const dirResult = this.loadAll(parentDir);
296
+
297
+ result.executions.push(...dirResult.executions);
298
+ result.errors.push(...dirResult.errors);
299
+ }
300
+
301
+ // Sort by name
302
+ result.executions.sort((a, b) => a.name.localeCompare(b.name));
303
+
304
+ return result;
305
+ }
306
+
307
+ /**
308
+ * Check if a filename is an execution file
309
+ */
310
+ private isExecutionFile(filename: string): boolean {
311
+ return filename.endsWith(ExecutionLoader.EXECUTION_EXTENSION);
312
+ }
313
+
314
+ /**
315
+ * Extract execution name from filename
316
+ */
317
+ private getExecutionNameFromFilename(filename: string): string {
318
+ return filename.replace(ExecutionLoader.EXECUTION_EXTENSION, '');
319
+ }
320
+ }
321
+
322
+ /**
323
+ * Create a new execution loader instance
324
+ *
325
+ * @param fsAdapter - File system adapter for environment-agnostic operations
326
+ * @returns ExecutionLoader instance
327
+ */
328
+ export function createExecutionLoader(
329
+ fsAdapter: FileSystemAdapter
330
+ ): ExecutionLoader {
331
+ return new ExecutionLoader(fsAdapter);
332
+ }
@@ -540,6 +540,8 @@ export class ExecutionValidator {
540
540
 
541
541
  /**
542
542
  * Validate and throw if invalid
543
+ *
544
+ * Returns converted ExecutionData (OTLP format is automatically converted)
543
545
  */
544
546
  validateOrThrow(data: unknown, filePath?: string): ExecutionData {
545
547
  const result = this.validate(data, filePath);
@@ -553,6 +555,11 @@ export class ExecutionValidator {
553
555
  );
554
556
  }
555
557
 
558
+ // Convert OTLP format if needed
559
+ if (isOtlpFormat(data)) {
560
+ return convertOtlpToExecutionData(data);
561
+ }
562
+
556
563
  return data as ExecutionData;
557
564
  }
558
565
 
package/src/index.ts CHANGED
@@ -165,3 +165,10 @@ export type {
165
165
  ValidationError,
166
166
  ExecutionValidationResult,
167
167
  } from './execution/ExecutionValidator';
168
+
169
+ // Export execution loading
170
+ export { ExecutionLoader, createExecutionLoader } from './execution/ExecutionLoader';
171
+ export type {
172
+ ExecutionFile,
173
+ ExecutionLoadResult,
174
+ } from './execution/ExecutionLoader';