@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.
- package/dist/execution/ExecutionLoader.d.ts +135 -0
- package/dist/execution/ExecutionLoader.d.ts.map +1 -0
- package/dist/execution/ExecutionLoader.js +260 -0
- package/dist/execution/ExecutionLoader.js.map +1 -0
- package/dist/execution/ExecutionValidator.d.ts +2 -0
- package/dist/execution/ExecutionValidator.d.ts.map +1 -1
- package/dist/execution/ExecutionValidator.js +6 -0
- package/dist/execution/ExecutionValidator.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/execution/ExecutionLoader.test.ts +378 -0
- package/src/execution/ExecutionLoader.ts +332 -0
- package/src/execution/ExecutionValidator.ts +7 -0
- package/src/index.ts +7 -0
|
@@ -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
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
@@ -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';
|