@principal-ai/principal-view-core 0.5.16 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/telemetry/coverage.d.ts +38 -0
- package/dist/telemetry/coverage.d.ts.map +1 -0
- package/dist/telemetry/coverage.js +113 -0
- package/dist/telemetry/coverage.js.map +1 -0
- package/dist/utils/ExecutionFileDiscovery.d.ts +205 -0
- package/dist/utils/ExecutionFileDiscovery.d.ts.map +1 -0
- package/dist/utils/ExecutionFileDiscovery.js +339 -0
- package/dist/utils/ExecutionFileDiscovery.js.map +1 -0
- package/package.json +2 -1
- package/src/index.ts +17 -0
- package/src/telemetry/coverage.ts +162 -0
- package/src/utils/ExecutionFileDiscovery.ts +521 -0
- package/src/utils/GraphConverter.test.ts +79 -0
package/dist/index.d.ts
CHANGED
|
@@ -13,11 +13,15 @@ export { PathBasedEventProcessor } from './PathBasedEventProcessor';
|
|
|
13
13
|
export type { LogEntry } from './PathBasedEventProcessor';
|
|
14
14
|
export { PathMatcher } from './utils/PathMatcher';
|
|
15
15
|
export { GraphConverter } from './utils/GraphConverter';
|
|
16
|
+
export { ExecutionFileDiscovery } from './utils/ExecutionFileDiscovery';
|
|
17
|
+
export type { ExecutionFile, CanvasFile, PackageContext, ExecutionMetadata, ExecutionSpan, ExecutionArtifact, FileTreeEntry, DiscoveryOptions, } from './utils/ExecutionFileDiscovery';
|
|
16
18
|
export * from './types/canvas';
|
|
17
19
|
export { CanvasConverter } from './utils/CanvasConverter';
|
|
18
20
|
export type { ReactFlowNode, ReactFlowEdge } from './utils/CanvasConverter';
|
|
19
21
|
export { EventValidator, createValidatedEmitter, EventValidationError } from './telemetry/event-validator';
|
|
20
22
|
export type { ValidationResult } from './telemetry/event-validator';
|
|
23
|
+
export { analyzeCoverage } from './telemetry/coverage';
|
|
24
|
+
export type { CoverageMetrics, NodeCoverage, CanvasNode as CoverageCanvasNode } from './telemetry/coverage';
|
|
21
25
|
export { generateTypes, TypeScriptGenerator, generatorRegistry } from './codegen/type-generator';
|
|
22
26
|
export type { CodegenOptions, CodegenResult, CodeGenerator } from './codegen/type-generator';
|
|
23
27
|
export { traceToCanvas, traceToCanvasJson } from './utils/TraceToCanvas';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EACV,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAGlF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG5E,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC3G,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACjG,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG7F,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACzE,YAAY,EACV,SAAS,EACT,WAAW,EACX,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,aAAa,EACb,aAAa,EACb,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,WAAW,EACX,WAAW,EACX,YAAY,EACZ,UAAU,EACV,eAAe,EACf,eAAe,EACf,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACtF,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGrF,YAAY,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAGjF,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -15,11 +15,15 @@ export { PathBasedEventProcessor } from './PathBasedEventProcessor';
|
|
|
15
15
|
// Export path utilities
|
|
16
16
|
export { PathMatcher } from './utils/PathMatcher';
|
|
17
17
|
export { GraphConverter } from './utils/GraphConverter';
|
|
18
|
+
// Export execution file discovery
|
|
19
|
+
export { ExecutionFileDiscovery } from './utils/ExecutionFileDiscovery';
|
|
18
20
|
// Export Canvas types and converter
|
|
19
21
|
export * from './types/canvas';
|
|
20
22
|
export { CanvasConverter } from './utils/CanvasConverter';
|
|
21
23
|
// Export telemetry event validation
|
|
22
24
|
export { EventValidator, createValidatedEmitter, EventValidationError } from './telemetry/event-validator';
|
|
25
|
+
// Export telemetry coverage analysis
|
|
26
|
+
export { analyzeCoverage } from './telemetry/coverage';
|
|
23
27
|
// Export code generation
|
|
24
28
|
export { generateTypes, TypeScriptGenerator, generatorRegistry } from './codegen/type-generator';
|
|
25
29
|
// Export trace-to-canvas conversion
|
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,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"}
|
|
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,kCAAkC;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAYxE,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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telemetry Coverage Analysis
|
|
3
|
+
*
|
|
4
|
+
* Measures observability coverage by analyzing which canvas nodes have
|
|
5
|
+
* OpenTelemetry instrumentation in their source files.
|
|
6
|
+
*/
|
|
7
|
+
export interface CanvasNode {
|
|
8
|
+
id: string;
|
|
9
|
+
text?: string;
|
|
10
|
+
anchors?: Array<{
|
|
11
|
+
path?: string;
|
|
12
|
+
}>;
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
}
|
|
15
|
+
export interface Canvas {
|
|
16
|
+
nodes?: CanvasNode[];
|
|
17
|
+
[key: string]: any;
|
|
18
|
+
}
|
|
19
|
+
export interface NodeCoverage {
|
|
20
|
+
nodeId: string;
|
|
21
|
+
filePaths: string[];
|
|
22
|
+
hasInstrumentation: boolean;
|
|
23
|
+
instrumentedFiles: string[];
|
|
24
|
+
missingFiles: string[];
|
|
25
|
+
}
|
|
26
|
+
export interface CoverageMetrics {
|
|
27
|
+
totalNodes: number;
|
|
28
|
+
nodesWithFiles: number;
|
|
29
|
+
nodesWithInstrumentation: number;
|
|
30
|
+
coveragePercentage: number;
|
|
31
|
+
nodeCoverage: NodeCoverage[];
|
|
32
|
+
canvasFiles: string[];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Generate telemetry coverage report from canvas files
|
|
36
|
+
*/
|
|
37
|
+
export declare function analyzeCoverage(rootDir: string): Promise<CoverageMetrics>;
|
|
38
|
+
//# sourceMappingURL=coverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../../src/telemetry/coverage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB,EAAE,MAAM,CAAC;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAmFD;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAqC/E"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telemetry Coverage Analysis
|
|
3
|
+
*
|
|
4
|
+
* Measures observability coverage by analyzing which canvas nodes have
|
|
5
|
+
* OpenTelemetry instrumentation in their source files.
|
|
6
|
+
*/
|
|
7
|
+
import { readFile, access } from 'fs/promises';
|
|
8
|
+
import { resolve } from 'path';
|
|
9
|
+
import { glob } from 'glob';
|
|
10
|
+
/**
|
|
11
|
+
* Extract file paths from a canvas node anchors (REQUIRED)
|
|
12
|
+
*/
|
|
13
|
+
function extractFilePaths(node) {
|
|
14
|
+
const paths = [];
|
|
15
|
+
if (node.anchors) {
|
|
16
|
+
for (const anchor of node.anchors) {
|
|
17
|
+
if (anchor.path) {
|
|
18
|
+
paths.push(anchor.path);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return paths;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Check if a file has OpenTelemetry instrumentation
|
|
26
|
+
*/
|
|
27
|
+
async function hasInstrumentation(filePath) {
|
|
28
|
+
try {
|
|
29
|
+
const content = await readFile(filePath, 'utf-8');
|
|
30
|
+
const hasOtelImport = content.includes('@opentelemetry/api');
|
|
31
|
+
const hasTracer = /getTracer|startSpan|addEvent/.test(content);
|
|
32
|
+
const hasTestOtel = /['"]\.\.?\/.*test\/otel-setup['"]/.test(content);
|
|
33
|
+
return hasOtelImport || hasTracer || hasTestOtel;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Check if file exists
|
|
41
|
+
*/
|
|
42
|
+
async function fileExists(filePath) {
|
|
43
|
+
try {
|
|
44
|
+
await access(filePath);
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Analyze coverage for a single canvas node
|
|
53
|
+
*/
|
|
54
|
+
async function analyzeNodeCoverage(node, rootDir) {
|
|
55
|
+
const filePaths = extractFilePaths(node);
|
|
56
|
+
const instrumentedFiles = [];
|
|
57
|
+
const missingFiles = [];
|
|
58
|
+
for (const path of filePaths) {
|
|
59
|
+
const fullPath = resolve(rootDir, path);
|
|
60
|
+
const exists = await fileExists(fullPath);
|
|
61
|
+
if (!exists) {
|
|
62
|
+
missingFiles.push(path);
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const instrumented = await hasInstrumentation(fullPath);
|
|
66
|
+
if (instrumented) {
|
|
67
|
+
instrumentedFiles.push(path);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
nodeId: node.id,
|
|
72
|
+
filePaths,
|
|
73
|
+
hasInstrumentation: instrumentedFiles.length > 0,
|
|
74
|
+
instrumentedFiles,
|
|
75
|
+
missingFiles
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Generate telemetry coverage report from canvas files
|
|
80
|
+
*/
|
|
81
|
+
export async function analyzeCoverage(rootDir) {
|
|
82
|
+
const canvasFiles = await glob('**/*.otel.canvas', {
|
|
83
|
+
cwd: rootDir,
|
|
84
|
+
absolute: true,
|
|
85
|
+
dot: true,
|
|
86
|
+
ignore: ['**/node_modules/**']
|
|
87
|
+
});
|
|
88
|
+
const allNodeCoverage = [];
|
|
89
|
+
for (const canvasFile of canvasFiles) {
|
|
90
|
+
const content = await readFile(canvasFile, 'utf-8');
|
|
91
|
+
const canvas = JSON.parse(content);
|
|
92
|
+
if (!canvas.nodes || canvas.nodes.length === 0) {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
for (const node of canvas.nodes) {
|
|
96
|
+
const coverage = await analyzeNodeCoverage(node, rootDir);
|
|
97
|
+
allNodeCoverage.push(coverage);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const nodesWithFiles = allNodeCoverage.filter(n => n.filePaths.length > 0);
|
|
101
|
+
const nodesWithInstrumentation = allNodeCoverage.filter(n => n.hasInstrumentation);
|
|
102
|
+
return {
|
|
103
|
+
totalNodes: allNodeCoverage.length,
|
|
104
|
+
nodesWithFiles: nodesWithFiles.length,
|
|
105
|
+
nodesWithInstrumentation: nodesWithInstrumentation.length,
|
|
106
|
+
coveragePercentage: nodesWithFiles.length > 0
|
|
107
|
+
? (nodesWithInstrumentation.length / nodesWithFiles.length) * 100
|
|
108
|
+
: 0,
|
|
109
|
+
nodeCoverage: allNodeCoverage,
|
|
110
|
+
canvasFiles: canvasFiles.map(f => f.replace(rootDir + '/', ''))
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage.js","sourceRoot":"","sources":["../../src/telemetry/coverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Execution File Discovery
|
|
3
|
+
*
|
|
4
|
+
* Discovers execution artifacts and canvas files in a repository with monorepo awareness.
|
|
5
|
+
* Uses codebase-composition to intelligently detect package boundaries and workspace patterns.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Represents a discovered execution artifact file
|
|
9
|
+
*/
|
|
10
|
+
export interface ExecutionFile {
|
|
11
|
+
/** Unique identifier for this execution */
|
|
12
|
+
id: string;
|
|
13
|
+
/** Display name for this execution */
|
|
14
|
+
name: string;
|
|
15
|
+
/** Full file path (relative to repository root) */
|
|
16
|
+
path: string;
|
|
17
|
+
/** Canvas basename (without extension) that this execution is linked to */
|
|
18
|
+
canvasBasename: string;
|
|
19
|
+
/** Package context if this execution belongs to a specific package */
|
|
20
|
+
packageContext?: PackageContext;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Represents a discovered canvas file
|
|
24
|
+
*/
|
|
25
|
+
export interface CanvasFile {
|
|
26
|
+
/** Unique identifier for this canvas */
|
|
27
|
+
id: string;
|
|
28
|
+
/** Display name for this canvas */
|
|
29
|
+
name: string;
|
|
30
|
+
/** Full file path (relative to repository root) */
|
|
31
|
+
path: string;
|
|
32
|
+
/** Canvas basename (without .otel.canvas or .canvas extension) */
|
|
33
|
+
basename: string;
|
|
34
|
+
/** Package context if this canvas belongs to a specific package */
|
|
35
|
+
packageContext?: PackageContext;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Package context for execution/canvas files
|
|
39
|
+
*/
|
|
40
|
+
export interface PackageContext {
|
|
41
|
+
/** Package name (from package.json, Cargo.toml, etc.) */
|
|
42
|
+
name: string;
|
|
43
|
+
/** Package directory path (relative to repository root) */
|
|
44
|
+
packagePath: string;
|
|
45
|
+
/** Package type (npm, cargo, go, etc.) */
|
|
46
|
+
packageType?: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Execution artifact metadata
|
|
50
|
+
*/
|
|
51
|
+
export interface ExecutionMetadata {
|
|
52
|
+
name: string;
|
|
53
|
+
canvasName?: string;
|
|
54
|
+
exportedAt?: string;
|
|
55
|
+
source?: string;
|
|
56
|
+
framework?: string;
|
|
57
|
+
status?: 'success' | 'error' | 'OK';
|
|
58
|
+
spanCount: number;
|
|
59
|
+
eventCount: number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Execution span structure
|
|
63
|
+
*/
|
|
64
|
+
export interface ExecutionSpan {
|
|
65
|
+
id: string;
|
|
66
|
+
name: string;
|
|
67
|
+
startTime: number;
|
|
68
|
+
endTime?: number;
|
|
69
|
+
duration?: number;
|
|
70
|
+
status?: string;
|
|
71
|
+
attributes?: Record<string, any>;
|
|
72
|
+
events: Array<{
|
|
73
|
+
time: number;
|
|
74
|
+
name: string;
|
|
75
|
+
attributes?: Record<string, any>;
|
|
76
|
+
}>;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Execution artifact file structure
|
|
80
|
+
*/
|
|
81
|
+
export interface ExecutionArtifact {
|
|
82
|
+
metadata?: {
|
|
83
|
+
canvasName?: string;
|
|
84
|
+
exportedAt?: string;
|
|
85
|
+
source?: string;
|
|
86
|
+
framework?: string;
|
|
87
|
+
status?: 'success' | 'error';
|
|
88
|
+
};
|
|
89
|
+
spans: ExecutionSpan[];
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* File tree entry for discovery
|
|
93
|
+
*/
|
|
94
|
+
export interface FileTreeEntry {
|
|
95
|
+
path?: string;
|
|
96
|
+
relativePath?: string;
|
|
97
|
+
name?: string;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Options for execution file discovery
|
|
101
|
+
*/
|
|
102
|
+
export interface DiscoveryOptions {
|
|
103
|
+
/** Whether to include package-level .principal-views folders */
|
|
104
|
+
includePackagePrincipalViews?: boolean;
|
|
105
|
+
/** Custom execution folder names (defaults to ['__executions__']) */
|
|
106
|
+
executionFolders?: string[];
|
|
107
|
+
/** Custom canvas extensions (defaults to ['.otel.canvas']) */
|
|
108
|
+
canvasExtensions?: string[];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Execution File Discovery Engine
|
|
112
|
+
*
|
|
113
|
+
* Discovers execution artifacts and canvas files using monorepo-aware logic.
|
|
114
|
+
*/
|
|
115
|
+
export declare class ExecutionFileDiscovery {
|
|
116
|
+
private packageLayerModule;
|
|
117
|
+
private options;
|
|
118
|
+
constructor(options?: DiscoveryOptions);
|
|
119
|
+
/**
|
|
120
|
+
* Find all execution artifact files in the repository
|
|
121
|
+
*/
|
|
122
|
+
findExecutionFiles(files: FileTreeEntry[]): Promise<ExecutionFile[]>;
|
|
123
|
+
/**
|
|
124
|
+
* Find all canvas files in the repository
|
|
125
|
+
*/
|
|
126
|
+
findCanvasFiles(files: FileTreeEntry[]): Promise<CanvasFile[]>;
|
|
127
|
+
/**
|
|
128
|
+
* Find execution artifact for a given canvas
|
|
129
|
+
* Now package-aware - can disambiguate between packages
|
|
130
|
+
*/
|
|
131
|
+
findExecutionForCanvas(canvas: CanvasFile, executionFiles: ExecutionFile[]): ExecutionFile | null;
|
|
132
|
+
/**
|
|
133
|
+
* Find canvas file for a given execution
|
|
134
|
+
*/
|
|
135
|
+
findCanvasForExecution(execution: ExecutionFile, canvasFiles: CanvasFile[]): CanvasFile | null;
|
|
136
|
+
/**
|
|
137
|
+
* Parse execution artifact JSON
|
|
138
|
+
*/
|
|
139
|
+
static parseExecutionArtifact(content: string): ExecutionArtifact;
|
|
140
|
+
/**
|
|
141
|
+
* Get spans from an artifact
|
|
142
|
+
*/
|
|
143
|
+
static getSpans(artifact: ExecutionArtifact): ExecutionSpan[];
|
|
144
|
+
/**
|
|
145
|
+
* Extract metadata from an execution artifact
|
|
146
|
+
*/
|
|
147
|
+
static getExecutionMetadata(artifact: ExecutionArtifact): ExecutionMetadata;
|
|
148
|
+
/**
|
|
149
|
+
* Detect packages using codebase-composition
|
|
150
|
+
*/
|
|
151
|
+
private detectPackages;
|
|
152
|
+
/**
|
|
153
|
+
* Convert file entries to file tree format for codebase-composition
|
|
154
|
+
*/
|
|
155
|
+
private convertToFileTree;
|
|
156
|
+
/**
|
|
157
|
+
* Find executions in a specific package
|
|
158
|
+
*/
|
|
159
|
+
private findExecutionsInPackage;
|
|
160
|
+
/**
|
|
161
|
+
* Find executions in root-level locations
|
|
162
|
+
*/
|
|
163
|
+
private findExecutionsInRoot;
|
|
164
|
+
/**
|
|
165
|
+
* Find canvas files in a specific directory
|
|
166
|
+
*/
|
|
167
|
+
private findCanvasesInDirectory;
|
|
168
|
+
/**
|
|
169
|
+
* Create package context from PackageLayer
|
|
170
|
+
*/
|
|
171
|
+
private createPackageContext;
|
|
172
|
+
/**
|
|
173
|
+
* Check if filename is an execution file
|
|
174
|
+
*/
|
|
175
|
+
private isExecutionFile;
|
|
176
|
+
/**
|
|
177
|
+
* Check if filename is a canvas file
|
|
178
|
+
*/
|
|
179
|
+
private isCanvasFile;
|
|
180
|
+
/**
|
|
181
|
+
* Extract basename from execution filename
|
|
182
|
+
*/
|
|
183
|
+
private extractExecutionBasename;
|
|
184
|
+
/**
|
|
185
|
+
* Extract basename from canvas filename
|
|
186
|
+
*/
|
|
187
|
+
private extractCanvasBasename;
|
|
188
|
+
/**
|
|
189
|
+
* Format display name from basename (kebab-case to Title Case)
|
|
190
|
+
*/
|
|
191
|
+
private formatDisplayName;
|
|
192
|
+
/**
|
|
193
|
+
* Generate unique ID for execution file
|
|
194
|
+
*/
|
|
195
|
+
private generateExecutionId;
|
|
196
|
+
/**
|
|
197
|
+
* Generate unique ID for canvas file
|
|
198
|
+
*/
|
|
199
|
+
private generateCanvasId;
|
|
200
|
+
/**
|
|
201
|
+
* Sort execution files by package name, then by basename
|
|
202
|
+
*/
|
|
203
|
+
private sortExecutionFiles;
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=ExecutionFileDiscovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutionFileDiscovery.d.ts","sourceRoot":"","sources":["../../src/utils/ExecutionFileDiscovery.ts"],"names":[],"mappings":"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"}
|