@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,127 +0,0 @@
|
|
|
1
|
-
import { describe, expect, test } from 'bun:test';
|
|
2
|
-
import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from 'fs';
|
|
3
|
-
import { join } from 'path';
|
|
4
|
-
import { tmpdir } from 'os';
|
|
5
|
-
import { NodeFileSystemAdapter } from '@principal-ai/repository-abstraction/node';
|
|
6
|
-
import { ScopesCanvasValidator } from './ScopesCanvasValidator';
|
|
7
|
-
import type { ExtendedCanvas } from '../types/canvas';
|
|
8
|
-
|
|
9
|
-
function makeScopeNode(opts: {
|
|
10
|
-
id: string;
|
|
11
|
-
scope: string;
|
|
12
|
-
description?: string;
|
|
13
|
-
paths?: string[];
|
|
14
|
-
}): any {
|
|
15
|
-
return {
|
|
16
|
-
id: opts.id,
|
|
17
|
-
type: 'otel-scope',
|
|
18
|
-
description: opts.description ?? `${opts.scope} scope`,
|
|
19
|
-
...(opts.paths !== undefined ? { paths: opts.paths } : {}),
|
|
20
|
-
otel: { scope: opts.scope },
|
|
21
|
-
x: 0,
|
|
22
|
-
y: 0,
|
|
23
|
-
width: 100,
|
|
24
|
-
height: 50,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
function makeCanvas(nodes: any[]): ExtendedCanvas {
|
|
29
|
-
return { nodes, edges: [] } as ExtendedCanvas;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function withTempRepo(layout: string[], fn: (root: string) => Promise<void>): Promise<void> {
|
|
33
|
-
const root = mkdtempSync(join(tmpdir(), 'scope-paths-'));
|
|
34
|
-
try {
|
|
35
|
-
for (const rel of layout) {
|
|
36
|
-
const full = join(root, rel);
|
|
37
|
-
mkdirSync(full, { recursive: true });
|
|
38
|
-
writeFileSync(join(full, '.keep'), '');
|
|
39
|
-
}
|
|
40
|
-
return fn(root).finally(() => rmSync(root, { recursive: true, force: true }));
|
|
41
|
-
} catch (e) {
|
|
42
|
-
rmSync(root, { recursive: true, force: true });
|
|
43
|
-
throw e;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
describe('ScopesCanvasValidator scope paths', () => {
|
|
48
|
-
test('no paths declared → no path violations', async () => {
|
|
49
|
-
const canvas = makeCanvas([makeScopeNode({ id: 's1', scope: 'a.b' })]);
|
|
50
|
-
const v = new ScopesCanvasValidator(new NodeFileSystemAdapter());
|
|
51
|
-
const r = await v.validate({
|
|
52
|
-
scopesCanvas: canvas,
|
|
53
|
-
ownedScopes: ['a.b'],
|
|
54
|
-
basePath: '/tmp',
|
|
55
|
-
});
|
|
56
|
-
expect(r.violations.find(x => x.ruleId.startsWith('scopes-paths'))).toBeUndefined();
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
test('scopes-paths-multiple warns when more than one path', async () => {
|
|
60
|
-
await withTempRepo(['packages/a/src', 'packages/a/generated'], async (root) => {
|
|
61
|
-
const canvas = makeCanvas([
|
|
62
|
-
makeScopeNode({
|
|
63
|
-
id: 's1',
|
|
64
|
-
scope: 'a',
|
|
65
|
-
paths: ['packages/a/src', 'packages/a/generated'],
|
|
66
|
-
}),
|
|
67
|
-
]);
|
|
68
|
-
const v = new ScopesCanvasValidator(new NodeFileSystemAdapter());
|
|
69
|
-
const r = await v.validate({ scopesCanvas: canvas, ownedScopes: ['a'], basePath: root });
|
|
70
|
-
const w = r.violations.find(x => x.ruleId === 'scopes-paths-multiple');
|
|
71
|
-
expect(w).toBeDefined();
|
|
72
|
-
expect(w?.severity).toBe('warn');
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
test('scopes-paths-missing warns when path does not exist', async () => {
|
|
77
|
-
await withTempRepo(['packages/a/src'], async (root) => {
|
|
78
|
-
const canvas = makeCanvas([
|
|
79
|
-
makeScopeNode({ id: 's1', scope: 'a', paths: ['packages/a/missing'] }),
|
|
80
|
-
]);
|
|
81
|
-
const v = new ScopesCanvasValidator(new NodeFileSystemAdapter());
|
|
82
|
-
const r = await v.validate({ scopesCanvas: canvas, ownedScopes: ['a'], basePath: root });
|
|
83
|
-
const w = r.violations.find(x => x.ruleId === 'scopes-paths-missing');
|
|
84
|
-
expect(w).toBeDefined();
|
|
85
|
-
expect(w?.severity).toBe('warn');
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
test('scopes-paths-overlap errors on identical paths across scopes', async () => {
|
|
90
|
-
await withTempRepo(['packages/shared/src'], async (root) => {
|
|
91
|
-
const canvas = makeCanvas([
|
|
92
|
-
makeScopeNode({ id: 's1', scope: 'a', paths: ['packages/shared/src'] }),
|
|
93
|
-
makeScopeNode({ id: 's2', scope: 'b', paths: ['packages/shared/src'] }),
|
|
94
|
-
]);
|
|
95
|
-
const v = new ScopesCanvasValidator(new NodeFileSystemAdapter());
|
|
96
|
-
const r = await v.validate({
|
|
97
|
-
scopesCanvas: canvas,
|
|
98
|
-
ownedScopes: ['a', 'b'],
|
|
99
|
-
basePath: root,
|
|
100
|
-
});
|
|
101
|
-
const e = r.violations.find(x => x.ruleId === 'scopes-paths-overlap');
|
|
102
|
-
expect(e).toBeDefined();
|
|
103
|
-
expect(e?.severity).toBe('error');
|
|
104
|
-
expect(r.valid).toBe(false);
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
test('parent-child path nesting is allowed (no overlap error)', async () => {
|
|
109
|
-
await withTempRepo(['packages/subsystems-core/src/validation'], async (root) => {
|
|
110
|
-
const canvas = makeCanvas([
|
|
111
|
-
makeScopeNode({ id: 's1', scope: 'principal-ai.core', paths: ['packages/subsystems-core/src'] }),
|
|
112
|
-
makeScopeNode({
|
|
113
|
-
id: 's2',
|
|
114
|
-
scope: 'principal-ai.core.validation',
|
|
115
|
-
paths: ['packages/subsystems-core/src/validation'],
|
|
116
|
-
}),
|
|
117
|
-
]);
|
|
118
|
-
const v = new ScopesCanvasValidator(new NodeFileSystemAdapter());
|
|
119
|
-
const r = await v.validate({
|
|
120
|
-
scopesCanvas: canvas,
|
|
121
|
-
ownedScopes: ['principal-ai.core', 'principal-ai.core.validation'],
|
|
122
|
-
basePath: root,
|
|
123
|
-
});
|
|
124
|
-
expect(r.violations.find(x => x.ruleId === 'scopes-paths-overlap')).toBeUndefined();
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
});
|
|
@@ -1,305 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Scopes Canvas Validator
|
|
3
|
-
*
|
|
4
|
-
* Validates that a .scopes.canvas file exists and properly documents
|
|
5
|
-
* all instrumentation scopes declared in library.yaml.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type { FileSystemAdapter } from '@principal-ai/repository-abstraction';
|
|
9
|
-
import type { ExtendedCanvas, ExtendedCanvasNode, OtelScopeNode, isOtelScopeNode } from '../types/canvas';
|
|
10
|
-
import { isOtelScopeNode as checkOtelScopeNode } from '../types/canvas';
|
|
11
|
-
import { pathsOverlap } from '../events/path-helpers';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Scopes canvas validation context
|
|
15
|
-
*/
|
|
16
|
-
export interface ScopesCanvasValidationContext {
|
|
17
|
-
/** The scopes canvas (if found) */
|
|
18
|
-
scopesCanvas?: ExtendedCanvas;
|
|
19
|
-
|
|
20
|
-
/** Path to the scopes canvas file */
|
|
21
|
-
scopesCanvasPath?: string;
|
|
22
|
-
|
|
23
|
-
/** Owned scopes from library.yaml */
|
|
24
|
-
ownedScopes: string[];
|
|
25
|
-
|
|
26
|
-
/** Base path for resolving relative paths */
|
|
27
|
-
basePath: string;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Scopes canvas validation violation
|
|
32
|
-
*/
|
|
33
|
-
export interface ScopesCanvasViolation {
|
|
34
|
-
/** Rule ID that detected this violation */
|
|
35
|
-
ruleId: string;
|
|
36
|
-
|
|
37
|
-
/** Severity level */
|
|
38
|
-
severity: 'error' | 'warn';
|
|
39
|
-
|
|
40
|
-
/** File path where violation occurred */
|
|
41
|
-
file: string;
|
|
42
|
-
|
|
43
|
-
/** JSON path within file (optional) */
|
|
44
|
-
path?: string;
|
|
45
|
-
|
|
46
|
-
/** Human-readable description of what's wrong */
|
|
47
|
-
message: string;
|
|
48
|
-
|
|
49
|
-
/** Why this matters */
|
|
50
|
-
impact: string;
|
|
51
|
-
|
|
52
|
-
/** How to fix it */
|
|
53
|
-
suggestion: string;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Scopes canvas validation result
|
|
58
|
-
*/
|
|
59
|
-
export interface ScopesCanvasValidationResult {
|
|
60
|
-
/** Whether validation passed (no errors) */
|
|
61
|
-
valid: boolean;
|
|
62
|
-
|
|
63
|
-
/** List of violations found */
|
|
64
|
-
violations: ScopesCanvasViolation[];
|
|
65
|
-
|
|
66
|
-
/** Summary of scopes coverage */
|
|
67
|
-
coverage: {
|
|
68
|
-
/** Total owned scopes from library.yaml */
|
|
69
|
-
totalOwnedScopes: number;
|
|
70
|
-
/** Scopes documented in canvas */
|
|
71
|
-
documentedScopes: string[];
|
|
72
|
-
/** Scopes missing from canvas */
|
|
73
|
-
missingScopes: string[];
|
|
74
|
-
/** Scopes in canvas but not in owned-scopes */
|
|
75
|
-
extraScopes: string[];
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Validates scopes canvas files
|
|
81
|
-
*/
|
|
82
|
-
export class ScopesCanvasValidator {
|
|
83
|
-
constructor(private fsAdapter: FileSystemAdapter) {}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Validate a scopes canvas against library.yaml owned-scopes
|
|
87
|
-
*/
|
|
88
|
-
async validate(context: ScopesCanvasValidationContext): Promise<ScopesCanvasValidationResult> {
|
|
89
|
-
const violations: ScopesCanvasViolation[] = [];
|
|
90
|
-
const { scopesCanvas, scopesCanvasPath, ownedScopes, basePath } = context;
|
|
91
|
-
|
|
92
|
-
// Initialize coverage tracking
|
|
93
|
-
const documentedScopes: string[] = [];
|
|
94
|
-
const missingScopes: string[] = [];
|
|
95
|
-
const extraScopes: string[] = [];
|
|
96
|
-
|
|
97
|
-
// Check if scopes canvas exists when owned-scopes are defined
|
|
98
|
-
if (ownedScopes.length > 0 && !scopesCanvas) {
|
|
99
|
-
violations.push({
|
|
100
|
-
ruleId: 'scopes-canvas-required',
|
|
101
|
-
severity: 'error',
|
|
102
|
-
file: scopesCanvasPath || '.principal-views/architecture.scopes.canvas',
|
|
103
|
-
message: 'Scopes canvas is required when library.yaml defines owned-scopes',
|
|
104
|
-
impact: 'Cannot visualize or validate instrumentation scope boundaries',
|
|
105
|
-
suggestion: `Create a scopes canvas at .principal-views/architecture.scopes.canvas with nodes for each scope:\n` +
|
|
106
|
-
ownedScopes.map(s => ` - ${s}`).join('\n') +
|
|
107
|
-
'\n\nUse type: "otel-scope" with otel.scope set to the scope name.',
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
return {
|
|
111
|
-
valid: false,
|
|
112
|
-
violations,
|
|
113
|
-
coverage: {
|
|
114
|
-
totalOwnedScopes: ownedScopes.length,
|
|
115
|
-
documentedScopes: [],
|
|
116
|
-
missingScopes: [...ownedScopes],
|
|
117
|
-
extraScopes: [],
|
|
118
|
-
},
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// If no owned scopes and no canvas, that's fine
|
|
123
|
-
if (ownedScopes.length === 0) {
|
|
124
|
-
return {
|
|
125
|
-
valid: true,
|
|
126
|
-
violations,
|
|
127
|
-
coverage: {
|
|
128
|
-
totalOwnedScopes: 0,
|
|
129
|
-
documentedScopes: [],
|
|
130
|
-
missingScopes: [],
|
|
131
|
-
extraScopes: [],
|
|
132
|
-
},
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// Extract scopes from canvas nodes
|
|
137
|
-
const canvasScopes = this.extractScopesFromCanvas(scopesCanvas!);
|
|
138
|
-
const canvasScopeSet = new Set(canvasScopes.map(s => s.scope));
|
|
139
|
-
const ownedScopeSet = new Set(ownedScopes);
|
|
140
|
-
|
|
141
|
-
// Check which scopes are documented
|
|
142
|
-
for (const scope of ownedScopes) {
|
|
143
|
-
if (canvasScopeSet.has(scope)) {
|
|
144
|
-
documentedScopes.push(scope);
|
|
145
|
-
} else {
|
|
146
|
-
missingScopes.push(scope);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// Check for extra scopes not in owned-scopes
|
|
151
|
-
for (const { scope, nodeId } of canvasScopes) {
|
|
152
|
-
if (!ownedScopeSet.has(scope)) {
|
|
153
|
-
extraScopes.push(scope);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// Report missing scopes
|
|
158
|
-
if (missingScopes.length > 0) {
|
|
159
|
-
violations.push({
|
|
160
|
-
ruleId: 'scopes-canvas-incomplete',
|
|
161
|
-
severity: 'error',
|
|
162
|
-
file: scopesCanvasPath || '.principal-views/architecture.scopes.canvas',
|
|
163
|
-
message: `Scopes canvas is missing ${missingScopes.length} scope(s) from library.yaml`,
|
|
164
|
-
impact: 'These scopes are not documented in the scope boundary map',
|
|
165
|
-
suggestion: `Add nodes for the following scopes:\n` +
|
|
166
|
-
missingScopes.map(s => ` - ${s}: Add type: "otel-scope" node with otel.scope: "${s}"`).join('\n'),
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// Report extra scopes (warning, not error)
|
|
171
|
-
if (extraScopes.length > 0) {
|
|
172
|
-
violations.push({
|
|
173
|
-
ruleId: 'scopes-canvas-extra-scopes',
|
|
174
|
-
severity: 'warn',
|
|
175
|
-
file: scopesCanvasPath || '.principal-views/architecture.scopes.canvas',
|
|
176
|
-
message: `Scopes canvas contains ${extraScopes.length} scope(s) not in library.yaml owned-scopes`,
|
|
177
|
-
impact: 'These scopes may be external or need to be added to library.yaml',
|
|
178
|
-
suggestion: `Either:\n` +
|
|
179
|
-
` - Add these scopes to owned-scopes in library.yaml: ${extraScopes.join(', ')}\n` +
|
|
180
|
-
` - Or remove them from the scopes canvas if they are external`,
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
// Validate scope nodes have required fields (otel-scope nodes only)
|
|
185
|
-
for (const { scope, nodeId, node } of canvasScopes) {
|
|
186
|
-
// type === 'otel-scope' with top-level description
|
|
187
|
-
const otelScopeNode = node as unknown as OtelScopeNode;
|
|
188
|
-
if (!otelScopeNode.description) {
|
|
189
|
-
violations.push({
|
|
190
|
-
ruleId: 'scopes-canvas-node-description',
|
|
191
|
-
severity: 'warn',
|
|
192
|
-
file: scopesCanvasPath || '.principal-views/architecture.scopes.canvas',
|
|
193
|
-
path: `nodes[${nodeId}]`,
|
|
194
|
-
message: `Scope node "${scope}" is missing a description`,
|
|
195
|
-
impact: 'Scope documentation is incomplete without a description',
|
|
196
|
-
suggestion: `Add a description field to explain what this scope covers`,
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
// Validate scope paths (optional field — enforcement is opt-in per scope).
|
|
202
|
-
// Collects declared paths across scopes to check for cross-scope overlap.
|
|
203
|
-
const declaredPaths: Array<{ scope: string; nodeId: string; path: string }> = [];
|
|
204
|
-
for (const { scope, nodeId, node } of canvasScopes) {
|
|
205
|
-
const otelScopeNode = node as unknown as OtelScopeNode;
|
|
206
|
-
const paths = otelScopeNode.paths;
|
|
207
|
-
if (!paths || paths.length === 0) continue;
|
|
208
|
-
|
|
209
|
-
// Warn when a scope declares more than one path — prompt author to
|
|
210
|
-
// confirm the multi-location is intentional (monorepo bundling,
|
|
211
|
-
// generated code, platform splits, migration) rather than accidental.
|
|
212
|
-
if (paths.length > 1) {
|
|
213
|
-
violations.push({
|
|
214
|
-
ruleId: 'scopes-paths-multiple',
|
|
215
|
-
severity: 'warn',
|
|
216
|
-
file: scopesCanvasPath || '.principal-views/architecture.scopes.canvas',
|
|
217
|
-
path: `nodes[${nodeId}].paths`,
|
|
218
|
-
message: `Scope "${scope}" declares ${paths.length} paths`,
|
|
219
|
-
impact: 'Multiple paths can indicate legitimate cases (monorepo bundling, generated code, platform splits, migration) but often signal that the scope should be split',
|
|
220
|
-
suggestion: 'Confirm the multi-location is intentional. Otherwise consider splitting the scope or grouping the code under a single parent folder.',
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
for (const p of paths) {
|
|
225
|
-
declaredPaths.push({ scope, nodeId, path: p });
|
|
226
|
-
|
|
227
|
-
// Warn when a declared path does not exist relative to the repo root.
|
|
228
|
-
const resolved = this.fsAdapter.join(basePath, p);
|
|
229
|
-
if (!(await this.fsAdapter.exists(resolved))) {
|
|
230
|
-
violations.push({
|
|
231
|
-
ruleId: 'scopes-paths-missing',
|
|
232
|
-
severity: 'warn',
|
|
233
|
-
file: scopesCanvasPath || '.principal-views/architecture.scopes.canvas',
|
|
234
|
-
path: `nodes[${nodeId}].paths`,
|
|
235
|
-
message: `Path "${p}" declared by scope "${scope}" does not exist`,
|
|
236
|
-
impact: 'Events emitted under this scope cannot be validated against a real code location',
|
|
237
|
-
suggestion: 'Verify the path exists relative to the repository root, or remove it from the scope declaration.',
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
// Cross-scope overlap check. Parent-child path nesting is a valid partition
|
|
244
|
-
// (longest-prefix wins at runtime); any other overlap makes scope ownership
|
|
245
|
-
// of a file ambiguous.
|
|
246
|
-
for (let i = 0; i < declaredPaths.length; i++) {
|
|
247
|
-
for (let j = i + 1; j < declaredPaths.length; j++) {
|
|
248
|
-
const a = declaredPaths[i];
|
|
249
|
-
const b = declaredPaths[j];
|
|
250
|
-
if (a.scope === b.scope) continue;
|
|
251
|
-
|
|
252
|
-
const relationship = pathsOverlap(a.path, b.path);
|
|
253
|
-
if (relationship === 'conflict') {
|
|
254
|
-
violations.push({
|
|
255
|
-
ruleId: 'scopes-paths-overlap',
|
|
256
|
-
severity: 'error',
|
|
257
|
-
file: scopesCanvasPath || '.principal-views/architecture.scopes.canvas',
|
|
258
|
-
message: `Paths overlap between scopes "${a.scope}" ("${a.path}") and "${b.scope}" ("${b.path}")`,
|
|
259
|
-
impact: 'A file covered by two scopes makes scope ownership ambiguous',
|
|
260
|
-
suggestion: 'Separate the paths so they are disjoint, or restructure as parent/child scopes by dotted name (e.g., "principal-ai.core" covering "packages/subsystems-core/src" and "principal-ai.core.validation" covering "packages/subsystems-core/src/validation").',
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
const errors = violations.filter(v => v.severity === 'error');
|
|
267
|
-
|
|
268
|
-
return {
|
|
269
|
-
valid: errors.length === 0,
|
|
270
|
-
violations,
|
|
271
|
-
coverage: {
|
|
272
|
-
totalOwnedScopes: ownedScopes.length,
|
|
273
|
-
documentedScopes,
|
|
274
|
-
missingScopes,
|
|
275
|
-
extraScopes,
|
|
276
|
-
},
|
|
277
|
-
};
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
/**
|
|
281
|
-
* Extract scope information from canvas nodes (otel-scope nodes only)
|
|
282
|
-
*/
|
|
283
|
-
private extractScopesFromCanvas(
|
|
284
|
-
canvas: ExtendedCanvas
|
|
285
|
-
): Array<{ scope: string; nodeId: string; node: ExtendedCanvasNode }> {
|
|
286
|
-
const scopes: Array<{ scope: string; nodeId: string; node: ExtendedCanvasNode }> = [];
|
|
287
|
-
|
|
288
|
-
for (const node of canvas.nodes || []) {
|
|
289
|
-
// Only process otel-scope nodes
|
|
290
|
-
if (checkOtelScopeNode(node)) {
|
|
291
|
-
const scope = node.otel?.scope;
|
|
292
|
-
if (scope && typeof scope === 'string') {
|
|
293
|
-
scopes.push({
|
|
294
|
-
scope,
|
|
295
|
-
nodeId: node.id,
|
|
296
|
-
node: node as ExtendedCanvasNode,
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
// Legacy pv.otel.scope format is no longer supported
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
return scopes;
|
|
304
|
-
}
|
|
305
|
-
}
|