@principal-ai/subsystems-core 0.29.0 → 0.31.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/README.md +15 -110
- package/dist/index.d.ts +7 -75
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -205
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +5 -61
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +9 -131
- package/dist/node.js.map +1 -1
- package/dist/types/index.d.ts +3 -348
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -19
- package/dist/types/index.js.map +1 -1
- package/dist/types/subsystem-model.d.ts +34 -3
- package/dist/types/subsystem-model.d.ts.map +1 -1
- package/dist/types/subsystem-model.js.map +1 -1
- package/package.json +7 -24
- package/schemas/subsystem-model.schema.json +52 -1
- package/src/index.ts +7 -580
- package/src/node.ts +21 -262
- package/src/types/index.ts +3 -456
- package/src/types/subsystem-model.ts +39 -3
- package/dist/ConfigurationLoader.d.ts +0 -76
- package/dist/ConfigurationLoader.d.ts.map +0 -1
- package/dist/ConfigurationLoader.js +0 -148
- package/dist/ConfigurationLoader.js.map +0 -1
- package/dist/ConfigurationValidator.d.ts +0 -31
- package/dist/ConfigurationValidator.d.ts.map +0 -1
- package/dist/ConfigurationValidator.js +0 -239
- package/dist/ConfigurationValidator.js.map +0 -1
- package/dist/EventProcessor.d.ts +0 -49
- package/dist/EventProcessor.d.ts.map +0 -1
- package/dist/EventProcessor.js +0 -220
- package/dist/EventProcessor.js.map +0 -1
- package/dist/EventRecorderService.d.ts +0 -305
- package/dist/EventRecorderService.d.ts.map +0 -1
- package/dist/EventRecorderService.js +0 -467
- package/dist/EventRecorderService.js.map +0 -1
- package/dist/LibraryLoader.d.ts +0 -65
- package/dist/LibraryLoader.d.ts.map +0 -1
- package/dist/LibraryLoader.js +0 -197
- package/dist/LibraryLoader.js.map +0 -1
- package/dist/PathBasedEventProcessor.d.ts +0 -77
- package/dist/PathBasedEventProcessor.d.ts.map +0 -1
- package/dist/PathBasedEventProcessor.js +0 -136
- package/dist/PathBasedEventProcessor.js.map +0 -1
- package/dist/SessionManager.d.ts +0 -194
- package/dist/SessionManager.d.ts.map +0 -1
- package/dist/SessionManager.js +0 -302
- package/dist/SessionManager.js.map +0 -1
- package/dist/ValidationEngine.d.ts +0 -31
- package/dist/ValidationEngine.d.ts.map +0 -1
- package/dist/ValidationEngine.js +0 -162
- package/dist/ValidationEngine.js.map +0 -1
- package/dist/auxiliary/AuxiliaryManifestValidator.d.ts +0 -41
- package/dist/auxiliary/AuxiliaryManifestValidator.d.ts.map +0 -1
- package/dist/auxiliary/AuxiliaryManifestValidator.js +0 -100
- package/dist/auxiliary/AuxiliaryManifestValidator.js.map +0 -1
- package/dist/auxiliary/index.d.ts +0 -9
- package/dist/auxiliary/index.d.ts.map +0 -1
- package/dist/auxiliary/index.js +0 -14
- package/dist/auxiliary/index.js.map +0 -1
- package/dist/auxiliary/validateAreaScopeDisjoint.d.ts +0 -24
- package/dist/auxiliary/validateAreaScopeDisjoint.d.ts.map +0 -1
- package/dist/auxiliary/validateAreaScopeDisjoint.js +0 -61
- package/dist/auxiliary/validateAreaScopeDisjoint.js.map +0 -1
- package/dist/cli/codegen.d.ts +0 -41
- package/dist/cli/codegen.d.ts.map +0 -1
- package/dist/cli/codegen.js +0 -257
- package/dist/cli/codegen.js.map +0 -1
- package/dist/codegen/type-generator.d.ts +0 -123
- package/dist/codegen/type-generator.d.ts.map +0 -1
- package/dist/codegen/type-generator.js +0 -433
- package/dist/codegen/type-generator.js.map +0 -1
- package/dist/codegen/usage-example.d.ts +0 -103
- package/dist/codegen/usage-example.d.ts.map +0 -1
- package/dist/codegen/usage-example.js +0 -258
- package/dist/codegen/usage-example.js.map +0 -1
- package/dist/dashboard/DashboardValidator.d.ts +0 -85
- package/dist/dashboard/DashboardValidator.d.ts.map +0 -1
- package/dist/dashboard/DashboardValidator.js +0 -775
- package/dist/dashboard/DashboardValidator.js.map +0 -1
- package/dist/dashboard/index.d.ts +0 -6
- package/dist/dashboard/index.d.ts.map +0 -1
- package/dist/dashboard/index.js +0 -10
- package/dist/dashboard/index.js.map +0 -1
- package/dist/discovery/CanvasDiscovery.d.ts +0 -160
- package/dist/discovery/CanvasDiscovery.d.ts.map +0 -1
- package/dist/discovery/CanvasDiscovery.js +0 -865
- package/dist/discovery/CanvasDiscovery.js.map +0 -1
- package/dist/discovery/CanvasFileManifest.d.ts +0 -86
- package/dist/discovery/CanvasFileManifest.d.ts.map +0 -1
- package/dist/discovery/CanvasFileManifest.js +0 -338
- package/dist/discovery/CanvasFileManifest.js.map +0 -1
- package/dist/discovery/LibraryDiscovery.d.ts +0 -108
- package/dist/discovery/LibraryDiscovery.d.ts.map +0 -1
- package/dist/discovery/LibraryDiscovery.js +0 -263
- package/dist/discovery/LibraryDiscovery.js.map +0 -1
- package/dist/discovery/types.d.ts +0 -403
- package/dist/discovery/types.d.ts.map +0 -1
- package/dist/discovery/types.js +0 -6
- package/dist/discovery/types.js.map +0 -1
- package/dist/events/EventsCanvasValidator.d.ts +0 -139
- package/dist/events/EventsCanvasValidator.d.ts.map +0 -1
- package/dist/events/EventsCanvasValidator.js +0 -281
- package/dist/events/EventsCanvasValidator.js.map +0 -1
- package/dist/events/NamespacePathIndex.d.ts +0 -61
- package/dist/events/NamespacePathIndex.d.ts.map +0 -1
- package/dist/events/NamespacePathIndex.js +0 -74
- package/dist/events/NamespacePathIndex.js.map +0 -1
- package/dist/events/OtelEventPathsValidator.d.ts +0 -75
- package/dist/events/OtelEventPathsValidator.d.ts.map +0 -1
- package/dist/events/OtelEventPathsValidator.js +0 -126
- package/dist/events/OtelEventPathsValidator.js.map +0 -1
- package/dist/events/ScopeEventsValidator.d.ts +0 -68
- package/dist/events/ScopeEventsValidator.d.ts.map +0 -1
- package/dist/events/ScopeEventsValidator.js +0 -91
- package/dist/events/ScopeEventsValidator.js.map +0 -1
- package/dist/events/index.d.ts +0 -9
- package/dist/events/index.d.ts.map +0 -1
- package/dist/events/index.js +0 -12
- package/dist/events/index.js.map +0 -1
- package/dist/events/path-helpers.d.ts +0 -33
- package/dist/events/path-helpers.d.ts.map +0 -1
- package/dist/events/path-helpers.js +0 -59
- package/dist/events/path-helpers.js.map +0 -1
- package/dist/execution/ExecutionLoader.d.ts +0 -135
- package/dist/execution/ExecutionLoader.d.ts.map +0 -1
- package/dist/execution/ExecutionLoader.js +0 -266
- package/dist/execution/ExecutionLoader.js.map +0 -1
- package/dist/execution/ExecutionValidator.d.ts +0 -94
- package/dist/execution/ExecutionValidator.d.ts.map +0 -1
- package/dist/execution/ExecutionValidator.js +0 -503
- package/dist/execution/ExecutionValidator.js.map +0 -1
- package/dist/generated/graph-converter-execution.types.d.ts +0 -177
- package/dist/generated/graph-converter-execution.types.d.ts.map +0 -1
- package/dist/generated/graph-converter-execution.types.js +0 -12
- package/dist/generated/graph-converter-execution.types.js.map +0 -1
- package/dist/helpers/GraphInstrumentationHelper.d.ts +0 -93
- package/dist/helpers/GraphInstrumentationHelper.d.ts.map +0 -1
- package/dist/helpers/GraphInstrumentationHelper.js +0 -252
- package/dist/helpers/GraphInstrumentationHelper.js.map +0 -1
- package/dist/matchers/SpanMatcher.d.ts +0 -107
- package/dist/matchers/SpanMatcher.d.ts.map +0 -1
- package/dist/matchers/SpanMatcher.js +0 -274
- package/dist/matchers/SpanMatcher.js.map +0 -1
- package/dist/orchestration/TraceOrchestrator.d.ts +0 -71
- package/dist/orchestration/TraceOrchestrator.d.ts.map +0 -1
- package/dist/orchestration/TraceOrchestrator.js +0 -416
- package/dist/orchestration/TraceOrchestrator.js.map +0 -1
- package/dist/parsers/OtlpTraceParser.d.ts +0 -131
- package/dist/parsers/OtlpTraceParser.d.ts.map +0 -1
- package/dist/parsers/OtlpTraceParser.js +0 -310
- package/dist/parsers/OtlpTraceParser.js.map +0 -1
- package/dist/registry/CompositeRegistry.d.ts +0 -71
- package/dist/registry/CompositeRegistry.d.ts.map +0 -1
- package/dist/registry/CompositeRegistry.js +0 -113
- package/dist/registry/CompositeRegistry.js.map +0 -1
- package/dist/registry/EventRegistry.d.ts +0 -79
- package/dist/registry/EventRegistry.d.ts.map +0 -1
- package/dist/registry/EventRegistry.js +0 -165
- package/dist/registry/EventRegistry.js.map +0 -1
- package/dist/registry/LocalRegistry.d.ts +0 -111
- package/dist/registry/LocalRegistry.d.ts.map +0 -1
- package/dist/registry/LocalRegistry.js +0 -335
- package/dist/registry/LocalRegistry.js.map +0 -1
- package/dist/registry/RemoteRegistry.d.ts +0 -122
- package/dist/registry/RemoteRegistry.d.ts.map +0 -1
- package/dist/registry/RemoteRegistry.js +0 -399
- package/dist/registry/RemoteRegistry.js.map +0 -1
- package/dist/registry/VersionRegistry.d.ts +0 -51
- package/dist/registry/VersionRegistry.d.ts.map +0 -1
- package/dist/registry/VersionRegistry.js +0 -105
- package/dist/registry/VersionRegistry.js.map +0 -1
- package/dist/rules/config.d.ts +0 -57
- package/dist/rules/config.d.ts.map +0 -1
- package/dist/rules/config.js +0 -382
- package/dist/rules/config.js.map +0 -1
- package/dist/rules/engine.d.ts +0 -70
- package/dist/rules/engine.d.ts.map +0 -1
- package/dist/rules/engine.js +0 -373
- package/dist/rules/engine.js.map +0 -1
- package/dist/rules/implementations/connection-type-references.d.ts +0 -7
- package/dist/rules/implementations/connection-type-references.d.ts.map +0 -1
- package/dist/rules/implementations/connection-type-references.js +0 -107
- package/dist/rules/implementations/connection-type-references.js.map +0 -1
- package/dist/rules/implementations/dead-end-states.d.ts +0 -17
- package/dist/rules/implementations/dead-end-states.d.ts.map +0 -1
- package/dist/rules/implementations/dead-end-states.js +0 -75
- package/dist/rules/implementations/dead-end-states.js.map +0 -1
- package/dist/rules/implementations/index.d.ts +0 -23
- package/dist/rules/implementations/index.d.ts.map +0 -1
- package/dist/rules/implementations/index.js +0 -73
- package/dist/rules/implementations/index.js.map +0 -1
- package/dist/rules/implementations/minimum-node-sources.d.ts +0 -24
- package/dist/rules/implementations/minimum-node-sources.d.ts.map +0 -1
- package/dist/rules/implementations/minimum-node-sources.js +0 -59
- package/dist/rules/implementations/minimum-node-sources.js.map +0 -1
- package/dist/rules/implementations/no-unknown-fields.d.ts +0 -7
- package/dist/rules/implementations/no-unknown-fields.d.ts.map +0 -1
- package/dist/rules/implementations/no-unknown-fields.js +0 -216
- package/dist/rules/implementations/no-unknown-fields.js.map +0 -1
- package/dist/rules/implementations/orphaned-edge-types.d.ts +0 -7
- package/dist/rules/implementations/orphaned-edge-types.d.ts.map +0 -1
- package/dist/rules/implementations/orphaned-edge-types.js +0 -50
- package/dist/rules/implementations/orphaned-edge-types.js.map +0 -1
- package/dist/rules/implementations/orphaned-node-types.d.ts +0 -7
- package/dist/rules/implementations/orphaned-node-types.d.ts.map +0 -1
- package/dist/rules/implementations/orphaned-node-types.js +0 -53
- package/dist/rules/implementations/orphaned-node-types.js.map +0 -1
- package/dist/rules/implementations/required-metadata.d.ts +0 -7
- package/dist/rules/implementations/required-metadata.d.ts.map +0 -1
- package/dist/rules/implementations/required-metadata.js +0 -48
- package/dist/rules/implementations/required-metadata.js.map +0 -1
- package/dist/rules/implementations/state-transition-references.d.ts +0 -7
- package/dist/rules/implementations/state-transition-references.d.ts.map +0 -1
- package/dist/rules/implementations/state-transition-references.js +0 -138
- package/dist/rules/implementations/state-transition-references.js.map +0 -1
- package/dist/rules/implementations/unreachable-states.d.ts +0 -7
- package/dist/rules/implementations/unreachable-states.d.ts.map +0 -1
- package/dist/rules/implementations/unreachable-states.js +0 -83
- package/dist/rules/implementations/unreachable-states.js.map +0 -1
- package/dist/rules/implementations/valid-action-patterns.d.ts +0 -17
- package/dist/rules/implementations/valid-action-patterns.d.ts.map +0 -1
- package/dist/rules/implementations/valid-action-patterns.js +0 -112
- package/dist/rules/implementations/valid-action-patterns.js.map +0 -1
- package/dist/rules/implementations/valid-color-format.d.ts +0 -7
- package/dist/rules/implementations/valid-color-format.d.ts.map +0 -1
- package/dist/rules/implementations/valid-color-format.js +0 -94
- package/dist/rules/implementations/valid-color-format.js.map +0 -1
- package/dist/rules/implementations/valid-edge-types.d.ts +0 -7
- package/dist/rules/implementations/valid-edge-types.d.ts.map +0 -1
- package/dist/rules/implementations/valid-edge-types.js +0 -248
- package/dist/rules/implementations/valid-edge-types.js.map +0 -1
- package/dist/rules/implementations/valid-node-types.d.ts +0 -7
- package/dist/rules/implementations/valid-node-types.d.ts.map +0 -1
- package/dist/rules/implementations/valid-node-types.js +0 -187
- package/dist/rules/implementations/valid-node-types.js.map +0 -1
- package/dist/rules/index.d.ts +0 -28
- package/dist/rules/index.d.ts.map +0 -1
- package/dist/rules/index.js +0 -70
- package/dist/rules/index.js.map +0 -1
- package/dist/rules/types.d.ts +0 -309
- package/dist/rules/types.d.ts.map +0 -1
- package/dist/rules/types.js +0 -40
- package/dist/rules/types.js.map +0 -1
- package/dist/scopes/ScopePathIndex.d.ts +0 -56
- package/dist/scopes/ScopePathIndex.d.ts.map +0 -1
- package/dist/scopes/ScopePathIndex.js +0 -67
- package/dist/scopes/ScopePathIndex.js.map +0 -1
- package/dist/scopes/ScopesCanvasValidator.d.ts +0 -76
- package/dist/scopes/ScopesCanvasValidator.d.ts.map +0 -1
- package/dist/scopes/ScopesCanvasValidator.js +0 -221
- package/dist/scopes/ScopesCanvasValidator.js.map +0 -1
- package/dist/scopes/index.d.ts +0 -12
- package/dist/scopes/index.d.ts.map +0 -1
- package/dist/scopes/index.js +0 -30
- package/dist/scopes/index.js.map +0 -1
- package/dist/scopes/utils.d.ts +0 -85
- package/dist/scopes/utils.d.ts.map +0 -1
- package/dist/scopes/utils.js +0 -143
- package/dist/scopes/utils.js.map +0 -1
- package/dist/scopes/validateScopeNamespaceNesting.d.ts +0 -38
- package/dist/scopes/validateScopeNamespaceNesting.d.ts.map +0 -1
- package/dist/scopes/validateScopeNamespaceNesting.js +0 -69
- package/dist/scopes/validateScopeNamespaceNesting.js.map +0 -1
- package/dist/spans/index.d.ts +0 -12
- package/dist/spans/index.d.ts.map +0 -1
- package/dist/spans/index.js +0 -25
- package/dist/spans/index.js.map +0 -1
- package/dist/spans/utils.d.ts +0 -70
- package/dist/spans/utils.d.ts.map +0 -1
- package/dist/spans/utils.js +0 -205
- package/dist/spans/utils.js.map +0 -1
- package/dist/storyboard/builder.d.ts +0 -135
- package/dist/storyboard/builder.d.ts.map +0 -1
- package/dist/storyboard/builder.js +0 -235
- package/dist/storyboard/builder.js.map +0 -1
- package/dist/storyboard/index.d.ts +0 -9
- package/dist/storyboard/index.d.ts.map +0 -1
- package/dist/storyboard/index.js +0 -18
- package/dist/storyboard/index.js.map +0 -1
- package/dist/storyboard/types.d.ts +0 -101
- package/dist/storyboard/types.d.ts.map +0 -1
- package/dist/storyboard/types.js +0 -10
- package/dist/storyboard/types.js.map +0 -1
- package/dist/telemetry/coverage.d.ts +0 -92
- package/dist/telemetry/coverage.d.ts.map +0 -1
- package/dist/telemetry/coverage.js +0 -335
- package/dist/telemetry/coverage.js.map +0 -1
- package/dist/telemetry/event-validator.d.ts +0 -86
- package/dist/telemetry/event-validator.d.ts.map +0 -1
- package/dist/telemetry/event-validator.js +0 -257
- package/dist/telemetry/event-validator.js.map +0 -1
- package/dist/types/audit.d.ts +0 -236
- package/dist/types/audit.d.ts.map +0 -1
- package/dist/types/audit.js +0 -53
- package/dist/types/audit.js.map +0 -1
- package/dist/types/auxiliary.d.ts +0 -54
- package/dist/types/auxiliary.d.ts.map +0 -1
- package/dist/types/auxiliary.js +0 -27
- package/dist/types/auxiliary.js.map +0 -1
- package/dist/types/canvas-scope.d.ts +0 -156
- package/dist/types/canvas-scope.d.ts.map +0 -1
- package/dist/types/canvas-scope.js +0 -62
- package/dist/types/canvas-scope.js.map +0 -1
- package/dist/types/canvas.d.ts +0 -1138
- package/dist/types/canvas.d.ts.map +0 -1
- package/dist/types/canvas.js +0 -178
- package/dist/types/canvas.js.map +0 -1
- package/dist/types/dashboard.d.ts +0 -170
- package/dist/types/dashboard.d.ts.map +0 -1
- package/dist/types/dashboard.js +0 -14
- package/dist/types/dashboard.js.map +0 -1
- package/dist/types/library.d.ts +0 -227
- package/dist/types/library.d.ts.map +0 -1
- package/dist/types/library.js +0 -16
- package/dist/types/library.js.map +0 -1
- package/dist/types/otel.d.ts +0 -465
- package/dist/types/otel.d.ts.map +0 -1
- package/dist/types/otel.js +0 -163
- package/dist/types/otel.js.map +0 -1
- package/dist/types/path-based-config.d.ts +0 -235
- package/dist/types/path-based-config.d.ts.map +0 -1
- package/dist/types/path-based-config.js +0 -11
- package/dist/types/path-based-config.js.map +0 -1
- package/dist/types/registered-trace.d.ts +0 -337
- package/dist/types/registered-trace.d.ts.map +0 -1
- package/dist/types/registered-trace.js +0 -16
- package/dist/types/registered-trace.js.map +0 -1
- package/dist/types/resource-match.d.ts +0 -207
- package/dist/types/resource-match.d.ts.map +0 -1
- package/dist/types/resource-match.js +0 -74
- package/dist/types/resource-match.js.map +0 -1
- package/dist/types/version-registry.d.ts +0 -137
- package/dist/types/version-registry.d.ts.map +0 -1
- package/dist/types/version-registry.js +0 -10
- package/dist/types/version-registry.js.map +0 -1
- package/dist/utils/CanvasConverter.d.ts +0 -148
- package/dist/utils/CanvasConverter.d.ts.map +0 -1
- package/dist/utils/CanvasConverter.js +0 -530
- package/dist/utils/CanvasConverter.js.map +0 -1
- package/dist/utils/GraphConverter.d.ts +0 -18
- package/dist/utils/GraphConverter.d.ts.map +0 -1
- package/dist/utils/GraphConverter.js +0 -80
- package/dist/utils/GraphConverter.js.map +0 -1
- package/dist/utils/PathMatcher.d.ts +0 -55
- package/dist/utils/PathMatcher.d.ts.map +0 -1
- package/dist/utils/PathMatcher.js +0 -178
- package/dist/utils/PathMatcher.js.map +0 -1
- package/dist/utils/TraceToCanvas.d.ts +0 -83
- package/dist/utils/TraceToCanvas.d.ts.map +0 -1
- package/dist/utils/TraceToCanvas.js +0 -336
- package/dist/utils/TraceToCanvas.js.map +0 -1
- package/dist/utils/YamlParser.d.ts +0 -36
- package/dist/utils/YamlParser.d.ts.map +0 -1
- package/dist/utils/YamlParser.js +0 -92
- package/dist/utils/YamlParser.js.map +0 -1
- package/dist/utils/registeredTraceHelpers.d.ts +0 -76
- package/dist/utils/registeredTraceHelpers.d.ts.map +0 -1
- package/dist/utils/registeredTraceHelpers.js +0 -203
- package/dist/utils/registeredTraceHelpers.js.map +0 -1
- package/dist/utils/traceAggregation.d.ts +0 -25
- package/dist/utils/traceAggregation.d.ts.map +0 -1
- package/dist/utils/traceAggregation.js +0 -140
- package/dist/utils/traceAggregation.js.map +0 -1
- package/dist/validation/OtelCanvasValidator.d.ts +0 -40
- package/dist/validation/OtelCanvasValidator.d.ts.map +0 -1
- package/dist/validation/OtelCanvasValidator.js +0 -59
- package/dist/validation/OtelCanvasValidator.js.map +0 -1
- package/dist/validation/index.d.ts +0 -8
- package/dist/validation/index.d.ts.map +0 -1
- package/dist/validation/index.js +0 -13
- package/dist/validation/index.js.map +0 -1
- package/dist/validation/libraryValidation.d.ts +0 -53
- package/dist/validation/libraryValidation.d.ts.map +0 -1
- package/dist/validation/libraryValidation.js +0 -115
- package/dist/validation/libraryValidation.js.map +0 -1
- package/dist/workflow/edge-derivation.d.ts +0 -111
- package/dist/workflow/edge-derivation.d.ts.map +0 -1
- package/dist/workflow/edge-derivation.js +0 -174
- package/dist/workflow/edge-derivation.js.map +0 -1
- package/dist/workflow/edge-validation.d.ts +0 -170
- package/dist/workflow/edge-validation.d.ts.map +0 -1
- package/dist/workflow/edge-validation.js +0 -332
- package/dist/workflow/edge-validation.js.map +0 -1
- package/dist/workflow/example.d.ts +0 -11
- package/dist/workflow/example.d.ts.map +0 -1
- package/dist/workflow/example.js +0 -310
- package/dist/workflow/example.js.map +0 -1
- package/dist/workflow/index.d.ts +0 -20
- package/dist/workflow/index.d.ts.map +0 -1
- package/dist/workflow/index.js +0 -49
- package/dist/workflow/index.js.map +0 -1
- package/dist/workflow/scenario-matcher.d.ts +0 -63
- package/dist/workflow/scenario-matcher.d.ts.map +0 -1
- package/dist/workflow/scenario-matcher.js +0 -215
- package/dist/workflow/scenario-matcher.js.map +0 -1
- package/dist/workflow/template-parser.d.ts +0 -73
- package/dist/workflow/template-parser.d.ts.map +0 -1
- package/dist/workflow/template-parser.js +0 -280
- package/dist/workflow/template-parser.js.map +0 -1
- package/dist/workflow/template-renderer.d.ts +0 -45
- package/dist/workflow/template-renderer.d.ts.map +0 -1
- package/dist/workflow/template-renderer.js +0 -401
- package/dist/workflow/template-renderer.js.map +0 -1
- package/dist/workflow/types.d.ts +0 -393
- package/dist/workflow/types.d.ts.map +0 -1
- package/dist/workflow/types.js +0 -40
- package/dist/workflow/types.js.map +0 -1
- package/dist/workflow/validator.d.ts +0 -363
- package/dist/workflow/validator.d.ts.map +0 -1
- package/dist/workflow/validator.js +0 -2283
- package/dist/workflow/validator.js.map +0 -1
- package/schemas/auxiliary.manifest.schema.json +0 -56
- package/src/ConfigurationLoader.test.ts +0 -466
- package/src/ConfigurationLoader.ts +0 -184
- package/src/ConfigurationValidator.test.ts +0 -200
- package/src/ConfigurationValidator.ts +0 -273
- package/src/EventProcessor.test.ts +0 -405
- package/src/EventProcessor.ts +0 -256
- package/src/EventRecorderService.test.ts +0 -543
- package/src/EventRecorderService.ts +0 -741
- package/src/LibraryLoader.ts +0 -194
- package/src/PathBasedEventProcessor.test.ts +0 -336
- package/src/PathBasedEventProcessor.ts +0 -196
- package/src/SessionManager.test.ts +0 -424
- package/src/SessionManager.ts +0 -471
- package/src/ValidationEngine.test.ts +0 -520
- package/src/ValidationEngine.ts +0 -200
- package/src/auxiliary/AuxiliaryManifestValidator.test.ts +0 -93
- package/src/auxiliary/AuxiliaryManifestValidator.ts +0 -132
- package/src/auxiliary/index.ts +0 -18
- package/src/auxiliary/validateAreaScopeDisjoint.test.ts +0 -85
- package/src/auxiliary/validateAreaScopeDisjoint.ts +0 -72
- package/src/cli/codegen.ts +0 -286
- package/src/codegen/type-generator.test.ts +0 -219
- package/src/codegen/type-generator.ts +0 -560
- package/src/codegen/usage-example.ts +0 -357
- package/src/dashboard/DashboardValidator.ts +0 -904
- package/src/dashboard/index.ts +0 -14
- package/src/discovery/CanvasDiscovery.test.ts +0 -691
- package/src/discovery/CanvasDiscovery.ts +0 -1114
- package/src/discovery/CanvasFileManifest.test.ts +0 -521
- package/src/discovery/CanvasFileManifest.ts +0 -419
- package/src/discovery/LibraryDiscovery.test.ts +0 -329
- package/src/discovery/LibraryDiscovery.ts +0 -386
- package/src/discovery/types.ts +0 -453
- package/src/events/EventsCanvasValidator.test.ts +0 -191
- package/src/events/EventsCanvasValidator.ts +0 -428
- package/src/events/NamespacePathIndex.test.ts +0 -97
- package/src/events/NamespacePathIndex.ts +0 -100
- package/src/events/OtelEventPathsValidator.test.ts +0 -243
- package/src/events/OtelEventPathsValidator.ts +0 -191
- package/src/events/ScopeEventsValidator.test.ts +0 -173
- package/src/events/ScopeEventsValidator.ts +0 -158
- package/src/events/index.ts +0 -27
- package/src/events/path-helpers.ts +0 -53
- package/src/execution/ExecutionLoader.test.ts +0 -378
- package/src/execution/ExecutionLoader.ts +0 -331
- package/src/execution/ExecutionValidator.test.ts +0 -503
- package/src/execution/ExecutionValidator.ts +0 -617
- package/src/generated/graph-converter-execution.types.ts +0 -193
- package/src/helpers/GraphInstrumentationHelper.test.ts +0 -364
- package/src/helpers/GraphInstrumentationHelper.ts +0 -323
- package/src/matchers/SpanMatcher.test.ts +0 -1105
- package/src/matchers/SpanMatcher.ts +0 -381
- package/src/orchestration/TraceOrchestrator.ts +0 -560
- package/src/orchestration/__tests__/TraceOrchestrator.test.ts +0 -1098
- package/src/parsers/OtlpTraceParser.ts +0 -401
- package/src/parsers/__tests__/OtlpTraceParser.test.ts +0 -197
- package/src/registry/CompositeRegistry.ts +0 -140
- package/src/registry/EventRegistry.test.ts +0 -387
- package/src/registry/EventRegistry.ts +0 -191
- package/src/registry/LocalRegistry.ts +0 -416
- package/src/registry/RemoteRegistry.ts +0 -499
- package/src/registry/VersionRegistry.test.ts +0 -223
- package/src/registry/VersionRegistry.ts +0 -121
- package/src/rules/config.test.ts +0 -277
- package/src/rules/config.ts +0 -450
- package/src/rules/engine.test.ts +0 -331
- package/src/rules/engine.ts +0 -448
- package/src/rules/implementations/connection-type-references.ts +0 -117
- package/src/rules/implementations/dead-end-states.ts +0 -101
- package/src/rules/implementations/index.ts +0 -66
- package/src/rules/implementations/minimum-node-sources.ts +0 -84
- package/src/rules/implementations/no-unknown-fields.ts +0 -372
- package/src/rules/implementations/orphaned-edge-types.ts +0 -55
- package/src/rules/implementations/orphaned-node-types.ts +0 -58
- package/src/rules/implementations/required-metadata.ts +0 -52
- package/src/rules/implementations/state-transition-references.ts +0 -155
- package/src/rules/implementations/unreachable-states.ts +0 -94
- package/src/rules/implementations/valid-action-patterns.ts +0 -140
- package/src/rules/implementations/valid-color-format.ts +0 -152
- package/src/rules/implementations/valid-edge-types.ts +0 -273
- package/src/rules/implementations/valid-node-types.ts +0 -200
- package/src/rules/index.ts +0 -92
- package/src/rules/types.ts +0 -426
- package/src/scopes/ScopePathIndex.test.ts +0 -94
- package/src/scopes/ScopePathIndex.ts +0 -89
- package/src/scopes/ScopesCanvasValidator.test.ts +0 -127
- package/src/scopes/ScopesCanvasValidator.ts +0 -305
- package/src/scopes/__tests__/utils.test.ts +0 -383
- package/src/scopes/index.ts +0 -42
- package/src/scopes/utils.ts +0 -182
- package/src/scopes/validateScopeNamespaceNesting.test.ts +0 -127
- package/src/scopes/validateScopeNamespaceNesting.ts +0 -88
- package/src/spans/index.ts +0 -24
- package/src/spans/utils.ts +0 -249
- package/src/storyboard/builder.ts +0 -308
- package/src/storyboard/index.ts +0 -26
- package/src/storyboard/types.ts +0 -117
- package/src/telemetry/coverage.ts +0 -480
- package/src/telemetry/event-validator.ts +0 -312
- package/src/types/audit.ts +0 -314
- package/src/types/auxiliary.ts +0 -63
- package/src/types/canvas-scope.ts +0 -190
- package/src/types/canvas.test.ts +0 -199
- package/src/types/canvas.ts +0 -1395
- package/src/types/dashboard.ts +0 -257
- package/src/types/library.ts +0 -283
- package/src/types/otel.test.ts +0 -219
- package/src/types/otel.ts +0 -620
- package/src/types/path-based-config.ts +0 -285
- package/src/types/registered-trace.ts +0 -432
- package/src/types/resource-match.ts +0 -263
- package/src/types/version-registry.ts +0 -150
- package/src/utils/CanvasConverter.ts +0 -670
- package/src/utils/GraphConverter.test.ts +0 -322
- package/src/utils/GraphConverter.ts +0 -84
- package/src/utils/PathMatcher.test.ts +0 -139
- package/src/utils/PathMatcher.ts +0 -185
- package/src/utils/TraceToCanvas.test.ts +0 -310
- package/src/utils/TraceToCanvas.ts +0 -510
- package/src/utils/YamlParser.ts +0 -77
- package/src/utils/registeredTraceHelpers.ts +0 -251
- package/src/utils/traceAggregation.test.ts +0 -385
- package/src/utils/traceAggregation.ts +0 -173
- package/src/validation/OtelCanvasValidator.ts +0 -86
- package/src/validation/index.ts +0 -17
- package/src/validation/libraryValidation.ts +0 -206
- package/src/workflow/README.md +0 -408
- package/src/workflow/__tests__/edge-derivation.test.ts +0 -449
- package/src/workflow/__tests__/edge-validation.test.ts +0 -417
- package/src/workflow/__tests__/scenario-matcher.test.ts +0 -225
- package/src/workflow/__tests__/template-parser.test.ts +0 -276
- package/src/workflow/__tests__/template-renderer.test.ts +0 -509
- package/src/workflow/__tests__/types.test.ts +0 -187
- package/src/workflow/__tests__/validator.test.ts +0 -3225
- package/src/workflow/edge-derivation.ts +0 -265
- package/src/workflow/edge-validation.ts +0 -503
- package/src/workflow/example.ts +0 -330
- package/src/workflow/index.ts +0 -86
- package/src/workflow/scenario-matcher.ts +0 -253
- package/src/workflow/template-parser.ts +0 -350
- package/src/workflow/template-renderer.ts +0 -453
- package/src/workflow/types.ts +0 -511
- package/src/workflow/validator.ts +0 -2737
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Utility for matching file paths against glob patterns
|
|
3
|
-
* Used for associating logs with components based on source paths
|
|
4
|
-
*/
|
|
5
|
-
export declare class PathMatcher {
|
|
6
|
-
/**
|
|
7
|
-
* Check if a file path matches a glob pattern
|
|
8
|
-
*
|
|
9
|
-
* Supports:
|
|
10
|
-
* - Exact matches: "lib/lock-manager.ts"
|
|
11
|
-
* - Wildcards: "lib/*.ts"
|
|
12
|
-
* - Double wildcards: "lib/ ** /*.ts" (without spaces)
|
|
13
|
-
* - Character sets: "lib/[abc].ts"
|
|
14
|
-
*
|
|
15
|
-
* @param path File path to test
|
|
16
|
-
* @param pattern Glob pattern
|
|
17
|
-
* @returns True if path matches pattern
|
|
18
|
-
*/
|
|
19
|
-
static matches(path: string, pattern: string): boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Find all patterns that match a given path
|
|
22
|
-
*
|
|
23
|
-
* @param path File path to test
|
|
24
|
-
* @param patterns Array of glob patterns
|
|
25
|
-
* @returns Array of matching patterns
|
|
26
|
-
*/
|
|
27
|
-
static findMatches(path: string, patterns: string[]): string[];
|
|
28
|
-
/**
|
|
29
|
-
* Convert a glob pattern to a regular expression
|
|
30
|
-
*
|
|
31
|
-
* @param pattern Glob pattern
|
|
32
|
-
* @returns Regular expression
|
|
33
|
-
*/
|
|
34
|
-
private static globToRegex;
|
|
35
|
-
/**
|
|
36
|
-
* Convert a glob pattern to a regex string (without anchors)
|
|
37
|
-
* This allows for proper composition when handling alternatives
|
|
38
|
-
*/
|
|
39
|
-
private static globToRegexString;
|
|
40
|
-
/**
|
|
41
|
-
* Escape special regex characters in a string
|
|
42
|
-
*/
|
|
43
|
-
private static escapeRegex;
|
|
44
|
-
/**
|
|
45
|
-
* Check if a pattern might match multiple paths (contains wildcards)
|
|
46
|
-
*/
|
|
47
|
-
static isGlob(pattern: string): boolean;
|
|
48
|
-
/**
|
|
49
|
-
* Get the base directory from a glob pattern (part before first wildcard)
|
|
50
|
-
*
|
|
51
|
-
* Example: "lib/services/\*\*\/\*.ts" becomes "lib/services"
|
|
52
|
-
*/
|
|
53
|
-
static getBaseDir(pattern: string): string;
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=PathMatcher.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PathMatcher.d.ts","sourceRoot":"","sources":["../../src/utils/PathMatcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,WAAW;IACtB;;;;;;;;;;;;OAYG;WACW,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAe7D;;;;;;OAMG;WACW,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAIrE;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAM1B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA4FhC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B;;OAEG;WACW,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI9C;;;;OAIG;WACW,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAYlD"}
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Utility for matching file paths against glob patterns
|
|
4
|
-
* Used for associating logs with components based on source paths
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.PathMatcher = void 0;
|
|
8
|
-
class PathMatcher {
|
|
9
|
-
/**
|
|
10
|
-
* Check if a file path matches a glob pattern
|
|
11
|
-
*
|
|
12
|
-
* Supports:
|
|
13
|
-
* - Exact matches: "lib/lock-manager.ts"
|
|
14
|
-
* - Wildcards: "lib/*.ts"
|
|
15
|
-
* - Double wildcards: "lib/ ** /*.ts" (without spaces)
|
|
16
|
-
* - Character sets: "lib/[abc].ts"
|
|
17
|
-
*
|
|
18
|
-
* @param path File path to test
|
|
19
|
-
* @param pattern Glob pattern
|
|
20
|
-
* @returns True if path matches pattern
|
|
21
|
-
*/
|
|
22
|
-
static matches(path, pattern) {
|
|
23
|
-
// Normalize paths (convert backslashes to forward slashes)
|
|
24
|
-
path = path.replace(/\\/g, '/');
|
|
25
|
-
pattern = pattern.replace(/\\/g, '/');
|
|
26
|
-
// Exact match
|
|
27
|
-
if (path === pattern) {
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
// Convert glob pattern to regex
|
|
31
|
-
const regex = this.globToRegex(pattern);
|
|
32
|
-
return regex.test(path);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Find all patterns that match a given path
|
|
36
|
-
*
|
|
37
|
-
* @param path File path to test
|
|
38
|
-
* @param patterns Array of glob patterns
|
|
39
|
-
* @returns Array of matching patterns
|
|
40
|
-
*/
|
|
41
|
-
static findMatches(path, patterns) {
|
|
42
|
-
return patterns.filter((pattern) => this.matches(path, pattern));
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Convert a glob pattern to a regular expression
|
|
46
|
-
*
|
|
47
|
-
* @param pattern Glob pattern
|
|
48
|
-
* @returns Regular expression
|
|
49
|
-
*/
|
|
50
|
-
static globToRegex(pattern) {
|
|
51
|
-
const regex = this.globToRegexString(pattern);
|
|
52
|
-
// Match entire string
|
|
53
|
-
return new RegExp('^' + regex + '$');
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Convert a glob pattern to a regex string (without anchors)
|
|
57
|
-
* This allows for proper composition when handling alternatives
|
|
58
|
-
*/
|
|
59
|
-
static globToRegexString(pattern) {
|
|
60
|
-
let regex = '';
|
|
61
|
-
let i = 0;
|
|
62
|
-
while (i < pattern.length) {
|
|
63
|
-
const char = pattern[i];
|
|
64
|
-
switch (char) {
|
|
65
|
-
case '*':
|
|
66
|
-
// Check for **
|
|
67
|
-
if (pattern[i + 1] === '*') {
|
|
68
|
-
// ** matches any number of directories
|
|
69
|
-
if (pattern[i + 2] === '/') {
|
|
70
|
-
regex += '(?:.*/)?'; // Match zero or more path segments
|
|
71
|
-
i += 3;
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
// ** at end of pattern
|
|
75
|
-
regex += '.*';
|
|
76
|
-
i += 2;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
// * matches anything except /
|
|
81
|
-
regex += '[^/]*';
|
|
82
|
-
i++;
|
|
83
|
-
}
|
|
84
|
-
break;
|
|
85
|
-
case '?':
|
|
86
|
-
// ? matches any single character except /
|
|
87
|
-
regex += '[^/]';
|
|
88
|
-
i++;
|
|
89
|
-
break;
|
|
90
|
-
case '[': {
|
|
91
|
-
// [...] matches character set
|
|
92
|
-
let j = i + 1;
|
|
93
|
-
while (j < pattern.length && pattern[j] !== ']') {
|
|
94
|
-
j++;
|
|
95
|
-
}
|
|
96
|
-
if (j < pattern.length) {
|
|
97
|
-
const set = pattern.substring(i + 1, j);
|
|
98
|
-
regex += '[' + set.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + ']';
|
|
99
|
-
i = j + 1;
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
regex += '\\[';
|
|
103
|
-
i++;
|
|
104
|
-
}
|
|
105
|
-
break;
|
|
106
|
-
}
|
|
107
|
-
case '{': {
|
|
108
|
-
// {a,b,c} matches alternatives
|
|
109
|
-
let k = i + 1;
|
|
110
|
-
let depth = 1;
|
|
111
|
-
while (k < pattern.length && depth > 0) {
|
|
112
|
-
if (pattern[k] === '{')
|
|
113
|
-
depth++;
|
|
114
|
-
if (pattern[k] === '}')
|
|
115
|
-
depth--;
|
|
116
|
-
k++;
|
|
117
|
-
}
|
|
118
|
-
if (depth === 0) {
|
|
119
|
-
const alternatives = pattern.substring(i + 1, k - 1).split(',');
|
|
120
|
-
regex += '(?:' + alternatives.map((alt) => this.globToRegexString(alt)).join('|') + ')';
|
|
121
|
-
i = k;
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
regex += '\\{';
|
|
125
|
-
i++;
|
|
126
|
-
}
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
// Escape special regex characters
|
|
130
|
-
case '.':
|
|
131
|
-
case '+':
|
|
132
|
-
case '^':
|
|
133
|
-
case '$':
|
|
134
|
-
case '(':
|
|
135
|
-
case ')':
|
|
136
|
-
case '|':
|
|
137
|
-
case '\\':
|
|
138
|
-
regex += '\\' + char;
|
|
139
|
-
i++;
|
|
140
|
-
break;
|
|
141
|
-
default:
|
|
142
|
-
regex += char;
|
|
143
|
-
i++;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
return regex;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Escape special regex characters in a string
|
|
150
|
-
*/
|
|
151
|
-
static escapeRegex(str) {
|
|
152
|
-
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Check if a pattern might match multiple paths (contains wildcards)
|
|
156
|
-
*/
|
|
157
|
-
static isGlob(pattern) {
|
|
158
|
-
return /[*?[\]{]/.test(pattern);
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Get the base directory from a glob pattern (part before first wildcard)
|
|
162
|
-
*
|
|
163
|
-
* Example: "lib/services/\*\*\/\*.ts" becomes "lib/services"
|
|
164
|
-
*/
|
|
165
|
-
static getBaseDir(pattern) {
|
|
166
|
-
const firstWildcard = pattern.search(/[*?[\]{]/);
|
|
167
|
-
if (firstWildcard === -1) {
|
|
168
|
-
// No wildcards, return the directory part
|
|
169
|
-
return pattern.substring(0, pattern.lastIndexOf('/'));
|
|
170
|
-
}
|
|
171
|
-
// Return part before first wildcard
|
|
172
|
-
const beforeWildcard = pattern.substring(0, firstWildcard);
|
|
173
|
-
const lastSlash = beforeWildcard.lastIndexOf('/');
|
|
174
|
-
return lastSlash === -1 ? '' : beforeWildcard.substring(0, lastSlash);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
exports.PathMatcher = PathMatcher;
|
|
178
|
-
//# sourceMappingURL=PathMatcher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PathMatcher.js","sourceRoot":"","sources":["../../src/utils/PathMatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Trace to Canvas Converter
|
|
3
|
-
*
|
|
4
|
-
* Converts OpenTelemetry trace data (captured from test runs) into
|
|
5
|
-
* ExtendedCanvas format for visualization.
|
|
6
|
-
*/
|
|
7
|
-
import type { ExtendedCanvas } from '../types/canvas';
|
|
8
|
-
import type { OtelSpanKind } from '../types/otel';
|
|
9
|
-
/**
|
|
10
|
-
* Span data as exported from test runs
|
|
11
|
-
*/
|
|
12
|
-
export interface TraceSpan {
|
|
13
|
-
traceId: string;
|
|
14
|
-
spanId: string;
|
|
15
|
-
parentSpanId?: string | null;
|
|
16
|
-
name: string;
|
|
17
|
-
kind: string;
|
|
18
|
-
startTime: number;
|
|
19
|
-
endTime: number;
|
|
20
|
-
duration: number;
|
|
21
|
-
resource?: Record<string, string | number | boolean>;
|
|
22
|
-
attributes?: Record<string, string | number | boolean>;
|
|
23
|
-
status?: {
|
|
24
|
-
code: string;
|
|
25
|
-
message?: string;
|
|
26
|
-
};
|
|
27
|
-
events?: Array<{
|
|
28
|
-
name: string;
|
|
29
|
-
timestamp: number;
|
|
30
|
-
attributes?: Record<string, string | number | boolean>;
|
|
31
|
-
}>;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Trace export format (from test setup)
|
|
35
|
-
*/
|
|
36
|
-
export interface TraceExport {
|
|
37
|
-
exportedAt: string;
|
|
38
|
-
serviceName: string;
|
|
39
|
-
spanCount: number;
|
|
40
|
-
spans: TraceSpan[];
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Options for trace-to-canvas conversion
|
|
44
|
-
*/
|
|
45
|
-
export interface TraceToCanvasOptions {
|
|
46
|
-
/** Group spans by service into container nodes */
|
|
47
|
-
groupByService?: boolean;
|
|
48
|
-
/** Layout algorithm */
|
|
49
|
-
layout?: 'hierarchical' | 'timeline';
|
|
50
|
-
/** Node dimensions */
|
|
51
|
-
nodeWidth?: number;
|
|
52
|
-
nodeHeight?: number;
|
|
53
|
-
/** Spacing between nodes */
|
|
54
|
-
horizontalSpacing?: number;
|
|
55
|
-
verticalSpacing?: number;
|
|
56
|
-
/** Include span attributes in node data */
|
|
57
|
-
includeAttributes?: boolean;
|
|
58
|
-
/** Filter spans by minimum duration (ms) */
|
|
59
|
-
minDurationMs?: number;
|
|
60
|
-
/** Custom colors by span kind */
|
|
61
|
-
kindColors?: Partial<Record<OtelSpanKind, string>>;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Result of trace-to-canvas conversion
|
|
65
|
-
*/
|
|
66
|
-
export interface TraceCanvasResult {
|
|
67
|
-
canvas: ExtendedCanvas;
|
|
68
|
-
stats: {
|
|
69
|
-
traceCount: number;
|
|
70
|
-
spanCount: number;
|
|
71
|
-
serviceCount: number;
|
|
72
|
-
maxDepth: number;
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Convert trace export to ExtendedCanvas
|
|
77
|
-
*/
|
|
78
|
-
export declare function traceToCanvas(traceExport: TraceExport, options?: TraceToCanvasOptions): TraceCanvasResult;
|
|
79
|
-
/**
|
|
80
|
-
* Convert trace export to canvas and return as JSON string
|
|
81
|
-
*/
|
|
82
|
-
export declare function traceToCanvasJson(traceExport: TraceExport, options?: TraceToCanvasOptions): string;
|
|
83
|
-
//# sourceMappingURL=TraceToCanvas.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TraceToCanvas.d.ts","sourceRoot":"","sources":["../../src/utils/TraceToCanvas.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,cAAc,EAKf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAMlD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACvD,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;KACxD,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAMD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,uBAAuB;IACvB,MAAM,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC;IAErC,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,4BAA4B;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,iCAAiC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AA8RD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,WAAW,EACxB,OAAO,GAAE,oBAAyB,GACjC,iBAAiB,CA4GnB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,WAAW,EACxB,OAAO,GAAE,oBAAyB,GACjC,MAAM,CAGR"}
|
|
@@ -1,336 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Trace to Canvas Converter
|
|
4
|
-
*
|
|
5
|
-
* Converts OpenTelemetry trace data (captured from test runs) into
|
|
6
|
-
* ExtendedCanvas format for visualization.
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.traceToCanvasJson = exports.traceToCanvas = void 0;
|
|
10
|
-
const DEFAULT_OPTIONS = {
|
|
11
|
-
groupByService: true,
|
|
12
|
-
layout: 'hierarchical',
|
|
13
|
-
nodeWidth: 200,
|
|
14
|
-
nodeHeight: 60,
|
|
15
|
-
horizontalSpacing: 50,
|
|
16
|
-
verticalSpacing: 80,
|
|
17
|
-
includeAttributes: true,
|
|
18
|
-
minDurationMs: 0,
|
|
19
|
-
kindColors: {
|
|
20
|
-
SERVER: '#4f46e5',
|
|
21
|
-
CLIENT: '#0891b2',
|
|
22
|
-
PRODUCER: '#059669',
|
|
23
|
-
CONSUMER: '#059669',
|
|
24
|
-
INTERNAL: '#6b7280', // Gray
|
|
25
|
-
},
|
|
26
|
-
};
|
|
27
|
-
// ============================================================================
|
|
28
|
-
// Conversion Logic
|
|
29
|
-
// ============================================================================
|
|
30
|
-
/**
|
|
31
|
-
* Map span kind to node shape
|
|
32
|
-
*/
|
|
33
|
-
function kindToShape(kind) {
|
|
34
|
-
const shapes = {
|
|
35
|
-
SERVER: 'hexagon',
|
|
36
|
-
CLIENT: 'diamond',
|
|
37
|
-
PRODUCER: 'rectangle',
|
|
38
|
-
CONSUMER: 'rectangle',
|
|
39
|
-
INTERNAL: 'circle',
|
|
40
|
-
};
|
|
41
|
-
return shapes[kind] ?? 'rectangle';
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Get service name from span resource
|
|
45
|
-
*/
|
|
46
|
-
function getServiceName(span) {
|
|
47
|
-
return span.resource?.['service.name'] ?? 'unknown';
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Format duration for display
|
|
51
|
-
*/
|
|
52
|
-
function formatDuration(ms) {
|
|
53
|
-
if (ms < 1)
|
|
54
|
-
return `${(ms * 1000).toFixed(0)}μs`;
|
|
55
|
-
if (ms < 1000)
|
|
56
|
-
return `${ms.toFixed(2)}ms`;
|
|
57
|
-
return `${(ms / 1000).toFixed(2)}s`;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Group spans by trace ID
|
|
61
|
-
*/
|
|
62
|
-
function groupByTraceId(spans) {
|
|
63
|
-
const traces = new Map();
|
|
64
|
-
for (const span of spans) {
|
|
65
|
-
const existing = traces.get(span.traceId) ?? [];
|
|
66
|
-
existing.push(span);
|
|
67
|
-
traces.set(span.traceId, existing);
|
|
68
|
-
}
|
|
69
|
-
return traces;
|
|
70
|
-
}
|
|
71
|
-
function buildSpanTree(spans) {
|
|
72
|
-
const spanMap = new Map(spans.map((s) => [s.spanId, s]));
|
|
73
|
-
const childMap = new Map();
|
|
74
|
-
// Group by parent
|
|
75
|
-
for (const span of spans) {
|
|
76
|
-
const parentId = span.parentSpanId ?? undefined;
|
|
77
|
-
const siblings = childMap.get(parentId) ?? [];
|
|
78
|
-
siblings.push(span);
|
|
79
|
-
childMap.set(parentId, siblings);
|
|
80
|
-
}
|
|
81
|
-
// Build tree recursively
|
|
82
|
-
function buildNode(span, depth, index) {
|
|
83
|
-
const children = (childMap.get(span.spanId) ?? [])
|
|
84
|
-
.sort((a, b) => a.startTime - b.startTime)
|
|
85
|
-
.map((child, i) => buildNode(child, depth + 1, i));
|
|
86
|
-
return { span, children, depth, index };
|
|
87
|
-
}
|
|
88
|
-
// Find roots (spans with no parent or parent not in this trace)
|
|
89
|
-
const roots = spans.filter((s) => !s.parentSpanId || !spanMap.has(s.parentSpanId));
|
|
90
|
-
return roots.sort((a, b) => a.startTime - b.startTime).map((root, i) => buildNode(root, 0, i));
|
|
91
|
-
}
|
|
92
|
-
function calculateHierarchicalLayout(trees, options) {
|
|
93
|
-
const positions = new Map();
|
|
94
|
-
const { nodeWidth, nodeHeight, horizontalSpacing, verticalSpacing } = options;
|
|
95
|
-
// Track width at each depth level
|
|
96
|
-
const depthWidths = new Map();
|
|
97
|
-
function layoutNode(node, offsetX) {
|
|
98
|
-
const { span, children, depth } = node;
|
|
99
|
-
// Get current x position for this depth
|
|
100
|
-
const currentX = depthWidths.get(depth) ?? offsetX;
|
|
101
|
-
const y = depth * (nodeHeight + verticalSpacing);
|
|
102
|
-
if (children.length === 0) {
|
|
103
|
-
// Leaf node
|
|
104
|
-
positions.set(span.spanId, { x: currentX, y });
|
|
105
|
-
depthWidths.set(depth, currentX + nodeWidth + horizontalSpacing);
|
|
106
|
-
return currentX + nodeWidth / 2;
|
|
107
|
-
}
|
|
108
|
-
// Layout children first
|
|
109
|
-
const childCenters = [];
|
|
110
|
-
for (const child of children) {
|
|
111
|
-
const center = layoutNode(child, currentX);
|
|
112
|
-
childCenters.push(center);
|
|
113
|
-
}
|
|
114
|
-
// Center parent above children
|
|
115
|
-
const minCenter = Math.min(...childCenters);
|
|
116
|
-
const maxCenter = Math.max(...childCenters);
|
|
117
|
-
const parentCenter = (minCenter + maxCenter) / 2;
|
|
118
|
-
const parentX = parentCenter - nodeWidth / 2;
|
|
119
|
-
positions.set(span.spanId, { x: Math.max(currentX, parentX), y });
|
|
120
|
-
// Update depth width if needed
|
|
121
|
-
const newWidth = Math.max(depthWidths.get(depth) ?? 0, parentX + nodeWidth + horizontalSpacing);
|
|
122
|
-
depthWidths.set(depth, newWidth);
|
|
123
|
-
return parentCenter;
|
|
124
|
-
}
|
|
125
|
-
// Layout each tree
|
|
126
|
-
let offsetX = 0;
|
|
127
|
-
for (const tree of trees) {
|
|
128
|
-
layoutNode(tree, offsetX);
|
|
129
|
-
// Add gap between traces
|
|
130
|
-
offsetX = Math.max(...Array.from(depthWidths.values())) + horizontalSpacing;
|
|
131
|
-
}
|
|
132
|
-
return positions;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Convert a single span to a canvas node
|
|
136
|
-
*/
|
|
137
|
-
function spanToNode(span, position, options) {
|
|
138
|
-
const { nodeWidth, nodeHeight, kindColors, includeAttributes } = options;
|
|
139
|
-
const statusCode = span.status?.code ?? 'UNSET';
|
|
140
|
-
return {
|
|
141
|
-
id: span.spanId,
|
|
142
|
-
type: 'text',
|
|
143
|
-
x: position.x,
|
|
144
|
-
y: position.y,
|
|
145
|
-
width: nodeWidth,
|
|
146
|
-
height: nodeHeight,
|
|
147
|
-
text: span.name,
|
|
148
|
-
color: statusCode === 'ERROR' ? 1 : undefined,
|
|
149
|
-
pv: {
|
|
150
|
-
nodeType: 'span',
|
|
151
|
-
name: span.name,
|
|
152
|
-
description: formatDuration(span.duration),
|
|
153
|
-
shape: kindToShape(span.kind),
|
|
154
|
-
fill: statusCode === 'ERROR' ? '#ef4444' : kindColors[span.kind],
|
|
155
|
-
states: {
|
|
156
|
-
[statusCode]: {
|
|
157
|
-
color: statusCode === 'OK' ? '#22c55e' : statusCode === 'ERROR' ? '#ef4444' : '#6b7280',
|
|
158
|
-
label: statusCode,
|
|
159
|
-
},
|
|
160
|
-
},
|
|
161
|
-
otel: {
|
|
162
|
-
kind: 'instance',
|
|
163
|
-
category: 'span',
|
|
164
|
-
},
|
|
165
|
-
...(includeAttributes && span.attributes && Object.keys(span.attributes).length > 0
|
|
166
|
-
? {
|
|
167
|
-
dataSchema: Object.fromEntries(Object.entries(span.attributes).map(([key, value]) => [
|
|
168
|
-
key,
|
|
169
|
-
{ type: typeof value, required: false },
|
|
170
|
-
])),
|
|
171
|
-
}
|
|
172
|
-
: {}),
|
|
173
|
-
},
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Create edge between parent and child span
|
|
178
|
-
*/
|
|
179
|
-
function createEdge(parentSpanId, childSpanId, isCrossService) {
|
|
180
|
-
return {
|
|
181
|
-
id: `edge-${parentSpanId}-${childSpanId}`,
|
|
182
|
-
fromNode: parentSpanId,
|
|
183
|
-
toNode: childSpanId,
|
|
184
|
-
fromSide: 'bottom',
|
|
185
|
-
toSide: 'top',
|
|
186
|
-
toEnd: 'arrow',
|
|
187
|
-
pv: {
|
|
188
|
-
edgeType: 'span-child',
|
|
189
|
-
style: isCrossService ? 'dashed' : 'solid',
|
|
190
|
-
width: isCrossService ? 2 : 1,
|
|
191
|
-
},
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Create service group node
|
|
196
|
-
*/
|
|
197
|
-
function createServiceGroup(serviceName, spans, positions, options) {
|
|
198
|
-
const serviceSpans = spans.filter((s) => getServiceName(s) === serviceName);
|
|
199
|
-
if (serviceSpans.length === 0)
|
|
200
|
-
return null;
|
|
201
|
-
const servicePositions = serviceSpans
|
|
202
|
-
.map((s) => positions.get(s.spanId))
|
|
203
|
-
.filter((p) => p !== undefined);
|
|
204
|
-
if (servicePositions.length === 0)
|
|
205
|
-
return null;
|
|
206
|
-
const minX = Math.min(...servicePositions.map((p) => p.x));
|
|
207
|
-
const maxX = Math.max(...servicePositions.map((p) => p.x));
|
|
208
|
-
const minY = Math.min(...servicePositions.map((p) => p.y));
|
|
209
|
-
const maxY = Math.max(...servicePositions.map((p) => p.y));
|
|
210
|
-
const padding = 20;
|
|
211
|
-
return {
|
|
212
|
-
id: `service-${serviceName}`,
|
|
213
|
-
type: 'group',
|
|
214
|
-
x: minX - padding,
|
|
215
|
-
y: minY - padding - 30,
|
|
216
|
-
width: maxX - minX + options.nodeWidth + padding * 2,
|
|
217
|
-
height: maxY - minY + options.nodeHeight + padding * 2 + 30,
|
|
218
|
-
label: serviceName,
|
|
219
|
-
pv: {
|
|
220
|
-
nodeType: 'service',
|
|
221
|
-
name: serviceName,
|
|
222
|
-
icon: 'server',
|
|
223
|
-
},
|
|
224
|
-
};
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Convert trace export to ExtendedCanvas
|
|
228
|
-
*/
|
|
229
|
-
function traceToCanvas(traceExport, options = {}) {
|
|
230
|
-
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
231
|
-
// Filter spans by duration
|
|
232
|
-
const spans = traceExport.spans.filter((s) => s.duration >= opts.minDurationMs);
|
|
233
|
-
if (spans.length === 0) {
|
|
234
|
-
return {
|
|
235
|
-
canvas: {
|
|
236
|
-
name: 'Empty Trace',
|
|
237
|
-
nodes: [],
|
|
238
|
-
edges: [],
|
|
239
|
-
},
|
|
240
|
-
stats: {
|
|
241
|
-
traceCount: 0,
|
|
242
|
-
spanCount: 0,
|
|
243
|
-
serviceCount: 0,
|
|
244
|
-
maxDepth: 0,
|
|
245
|
-
},
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
// Group by trace and build trees
|
|
249
|
-
const traceGroups = groupByTraceId(spans);
|
|
250
|
-
const allTrees = [];
|
|
251
|
-
for (const traceSpans of traceGroups.values()) {
|
|
252
|
-
allTrees.push(...buildSpanTree(traceSpans));
|
|
253
|
-
}
|
|
254
|
-
// Calculate layout
|
|
255
|
-
const positions = calculateHierarchicalLayout(allTrees, opts);
|
|
256
|
-
// Create span nodes
|
|
257
|
-
const spanNodes = spans.map((span) => {
|
|
258
|
-
const position = positions.get(span.spanId) ?? { x: 0, y: 0 };
|
|
259
|
-
return spanToNode(span, position, opts);
|
|
260
|
-
});
|
|
261
|
-
// Create edges
|
|
262
|
-
const spanMap = new Map(spans.map((s) => [s.spanId, s]));
|
|
263
|
-
const edges = spans
|
|
264
|
-
.filter((span) => span.parentSpanId && spanMap.has(span.parentSpanId))
|
|
265
|
-
.map((span) => {
|
|
266
|
-
const parent = spanMap.get(span.parentSpanId);
|
|
267
|
-
const isCrossService = getServiceName(span) !== getServiceName(parent);
|
|
268
|
-
return createEdge(span.parentSpanId, span.spanId, isCrossService);
|
|
269
|
-
});
|
|
270
|
-
// Create service groups if enabled
|
|
271
|
-
const serviceGroups = [];
|
|
272
|
-
if (opts.groupByService) {
|
|
273
|
-
const services = new Set(spans.map(getServiceName));
|
|
274
|
-
for (const service of services) {
|
|
275
|
-
const group = createServiceGroup(service, spans, positions, opts);
|
|
276
|
-
if (group)
|
|
277
|
-
serviceGroups.push(group);
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
// Calculate stats
|
|
281
|
-
const maxDepth = Math.max(...allTrees.flatMap(function getDepths(tree) {
|
|
282
|
-
return [tree.depth, ...tree.children.flatMap(getDepths)];
|
|
283
|
-
}));
|
|
284
|
-
// Build canvas
|
|
285
|
-
const canvas = {
|
|
286
|
-
name: `Trace: ${traceExport.serviceName}`,
|
|
287
|
-
nodes: [...serviceGroups, ...spanNodes],
|
|
288
|
-
edges,
|
|
289
|
-
pv: {
|
|
290
|
-
description: `Exported at ${traceExport.exportedAt}`,
|
|
291
|
-
nodeTypes: {
|
|
292
|
-
span: {
|
|
293
|
-
description: 'OpenTelemetry span from trace',
|
|
294
|
-
shape: 'rectangle',
|
|
295
|
-
},
|
|
296
|
-
service: {
|
|
297
|
-
description: 'Service grouping',
|
|
298
|
-
icon: 'server',
|
|
299
|
-
shape: 'rectangle',
|
|
300
|
-
},
|
|
301
|
-
},
|
|
302
|
-
edgeTypes: {
|
|
303
|
-
'span-child': {
|
|
304
|
-
label: 'Child span',
|
|
305
|
-
directed: true,
|
|
306
|
-
},
|
|
307
|
-
},
|
|
308
|
-
display: {
|
|
309
|
-
layout: 'manual',
|
|
310
|
-
animations: {
|
|
311
|
-
enabled: true,
|
|
312
|
-
speed: 1,
|
|
313
|
-
},
|
|
314
|
-
},
|
|
315
|
-
},
|
|
316
|
-
};
|
|
317
|
-
return {
|
|
318
|
-
canvas,
|
|
319
|
-
stats: {
|
|
320
|
-
traceCount: traceGroups.size,
|
|
321
|
-
spanCount: spans.length,
|
|
322
|
-
serviceCount: new Set(spans.map(getServiceName)).size,
|
|
323
|
-
maxDepth,
|
|
324
|
-
},
|
|
325
|
-
};
|
|
326
|
-
}
|
|
327
|
-
exports.traceToCanvas = traceToCanvas;
|
|
328
|
-
/**
|
|
329
|
-
* Convert trace export to canvas and return as JSON string
|
|
330
|
-
*/
|
|
331
|
-
function traceToCanvasJson(traceExport, options = {}) {
|
|
332
|
-
const { canvas } = traceToCanvas(traceExport, options);
|
|
333
|
-
return JSON.stringify(canvas, null, 2);
|
|
334
|
-
}
|
|
335
|
-
exports.traceToCanvasJson = traceToCanvasJson;
|
|
336
|
-
//# sourceMappingURL=TraceToCanvas.js.map
|