@principal-ai/subsystems-core 0.29.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 +124 -0
- package/dist/ConfigurationLoader.d.ts +76 -0
- package/dist/ConfigurationLoader.d.ts.map +1 -0
- package/dist/ConfigurationLoader.js +148 -0
- package/dist/ConfigurationLoader.js.map +1 -0
- package/dist/ConfigurationValidator.d.ts +31 -0
- package/dist/ConfigurationValidator.d.ts.map +1 -0
- package/dist/ConfigurationValidator.js +239 -0
- package/dist/ConfigurationValidator.js.map +1 -0
- package/dist/EventProcessor.d.ts +49 -0
- package/dist/EventProcessor.d.ts.map +1 -0
- package/dist/EventProcessor.js +220 -0
- package/dist/EventProcessor.js.map +1 -0
- package/dist/EventRecorderService.d.ts +305 -0
- package/dist/EventRecorderService.d.ts.map +1 -0
- package/dist/EventRecorderService.js +467 -0
- package/dist/EventRecorderService.js.map +1 -0
- package/dist/LibraryLoader.d.ts +65 -0
- package/dist/LibraryLoader.d.ts.map +1 -0
- package/dist/LibraryLoader.js +197 -0
- package/dist/LibraryLoader.js.map +1 -0
- package/dist/PathBasedEventProcessor.d.ts +77 -0
- package/dist/PathBasedEventProcessor.d.ts.map +1 -0
- package/dist/PathBasedEventProcessor.js +136 -0
- package/dist/PathBasedEventProcessor.js.map +1 -0
- package/dist/SessionManager.d.ts +194 -0
- package/dist/SessionManager.d.ts.map +1 -0
- package/dist/SessionManager.js +302 -0
- package/dist/SessionManager.js.map +1 -0
- package/dist/ValidationEngine.d.ts +31 -0
- package/dist/ValidationEngine.d.ts.map +1 -0
- package/dist/ValidationEngine.js +162 -0
- package/dist/ValidationEngine.js.map +1 -0
- package/dist/agent-sessions/fixture.d.ts +80 -0
- package/dist/agent-sessions/fixture.d.ts.map +1 -0
- package/dist/agent-sessions/fixture.js +130 -0
- package/dist/agent-sessions/fixture.js.map +1 -0
- package/dist/agent-sessions/index.d.ts +3 -0
- package/dist/agent-sessions/index.d.ts.map +1 -0
- package/dist/agent-sessions/index.js +6 -0
- package/dist/agent-sessions/index.js.map +1 -0
- package/dist/auxiliary/AuxiliaryManifestValidator.d.ts +41 -0
- package/dist/auxiliary/AuxiliaryManifestValidator.d.ts.map +1 -0
- package/dist/auxiliary/AuxiliaryManifestValidator.js +100 -0
- package/dist/auxiliary/AuxiliaryManifestValidator.js.map +1 -0
- package/dist/auxiliary/index.d.ts +9 -0
- package/dist/auxiliary/index.d.ts.map +1 -0
- package/dist/auxiliary/index.js +14 -0
- package/dist/auxiliary/index.js.map +1 -0
- package/dist/auxiliary/validateAreaScopeDisjoint.d.ts +24 -0
- package/dist/auxiliary/validateAreaScopeDisjoint.d.ts.map +1 -0
- package/dist/auxiliary/validateAreaScopeDisjoint.js +61 -0
- package/dist/auxiliary/validateAreaScopeDisjoint.js.map +1 -0
- package/dist/cli/codegen.d.ts +41 -0
- package/dist/cli/codegen.d.ts.map +1 -0
- package/dist/cli/codegen.js +257 -0
- package/dist/cli/codegen.js.map +1 -0
- package/dist/codegen/type-generator.d.ts +123 -0
- package/dist/codegen/type-generator.d.ts.map +1 -0
- package/dist/codegen/type-generator.js +433 -0
- package/dist/codegen/type-generator.js.map +1 -0
- package/dist/codegen/usage-example.d.ts +103 -0
- package/dist/codegen/usage-example.d.ts.map +1 -0
- package/dist/codegen/usage-example.js +258 -0
- package/dist/codegen/usage-example.js.map +1 -0
- package/dist/dashboard/DashboardValidator.d.ts +85 -0
- package/dist/dashboard/DashboardValidator.d.ts.map +1 -0
- package/dist/dashboard/DashboardValidator.js +775 -0
- package/dist/dashboard/DashboardValidator.js.map +1 -0
- package/dist/dashboard/index.d.ts +6 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +10 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/discovery/CanvasDiscovery.d.ts +160 -0
- package/dist/discovery/CanvasDiscovery.d.ts.map +1 -0
- package/dist/discovery/CanvasDiscovery.js +865 -0
- package/dist/discovery/CanvasDiscovery.js.map +1 -0
- package/dist/discovery/CanvasFileManifest.d.ts +86 -0
- package/dist/discovery/CanvasFileManifest.d.ts.map +1 -0
- package/dist/discovery/CanvasFileManifest.js +338 -0
- package/dist/discovery/CanvasFileManifest.js.map +1 -0
- package/dist/discovery/LibraryDiscovery.d.ts +108 -0
- package/dist/discovery/LibraryDiscovery.d.ts.map +1 -0
- package/dist/discovery/LibraryDiscovery.js +263 -0
- package/dist/discovery/LibraryDiscovery.js.map +1 -0
- package/dist/discovery/types.d.ts +403 -0
- package/dist/discovery/types.d.ts.map +1 -0
- package/dist/discovery/types.js +6 -0
- package/dist/discovery/types.js.map +1 -0
- package/dist/events/EventsCanvasValidator.d.ts +139 -0
- package/dist/events/EventsCanvasValidator.d.ts.map +1 -0
- package/dist/events/EventsCanvasValidator.js +281 -0
- package/dist/events/EventsCanvasValidator.js.map +1 -0
- package/dist/events/NamespacePathIndex.d.ts +61 -0
- package/dist/events/NamespacePathIndex.d.ts.map +1 -0
- package/dist/events/NamespacePathIndex.js +74 -0
- package/dist/events/NamespacePathIndex.js.map +1 -0
- package/dist/events/OtelEventPathsValidator.d.ts +75 -0
- package/dist/events/OtelEventPathsValidator.d.ts.map +1 -0
- package/dist/events/OtelEventPathsValidator.js +126 -0
- package/dist/events/OtelEventPathsValidator.js.map +1 -0
- package/dist/events/ScopeEventsValidator.d.ts +68 -0
- package/dist/events/ScopeEventsValidator.d.ts.map +1 -0
- package/dist/events/ScopeEventsValidator.js +91 -0
- package/dist/events/ScopeEventsValidator.js.map +1 -0
- package/dist/events/index.d.ts +9 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +12 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/path-helpers.d.ts +33 -0
- package/dist/events/path-helpers.d.ts.map +1 -0
- package/dist/events/path-helpers.js +59 -0
- package/dist/events/path-helpers.js.map +1 -0
- package/dist/execution/ExecutionLoader.d.ts +135 -0
- package/dist/execution/ExecutionLoader.d.ts.map +1 -0
- package/dist/execution/ExecutionLoader.js +266 -0
- package/dist/execution/ExecutionLoader.js.map +1 -0
- package/dist/execution/ExecutionValidator.d.ts +94 -0
- package/dist/execution/ExecutionValidator.d.ts.map +1 -0
- package/dist/execution/ExecutionValidator.js +503 -0
- package/dist/execution/ExecutionValidator.js.map +1 -0
- package/dist/generated/graph-converter-execution.types.d.ts +177 -0
- package/dist/generated/graph-converter-execution.types.d.ts.map +1 -0
- package/dist/generated/graph-converter-execution.types.js +12 -0
- package/dist/generated/graph-converter-execution.types.js.map +1 -0
- package/dist/helpers/GraphInstrumentationHelper.d.ts +93 -0
- package/dist/helpers/GraphInstrumentationHelper.d.ts.map +1 -0
- package/dist/helpers/GraphInstrumentationHelper.js +252 -0
- package/dist/helpers/GraphInstrumentationHelper.js.map +1 -0
- package/dist/index.d.ts +82 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +214 -0
- package/dist/index.js.map +1 -0
- package/dist/matchers/SpanMatcher.d.ts +107 -0
- package/dist/matchers/SpanMatcher.d.ts.map +1 -0
- package/dist/matchers/SpanMatcher.js +274 -0
- package/dist/matchers/SpanMatcher.js.map +1 -0
- package/dist/node.d.ts +78 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +177 -0
- package/dist/node.js.map +1 -0
- package/dist/opencode/OpenCodeEventStore.d.ts +25 -0
- package/dist/opencode/OpenCodeEventStore.d.ts.map +1 -0
- package/dist/opencode/OpenCodeEventStore.js +182 -0
- package/dist/opencode/OpenCodeEventStore.js.map +1 -0
- package/dist/opencode/agent-sessions.d.ts +46 -0
- package/dist/opencode/agent-sessions.d.ts.map +1 -0
- package/dist/opencode/agent-sessions.js +302 -0
- package/dist/opencode/agent-sessions.js.map +1 -0
- package/dist/opencode/index.d.ts +6 -0
- package/dist/opencode/index.d.ts.map +1 -0
- package/dist/opencode/index.js +15 -0
- package/dist/opencode/index.js.map +1 -0
- package/dist/opencode/node-path-adapter.d.ts +25 -0
- package/dist/opencode/node-path-adapter.d.ts.map +1 -0
- package/dist/opencode/node-path-adapter.js +188 -0
- package/dist/opencode/node-path-adapter.js.map +1 -0
- package/dist/opencode/pipeline.d.ts +42 -0
- package/dist/opencode/pipeline.d.ts.map +1 -0
- package/dist/opencode/pipeline.js +90 -0
- package/dist/opencode/pipeline.js.map +1 -0
- package/dist/opencode/types.d.ts +39 -0
- package/dist/opencode/types.d.ts.map +1 -0
- package/dist/opencode/types.js +3 -0
- package/dist/opencode/types.js.map +1 -0
- package/dist/orchestration/TraceOrchestrator.d.ts +71 -0
- package/dist/orchestration/TraceOrchestrator.d.ts.map +1 -0
- package/dist/orchestration/TraceOrchestrator.js +416 -0
- package/dist/orchestration/TraceOrchestrator.js.map +1 -0
- package/dist/parsers/OtlpTraceParser.d.ts +131 -0
- package/dist/parsers/OtlpTraceParser.d.ts.map +1 -0
- package/dist/parsers/OtlpTraceParser.js +310 -0
- package/dist/parsers/OtlpTraceParser.js.map +1 -0
- package/dist/registry/CompositeRegistry.d.ts +71 -0
- package/dist/registry/CompositeRegistry.d.ts.map +1 -0
- package/dist/registry/CompositeRegistry.js +113 -0
- package/dist/registry/CompositeRegistry.js.map +1 -0
- package/dist/registry/EventRegistry.d.ts +79 -0
- package/dist/registry/EventRegistry.d.ts.map +1 -0
- package/dist/registry/EventRegistry.js +165 -0
- package/dist/registry/EventRegistry.js.map +1 -0
- package/dist/registry/LocalRegistry.d.ts +111 -0
- package/dist/registry/LocalRegistry.d.ts.map +1 -0
- package/dist/registry/LocalRegistry.js +335 -0
- package/dist/registry/LocalRegistry.js.map +1 -0
- package/dist/registry/RemoteRegistry.d.ts +122 -0
- package/dist/registry/RemoteRegistry.d.ts.map +1 -0
- package/dist/registry/RemoteRegistry.js +399 -0
- package/dist/registry/RemoteRegistry.js.map +1 -0
- package/dist/registry/VersionRegistry.d.ts +51 -0
- package/dist/registry/VersionRegistry.d.ts.map +1 -0
- package/dist/registry/VersionRegistry.js +105 -0
- package/dist/registry/VersionRegistry.js.map +1 -0
- package/dist/rules/config.d.ts +57 -0
- package/dist/rules/config.d.ts.map +1 -0
- package/dist/rules/config.js +382 -0
- package/dist/rules/config.js.map +1 -0
- package/dist/rules/engine.d.ts +70 -0
- package/dist/rules/engine.d.ts.map +1 -0
- package/dist/rules/engine.js +373 -0
- package/dist/rules/engine.js.map +1 -0
- package/dist/rules/implementations/connection-type-references.d.ts +7 -0
- package/dist/rules/implementations/connection-type-references.d.ts.map +1 -0
- package/dist/rules/implementations/connection-type-references.js +107 -0
- package/dist/rules/implementations/connection-type-references.js.map +1 -0
- package/dist/rules/implementations/dead-end-states.d.ts +17 -0
- package/dist/rules/implementations/dead-end-states.d.ts.map +1 -0
- package/dist/rules/implementations/dead-end-states.js +75 -0
- package/dist/rules/implementations/dead-end-states.js.map +1 -0
- package/dist/rules/implementations/index.d.ts +23 -0
- package/dist/rules/implementations/index.d.ts.map +1 -0
- package/dist/rules/implementations/index.js +73 -0
- package/dist/rules/implementations/index.js.map +1 -0
- package/dist/rules/implementations/minimum-node-sources.d.ts +24 -0
- package/dist/rules/implementations/minimum-node-sources.d.ts.map +1 -0
- package/dist/rules/implementations/minimum-node-sources.js +59 -0
- package/dist/rules/implementations/minimum-node-sources.js.map +1 -0
- package/dist/rules/implementations/no-unknown-fields.d.ts +7 -0
- package/dist/rules/implementations/no-unknown-fields.d.ts.map +1 -0
- package/dist/rules/implementations/no-unknown-fields.js +216 -0
- package/dist/rules/implementations/no-unknown-fields.js.map +1 -0
- package/dist/rules/implementations/orphaned-edge-types.d.ts +7 -0
- package/dist/rules/implementations/orphaned-edge-types.d.ts.map +1 -0
- package/dist/rules/implementations/orphaned-edge-types.js +50 -0
- package/dist/rules/implementations/orphaned-edge-types.js.map +1 -0
- package/dist/rules/implementations/orphaned-node-types.d.ts +7 -0
- package/dist/rules/implementations/orphaned-node-types.d.ts.map +1 -0
- package/dist/rules/implementations/orphaned-node-types.js +53 -0
- package/dist/rules/implementations/orphaned-node-types.js.map +1 -0
- package/dist/rules/implementations/required-metadata.d.ts +7 -0
- package/dist/rules/implementations/required-metadata.d.ts.map +1 -0
- package/dist/rules/implementations/required-metadata.js +48 -0
- package/dist/rules/implementations/required-metadata.js.map +1 -0
- package/dist/rules/implementations/state-transition-references.d.ts +7 -0
- package/dist/rules/implementations/state-transition-references.d.ts.map +1 -0
- package/dist/rules/implementations/state-transition-references.js +138 -0
- package/dist/rules/implementations/state-transition-references.js.map +1 -0
- package/dist/rules/implementations/unreachable-states.d.ts +7 -0
- package/dist/rules/implementations/unreachable-states.d.ts.map +1 -0
- package/dist/rules/implementations/unreachable-states.js +83 -0
- package/dist/rules/implementations/unreachable-states.js.map +1 -0
- package/dist/rules/implementations/valid-action-patterns.d.ts +17 -0
- package/dist/rules/implementations/valid-action-patterns.d.ts.map +1 -0
- package/dist/rules/implementations/valid-action-patterns.js +112 -0
- package/dist/rules/implementations/valid-action-patterns.js.map +1 -0
- package/dist/rules/implementations/valid-color-format.d.ts +7 -0
- package/dist/rules/implementations/valid-color-format.d.ts.map +1 -0
- package/dist/rules/implementations/valid-color-format.js +94 -0
- package/dist/rules/implementations/valid-color-format.js.map +1 -0
- package/dist/rules/implementations/valid-edge-types.d.ts +7 -0
- package/dist/rules/implementations/valid-edge-types.d.ts.map +1 -0
- package/dist/rules/implementations/valid-edge-types.js +248 -0
- package/dist/rules/implementations/valid-edge-types.js.map +1 -0
- package/dist/rules/implementations/valid-node-types.d.ts +7 -0
- package/dist/rules/implementations/valid-node-types.d.ts.map +1 -0
- package/dist/rules/implementations/valid-node-types.js +187 -0
- package/dist/rules/implementations/valid-node-types.js.map +1 -0
- package/dist/rules/index.d.ts +28 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +70 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/types.d.ts +309 -0
- package/dist/rules/types.d.ts.map +1 -0
- package/dist/rules/types.js +40 -0
- package/dist/rules/types.js.map +1 -0
- package/dist/scopes/ScopePathIndex.d.ts +56 -0
- package/dist/scopes/ScopePathIndex.d.ts.map +1 -0
- package/dist/scopes/ScopePathIndex.js +67 -0
- package/dist/scopes/ScopePathIndex.js.map +1 -0
- package/dist/scopes/ScopesCanvasValidator.d.ts +76 -0
- package/dist/scopes/ScopesCanvasValidator.d.ts.map +1 -0
- package/dist/scopes/ScopesCanvasValidator.js +221 -0
- package/dist/scopes/ScopesCanvasValidator.js.map +1 -0
- package/dist/scopes/index.d.ts +12 -0
- package/dist/scopes/index.d.ts.map +1 -0
- package/dist/scopes/index.js +30 -0
- package/dist/scopes/index.js.map +1 -0
- package/dist/scopes/utils.d.ts +85 -0
- package/dist/scopes/utils.d.ts.map +1 -0
- package/dist/scopes/utils.js +143 -0
- package/dist/scopes/utils.js.map +1 -0
- package/dist/scopes/validateScopeNamespaceNesting.d.ts +38 -0
- package/dist/scopes/validateScopeNamespaceNesting.d.ts.map +1 -0
- package/dist/scopes/validateScopeNamespaceNesting.js +69 -0
- package/dist/scopes/validateScopeNamespaceNesting.js.map +1 -0
- package/dist/spans/index.d.ts +12 -0
- package/dist/spans/index.d.ts.map +1 -0
- package/dist/spans/index.js +25 -0
- package/dist/spans/index.js.map +1 -0
- package/dist/spans/utils.d.ts +70 -0
- package/dist/spans/utils.d.ts.map +1 -0
- package/dist/spans/utils.js +205 -0
- package/dist/spans/utils.js.map +1 -0
- package/dist/storage/topic-types.d.ts +203 -0
- package/dist/storage/topic-types.d.ts.map +1 -0
- package/dist/storage/topic-types.js +60 -0
- package/dist/storage/topic-types.js.map +1 -0
- package/dist/storage/topicStore.d.ts +135 -0
- package/dist/storage/topicStore.d.ts.map +1 -0
- package/dist/storage/topicStore.js +389 -0
- package/dist/storage/topicStore.js.map +1 -0
- package/dist/storyboard/builder.d.ts +135 -0
- package/dist/storyboard/builder.d.ts.map +1 -0
- package/dist/storyboard/builder.js +235 -0
- package/dist/storyboard/builder.js.map +1 -0
- package/dist/storyboard/index.d.ts +9 -0
- package/dist/storyboard/index.d.ts.map +1 -0
- package/dist/storyboard/index.js +18 -0
- package/dist/storyboard/index.js.map +1 -0
- package/dist/storyboard/types.d.ts +101 -0
- package/dist/storyboard/types.d.ts.map +1 -0
- package/dist/storyboard/types.js +10 -0
- package/dist/storyboard/types.js.map +1 -0
- package/dist/telemetry/coverage.d.ts +92 -0
- package/dist/telemetry/coverage.d.ts.map +1 -0
- package/dist/telemetry/coverage.js +335 -0
- package/dist/telemetry/coverage.js.map +1 -0
- package/dist/telemetry/event-validator.d.ts +86 -0
- package/dist/telemetry/event-validator.d.ts.map +1 -0
- package/dist/telemetry/event-validator.js +257 -0
- package/dist/telemetry/event-validator.js.map +1 -0
- package/dist/types/audit.d.ts +236 -0
- package/dist/types/audit.d.ts.map +1 -0
- package/dist/types/audit.js +53 -0
- package/dist/types/audit.js.map +1 -0
- package/dist/types/auxiliary.d.ts +54 -0
- package/dist/types/auxiliary.d.ts.map +1 -0
- package/dist/types/auxiliary.js +27 -0
- package/dist/types/auxiliary.js.map +1 -0
- package/dist/types/canvas-scope.d.ts +156 -0
- package/dist/types/canvas-scope.d.ts.map +1 -0
- package/dist/types/canvas-scope.js +62 -0
- package/dist/types/canvas-scope.js.map +1 -0
- package/dist/types/canvas.d.ts +1138 -0
- package/dist/types/canvas.d.ts.map +1 -0
- package/dist/types/canvas.js +178 -0
- package/dist/types/canvas.js.map +1 -0
- package/dist/types/dashboard.d.ts +170 -0
- package/dist/types/dashboard.d.ts.map +1 -0
- package/dist/types/dashboard.js +14 -0
- package/dist/types/dashboard.js.map +1 -0
- package/dist/types/index.d.ts +352 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +39 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/library.d.ts +227 -0
- package/dist/types/library.d.ts.map +1 -0
- package/dist/types/library.js +16 -0
- package/dist/types/library.js.map +1 -0
- package/dist/types/otel.d.ts +465 -0
- package/dist/types/otel.d.ts.map +1 -0
- package/dist/types/otel.js +163 -0
- package/dist/types/otel.js.map +1 -0
- package/dist/types/path-based-config.d.ts +235 -0
- package/dist/types/path-based-config.d.ts.map +1 -0
- package/dist/types/path-based-config.js +11 -0
- package/dist/types/path-based-config.js.map +1 -0
- package/dist/types/registered-trace.d.ts +337 -0
- package/dist/types/registered-trace.d.ts.map +1 -0
- package/dist/types/registered-trace.js +16 -0
- package/dist/types/registered-trace.js.map +1 -0
- package/dist/types/resource-match.d.ts +207 -0
- package/dist/types/resource-match.d.ts.map +1 -0
- package/dist/types/resource-match.js +74 -0
- package/dist/types/resource-match.js.map +1 -0
- package/dist/types/subsystem-model.d.ts +265 -0
- package/dist/types/subsystem-model.d.ts.map +1 -0
- package/dist/types/subsystem-model.js +35 -0
- package/dist/types/subsystem-model.js.map +1 -0
- package/dist/types/version-registry.d.ts +137 -0
- package/dist/types/version-registry.d.ts.map +1 -0
- package/dist/types/version-registry.js +10 -0
- package/dist/types/version-registry.js.map +1 -0
- package/dist/utils/CanvasConverter.d.ts +148 -0
- package/dist/utils/CanvasConverter.d.ts.map +1 -0
- package/dist/utils/CanvasConverter.js +530 -0
- package/dist/utils/CanvasConverter.js.map +1 -0
- package/dist/utils/GraphConverter.d.ts +18 -0
- package/dist/utils/GraphConverter.d.ts.map +1 -0
- package/dist/utils/GraphConverter.js +80 -0
- package/dist/utils/GraphConverter.js.map +1 -0
- package/dist/utils/PathMatcher.d.ts +55 -0
- package/dist/utils/PathMatcher.d.ts.map +1 -0
- package/dist/utils/PathMatcher.js +178 -0
- package/dist/utils/PathMatcher.js.map +1 -0
- package/dist/utils/TraceToCanvas.d.ts +83 -0
- package/dist/utils/TraceToCanvas.d.ts.map +1 -0
- package/dist/utils/TraceToCanvas.js +336 -0
- package/dist/utils/TraceToCanvas.js.map +1 -0
- package/dist/utils/YamlParser.d.ts +36 -0
- package/dist/utils/YamlParser.d.ts.map +1 -0
- package/dist/utils/YamlParser.js +92 -0
- package/dist/utils/YamlParser.js.map +1 -0
- package/dist/utils/registeredTraceHelpers.d.ts +76 -0
- package/dist/utils/registeredTraceHelpers.d.ts.map +1 -0
- package/dist/utils/registeredTraceHelpers.js +203 -0
- package/dist/utils/registeredTraceHelpers.js.map +1 -0
- package/dist/utils/traceAggregation.d.ts +25 -0
- package/dist/utils/traceAggregation.d.ts.map +1 -0
- package/dist/utils/traceAggregation.js +140 -0
- package/dist/utils/traceAggregation.js.map +1 -0
- package/dist/validation/OtelCanvasValidator.d.ts +40 -0
- package/dist/validation/OtelCanvasValidator.d.ts.map +1 -0
- package/dist/validation/OtelCanvasValidator.js +59 -0
- package/dist/validation/OtelCanvasValidator.js.map +1 -0
- package/dist/validation/index.d.ts +8 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +13 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/libraryValidation.d.ts +53 -0
- package/dist/validation/libraryValidation.d.ts.map +1 -0
- package/dist/validation/libraryValidation.js +115 -0
- package/dist/validation/libraryValidation.js.map +1 -0
- package/dist/workflow/edge-derivation.d.ts +111 -0
- package/dist/workflow/edge-derivation.d.ts.map +1 -0
- package/dist/workflow/edge-derivation.js +174 -0
- package/dist/workflow/edge-derivation.js.map +1 -0
- package/dist/workflow/edge-validation.d.ts +170 -0
- package/dist/workflow/edge-validation.d.ts.map +1 -0
- package/dist/workflow/edge-validation.js +332 -0
- package/dist/workflow/edge-validation.js.map +1 -0
- package/dist/workflow/example.d.ts +11 -0
- package/dist/workflow/example.d.ts.map +1 -0
- package/dist/workflow/example.js +310 -0
- package/dist/workflow/example.js.map +1 -0
- package/dist/workflow/index.d.ts +20 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +49 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/scenario-matcher.d.ts +63 -0
- package/dist/workflow/scenario-matcher.d.ts.map +1 -0
- package/dist/workflow/scenario-matcher.js +215 -0
- package/dist/workflow/scenario-matcher.js.map +1 -0
- package/dist/workflow/template-parser.d.ts +73 -0
- package/dist/workflow/template-parser.d.ts.map +1 -0
- package/dist/workflow/template-parser.js +280 -0
- package/dist/workflow/template-parser.js.map +1 -0
- package/dist/workflow/template-renderer.d.ts +45 -0
- package/dist/workflow/template-renderer.d.ts.map +1 -0
- package/dist/workflow/template-renderer.js +401 -0
- package/dist/workflow/template-renderer.js.map +1 -0
- package/dist/workflow/types.d.ts +393 -0
- package/dist/workflow/types.d.ts.map +1 -0
- package/dist/workflow/types.js +40 -0
- package/dist/workflow/types.js.map +1 -0
- package/dist/workflow/validator.d.ts +363 -0
- package/dist/workflow/validator.d.ts.map +1 -0
- package/dist/workflow/validator.js +2283 -0
- package/dist/workflow/validator.js.map +1 -0
- package/package.json +84 -0
- package/schemas/auxiliary.manifest.schema.json +56 -0
- package/schemas/subsystem-model.schema.json +767 -0
- package/src/ConfigurationLoader.test.ts +466 -0
- package/src/ConfigurationLoader.ts +184 -0
- package/src/ConfigurationValidator.test.ts +200 -0
- package/src/ConfigurationValidator.ts +273 -0
- package/src/EventProcessor.test.ts +405 -0
- package/src/EventProcessor.ts +256 -0
- package/src/EventRecorderService.test.ts +543 -0
- package/src/EventRecorderService.ts +741 -0
- package/src/LibraryLoader.ts +194 -0
- package/src/PathBasedEventProcessor.test.ts +336 -0
- package/src/PathBasedEventProcessor.ts +196 -0
- package/src/SessionManager.test.ts +424 -0
- package/src/SessionManager.ts +471 -0
- package/src/ValidationEngine.test.ts +520 -0
- package/src/ValidationEngine.ts +200 -0
- package/src/agent-sessions/fixture.ts +225 -0
- package/src/agent-sessions/index.ts +10 -0
- package/src/auxiliary/AuxiliaryManifestValidator.test.ts +93 -0
- package/src/auxiliary/AuxiliaryManifestValidator.ts +132 -0
- package/src/auxiliary/index.ts +18 -0
- package/src/auxiliary/validateAreaScopeDisjoint.test.ts +85 -0
- package/src/auxiliary/validateAreaScopeDisjoint.ts +72 -0
- package/src/browser-safety.test.ts +170 -0
- package/src/cli/codegen.ts +286 -0
- package/src/codegen/type-generator.test.ts +219 -0
- package/src/codegen/type-generator.ts +560 -0
- package/src/codegen/usage-example.ts +357 -0
- package/src/dashboard/DashboardValidator.ts +904 -0
- package/src/dashboard/index.ts +14 -0
- package/src/discovery/CanvasDiscovery.test.ts +691 -0
- package/src/discovery/CanvasDiscovery.ts +1114 -0
- package/src/discovery/CanvasFileManifest.test.ts +521 -0
- package/src/discovery/CanvasFileManifest.ts +419 -0
- package/src/discovery/LibraryDiscovery.test.ts +329 -0
- package/src/discovery/LibraryDiscovery.ts +386 -0
- package/src/discovery/types.ts +453 -0
- package/src/events/EventsCanvasValidator.test.ts +191 -0
- package/src/events/EventsCanvasValidator.ts +428 -0
- package/src/events/NamespacePathIndex.test.ts +97 -0
- package/src/events/NamespacePathIndex.ts +100 -0
- package/src/events/OtelEventPathsValidator.test.ts +243 -0
- package/src/events/OtelEventPathsValidator.ts +191 -0
- package/src/events/ScopeEventsValidator.test.ts +173 -0
- package/src/events/ScopeEventsValidator.ts +158 -0
- package/src/events/index.ts +27 -0
- package/src/events/path-helpers.ts +53 -0
- package/src/execution/ExecutionLoader.test.ts +378 -0
- package/src/execution/ExecutionLoader.ts +331 -0
- package/src/execution/ExecutionValidator.test.ts +503 -0
- package/src/execution/ExecutionValidator.ts +617 -0
- package/src/generated/graph-converter-execution.types.ts +193 -0
- package/src/helpers/GraphInstrumentationHelper.test.ts +364 -0
- package/src/helpers/GraphInstrumentationHelper.ts +323 -0
- package/src/index.ts +587 -0
- package/src/matchers/SpanMatcher.test.ts +1105 -0
- package/src/matchers/SpanMatcher.ts +381 -0
- package/src/node.ts +316 -0
- package/src/opencode/EVENT_MAPPING.md +82 -0
- package/src/opencode/OpenCodeEventStore.ts +214 -0
- package/src/opencode/__fixtures__/event-shapes.json +443 -0
- package/src/opencode/__fixtures__/session-events.json +13491 -0
- package/src/opencode/agent-sessions.ts +376 -0
- package/src/opencode/index.ts +23 -0
- package/src/opencode/node-path-adapter.ts +205 -0
- package/src/opencode/pipeline.ts +141 -0
- package/src/opencode/types.ts +43 -0
- package/src/orchestration/TraceOrchestrator.ts +560 -0
- package/src/orchestration/__tests__/TraceOrchestrator.test.ts +1098 -0
- package/src/parsers/OtlpTraceParser.ts +401 -0
- package/src/parsers/__tests__/OtlpTraceParser.test.ts +197 -0
- package/src/registry/CompositeRegistry.ts +140 -0
- package/src/registry/EventRegistry.test.ts +387 -0
- package/src/registry/EventRegistry.ts +191 -0
- package/src/registry/LocalRegistry.ts +416 -0
- package/src/registry/RemoteRegistry.ts +499 -0
- package/src/registry/VersionRegistry.test.ts +223 -0
- package/src/registry/VersionRegistry.ts +121 -0
- package/src/rules/config.test.ts +277 -0
- package/src/rules/config.ts +450 -0
- package/src/rules/engine.test.ts +331 -0
- package/src/rules/engine.ts +448 -0
- package/src/rules/implementations/connection-type-references.ts +117 -0
- package/src/rules/implementations/dead-end-states.ts +101 -0
- package/src/rules/implementations/index.ts +66 -0
- package/src/rules/implementations/minimum-node-sources.ts +84 -0
- package/src/rules/implementations/no-unknown-fields.ts +372 -0
- package/src/rules/implementations/orphaned-edge-types.ts +55 -0
- package/src/rules/implementations/orphaned-node-types.ts +58 -0
- package/src/rules/implementations/required-metadata.ts +52 -0
- package/src/rules/implementations/state-transition-references.ts +155 -0
- package/src/rules/implementations/unreachable-states.ts +94 -0
- package/src/rules/implementations/valid-action-patterns.ts +140 -0
- package/src/rules/implementations/valid-color-format.ts +152 -0
- package/src/rules/implementations/valid-edge-types.ts +273 -0
- package/src/rules/implementations/valid-node-types.ts +200 -0
- package/src/rules/index.ts +92 -0
- package/src/rules/types.ts +426 -0
- package/src/scopes/ScopePathIndex.test.ts +94 -0
- package/src/scopes/ScopePathIndex.ts +89 -0
- package/src/scopes/ScopesCanvasValidator.test.ts +127 -0
- package/src/scopes/ScopesCanvasValidator.ts +305 -0
- package/src/scopes/__tests__/utils.test.ts +383 -0
- package/src/scopes/index.ts +42 -0
- package/src/scopes/utils.ts +182 -0
- package/src/scopes/validateScopeNamespaceNesting.test.ts +127 -0
- package/src/scopes/validateScopeNamespaceNesting.ts +88 -0
- package/src/spans/index.ts +24 -0
- package/src/spans/utils.ts +249 -0
- package/src/storage/topic-types.ts +235 -0
- package/src/storage/topicStore.test.ts +193 -0
- package/src/storage/topicStore.ts +489 -0
- package/src/storyboard/builder.ts +308 -0
- package/src/storyboard/index.ts +26 -0
- package/src/storyboard/types.ts +117 -0
- package/src/telemetry/coverage.ts +480 -0
- package/src/telemetry/event-validator.ts +312 -0
- package/src/types/audit.ts +314 -0
- package/src/types/auxiliary.ts +63 -0
- package/src/types/canvas-scope.ts +190 -0
- package/src/types/canvas.test.ts +199 -0
- package/src/types/canvas.ts +1395 -0
- package/src/types/dashboard.ts +257 -0
- package/src/types/index.ts +460 -0
- package/src/types/library.ts +283 -0
- package/src/types/otel.test.ts +219 -0
- package/src/types/otel.ts +620 -0
- package/src/types/path-based-config.ts +285 -0
- package/src/types/registered-trace.ts +432 -0
- package/src/types/resource-match.ts +263 -0
- package/src/types/subsystem-model.ts +352 -0
- package/src/types/version-registry.ts +150 -0
- package/src/utils/CanvasConverter.ts +670 -0
- package/src/utils/GraphConverter.test.ts +322 -0
- package/src/utils/GraphConverter.ts +84 -0
- package/src/utils/PathMatcher.test.ts +139 -0
- package/src/utils/PathMatcher.ts +185 -0
- package/src/utils/TraceToCanvas.test.ts +310 -0
- package/src/utils/TraceToCanvas.ts +510 -0
- package/src/utils/YamlParser.ts +77 -0
- package/src/utils/registeredTraceHelpers.ts +251 -0
- package/src/utils/traceAggregation.test.ts +385 -0
- package/src/utils/traceAggregation.ts +173 -0
- package/src/validation/OtelCanvasValidator.ts +86 -0
- package/src/validation/index.ts +17 -0
- package/src/validation/libraryValidation.ts +206 -0
- package/src/workflow/README.md +408 -0
- package/src/workflow/__tests__/edge-derivation.test.ts +449 -0
- package/src/workflow/__tests__/edge-validation.test.ts +417 -0
- package/src/workflow/__tests__/scenario-matcher.test.ts +225 -0
- package/src/workflow/__tests__/template-parser.test.ts +276 -0
- package/src/workflow/__tests__/template-renderer.test.ts +509 -0
- package/src/workflow/__tests__/types.test.ts +187 -0
- package/src/workflow/__tests__/validator.test.ts +3225 -0
- package/src/workflow/edge-derivation.ts +265 -0
- package/src/workflow/edge-validation.ts +503 -0
- package/src/workflow/example.ts +330 -0
- package/src/workflow/index.ts +86 -0
- package/src/workflow/scenario-matcher.ts +253 -0
- package/src/workflow/template-parser.ts +350 -0
- package/src/workflow/template-renderer.ts +453 -0
- package/src/workflow/types.ts +511 -0
- package/src/workflow/validator.ts +2737 -0
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rules Engine Type Definitions
|
|
3
|
+
* Provides types for configuration validation rules
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Rule Severity and Categories
|
|
8
|
+
// ============================================================================
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Severity levels following ESLint convention
|
|
12
|
+
* - "off" or 0: Disable rule
|
|
13
|
+
* - "warn" or 1: Warning (doesn't affect exit code)
|
|
14
|
+
* - "error" or 2: Error (exit code 1)
|
|
15
|
+
*/
|
|
16
|
+
export type RuleSeverity = 'off' | 'warn' | 'error' | 0 | 1 | 2;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Normalized severity (string form only)
|
|
20
|
+
*/
|
|
21
|
+
export type NormalizedSeverity = 'off' | 'warn' | 'error';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Rule categories for grouping and filtering
|
|
25
|
+
*/
|
|
26
|
+
export type RuleCategory = 'schema' | 'reference' | 'structure' | 'pattern' | 'library';
|
|
27
|
+
|
|
28
|
+
// ============================================================================
|
|
29
|
+
// Rule Configuration (RC File)
|
|
30
|
+
// ============================================================================
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Full rule configuration object
|
|
34
|
+
*/
|
|
35
|
+
export interface RuleConfig {
|
|
36
|
+
/**
|
|
37
|
+
* Rule severity
|
|
38
|
+
* @default "error"
|
|
39
|
+
*/
|
|
40
|
+
severity?: RuleSeverity;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Rule-specific options
|
|
44
|
+
*/
|
|
45
|
+
options?: Record<string, unknown>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* VGC Configuration file schema
|
|
50
|
+
*/
|
|
51
|
+
export interface PrivuConfig {
|
|
52
|
+
/**
|
|
53
|
+
* Schema version for forward compatibility
|
|
54
|
+
*/
|
|
55
|
+
$schema?: string;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Extend from a shared configuration
|
|
59
|
+
* Can be a package name or relative path
|
|
60
|
+
*/
|
|
61
|
+
extends?: string | string[];
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Root flag - stop searching parent directories
|
|
65
|
+
* @default false
|
|
66
|
+
*/
|
|
67
|
+
root?: boolean;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Path to default component library
|
|
71
|
+
* Used by library-node-type-match rule
|
|
72
|
+
*/
|
|
73
|
+
library?: string;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Glob patterns for configuration files to lint
|
|
77
|
+
* @default [".principal-views/**\/*.yaml", ".principal-views/**\/*.yml", ".principal-views/**\/*.json"]
|
|
78
|
+
*/
|
|
79
|
+
include?: string[];
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Glob patterns to exclude from linting
|
|
83
|
+
* @default ["**\/node_modules/**", "**\/*.test.*"]
|
|
84
|
+
*/
|
|
85
|
+
exclude?: string[];
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Rule configurations
|
|
89
|
+
*/
|
|
90
|
+
rules?: {
|
|
91
|
+
[ruleId: string]: RuleConfig | RuleSeverity | false;
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// ============================================================================
|
|
96
|
+
// Rule Definition
|
|
97
|
+
// ============================================================================
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Rule-specific options type (varies per rule)
|
|
101
|
+
*/
|
|
102
|
+
export type RuleOptions = Record<string, unknown>;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Definition of a validation rule
|
|
106
|
+
*/
|
|
107
|
+
export interface GraphRule<TOptions extends RuleOptions = RuleOptions> {
|
|
108
|
+
/**
|
|
109
|
+
* Unique rule identifier (kebab-case)
|
|
110
|
+
*/
|
|
111
|
+
id: string;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Human-readable rule name
|
|
115
|
+
*/
|
|
116
|
+
name: string;
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Brief description of what the rule checks
|
|
120
|
+
*/
|
|
121
|
+
description: string;
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Explanation of why this rule matters
|
|
125
|
+
*/
|
|
126
|
+
impact: string;
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Default severity level
|
|
130
|
+
* @default "error"
|
|
131
|
+
*/
|
|
132
|
+
severity: NormalizedSeverity;
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Rule category for grouping
|
|
136
|
+
*/
|
|
137
|
+
category: RuleCategory;
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Whether the rule is enabled by default
|
|
141
|
+
* @default true
|
|
142
|
+
*/
|
|
143
|
+
enabled: boolean;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Whether the rule supports auto-fix
|
|
147
|
+
* @default false
|
|
148
|
+
*/
|
|
149
|
+
fixable: boolean;
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Default options for this rule
|
|
153
|
+
*/
|
|
154
|
+
defaultOptions?: TOptions;
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Execute the rule check
|
|
158
|
+
*/
|
|
159
|
+
check: (context: GraphRuleContext<TOptions>) => Promise<GraphRuleViolation[]>;
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Optional auto-fix implementation
|
|
163
|
+
*/
|
|
164
|
+
fix?: (violation: GraphRuleViolation, context: GraphRuleContext<TOptions>) => Promise<FixResult>;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// ============================================================================
|
|
168
|
+
// Rule Context
|
|
169
|
+
// ============================================================================
|
|
170
|
+
|
|
171
|
+
import type { GraphConfiguration } from '../types';
|
|
172
|
+
import type { ComponentLibrary } from '../types/library';
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Context passed to rules during evaluation
|
|
176
|
+
*/
|
|
177
|
+
export interface GraphRuleContext<TOptions extends RuleOptions = RuleOptions> {
|
|
178
|
+
/**
|
|
179
|
+
* The configuration being validated
|
|
180
|
+
*/
|
|
181
|
+
configuration: GraphConfiguration;
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Optional component library for library rules
|
|
185
|
+
*/
|
|
186
|
+
library?: ComponentLibrary;
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Path to the configuration file (for error reporting)
|
|
190
|
+
*/
|
|
191
|
+
configPath?: string;
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Path to the library file (for error reporting)
|
|
195
|
+
*/
|
|
196
|
+
libraryPath?: string;
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Raw YAML/JSON string (for line number lookup)
|
|
200
|
+
*/
|
|
201
|
+
rawContent?: string;
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Rule-specific options (merged with defaults)
|
|
205
|
+
*/
|
|
206
|
+
options: TOptions;
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* All rule options from config (for cross-rule access if needed)
|
|
210
|
+
*/
|
|
211
|
+
allRuleOptions?: Map<string, RuleOptions>;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// ============================================================================
|
|
215
|
+
// Rule Violations
|
|
216
|
+
// ============================================================================
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* A violation detected by a rule
|
|
220
|
+
*/
|
|
221
|
+
export interface GraphRuleViolation {
|
|
222
|
+
/**
|
|
223
|
+
* ID of the rule that detected this violation
|
|
224
|
+
*/
|
|
225
|
+
ruleId: string;
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Severity of this violation
|
|
229
|
+
*/
|
|
230
|
+
severity: NormalizedSeverity;
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Path to the file containing the violation
|
|
234
|
+
*/
|
|
235
|
+
file?: string;
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Line number in the file (1-indexed)
|
|
239
|
+
*/
|
|
240
|
+
line?: number;
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Column number in the file (1-indexed)
|
|
244
|
+
*/
|
|
245
|
+
column?: number;
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* JSON path to the problematic field (e.g., "nodeTypes.service.shape")
|
|
249
|
+
*/
|
|
250
|
+
path?: string;
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Clear, actionable error message
|
|
254
|
+
*/
|
|
255
|
+
message: string;
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Explanation of why this matters
|
|
259
|
+
*/
|
|
260
|
+
impact: string;
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Suggestion for how to fix
|
|
264
|
+
*/
|
|
265
|
+
suggestion?: string;
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Whether this violation can be auto-fixed
|
|
269
|
+
*/
|
|
270
|
+
fixable: boolean;
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Data needed for auto-fix
|
|
274
|
+
*/
|
|
275
|
+
fixData?: Record<string, unknown>;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// ============================================================================
|
|
279
|
+
// Lint Results
|
|
280
|
+
// ============================================================================
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Result of running all rules
|
|
284
|
+
*/
|
|
285
|
+
export interface GraphLintResult {
|
|
286
|
+
/**
|
|
287
|
+
* All violations found
|
|
288
|
+
*/
|
|
289
|
+
violations: GraphRuleViolation[];
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Count of error-level violations
|
|
293
|
+
*/
|
|
294
|
+
errorCount: number;
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Count of warning-level violations
|
|
298
|
+
*/
|
|
299
|
+
warningCount: number;
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Count of fixable violations
|
|
303
|
+
*/
|
|
304
|
+
fixableCount: number;
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* Violations grouped by category
|
|
308
|
+
*/
|
|
309
|
+
byCategory: Record<RuleCategory, number>;
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Violations grouped by rule ID
|
|
313
|
+
*/
|
|
314
|
+
byRule: Record<string, number>;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
// ============================================================================
|
|
318
|
+
// Fix Results
|
|
319
|
+
// ============================================================================
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* Result of attempting to fix a violation
|
|
323
|
+
*/
|
|
324
|
+
export interface FixResult {
|
|
325
|
+
/**
|
|
326
|
+
* Whether the fix was successful
|
|
327
|
+
*/
|
|
328
|
+
success: boolean;
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Description of what was fixed
|
|
332
|
+
*/
|
|
333
|
+
message?: string;
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* New content after fix (if applicable)
|
|
337
|
+
*/
|
|
338
|
+
newContent?: string;
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Error message if fix failed
|
|
342
|
+
*/
|
|
343
|
+
error?: string;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
// ============================================================================
|
|
347
|
+
// Lint Options
|
|
348
|
+
// ============================================================================
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Options for the lint operation
|
|
352
|
+
*/
|
|
353
|
+
export interface LintOptions {
|
|
354
|
+
/**
|
|
355
|
+
* Only run these rules (by ID)
|
|
356
|
+
*/
|
|
357
|
+
enabledRules?: string[];
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Skip these rules (by ID)
|
|
361
|
+
*/
|
|
362
|
+
disabledRules?: string[];
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Override severity for specific rules
|
|
366
|
+
*/
|
|
367
|
+
severityOverrides?: Map<string, NormalizedSeverity>;
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* Component library for library rules
|
|
371
|
+
*/
|
|
372
|
+
library?: ComponentLibrary;
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Path to config file (for error reporting)
|
|
376
|
+
*/
|
|
377
|
+
configPath?: string;
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* Path to library file (for error reporting)
|
|
381
|
+
*/
|
|
382
|
+
libraryPath?: string;
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Raw content for line number reporting
|
|
386
|
+
*/
|
|
387
|
+
rawContent?: string;
|
|
388
|
+
|
|
389
|
+
/**
|
|
390
|
+
* Rule-specific options
|
|
391
|
+
*/
|
|
392
|
+
ruleOptions?: Map<string, RuleOptions>;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
// ============================================================================
|
|
396
|
+
// Utility Types
|
|
397
|
+
// ============================================================================
|
|
398
|
+
|
|
399
|
+
/**
|
|
400
|
+
* Normalize severity to string form
|
|
401
|
+
*/
|
|
402
|
+
export function normalizeSeverity(severity: RuleSeverity): NormalizedSeverity {
|
|
403
|
+
if (typeof severity === 'number') {
|
|
404
|
+
switch (severity) {
|
|
405
|
+
case 0:
|
|
406
|
+
return 'off';
|
|
407
|
+
case 1:
|
|
408
|
+
return 'warn';
|
|
409
|
+
case 2:
|
|
410
|
+
return 'error';
|
|
411
|
+
default:
|
|
412
|
+
return 'error';
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
return severity;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
/**
|
|
419
|
+
* Check if a severity means the rule is disabled
|
|
420
|
+
*/
|
|
421
|
+
export function isRuleDisabled(severity: RuleSeverity | false | undefined): boolean {
|
|
422
|
+
if (severity === false || severity === 'off' || severity === 0) {
|
|
423
|
+
return true;
|
|
424
|
+
}
|
|
425
|
+
return false;
|
|
426
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { describe, expect, test } from 'bun:test';
|
|
2
|
+
import { ScopePathIndex } from './ScopePathIndex';
|
|
3
|
+
|
|
4
|
+
function makeIndex(entries: Array<{ scope: string; paths: string[] }>) {
|
|
5
|
+
const idx = new ScopePathIndex();
|
|
6
|
+
idx.addAll(entries);
|
|
7
|
+
return idx;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
describe('ScopePathIndex.resolve', () => {
|
|
11
|
+
test('empty index resolves to null', () => {
|
|
12
|
+
const idx = new ScopePathIndex();
|
|
13
|
+
expect(idx.resolve('packages/subsystems-core/src/foo.ts')).toBeNull();
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
test('matches file nested under a declared folder path', () => {
|
|
17
|
+
const idx = makeIndex([{ scope: 'principal-ai.core', paths: ['packages/subsystems-core/src'] }]);
|
|
18
|
+
const match = idx.resolve('packages/subsystems-core/src/events/foo.ts');
|
|
19
|
+
expect(match?.entry.scope).toBe('principal-ai.core');
|
|
20
|
+
expect(match?.matchedPath).toBe('packages/subsystems-core/src');
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('returns null when no path covers the file', () => {
|
|
24
|
+
const idx = makeIndex([{ scope: 'principal-ai.core', paths: ['packages/subsystems-core/src'] }]);
|
|
25
|
+
expect(idx.resolve('packages/principal-studio-cli/src/foo.ts')).toBeNull();
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test('longest-prefix wins: nested child scope beats parent', () => {
|
|
29
|
+
const idx = makeIndex([
|
|
30
|
+
{ scope: 'principal-ai.core', paths: ['packages/subsystems-core/src'] },
|
|
31
|
+
{ scope: 'principal-ai.core.validation', paths: ['packages/subsystems-core/src/validation'] },
|
|
32
|
+
]);
|
|
33
|
+
|
|
34
|
+
// Parent-only subtree → parent wins
|
|
35
|
+
expect(idx.resolve('packages/subsystems-core/src/events/foo.ts')?.entry.scope).toBe('principal-ai.core');
|
|
36
|
+
// Child subtree → child wins (longer prefix)
|
|
37
|
+
expect(idx.resolve('packages/subsystems-core/src/validation/engine.ts')?.entry.scope).toBe(
|
|
38
|
+
'principal-ai.core.validation',
|
|
39
|
+
);
|
|
40
|
+
// Deeper under child → still child (inherited)
|
|
41
|
+
expect(idx.resolve('packages/subsystems-core/src/validation/rules/foo.ts')?.entry.scope).toBe(
|
|
42
|
+
'principal-ai.core.validation',
|
|
43
|
+
);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
test('sibling scopes resolve disjointly', () => {
|
|
47
|
+
const idx = makeIndex([
|
|
48
|
+
{ scope: 'principal-ai.core', paths: ['packages/subsystems-core/src'] },
|
|
49
|
+
{ scope: 'principal-ai.cli', paths: ['packages/principal-studio-cli/src'] },
|
|
50
|
+
]);
|
|
51
|
+
expect(idx.resolve('packages/subsystems-core/src/foo.ts')?.entry.scope).toBe('principal-ai.core');
|
|
52
|
+
expect(idx.resolve('packages/principal-studio-cli/src/foo.ts')?.entry.scope).toBe('principal-ai.cli');
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
test('exact-file path matches when declared as a file', () => {
|
|
56
|
+
const idx = makeIndex([{ scope: 'tiny', paths: ['packages/tiny/src/index.ts'] }]);
|
|
57
|
+
expect(idx.resolve('packages/tiny/src/index.ts')?.entry.scope).toBe('tiny');
|
|
58
|
+
expect(idx.resolve('packages/tiny/src/other.ts')).toBeNull();
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
test('normalization: trailing slash and ./ prefix are equivalent', () => {
|
|
62
|
+
const idx = makeIndex([{ scope: 's', paths: ['packages/subsystems-core/src/'] }]);
|
|
63
|
+
expect(idx.resolve('./packages/subsystems-core/src/foo.ts')?.entry.scope).toBe('s');
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
test('similar-prefix paths are not mistaken for nesting', () => {
|
|
67
|
+
const idx = makeIndex([
|
|
68
|
+
{ scope: 'foo', paths: ['packages/foo/src'] },
|
|
69
|
+
{ scope: 'foobar', paths: ['packages/foobar/src'] },
|
|
70
|
+
]);
|
|
71
|
+
expect(idx.resolve('packages/foobar/src/x.ts')?.entry.scope).toBe('foobar');
|
|
72
|
+
expect(idx.resolve('packages/foo/src/x.ts')?.entry.scope).toBe('foo');
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
describe('ScopePathIndex.getEntry / getScopes', () => {
|
|
77
|
+
test('getEntry returns null when scope not registered', () => {
|
|
78
|
+
const idx = makeIndex([{ scope: 's', paths: ['packages/subsystems-core/src'] }]);
|
|
79
|
+
expect(idx.getEntry('other')).toBeNull();
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
test('getEntry returns the entry when present', () => {
|
|
83
|
+
const idx = makeIndex([{ scope: 's', paths: ['packages/subsystems-core/src'] }]);
|
|
84
|
+
expect(idx.getEntry('s')?.paths).toEqual(['packages/subsystems-core/src']);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
test('getScopes lists each scope once', () => {
|
|
88
|
+
const idx = makeIndex([
|
|
89
|
+
{ scope: 'a', paths: ['packages/a/src'] },
|
|
90
|
+
{ scope: 'b', paths: ['packages/b/src'] },
|
|
91
|
+
]);
|
|
92
|
+
expect(idx.getScopes().slice().sort()).toEqual(['a', 'b']);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scope Path Index
|
|
3
|
+
*
|
|
4
|
+
* Maps a filepath to the `otel-scope` that owns it, using the `paths` field
|
|
5
|
+
* declared on `otel-scope` nodes.
|
|
6
|
+
*
|
|
7
|
+
* Resolution uses the longest-prefix partitioning rule: when multiple scopes
|
|
8
|
+
* have paths covering the same file, the one whose matched path is the most
|
|
9
|
+
* specific (longest after normalization) wins. This naturally supports nested
|
|
10
|
+
* scopes by dotted-name (e.g. `principal-ai.core` and
|
|
11
|
+
* `principal-ai.core.validation`), where the child claims its subtree without
|
|
12
|
+
* stealing the parent's.
|
|
13
|
+
*
|
|
14
|
+
* Pure/browser-safe — no filesystem access, just string comparison.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { normalizePath, pathCovers } from '../events/path-helpers';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* One declared scope/paths tuple. Multiple entries may share the same scope
|
|
21
|
+
* if a scope canvas needs to declare more than one region (generated code,
|
|
22
|
+
* platform splits, migration periods).
|
|
23
|
+
*/
|
|
24
|
+
export interface ScopePathEntry {
|
|
25
|
+
scope: string;
|
|
26
|
+
paths: string[];
|
|
27
|
+
/** Optional — useful for surfacing where a match came from in diagnostics. */
|
|
28
|
+
sourceCanvasPath?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Result of resolving a file against the index.
|
|
33
|
+
*/
|
|
34
|
+
export interface ScopePathMatch {
|
|
35
|
+
/** The winning entry (by longest-prefix). */
|
|
36
|
+
entry: ScopePathEntry;
|
|
37
|
+
/** Which of the entry's paths covered the file — the one that won. */
|
|
38
|
+
matchedPath: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export class ScopePathIndex {
|
|
42
|
+
private entries: ScopePathEntry[] = [];
|
|
43
|
+
|
|
44
|
+
/** Register a single scope/paths entry. */
|
|
45
|
+
add(entry: ScopePathEntry): void {
|
|
46
|
+
this.entries.push(entry);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Register many entries at once. */
|
|
50
|
+
addAll(entries: readonly ScopePathEntry[]): void {
|
|
51
|
+
for (const e of entries) this.add(e);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Resolve a filepath to its owning scope.
|
|
56
|
+
* Returns null if no entry has a path covering the file.
|
|
57
|
+
*/
|
|
58
|
+
resolve(filepath: string): ScopePathMatch | null {
|
|
59
|
+
const normalizedFile = normalizePath(filepath);
|
|
60
|
+
let best: { entry: ScopePathEntry; matchedPath: string; length: number } | null = null;
|
|
61
|
+
|
|
62
|
+
for (const entry of this.entries) {
|
|
63
|
+
for (const declared of entry.paths) {
|
|
64
|
+
if (!pathCovers(declared, normalizedFile)) continue;
|
|
65
|
+
const normalizedDeclared = normalizePath(declared);
|
|
66
|
+
const length = normalizedDeclared.length;
|
|
67
|
+
if (best === null || length > best.length) {
|
|
68
|
+
best = { entry, matchedPath: declared, length };
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return best ? { entry: best.entry, matchedPath: best.matchedPath } : null;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Look up the entry for a specific scope. Returns null when the scope
|
|
78
|
+
* isn't registered — either because its scopes-canvas node omits `paths`
|
|
79
|
+
* (opt-out of enforcement) or because no such scope is declared.
|
|
80
|
+
*/
|
|
81
|
+
getEntry(scope: string): ScopePathEntry | null {
|
|
82
|
+
return this.entries.find((e) => e.scope === scope) ?? null;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/** All scopes present in the index. */
|
|
86
|
+
getScopes(): readonly string[] {
|
|
87
|
+
return Array.from(new Set(this.entries.map((e) => e.scope)));
|
|
88
|
+
}
|
|
89
|
+
}
|