@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.
Files changed (614) hide show
  1. package/README.md +124 -0
  2. package/dist/ConfigurationLoader.d.ts +76 -0
  3. package/dist/ConfigurationLoader.d.ts.map +1 -0
  4. package/dist/ConfigurationLoader.js +148 -0
  5. package/dist/ConfigurationLoader.js.map +1 -0
  6. package/dist/ConfigurationValidator.d.ts +31 -0
  7. package/dist/ConfigurationValidator.d.ts.map +1 -0
  8. package/dist/ConfigurationValidator.js +239 -0
  9. package/dist/ConfigurationValidator.js.map +1 -0
  10. package/dist/EventProcessor.d.ts +49 -0
  11. package/dist/EventProcessor.d.ts.map +1 -0
  12. package/dist/EventProcessor.js +220 -0
  13. package/dist/EventProcessor.js.map +1 -0
  14. package/dist/EventRecorderService.d.ts +305 -0
  15. package/dist/EventRecorderService.d.ts.map +1 -0
  16. package/dist/EventRecorderService.js +467 -0
  17. package/dist/EventRecorderService.js.map +1 -0
  18. package/dist/LibraryLoader.d.ts +65 -0
  19. package/dist/LibraryLoader.d.ts.map +1 -0
  20. package/dist/LibraryLoader.js +197 -0
  21. package/dist/LibraryLoader.js.map +1 -0
  22. package/dist/PathBasedEventProcessor.d.ts +77 -0
  23. package/dist/PathBasedEventProcessor.d.ts.map +1 -0
  24. package/dist/PathBasedEventProcessor.js +136 -0
  25. package/dist/PathBasedEventProcessor.js.map +1 -0
  26. package/dist/SessionManager.d.ts +194 -0
  27. package/dist/SessionManager.d.ts.map +1 -0
  28. package/dist/SessionManager.js +302 -0
  29. package/dist/SessionManager.js.map +1 -0
  30. package/dist/ValidationEngine.d.ts +31 -0
  31. package/dist/ValidationEngine.d.ts.map +1 -0
  32. package/dist/ValidationEngine.js +162 -0
  33. package/dist/ValidationEngine.js.map +1 -0
  34. package/dist/agent-sessions/fixture.d.ts +80 -0
  35. package/dist/agent-sessions/fixture.d.ts.map +1 -0
  36. package/dist/agent-sessions/fixture.js +130 -0
  37. package/dist/agent-sessions/fixture.js.map +1 -0
  38. package/dist/agent-sessions/index.d.ts +3 -0
  39. package/dist/agent-sessions/index.d.ts.map +1 -0
  40. package/dist/agent-sessions/index.js +6 -0
  41. package/dist/agent-sessions/index.js.map +1 -0
  42. package/dist/auxiliary/AuxiliaryManifestValidator.d.ts +41 -0
  43. package/dist/auxiliary/AuxiliaryManifestValidator.d.ts.map +1 -0
  44. package/dist/auxiliary/AuxiliaryManifestValidator.js +100 -0
  45. package/dist/auxiliary/AuxiliaryManifestValidator.js.map +1 -0
  46. package/dist/auxiliary/index.d.ts +9 -0
  47. package/dist/auxiliary/index.d.ts.map +1 -0
  48. package/dist/auxiliary/index.js +14 -0
  49. package/dist/auxiliary/index.js.map +1 -0
  50. package/dist/auxiliary/validateAreaScopeDisjoint.d.ts +24 -0
  51. package/dist/auxiliary/validateAreaScopeDisjoint.d.ts.map +1 -0
  52. package/dist/auxiliary/validateAreaScopeDisjoint.js +61 -0
  53. package/dist/auxiliary/validateAreaScopeDisjoint.js.map +1 -0
  54. package/dist/cli/codegen.d.ts +41 -0
  55. package/dist/cli/codegen.d.ts.map +1 -0
  56. package/dist/cli/codegen.js +257 -0
  57. package/dist/cli/codegen.js.map +1 -0
  58. package/dist/codegen/type-generator.d.ts +123 -0
  59. package/dist/codegen/type-generator.d.ts.map +1 -0
  60. package/dist/codegen/type-generator.js +433 -0
  61. package/dist/codegen/type-generator.js.map +1 -0
  62. package/dist/codegen/usage-example.d.ts +103 -0
  63. package/dist/codegen/usage-example.d.ts.map +1 -0
  64. package/dist/codegen/usage-example.js +258 -0
  65. package/dist/codegen/usage-example.js.map +1 -0
  66. package/dist/dashboard/DashboardValidator.d.ts +85 -0
  67. package/dist/dashboard/DashboardValidator.d.ts.map +1 -0
  68. package/dist/dashboard/DashboardValidator.js +775 -0
  69. package/dist/dashboard/DashboardValidator.js.map +1 -0
  70. package/dist/dashboard/index.d.ts +6 -0
  71. package/dist/dashboard/index.d.ts.map +1 -0
  72. package/dist/dashboard/index.js +10 -0
  73. package/dist/dashboard/index.js.map +1 -0
  74. package/dist/discovery/CanvasDiscovery.d.ts +160 -0
  75. package/dist/discovery/CanvasDiscovery.d.ts.map +1 -0
  76. package/dist/discovery/CanvasDiscovery.js +865 -0
  77. package/dist/discovery/CanvasDiscovery.js.map +1 -0
  78. package/dist/discovery/CanvasFileManifest.d.ts +86 -0
  79. package/dist/discovery/CanvasFileManifest.d.ts.map +1 -0
  80. package/dist/discovery/CanvasFileManifest.js +338 -0
  81. package/dist/discovery/CanvasFileManifest.js.map +1 -0
  82. package/dist/discovery/LibraryDiscovery.d.ts +108 -0
  83. package/dist/discovery/LibraryDiscovery.d.ts.map +1 -0
  84. package/dist/discovery/LibraryDiscovery.js +263 -0
  85. package/dist/discovery/LibraryDiscovery.js.map +1 -0
  86. package/dist/discovery/types.d.ts +403 -0
  87. package/dist/discovery/types.d.ts.map +1 -0
  88. package/dist/discovery/types.js +6 -0
  89. package/dist/discovery/types.js.map +1 -0
  90. package/dist/events/EventsCanvasValidator.d.ts +139 -0
  91. package/dist/events/EventsCanvasValidator.d.ts.map +1 -0
  92. package/dist/events/EventsCanvasValidator.js +281 -0
  93. package/dist/events/EventsCanvasValidator.js.map +1 -0
  94. package/dist/events/NamespacePathIndex.d.ts +61 -0
  95. package/dist/events/NamespacePathIndex.d.ts.map +1 -0
  96. package/dist/events/NamespacePathIndex.js +74 -0
  97. package/dist/events/NamespacePathIndex.js.map +1 -0
  98. package/dist/events/OtelEventPathsValidator.d.ts +75 -0
  99. package/dist/events/OtelEventPathsValidator.d.ts.map +1 -0
  100. package/dist/events/OtelEventPathsValidator.js +126 -0
  101. package/dist/events/OtelEventPathsValidator.js.map +1 -0
  102. package/dist/events/ScopeEventsValidator.d.ts +68 -0
  103. package/dist/events/ScopeEventsValidator.d.ts.map +1 -0
  104. package/dist/events/ScopeEventsValidator.js +91 -0
  105. package/dist/events/ScopeEventsValidator.js.map +1 -0
  106. package/dist/events/index.d.ts +9 -0
  107. package/dist/events/index.d.ts.map +1 -0
  108. package/dist/events/index.js +12 -0
  109. package/dist/events/index.js.map +1 -0
  110. package/dist/events/path-helpers.d.ts +33 -0
  111. package/dist/events/path-helpers.d.ts.map +1 -0
  112. package/dist/events/path-helpers.js +59 -0
  113. package/dist/events/path-helpers.js.map +1 -0
  114. package/dist/execution/ExecutionLoader.d.ts +135 -0
  115. package/dist/execution/ExecutionLoader.d.ts.map +1 -0
  116. package/dist/execution/ExecutionLoader.js +266 -0
  117. package/dist/execution/ExecutionLoader.js.map +1 -0
  118. package/dist/execution/ExecutionValidator.d.ts +94 -0
  119. package/dist/execution/ExecutionValidator.d.ts.map +1 -0
  120. package/dist/execution/ExecutionValidator.js +503 -0
  121. package/dist/execution/ExecutionValidator.js.map +1 -0
  122. package/dist/generated/graph-converter-execution.types.d.ts +177 -0
  123. package/dist/generated/graph-converter-execution.types.d.ts.map +1 -0
  124. package/dist/generated/graph-converter-execution.types.js +12 -0
  125. package/dist/generated/graph-converter-execution.types.js.map +1 -0
  126. package/dist/helpers/GraphInstrumentationHelper.d.ts +93 -0
  127. package/dist/helpers/GraphInstrumentationHelper.d.ts.map +1 -0
  128. package/dist/helpers/GraphInstrumentationHelper.js +252 -0
  129. package/dist/helpers/GraphInstrumentationHelper.js.map +1 -0
  130. package/dist/index.d.ts +82 -0
  131. package/dist/index.d.ts.map +1 -0
  132. package/dist/index.js +214 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/matchers/SpanMatcher.d.ts +107 -0
  135. package/dist/matchers/SpanMatcher.d.ts.map +1 -0
  136. package/dist/matchers/SpanMatcher.js +274 -0
  137. package/dist/matchers/SpanMatcher.js.map +1 -0
  138. package/dist/node.d.ts +78 -0
  139. package/dist/node.d.ts.map +1 -0
  140. package/dist/node.js +177 -0
  141. package/dist/node.js.map +1 -0
  142. package/dist/opencode/OpenCodeEventStore.d.ts +25 -0
  143. package/dist/opencode/OpenCodeEventStore.d.ts.map +1 -0
  144. package/dist/opencode/OpenCodeEventStore.js +182 -0
  145. package/dist/opencode/OpenCodeEventStore.js.map +1 -0
  146. package/dist/opencode/agent-sessions.d.ts +46 -0
  147. package/dist/opencode/agent-sessions.d.ts.map +1 -0
  148. package/dist/opencode/agent-sessions.js +302 -0
  149. package/dist/opencode/agent-sessions.js.map +1 -0
  150. package/dist/opencode/index.d.ts +6 -0
  151. package/dist/opencode/index.d.ts.map +1 -0
  152. package/dist/opencode/index.js +15 -0
  153. package/dist/opencode/index.js.map +1 -0
  154. package/dist/opencode/node-path-adapter.d.ts +25 -0
  155. package/dist/opencode/node-path-adapter.d.ts.map +1 -0
  156. package/dist/opencode/node-path-adapter.js +188 -0
  157. package/dist/opencode/node-path-adapter.js.map +1 -0
  158. package/dist/opencode/pipeline.d.ts +42 -0
  159. package/dist/opencode/pipeline.d.ts.map +1 -0
  160. package/dist/opencode/pipeline.js +90 -0
  161. package/dist/opencode/pipeline.js.map +1 -0
  162. package/dist/opencode/types.d.ts +39 -0
  163. package/dist/opencode/types.d.ts.map +1 -0
  164. package/dist/opencode/types.js +3 -0
  165. package/dist/opencode/types.js.map +1 -0
  166. package/dist/orchestration/TraceOrchestrator.d.ts +71 -0
  167. package/dist/orchestration/TraceOrchestrator.d.ts.map +1 -0
  168. package/dist/orchestration/TraceOrchestrator.js +416 -0
  169. package/dist/orchestration/TraceOrchestrator.js.map +1 -0
  170. package/dist/parsers/OtlpTraceParser.d.ts +131 -0
  171. package/dist/parsers/OtlpTraceParser.d.ts.map +1 -0
  172. package/dist/parsers/OtlpTraceParser.js +310 -0
  173. package/dist/parsers/OtlpTraceParser.js.map +1 -0
  174. package/dist/registry/CompositeRegistry.d.ts +71 -0
  175. package/dist/registry/CompositeRegistry.d.ts.map +1 -0
  176. package/dist/registry/CompositeRegistry.js +113 -0
  177. package/dist/registry/CompositeRegistry.js.map +1 -0
  178. package/dist/registry/EventRegistry.d.ts +79 -0
  179. package/dist/registry/EventRegistry.d.ts.map +1 -0
  180. package/dist/registry/EventRegistry.js +165 -0
  181. package/dist/registry/EventRegistry.js.map +1 -0
  182. package/dist/registry/LocalRegistry.d.ts +111 -0
  183. package/dist/registry/LocalRegistry.d.ts.map +1 -0
  184. package/dist/registry/LocalRegistry.js +335 -0
  185. package/dist/registry/LocalRegistry.js.map +1 -0
  186. package/dist/registry/RemoteRegistry.d.ts +122 -0
  187. package/dist/registry/RemoteRegistry.d.ts.map +1 -0
  188. package/dist/registry/RemoteRegistry.js +399 -0
  189. package/dist/registry/RemoteRegistry.js.map +1 -0
  190. package/dist/registry/VersionRegistry.d.ts +51 -0
  191. package/dist/registry/VersionRegistry.d.ts.map +1 -0
  192. package/dist/registry/VersionRegistry.js +105 -0
  193. package/dist/registry/VersionRegistry.js.map +1 -0
  194. package/dist/rules/config.d.ts +57 -0
  195. package/dist/rules/config.d.ts.map +1 -0
  196. package/dist/rules/config.js +382 -0
  197. package/dist/rules/config.js.map +1 -0
  198. package/dist/rules/engine.d.ts +70 -0
  199. package/dist/rules/engine.d.ts.map +1 -0
  200. package/dist/rules/engine.js +373 -0
  201. package/dist/rules/engine.js.map +1 -0
  202. package/dist/rules/implementations/connection-type-references.d.ts +7 -0
  203. package/dist/rules/implementations/connection-type-references.d.ts.map +1 -0
  204. package/dist/rules/implementations/connection-type-references.js +107 -0
  205. package/dist/rules/implementations/connection-type-references.js.map +1 -0
  206. package/dist/rules/implementations/dead-end-states.d.ts +17 -0
  207. package/dist/rules/implementations/dead-end-states.d.ts.map +1 -0
  208. package/dist/rules/implementations/dead-end-states.js +75 -0
  209. package/dist/rules/implementations/dead-end-states.js.map +1 -0
  210. package/dist/rules/implementations/index.d.ts +23 -0
  211. package/dist/rules/implementations/index.d.ts.map +1 -0
  212. package/dist/rules/implementations/index.js +73 -0
  213. package/dist/rules/implementations/index.js.map +1 -0
  214. package/dist/rules/implementations/minimum-node-sources.d.ts +24 -0
  215. package/dist/rules/implementations/minimum-node-sources.d.ts.map +1 -0
  216. package/dist/rules/implementations/minimum-node-sources.js +59 -0
  217. package/dist/rules/implementations/minimum-node-sources.js.map +1 -0
  218. package/dist/rules/implementations/no-unknown-fields.d.ts +7 -0
  219. package/dist/rules/implementations/no-unknown-fields.d.ts.map +1 -0
  220. package/dist/rules/implementations/no-unknown-fields.js +216 -0
  221. package/dist/rules/implementations/no-unknown-fields.js.map +1 -0
  222. package/dist/rules/implementations/orphaned-edge-types.d.ts +7 -0
  223. package/dist/rules/implementations/orphaned-edge-types.d.ts.map +1 -0
  224. package/dist/rules/implementations/orphaned-edge-types.js +50 -0
  225. package/dist/rules/implementations/orphaned-edge-types.js.map +1 -0
  226. package/dist/rules/implementations/orphaned-node-types.d.ts +7 -0
  227. package/dist/rules/implementations/orphaned-node-types.d.ts.map +1 -0
  228. package/dist/rules/implementations/orphaned-node-types.js +53 -0
  229. package/dist/rules/implementations/orphaned-node-types.js.map +1 -0
  230. package/dist/rules/implementations/required-metadata.d.ts +7 -0
  231. package/dist/rules/implementations/required-metadata.d.ts.map +1 -0
  232. package/dist/rules/implementations/required-metadata.js +48 -0
  233. package/dist/rules/implementations/required-metadata.js.map +1 -0
  234. package/dist/rules/implementations/state-transition-references.d.ts +7 -0
  235. package/dist/rules/implementations/state-transition-references.d.ts.map +1 -0
  236. package/dist/rules/implementations/state-transition-references.js +138 -0
  237. package/dist/rules/implementations/state-transition-references.js.map +1 -0
  238. package/dist/rules/implementations/unreachable-states.d.ts +7 -0
  239. package/dist/rules/implementations/unreachable-states.d.ts.map +1 -0
  240. package/dist/rules/implementations/unreachable-states.js +83 -0
  241. package/dist/rules/implementations/unreachable-states.js.map +1 -0
  242. package/dist/rules/implementations/valid-action-patterns.d.ts +17 -0
  243. package/dist/rules/implementations/valid-action-patterns.d.ts.map +1 -0
  244. package/dist/rules/implementations/valid-action-patterns.js +112 -0
  245. package/dist/rules/implementations/valid-action-patterns.js.map +1 -0
  246. package/dist/rules/implementations/valid-color-format.d.ts +7 -0
  247. package/dist/rules/implementations/valid-color-format.d.ts.map +1 -0
  248. package/dist/rules/implementations/valid-color-format.js +94 -0
  249. package/dist/rules/implementations/valid-color-format.js.map +1 -0
  250. package/dist/rules/implementations/valid-edge-types.d.ts +7 -0
  251. package/dist/rules/implementations/valid-edge-types.d.ts.map +1 -0
  252. package/dist/rules/implementations/valid-edge-types.js +248 -0
  253. package/dist/rules/implementations/valid-edge-types.js.map +1 -0
  254. package/dist/rules/implementations/valid-node-types.d.ts +7 -0
  255. package/dist/rules/implementations/valid-node-types.d.ts.map +1 -0
  256. package/dist/rules/implementations/valid-node-types.js +187 -0
  257. package/dist/rules/implementations/valid-node-types.js.map +1 -0
  258. package/dist/rules/index.d.ts +28 -0
  259. package/dist/rules/index.d.ts.map +1 -0
  260. package/dist/rules/index.js +70 -0
  261. package/dist/rules/index.js.map +1 -0
  262. package/dist/rules/types.d.ts +309 -0
  263. package/dist/rules/types.d.ts.map +1 -0
  264. package/dist/rules/types.js +40 -0
  265. package/dist/rules/types.js.map +1 -0
  266. package/dist/scopes/ScopePathIndex.d.ts +56 -0
  267. package/dist/scopes/ScopePathIndex.d.ts.map +1 -0
  268. package/dist/scopes/ScopePathIndex.js +67 -0
  269. package/dist/scopes/ScopePathIndex.js.map +1 -0
  270. package/dist/scopes/ScopesCanvasValidator.d.ts +76 -0
  271. package/dist/scopes/ScopesCanvasValidator.d.ts.map +1 -0
  272. package/dist/scopes/ScopesCanvasValidator.js +221 -0
  273. package/dist/scopes/ScopesCanvasValidator.js.map +1 -0
  274. package/dist/scopes/index.d.ts +12 -0
  275. package/dist/scopes/index.d.ts.map +1 -0
  276. package/dist/scopes/index.js +30 -0
  277. package/dist/scopes/index.js.map +1 -0
  278. package/dist/scopes/utils.d.ts +85 -0
  279. package/dist/scopes/utils.d.ts.map +1 -0
  280. package/dist/scopes/utils.js +143 -0
  281. package/dist/scopes/utils.js.map +1 -0
  282. package/dist/scopes/validateScopeNamespaceNesting.d.ts +38 -0
  283. package/dist/scopes/validateScopeNamespaceNesting.d.ts.map +1 -0
  284. package/dist/scopes/validateScopeNamespaceNesting.js +69 -0
  285. package/dist/scopes/validateScopeNamespaceNesting.js.map +1 -0
  286. package/dist/spans/index.d.ts +12 -0
  287. package/dist/spans/index.d.ts.map +1 -0
  288. package/dist/spans/index.js +25 -0
  289. package/dist/spans/index.js.map +1 -0
  290. package/dist/spans/utils.d.ts +70 -0
  291. package/dist/spans/utils.d.ts.map +1 -0
  292. package/dist/spans/utils.js +205 -0
  293. package/dist/spans/utils.js.map +1 -0
  294. package/dist/storage/topic-types.d.ts +203 -0
  295. package/dist/storage/topic-types.d.ts.map +1 -0
  296. package/dist/storage/topic-types.js +60 -0
  297. package/dist/storage/topic-types.js.map +1 -0
  298. package/dist/storage/topicStore.d.ts +135 -0
  299. package/dist/storage/topicStore.d.ts.map +1 -0
  300. package/dist/storage/topicStore.js +389 -0
  301. package/dist/storage/topicStore.js.map +1 -0
  302. package/dist/storyboard/builder.d.ts +135 -0
  303. package/dist/storyboard/builder.d.ts.map +1 -0
  304. package/dist/storyboard/builder.js +235 -0
  305. package/dist/storyboard/builder.js.map +1 -0
  306. package/dist/storyboard/index.d.ts +9 -0
  307. package/dist/storyboard/index.d.ts.map +1 -0
  308. package/dist/storyboard/index.js +18 -0
  309. package/dist/storyboard/index.js.map +1 -0
  310. package/dist/storyboard/types.d.ts +101 -0
  311. package/dist/storyboard/types.d.ts.map +1 -0
  312. package/dist/storyboard/types.js +10 -0
  313. package/dist/storyboard/types.js.map +1 -0
  314. package/dist/telemetry/coverage.d.ts +92 -0
  315. package/dist/telemetry/coverage.d.ts.map +1 -0
  316. package/dist/telemetry/coverage.js +335 -0
  317. package/dist/telemetry/coverage.js.map +1 -0
  318. package/dist/telemetry/event-validator.d.ts +86 -0
  319. package/dist/telemetry/event-validator.d.ts.map +1 -0
  320. package/dist/telemetry/event-validator.js +257 -0
  321. package/dist/telemetry/event-validator.js.map +1 -0
  322. package/dist/types/audit.d.ts +236 -0
  323. package/dist/types/audit.d.ts.map +1 -0
  324. package/dist/types/audit.js +53 -0
  325. package/dist/types/audit.js.map +1 -0
  326. package/dist/types/auxiliary.d.ts +54 -0
  327. package/dist/types/auxiliary.d.ts.map +1 -0
  328. package/dist/types/auxiliary.js +27 -0
  329. package/dist/types/auxiliary.js.map +1 -0
  330. package/dist/types/canvas-scope.d.ts +156 -0
  331. package/dist/types/canvas-scope.d.ts.map +1 -0
  332. package/dist/types/canvas-scope.js +62 -0
  333. package/dist/types/canvas-scope.js.map +1 -0
  334. package/dist/types/canvas.d.ts +1138 -0
  335. package/dist/types/canvas.d.ts.map +1 -0
  336. package/dist/types/canvas.js +178 -0
  337. package/dist/types/canvas.js.map +1 -0
  338. package/dist/types/dashboard.d.ts +170 -0
  339. package/dist/types/dashboard.d.ts.map +1 -0
  340. package/dist/types/dashboard.js +14 -0
  341. package/dist/types/dashboard.js.map +1 -0
  342. package/dist/types/index.d.ts +352 -0
  343. package/dist/types/index.d.ts.map +1 -0
  344. package/dist/types/index.js +39 -0
  345. package/dist/types/index.js.map +1 -0
  346. package/dist/types/library.d.ts +227 -0
  347. package/dist/types/library.d.ts.map +1 -0
  348. package/dist/types/library.js +16 -0
  349. package/dist/types/library.js.map +1 -0
  350. package/dist/types/otel.d.ts +465 -0
  351. package/dist/types/otel.d.ts.map +1 -0
  352. package/dist/types/otel.js +163 -0
  353. package/dist/types/otel.js.map +1 -0
  354. package/dist/types/path-based-config.d.ts +235 -0
  355. package/dist/types/path-based-config.d.ts.map +1 -0
  356. package/dist/types/path-based-config.js +11 -0
  357. package/dist/types/path-based-config.js.map +1 -0
  358. package/dist/types/registered-trace.d.ts +337 -0
  359. package/dist/types/registered-trace.d.ts.map +1 -0
  360. package/dist/types/registered-trace.js +16 -0
  361. package/dist/types/registered-trace.js.map +1 -0
  362. package/dist/types/resource-match.d.ts +207 -0
  363. package/dist/types/resource-match.d.ts.map +1 -0
  364. package/dist/types/resource-match.js +74 -0
  365. package/dist/types/resource-match.js.map +1 -0
  366. package/dist/types/subsystem-model.d.ts +265 -0
  367. package/dist/types/subsystem-model.d.ts.map +1 -0
  368. package/dist/types/subsystem-model.js +35 -0
  369. package/dist/types/subsystem-model.js.map +1 -0
  370. package/dist/types/version-registry.d.ts +137 -0
  371. package/dist/types/version-registry.d.ts.map +1 -0
  372. package/dist/types/version-registry.js +10 -0
  373. package/dist/types/version-registry.js.map +1 -0
  374. package/dist/utils/CanvasConverter.d.ts +148 -0
  375. package/dist/utils/CanvasConverter.d.ts.map +1 -0
  376. package/dist/utils/CanvasConverter.js +530 -0
  377. package/dist/utils/CanvasConverter.js.map +1 -0
  378. package/dist/utils/GraphConverter.d.ts +18 -0
  379. package/dist/utils/GraphConverter.d.ts.map +1 -0
  380. package/dist/utils/GraphConverter.js +80 -0
  381. package/dist/utils/GraphConverter.js.map +1 -0
  382. package/dist/utils/PathMatcher.d.ts +55 -0
  383. package/dist/utils/PathMatcher.d.ts.map +1 -0
  384. package/dist/utils/PathMatcher.js +178 -0
  385. package/dist/utils/PathMatcher.js.map +1 -0
  386. package/dist/utils/TraceToCanvas.d.ts +83 -0
  387. package/dist/utils/TraceToCanvas.d.ts.map +1 -0
  388. package/dist/utils/TraceToCanvas.js +336 -0
  389. package/dist/utils/TraceToCanvas.js.map +1 -0
  390. package/dist/utils/YamlParser.d.ts +36 -0
  391. package/dist/utils/YamlParser.d.ts.map +1 -0
  392. package/dist/utils/YamlParser.js +92 -0
  393. package/dist/utils/YamlParser.js.map +1 -0
  394. package/dist/utils/registeredTraceHelpers.d.ts +76 -0
  395. package/dist/utils/registeredTraceHelpers.d.ts.map +1 -0
  396. package/dist/utils/registeredTraceHelpers.js +203 -0
  397. package/dist/utils/registeredTraceHelpers.js.map +1 -0
  398. package/dist/utils/traceAggregation.d.ts +25 -0
  399. package/dist/utils/traceAggregation.d.ts.map +1 -0
  400. package/dist/utils/traceAggregation.js +140 -0
  401. package/dist/utils/traceAggregation.js.map +1 -0
  402. package/dist/validation/OtelCanvasValidator.d.ts +40 -0
  403. package/dist/validation/OtelCanvasValidator.d.ts.map +1 -0
  404. package/dist/validation/OtelCanvasValidator.js +59 -0
  405. package/dist/validation/OtelCanvasValidator.js.map +1 -0
  406. package/dist/validation/index.d.ts +8 -0
  407. package/dist/validation/index.d.ts.map +1 -0
  408. package/dist/validation/index.js +13 -0
  409. package/dist/validation/index.js.map +1 -0
  410. package/dist/validation/libraryValidation.d.ts +53 -0
  411. package/dist/validation/libraryValidation.d.ts.map +1 -0
  412. package/dist/validation/libraryValidation.js +115 -0
  413. package/dist/validation/libraryValidation.js.map +1 -0
  414. package/dist/workflow/edge-derivation.d.ts +111 -0
  415. package/dist/workflow/edge-derivation.d.ts.map +1 -0
  416. package/dist/workflow/edge-derivation.js +174 -0
  417. package/dist/workflow/edge-derivation.js.map +1 -0
  418. package/dist/workflow/edge-validation.d.ts +170 -0
  419. package/dist/workflow/edge-validation.d.ts.map +1 -0
  420. package/dist/workflow/edge-validation.js +332 -0
  421. package/dist/workflow/edge-validation.js.map +1 -0
  422. package/dist/workflow/example.d.ts +11 -0
  423. package/dist/workflow/example.d.ts.map +1 -0
  424. package/dist/workflow/example.js +310 -0
  425. package/dist/workflow/example.js.map +1 -0
  426. package/dist/workflow/index.d.ts +20 -0
  427. package/dist/workflow/index.d.ts.map +1 -0
  428. package/dist/workflow/index.js +49 -0
  429. package/dist/workflow/index.js.map +1 -0
  430. package/dist/workflow/scenario-matcher.d.ts +63 -0
  431. package/dist/workflow/scenario-matcher.d.ts.map +1 -0
  432. package/dist/workflow/scenario-matcher.js +215 -0
  433. package/dist/workflow/scenario-matcher.js.map +1 -0
  434. package/dist/workflow/template-parser.d.ts +73 -0
  435. package/dist/workflow/template-parser.d.ts.map +1 -0
  436. package/dist/workflow/template-parser.js +280 -0
  437. package/dist/workflow/template-parser.js.map +1 -0
  438. package/dist/workflow/template-renderer.d.ts +45 -0
  439. package/dist/workflow/template-renderer.d.ts.map +1 -0
  440. package/dist/workflow/template-renderer.js +401 -0
  441. package/dist/workflow/template-renderer.js.map +1 -0
  442. package/dist/workflow/types.d.ts +393 -0
  443. package/dist/workflow/types.d.ts.map +1 -0
  444. package/dist/workflow/types.js +40 -0
  445. package/dist/workflow/types.js.map +1 -0
  446. package/dist/workflow/validator.d.ts +363 -0
  447. package/dist/workflow/validator.d.ts.map +1 -0
  448. package/dist/workflow/validator.js +2283 -0
  449. package/dist/workflow/validator.js.map +1 -0
  450. package/package.json +84 -0
  451. package/schemas/auxiliary.manifest.schema.json +56 -0
  452. package/schemas/subsystem-model.schema.json +767 -0
  453. package/src/ConfigurationLoader.test.ts +466 -0
  454. package/src/ConfigurationLoader.ts +184 -0
  455. package/src/ConfigurationValidator.test.ts +200 -0
  456. package/src/ConfigurationValidator.ts +273 -0
  457. package/src/EventProcessor.test.ts +405 -0
  458. package/src/EventProcessor.ts +256 -0
  459. package/src/EventRecorderService.test.ts +543 -0
  460. package/src/EventRecorderService.ts +741 -0
  461. package/src/LibraryLoader.ts +194 -0
  462. package/src/PathBasedEventProcessor.test.ts +336 -0
  463. package/src/PathBasedEventProcessor.ts +196 -0
  464. package/src/SessionManager.test.ts +424 -0
  465. package/src/SessionManager.ts +471 -0
  466. package/src/ValidationEngine.test.ts +520 -0
  467. package/src/ValidationEngine.ts +200 -0
  468. package/src/agent-sessions/fixture.ts +225 -0
  469. package/src/agent-sessions/index.ts +10 -0
  470. package/src/auxiliary/AuxiliaryManifestValidator.test.ts +93 -0
  471. package/src/auxiliary/AuxiliaryManifestValidator.ts +132 -0
  472. package/src/auxiliary/index.ts +18 -0
  473. package/src/auxiliary/validateAreaScopeDisjoint.test.ts +85 -0
  474. package/src/auxiliary/validateAreaScopeDisjoint.ts +72 -0
  475. package/src/browser-safety.test.ts +170 -0
  476. package/src/cli/codegen.ts +286 -0
  477. package/src/codegen/type-generator.test.ts +219 -0
  478. package/src/codegen/type-generator.ts +560 -0
  479. package/src/codegen/usage-example.ts +357 -0
  480. package/src/dashboard/DashboardValidator.ts +904 -0
  481. package/src/dashboard/index.ts +14 -0
  482. package/src/discovery/CanvasDiscovery.test.ts +691 -0
  483. package/src/discovery/CanvasDiscovery.ts +1114 -0
  484. package/src/discovery/CanvasFileManifest.test.ts +521 -0
  485. package/src/discovery/CanvasFileManifest.ts +419 -0
  486. package/src/discovery/LibraryDiscovery.test.ts +329 -0
  487. package/src/discovery/LibraryDiscovery.ts +386 -0
  488. package/src/discovery/types.ts +453 -0
  489. package/src/events/EventsCanvasValidator.test.ts +191 -0
  490. package/src/events/EventsCanvasValidator.ts +428 -0
  491. package/src/events/NamespacePathIndex.test.ts +97 -0
  492. package/src/events/NamespacePathIndex.ts +100 -0
  493. package/src/events/OtelEventPathsValidator.test.ts +243 -0
  494. package/src/events/OtelEventPathsValidator.ts +191 -0
  495. package/src/events/ScopeEventsValidator.test.ts +173 -0
  496. package/src/events/ScopeEventsValidator.ts +158 -0
  497. package/src/events/index.ts +27 -0
  498. package/src/events/path-helpers.ts +53 -0
  499. package/src/execution/ExecutionLoader.test.ts +378 -0
  500. package/src/execution/ExecutionLoader.ts +331 -0
  501. package/src/execution/ExecutionValidator.test.ts +503 -0
  502. package/src/execution/ExecutionValidator.ts +617 -0
  503. package/src/generated/graph-converter-execution.types.ts +193 -0
  504. package/src/helpers/GraphInstrumentationHelper.test.ts +364 -0
  505. package/src/helpers/GraphInstrumentationHelper.ts +323 -0
  506. package/src/index.ts +587 -0
  507. package/src/matchers/SpanMatcher.test.ts +1105 -0
  508. package/src/matchers/SpanMatcher.ts +381 -0
  509. package/src/node.ts +316 -0
  510. package/src/opencode/EVENT_MAPPING.md +82 -0
  511. package/src/opencode/OpenCodeEventStore.ts +214 -0
  512. package/src/opencode/__fixtures__/event-shapes.json +443 -0
  513. package/src/opencode/__fixtures__/session-events.json +13491 -0
  514. package/src/opencode/agent-sessions.ts +376 -0
  515. package/src/opencode/index.ts +23 -0
  516. package/src/opencode/node-path-adapter.ts +205 -0
  517. package/src/opencode/pipeline.ts +141 -0
  518. package/src/opencode/types.ts +43 -0
  519. package/src/orchestration/TraceOrchestrator.ts +560 -0
  520. package/src/orchestration/__tests__/TraceOrchestrator.test.ts +1098 -0
  521. package/src/parsers/OtlpTraceParser.ts +401 -0
  522. package/src/parsers/__tests__/OtlpTraceParser.test.ts +197 -0
  523. package/src/registry/CompositeRegistry.ts +140 -0
  524. package/src/registry/EventRegistry.test.ts +387 -0
  525. package/src/registry/EventRegistry.ts +191 -0
  526. package/src/registry/LocalRegistry.ts +416 -0
  527. package/src/registry/RemoteRegistry.ts +499 -0
  528. package/src/registry/VersionRegistry.test.ts +223 -0
  529. package/src/registry/VersionRegistry.ts +121 -0
  530. package/src/rules/config.test.ts +277 -0
  531. package/src/rules/config.ts +450 -0
  532. package/src/rules/engine.test.ts +331 -0
  533. package/src/rules/engine.ts +448 -0
  534. package/src/rules/implementations/connection-type-references.ts +117 -0
  535. package/src/rules/implementations/dead-end-states.ts +101 -0
  536. package/src/rules/implementations/index.ts +66 -0
  537. package/src/rules/implementations/minimum-node-sources.ts +84 -0
  538. package/src/rules/implementations/no-unknown-fields.ts +372 -0
  539. package/src/rules/implementations/orphaned-edge-types.ts +55 -0
  540. package/src/rules/implementations/orphaned-node-types.ts +58 -0
  541. package/src/rules/implementations/required-metadata.ts +52 -0
  542. package/src/rules/implementations/state-transition-references.ts +155 -0
  543. package/src/rules/implementations/unreachable-states.ts +94 -0
  544. package/src/rules/implementations/valid-action-patterns.ts +140 -0
  545. package/src/rules/implementations/valid-color-format.ts +152 -0
  546. package/src/rules/implementations/valid-edge-types.ts +273 -0
  547. package/src/rules/implementations/valid-node-types.ts +200 -0
  548. package/src/rules/index.ts +92 -0
  549. package/src/rules/types.ts +426 -0
  550. package/src/scopes/ScopePathIndex.test.ts +94 -0
  551. package/src/scopes/ScopePathIndex.ts +89 -0
  552. package/src/scopes/ScopesCanvasValidator.test.ts +127 -0
  553. package/src/scopes/ScopesCanvasValidator.ts +305 -0
  554. package/src/scopes/__tests__/utils.test.ts +383 -0
  555. package/src/scopes/index.ts +42 -0
  556. package/src/scopes/utils.ts +182 -0
  557. package/src/scopes/validateScopeNamespaceNesting.test.ts +127 -0
  558. package/src/scopes/validateScopeNamespaceNesting.ts +88 -0
  559. package/src/spans/index.ts +24 -0
  560. package/src/spans/utils.ts +249 -0
  561. package/src/storage/topic-types.ts +235 -0
  562. package/src/storage/topicStore.test.ts +193 -0
  563. package/src/storage/topicStore.ts +489 -0
  564. package/src/storyboard/builder.ts +308 -0
  565. package/src/storyboard/index.ts +26 -0
  566. package/src/storyboard/types.ts +117 -0
  567. package/src/telemetry/coverage.ts +480 -0
  568. package/src/telemetry/event-validator.ts +312 -0
  569. package/src/types/audit.ts +314 -0
  570. package/src/types/auxiliary.ts +63 -0
  571. package/src/types/canvas-scope.ts +190 -0
  572. package/src/types/canvas.test.ts +199 -0
  573. package/src/types/canvas.ts +1395 -0
  574. package/src/types/dashboard.ts +257 -0
  575. package/src/types/index.ts +460 -0
  576. package/src/types/library.ts +283 -0
  577. package/src/types/otel.test.ts +219 -0
  578. package/src/types/otel.ts +620 -0
  579. package/src/types/path-based-config.ts +285 -0
  580. package/src/types/registered-trace.ts +432 -0
  581. package/src/types/resource-match.ts +263 -0
  582. package/src/types/subsystem-model.ts +352 -0
  583. package/src/types/version-registry.ts +150 -0
  584. package/src/utils/CanvasConverter.ts +670 -0
  585. package/src/utils/GraphConverter.test.ts +322 -0
  586. package/src/utils/GraphConverter.ts +84 -0
  587. package/src/utils/PathMatcher.test.ts +139 -0
  588. package/src/utils/PathMatcher.ts +185 -0
  589. package/src/utils/TraceToCanvas.test.ts +310 -0
  590. package/src/utils/TraceToCanvas.ts +510 -0
  591. package/src/utils/YamlParser.ts +77 -0
  592. package/src/utils/registeredTraceHelpers.ts +251 -0
  593. package/src/utils/traceAggregation.test.ts +385 -0
  594. package/src/utils/traceAggregation.ts +173 -0
  595. package/src/validation/OtelCanvasValidator.ts +86 -0
  596. package/src/validation/index.ts +17 -0
  597. package/src/validation/libraryValidation.ts +206 -0
  598. package/src/workflow/README.md +408 -0
  599. package/src/workflow/__tests__/edge-derivation.test.ts +449 -0
  600. package/src/workflow/__tests__/edge-validation.test.ts +417 -0
  601. package/src/workflow/__tests__/scenario-matcher.test.ts +225 -0
  602. package/src/workflow/__tests__/template-parser.test.ts +276 -0
  603. package/src/workflow/__tests__/template-renderer.test.ts +509 -0
  604. package/src/workflow/__tests__/types.test.ts +187 -0
  605. package/src/workflow/__tests__/validator.test.ts +3225 -0
  606. package/src/workflow/edge-derivation.ts +265 -0
  607. package/src/workflow/edge-validation.ts +503 -0
  608. package/src/workflow/example.ts +330 -0
  609. package/src/workflow/index.ts +86 -0
  610. package/src/workflow/scenario-matcher.ts +253 -0
  611. package/src/workflow/template-parser.ts +350 -0
  612. package/src/workflow/template-renderer.ts +453 -0
  613. package/src/workflow/types.ts +511 -0
  614. package/src/workflow/validator.ts +2737 -0
@@ -0,0 +1,75 @@
1
+ /**
2
+ * OTEL Event Paths Validator (Phase 2)
3
+ *
4
+ * Cross-canvas static check. For every `otel-event` node in an OTEL canvas,
5
+ * cross-reference each entry in `otel.files` against the `paths` declared on
6
+ * the event's namespace in the corresponding events canvas.
7
+ *
8
+ * Enforcement is opt-in per namespace: a namespace without `paths` (or a
9
+ * namespace not declared at all) produces no violations for its events.
10
+ *
11
+ * Pure/browser-safe — no filesystem access.
12
+ */
13
+ import type { ExtendedCanvas } from '../types/canvas';
14
+ /**
15
+ * One events canvas, pre-paired with the scope it owns. Scope pairing is
16
+ * typically derived via the existing scope → filename convention
17
+ * (e.g., scope `principal-view.cli` owns `principal-view-cli.events.canvas`).
18
+ */
19
+ export interface EventsCanvasInput {
20
+ canvas: ExtendedCanvas;
21
+ canvasPath: string;
22
+ scope: string;
23
+ }
24
+ /**
25
+ * One OTEL canvas whose `otel-event` nodes we want to cross-check.
26
+ */
27
+ export interface OtelCanvasInput {
28
+ canvas: ExtendedCanvas;
29
+ canvasPath: string;
30
+ }
31
+ export interface OtelEventPathsValidationContext {
32
+ eventsCanvases: EventsCanvasInput[];
33
+ otelCanvases: OtelCanvasInput[];
34
+ }
35
+ export type OtelEventPathsRuleId = 'events-otel-files-wrong-namespace' | 'events-otel-files-orphan';
36
+ export interface OtelEventPathsViolation {
37
+ ruleId: OtelEventPathsRuleId;
38
+ severity: 'error' | 'warn';
39
+ file: string;
40
+ path?: string;
41
+ message: string;
42
+ impact: string;
43
+ suggestion: string;
44
+ }
45
+ export interface OtelEventPathsValidationResult {
46
+ valid: boolean;
47
+ violations: OtelEventPathsViolation[];
48
+ metrics: {
49
+ /** Events whose files were cross-checked against namespace paths. */
50
+ eventsChecked: number;
51
+ /** Total files examined across all checked events. */
52
+ filesChecked: number;
53
+ /**
54
+ * Events skipped because the event's namespace has no `paths` declared
55
+ * (or is not declared at all) — enforcement is opt-in per namespace.
56
+ */
57
+ eventsSkippedNoPaths: number;
58
+ /**
59
+ * Events skipped because the `otel-event` node declares no `otel.files`.
60
+ * These events have no claimed implementation location to cross-check.
61
+ */
62
+ eventsSkippedNoFiles: number;
63
+ };
64
+ }
65
+ export declare class OtelEventPathsValidator {
66
+ /**
67
+ * Build a path index from the events canvases, keyed by scope.
68
+ * Only namespaces that declare `paths` contribute entries.
69
+ */
70
+ private buildIndex;
71
+ /** Extract the namespace from an event name (all segments except the last). */
72
+ private extractNamespace;
73
+ validate(context: OtelEventPathsValidationContext): OtelEventPathsValidationResult;
74
+ }
75
+ //# sourceMappingURL=OtelEventPathsValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OtelEventPathsValidator.d.ts","sourceRoot":"","sources":["../../src/events/OtelEventPathsValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,iBAAiB,CAAC;AAIrE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,+BAA+B;IAC9C,cAAc,EAAE,iBAAiB,EAAE,CAAC;IACpC,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC;AAED,MAAM,MAAM,oBAAoB,GAC5B,mCAAmC,GACnC,0BAA0B,CAAC;AAE/B,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC,OAAO,EAAE;QACP,qEAAqE;QACrE,aAAa,EAAE,MAAM,CAAC;QACtB,sDAAsD;QACtD,YAAY,EAAE,MAAM,CAAC;QACrB;;;WAGG;QACH,oBAAoB,EAAE,MAAM,CAAC;QAC7B;;;WAGG;QACH,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;CACH;AAED,qBAAa,uBAAuB;IAClC;;;OAGG;IACH,OAAO,CAAC,UAAU;IAqBlB,+EAA+E;IAC/E,OAAO,CAAC,gBAAgB;IAMxB,QAAQ,CAAC,OAAO,EAAE,+BAA+B,GAAG,8BAA8B;CAiFnF"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ /**
3
+ * OTEL Event Paths Validator (Phase 2)
4
+ *
5
+ * Cross-canvas static check. For every `otel-event` node in an OTEL canvas,
6
+ * cross-reference each entry in `otel.files` against the `paths` declared on
7
+ * the event's namespace in the corresponding events canvas.
8
+ *
9
+ * Enforcement is opt-in per namespace: a namespace without `paths` (or a
10
+ * namespace not declared at all) produces no violations for its events.
11
+ *
12
+ * Pure/browser-safe — no filesystem access.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.OtelEventPathsValidator = void 0;
16
+ const canvas_1 = require("../types/canvas");
17
+ const NamespacePathIndex_1 = require("./NamespacePathIndex");
18
+ class OtelEventPathsValidator {
19
+ /**
20
+ * Build a path index from the events canvases, keyed by scope.
21
+ * Only namespaces that declare `paths` contribute entries.
22
+ */
23
+ buildIndex(eventsCanvases) {
24
+ const index = new NamespacePathIndex_1.NamespacePathIndex();
25
+ for (const ec of eventsCanvases) {
26
+ for (const node of ec.canvas.nodes || []) {
27
+ if (node?.type !== 'event-namespace')
28
+ continue;
29
+ const ns = node.namespace;
30
+ if (!ns || typeof ns.name !== 'string')
31
+ continue;
32
+ if (!Array.isArray(ns.paths) || ns.paths.length === 0)
33
+ continue;
34
+ const entry = {
35
+ scope: ec.scope,
36
+ namespace: ns.name,
37
+ paths: ns.paths,
38
+ sourceCanvasPath: ec.canvasPath,
39
+ };
40
+ index.add(entry);
41
+ }
42
+ }
43
+ return index;
44
+ }
45
+ /** Extract the namespace from an event name (all segments except the last). */
46
+ extractNamespace(eventName) {
47
+ const segments = eventName.split('.');
48
+ if (segments.length < 2)
49
+ return null;
50
+ return segments.slice(0, -1).join('.');
51
+ }
52
+ validate(context) {
53
+ const violations = [];
54
+ const metrics = {
55
+ eventsChecked: 0,
56
+ filesChecked: 0,
57
+ eventsSkippedNoPaths: 0,
58
+ eventsSkippedNoFiles: 0,
59
+ };
60
+ const index = this.buildIndex(context.eventsCanvases);
61
+ for (const oc of context.otelCanvases) {
62
+ for (const node of oc.canvas.nodes || []) {
63
+ if (!(0, canvas_1.isOtelEventNode)(node))
64
+ continue;
65
+ const eventNode = node;
66
+ const eventName = eventNode.event?.name;
67
+ const scope = eventNode.otel?.scope;
68
+ const files = eventNode.otel?.files;
69
+ if (!eventName || !scope)
70
+ continue; // malformed — other validators catch this
71
+ const namespace = this.extractNamespace(eventName);
72
+ if (!namespace)
73
+ continue; // invalid event name — caught by other validators
74
+ if (!files || files.length === 0) {
75
+ metrics.eventsSkippedNoFiles++;
76
+ continue;
77
+ }
78
+ // Enforcement is opt-in: if the event's namespace has no declared
79
+ // paths (or isn't declared at all), we don't check its files.
80
+ const eventEntry = index.getEntry(scope, namespace);
81
+ if (!eventEntry) {
82
+ metrics.eventsSkippedNoPaths++;
83
+ continue;
84
+ }
85
+ metrics.eventsChecked++;
86
+ for (const file of files) {
87
+ metrics.filesChecked++;
88
+ const match = index.resolve(scope, file);
89
+ if (match === null) {
90
+ violations.push({
91
+ ruleId: 'events-otel-files-orphan',
92
+ severity: 'warn',
93
+ file: oc.canvasPath,
94
+ path: `nodes[id="${eventNode.id}"].otel.files["${file}"]`,
95
+ message: `Event "${eventName}" declares file "${file}" which is not covered by any namespace's paths in scope "${scope}"`,
96
+ impact: 'The file emits an event but has no declared component home, so its location cannot be validated against namespace conventions.',
97
+ suggestion: `Either add "${file}" (or an ancestor folder) to the "paths" of the "${namespace}" namespace in the events canvas, or move the implementation into one of the namespace's declared paths: ${eventEntry.paths.map((p) => `"${p}"`).join(', ')}.`,
98
+ });
99
+ continue;
100
+ }
101
+ if (match.entry.namespace === namespace) {
102
+ // File belongs to the event's namespace (longest-prefix match).
103
+ continue;
104
+ }
105
+ violations.push({
106
+ ruleId: 'events-otel-files-wrong-namespace',
107
+ severity: 'error',
108
+ file: oc.canvasPath,
109
+ path: `nodes[id="${eventNode.id}"].otel.files["${file}"]`,
110
+ message: `Event "${eventName}" declares file "${file}", but namespace "${match.entry.namespace}" (path "${match.matchedPath}") owns that location — not "${namespace}"`,
111
+ impact: 'Event identity disagrees with code location. Consumers discovering the event by name will land in a folder that belongs to a different namespace.',
112
+ suggestion: `Either rename the event to start with "${match.entry.namespace}." (if the code placement is correct), or move the implementation into one of the "${namespace}" namespace's declared paths (${eventEntry.paths.map((p) => `"${p}"`).join(', ')}).`,
113
+ });
114
+ }
115
+ }
116
+ }
117
+ const errors = violations.filter((v) => v.severity === 'error');
118
+ return {
119
+ valid: errors.length === 0,
120
+ violations,
121
+ metrics,
122
+ };
123
+ }
124
+ }
125
+ exports.OtelEventPathsValidator = OtelEventPathsValidator;
126
+ //# sourceMappingURL=OtelEventPathsValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OtelEventPathsValidator.js","sourceRoot":"","sources":["../../src/events/OtelEventPathsValidator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAGH,4CAAkD;AAClD,6DAAmF;AA6DnF,MAAa,uBAAuB;IAClC;;;OAGG;IACK,UAAU,CAAC,cAAmC;QACpD,MAAM,KAAK,GAAG,IAAI,uCAAkB,EAAE,CAAC;QACvC,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE;YAC/B,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE;gBACxC,IAAK,IAAY,EAAE,IAAI,KAAK,iBAAiB;oBAAE,SAAS;gBACxD,MAAM,EAAE,GAAI,IAAY,CAAC,SAAS,CAAC;gBACnC,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ;oBAAE,SAAS;gBACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAS;gBAEhE,MAAM,KAAK,GAAuB;oBAChC,KAAK,EAAE,EAAE,CAAC,KAAK;oBACf,SAAS,EAAE,EAAE,CAAC,IAAI;oBAClB,KAAK,EAAE,EAAE,CAAC,KAAK;oBACf,gBAAgB,EAAE,EAAE,CAAC,UAAU;iBAChC,CAAC;gBACF,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aAClB;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,+EAA+E;IACvE,gBAAgB,CAAC,SAAiB;QACxC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,QAAQ,CAAC,OAAwC;QAC/C,MAAM,UAAU,GAA8B,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG;YACd,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,CAAC;YACf,oBAAoB,EAAE,CAAC;YACvB,oBAAoB,EAAE,CAAC;SACxB,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEtD,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,YAAY,EAAE;YACrC,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE;gBACxC,IAAI,CAAC,IAAA,wBAAe,EAAC,IAAW,CAAC;oBAAE,SAAS;gBAC5C,MAAM,SAAS,GAAG,IAAqB,CAAC;gBACxC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;gBACxC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;gBACpC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;gBAEpC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK;oBAAE,SAAS,CAAC,0CAA0C;gBAE9E,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBACnD,IAAI,CAAC,SAAS;oBAAE,SAAS,CAAC,kDAAkD;gBAE5E,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;oBAChC,OAAO,CAAC,oBAAoB,EAAE,CAAC;oBAC/B,SAAS;iBACV;gBAED,kEAAkE;gBAClE,8DAA8D;gBAC9D,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBACpD,IAAI,CAAC,UAAU,EAAE;oBACf,OAAO,CAAC,oBAAoB,EAAE,CAAC;oBAC/B,SAAS;iBACV;gBAED,OAAO,CAAC,aAAa,EAAE,CAAC;gBAExB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,OAAO,CAAC,YAAY,EAAE,CAAC;oBAEvB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBACzC,IAAI,KAAK,KAAK,IAAI,EAAE;wBAClB,UAAU,CAAC,IAAI,CAAC;4BACd,MAAM,EAAE,0BAA0B;4BAClC,QAAQ,EAAE,MAAM;4BAChB,IAAI,EAAE,EAAE,CAAC,UAAU;4BACnB,IAAI,EAAE,aAAa,SAAS,CAAC,EAAE,kBAAkB,IAAI,IAAI;4BACzD,OAAO,EAAE,UAAU,SAAS,oBAAoB,IAAI,6DAA6D,KAAK,GAAG;4BACzH,MAAM,EAAE,gIAAgI;4BACxI,UAAU,EAAE,eAAe,IAAI,oDAAoD,SAAS,4GAA4G,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;yBAC5P,CAAC,CAAC;wBACH,SAAS;qBACV;oBAED,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;wBACvC,gEAAgE;wBAChE,SAAS;qBACV;oBAED,UAAU,CAAC,IAAI,CAAC;wBACd,MAAM,EAAE,mCAAmC;wBAC3C,QAAQ,EAAE,OAAO;wBACjB,IAAI,EAAE,EAAE,CAAC,UAAU;wBACnB,IAAI,EAAE,aAAa,SAAS,CAAC,EAAE,kBAAkB,IAAI,IAAI;wBACzD,OAAO,EAAE,UAAU,SAAS,oBAAoB,IAAI,qBAAqB,KAAK,CAAC,KAAK,CAAC,SAAS,YAAY,KAAK,CAAC,WAAW,gCAAgC,SAAS,GAAG;wBACvK,MAAM,EAAE,mJAAmJ;wBAC3J,UAAU,EAAE,0CAA0C,KAAK,CAAC,KAAK,CAAC,SAAS,sFAAsF,SAAS,iCAAiC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;qBAChQ,CAAC,CAAC;iBACJ;aACF;SACF;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;QAChE,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC1B,UAAU;YACV,OAAO;SACR,CAAC;IACJ,CAAC;CACF;AAlHD,0DAkHC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Scope Events Validator
3
+ *
4
+ * Validates that each instrumentation scope documented in architecture.scopes.canvas
5
+ * has a corresponding {scope-name}.events.canvas file documenting its event vocabulary.
6
+ */
7
+ import type { FileSystemAdapter } from '@principal-ai/repository-abstraction';
8
+ import type { ExtendedCanvas } from '../types/canvas';
9
+ /**
10
+ * Scope events validation context
11
+ */
12
+ export interface ScopeEventsValidationContext {
13
+ /** The scopes canvas (if found) */
14
+ scopesCanvas?: ExtendedCanvas;
15
+ /** Path to the scopes canvas file */
16
+ scopesCanvasPath?: string;
17
+ /** Base path for resolving relative paths */
18
+ basePath: string;
19
+ }
20
+ /**
21
+ * Scope events validation violation
22
+ */
23
+ export interface ScopeEventsViolation {
24
+ /** Rule ID that detected this violation */
25
+ ruleId: string;
26
+ /** Severity level */
27
+ severity: 'error' | 'warn';
28
+ /** Scope name */
29
+ scope: string;
30
+ /** Expected file path */
31
+ expectedPath: string;
32
+ /** Human-readable description of what's wrong */
33
+ message: string;
34
+ /** Why this matters */
35
+ impact: string;
36
+ /** How to fix it */
37
+ suggestion: string;
38
+ }
39
+ /**
40
+ * Scope events validation result
41
+ */
42
+ export interface ScopeEventsValidationResult {
43
+ /** Whether validation passed (no errors) */
44
+ valid: boolean;
45
+ /** List of violations found */
46
+ violations: ScopeEventsViolation[];
47
+ /** Summary of events canvas coverage */
48
+ coverage: {
49
+ /** Total owned scopes from library.yaml */
50
+ totalScopes: number;
51
+ /** Scopes with events canvas files */
52
+ scopesWithEvents: string[];
53
+ /** Scopes missing events canvas */
54
+ scopesMissingEvents: string[];
55
+ };
56
+ }
57
+ /**
58
+ * Validates that scopes have corresponding events canvas files
59
+ */
60
+ export declare class ScopeEventsValidator {
61
+ private fsAdapter;
62
+ constructor(fsAdapter: FileSystemAdapter);
63
+ /**
64
+ * Validate that each scope documented in scopes canvas has an events canvas
65
+ */
66
+ validate(context: ScopeEventsValidationContext): Promise<ScopeEventsValidationResult>;
67
+ }
68
+ //# sourceMappingURL=ScopeEventsValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopeEventsValidator.d.ts","sourceRoot":"","sources":["../../src/events/ScopeEventsValidator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,iBAAiB,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,mCAAmC;IACnC,YAAY,CAAC,EAAE,cAAc,CAAC;IAE9B,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IAEf,qBAAqB;IACrB,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAE3B,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IAEd,yBAAyB;IACzB,YAAY,EAAE,MAAM,CAAC;IAErB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAEhB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IAEf,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,4CAA4C;IAC5C,KAAK,EAAE,OAAO,CAAC;IAEf,+BAA+B;IAC/B,UAAU,EAAE,oBAAoB,EAAE,CAAC;IAEnC,wCAAwC;IACxC,QAAQ,EAAE;QACR,2CAA2C;QAC3C,WAAW,EAAE,MAAM,CAAC;QACpB,sCAAsC;QACtC,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,mCAAmC;QACnC,mBAAmB,EAAE,MAAM,EAAE,CAAC;KAC/B,CAAC;CACH;AAUD;;GAEG;AACH,qBAAa,oBAAoB;IACnB,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,iBAAiB;IAEhD;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,2BAA2B,CAAC;CAqE5F"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ /**
3
+ * Scope Events Validator
4
+ *
5
+ * Validates that each instrumentation scope documented in architecture.scopes.canvas
6
+ * has a corresponding {scope-name}.events.canvas file documenting its event vocabulary.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ScopeEventsValidator = void 0;
10
+ /**
11
+ * Convert scope name to events canvas filename
12
+ * e.g., "backlog.md.cli" -> "backlog-md-cli.events.canvas"
13
+ */
14
+ function scopeToEventsCanvasFilename(scope) {
15
+ return `${scope.replace(/\./g, '-')}.events.canvas`;
16
+ }
17
+ /**
18
+ * Validates that scopes have corresponding events canvas files
19
+ */
20
+ class ScopeEventsValidator {
21
+ constructor(fsAdapter) {
22
+ this.fsAdapter = fsAdapter;
23
+ }
24
+ /**
25
+ * Validate that each scope documented in scopes canvas has an events canvas
26
+ */
27
+ async validate(context) {
28
+ const violations = [];
29
+ const { scopesCanvas, scopesCanvasPath, basePath } = context;
30
+ const scopesWithEvents = [];
31
+ const scopesMissingEvents = [];
32
+ // If no scopes canvas, nothing to validate
33
+ if (!scopesCanvas) {
34
+ return {
35
+ valid: true,
36
+ violations: [],
37
+ coverage: {
38
+ totalScopes: 0,
39
+ scopesWithEvents: [],
40
+ scopesMissingEvents: [],
41
+ },
42
+ };
43
+ }
44
+ // Extract scope nodes from the canvas
45
+ const scopeNodes = (scopesCanvas.nodes || []).filter((node) => node.type === 'otel-scope');
46
+ // Check each scope for corresponding events canvas
47
+ for (const scopeNode of scopeNodes) {
48
+ const scope = scopeNode.otel?.scope;
49
+ if (!scope)
50
+ continue;
51
+ const eventsCanvasFilename = scopeToEventsCanvasFilename(scope);
52
+ const eventsCanvasPath = this.fsAdapter.join(basePath, '.principal-views', eventsCanvasFilename);
53
+ const relativePath = `.principal-views/${eventsCanvasFilename}`;
54
+ if (await this.fsAdapter.exists(eventsCanvasPath)) {
55
+ scopesWithEvents.push(scope);
56
+ }
57
+ else {
58
+ scopesMissingEvents.push(scope);
59
+ violations.push({
60
+ ruleId: 'scope-events-canvas-required',
61
+ severity: 'warn',
62
+ scope,
63
+ expectedPath: relativePath,
64
+ message: `Scope "${scope}" is missing an events canvas`,
65
+ impact: `Event vocabulary for scope "${scope}" is not documented. This makes it impossible to:
66
+ - Understand what events the scope emits
67
+ - Validate event flows match actual code
68
+ - Track event schema changes over time
69
+ - Generate documentation for implementers`,
70
+ suggestion: `Create ${relativePath} that documents:
71
+ - Event namespaces (groups of related events like "validation", "file", etc.)
72
+ - Events within each namespace with their attributes
73
+ - Adjacency relationships (which event namespaces connect in workflows)
74
+
75
+ See architecture.events.md for conventions.`,
76
+ });
77
+ }
78
+ }
79
+ return {
80
+ valid: violations.filter(v => v.severity === 'error').length === 0,
81
+ violations,
82
+ coverage: {
83
+ totalScopes: scopeNodes.length,
84
+ scopesWithEvents,
85
+ scopesMissingEvents,
86
+ },
87
+ };
88
+ }
89
+ }
90
+ exports.ScopeEventsValidator = ScopeEventsValidator;
91
+ //# sourceMappingURL=ScopeEventsValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopeEventsValidator.js","sourceRoot":"","sources":["../../src/events/ScopeEventsValidator.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAkEH;;;GAGG;AACH,SAAS,2BAA2B,CAAC,KAAa;IAChD,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,gBAAgB,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAa,oBAAoB;IAC/B,YAAoB,SAA4B;QAA5B,cAAS,GAAT,SAAS,CAAmB;IAAG,CAAC;IAEpD;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAqC;QAClD,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAE7D,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,MAAM,mBAAmB,GAAa,EAAE,CAAC;QAEzC,2CAA2C;QAC3C,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE;oBACR,WAAW,EAAE,CAAC;oBACd,gBAAgB,EAAE,EAAE;oBACpB,mBAAmB,EAAE,EAAE;iBACxB;aACF,CAAC;SACH;QAED,sCAAsC;QACtC,MAAM,UAAU,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAClD,CAAC,IAAI,EAAyB,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAC5D,CAAC;QAEF,mDAAmD;QACnD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;YACpC,IAAI,CAAC,KAAK;gBAAE,SAAS;YAErB,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;YAChE,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;YACjG,MAAM,YAAY,GAAG,oBAAoB,oBAAoB,EAAE,CAAC;YAEhE,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;gBACjD,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC9B;iBAAM;gBACL,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChC,UAAU,CAAC,IAAI,CAAC;oBACd,MAAM,EAAE,8BAA8B;oBACtC,QAAQ,EAAE,MAAM;oBAChB,KAAK;oBACL,YAAY,EAAE,YAAY;oBAC1B,OAAO,EAAE,UAAU,KAAK,+BAA+B;oBACvD,MAAM,EAAE,+BAA+B,KAAK;;;;0CAIZ;oBAChC,UAAU,EAAE,UAAU,YAAY;;;;;4CAKA;iBACnC,CAAC,CAAC;aACJ;SACF;QAED,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;YAClE,UAAU;YACV,QAAQ,EAAE;gBACR,WAAW,EAAE,UAAU,CAAC,MAAM;gBAC9B,gBAAgB;gBAChB,mBAAmB;aACpB;SACF,CAAC;IACJ,CAAC;CACF;AA3ED,oDA2EC"}
@@ -0,0 +1,9 @@
1
+ export { EventsCanvasValidator } from './EventsCanvasValidator';
2
+ export type { EventNamespaceNode, EventsCanvasValidationContext, EventsCanvasViolation, EventsCanvasValidationResult, } from './EventsCanvasValidator';
3
+ export { ScopeEventsValidator } from './ScopeEventsValidator';
4
+ export type { ScopeEventsValidationContext, ScopeEventsViolation, ScopeEventsValidationResult, } from './ScopeEventsValidator';
5
+ export { NamespacePathIndex } from './NamespacePathIndex';
6
+ export type { NamespacePathEntry, NamespacePathMatch } from './NamespacePathIndex';
7
+ export { OtelEventPathsValidator } from './OtelEventPathsValidator';
8
+ export type { OtelEventPathsValidationContext, OtelEventPathsValidationResult, OtelEventPathsViolation, OtelEventPathsRuleId, EventsCanvasInput, OtelCanvasInput, } from './OtelEventPathsValidator';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EACV,kBAAkB,EAClB,6BAA6B,EAC7B,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EACV,4BAA4B,EAC5B,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EACV,+BAA+B,EAC/B,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,GAChB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OtelEventPathsValidator = exports.NamespacePathIndex = exports.ScopeEventsValidator = exports.EventsCanvasValidator = void 0;
4
+ var EventsCanvasValidator_1 = require("./EventsCanvasValidator");
5
+ Object.defineProperty(exports, "EventsCanvasValidator", { enumerable: true, get: function () { return EventsCanvasValidator_1.EventsCanvasValidator; } });
6
+ var ScopeEventsValidator_1 = require("./ScopeEventsValidator");
7
+ Object.defineProperty(exports, "ScopeEventsValidator", { enumerable: true, get: function () { return ScopeEventsValidator_1.ScopeEventsValidator; } });
8
+ var NamespacePathIndex_1 = require("./NamespacePathIndex");
9
+ Object.defineProperty(exports, "NamespacePathIndex", { enumerable: true, get: function () { return NamespacePathIndex_1.NamespacePathIndex; } });
10
+ var OtelEventPathsValidator_1 = require("./OtelEventPathsValidator");
11
+ Object.defineProperty(exports, "OtelEventPathsValidator", { enumerable: true, get: function () { return OtelEventPathsValidator_1.OtelEventPathsValidator; } });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":";;;AAAA,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAQ9B,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAO7B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAG3B,qEAAoE;AAA3D,kIAAA,uBAAuB,OAAA"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Path helpers shared across events-canvas validators.
3
+ *
4
+ * Paths declared in canvases (namespace `paths`, `otel.files`, etc.) are
5
+ * always repo-relative. These helpers give a consistent notion of
6
+ * canonicalization and prefix-based containment so that separate validators
7
+ * don't drift.
8
+ */
9
+ /**
10
+ * Canonicalize a declared path for comparison.
11
+ * Strips leading `./`, trailing slashes, and collapses duplicate slashes.
12
+ */
13
+ export declare function normalizePath(p: string): string;
14
+ /**
15
+ * True when `child` is strictly nested under `parent` (not equal).
16
+ * Both inputs should already be normalized.
17
+ */
18
+ export declare function isPathDescendant(child: string, parent: string): boolean;
19
+ /**
20
+ * True when `filepath` is covered by `declaredPath` — either equal to it
21
+ * (file match) or nested under it (folder match). Inputs are normalized
22
+ * internally so callers can pass raw canvas values.
23
+ */
24
+ export declare function pathCovers(declaredPath: string, filepath: string): boolean;
25
+ /**
26
+ * Classify the relationship between two declared paths.
27
+ * - 'none': disjoint — no overlap
28
+ * - 'partition': one is strictly a parent of the other — valid nested-namespace case
29
+ * (longest-prefix wins at runtime, parent/child partition the tree)
30
+ * - 'conflict': identical, or overlap that isn't a clean parent-child partition
31
+ */
32
+ export declare function pathsOverlap(a: string, b: string): 'none' | 'partition' | 'conflict';
33
+ //# sourceMappingURL=path-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-helpers.d.ts","sourceRoot":"","sources":["../../src/events/path-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEvE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI1E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CAMpF"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ /**
3
+ * Path helpers shared across events-canvas validators.
4
+ *
5
+ * Paths declared in canvases (namespace `paths`, `otel.files`, etc.) are
6
+ * always repo-relative. These helpers give a consistent notion of
7
+ * canonicalization and prefix-based containment so that separate validators
8
+ * don't drift.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.pathsOverlap = exports.pathCovers = exports.isPathDescendant = exports.normalizePath = void 0;
12
+ /**
13
+ * Canonicalize a declared path for comparison.
14
+ * Strips leading `./`, trailing slashes, and collapses duplicate slashes.
15
+ */
16
+ function normalizePath(p) {
17
+ return p
18
+ .replace(/^\.\//, '')
19
+ .replace(/\/+$/, '')
20
+ .replace(/\/+/g, '/');
21
+ }
22
+ exports.normalizePath = normalizePath;
23
+ /**
24
+ * True when `child` is strictly nested under `parent` (not equal).
25
+ * Both inputs should already be normalized.
26
+ */
27
+ function isPathDescendant(child, parent) {
28
+ return child.startsWith(parent + '/');
29
+ }
30
+ exports.isPathDescendant = isPathDescendant;
31
+ /**
32
+ * True when `filepath` is covered by `declaredPath` — either equal to it
33
+ * (file match) or nested under it (folder match). Inputs are normalized
34
+ * internally so callers can pass raw canvas values.
35
+ */
36
+ function pathCovers(declaredPath, filepath) {
37
+ const d = normalizePath(declaredPath);
38
+ const f = normalizePath(filepath);
39
+ return d === f || isPathDescendant(f, d);
40
+ }
41
+ exports.pathCovers = pathCovers;
42
+ /**
43
+ * Classify the relationship between two declared paths.
44
+ * - 'none': disjoint — no overlap
45
+ * - 'partition': one is strictly a parent of the other — valid nested-namespace case
46
+ * (longest-prefix wins at runtime, parent/child partition the tree)
47
+ * - 'conflict': identical, or overlap that isn't a clean parent-child partition
48
+ */
49
+ function pathsOverlap(a, b) {
50
+ const na = normalizePath(a);
51
+ const nb = normalizePath(b);
52
+ if (na === nb)
53
+ return 'conflict';
54
+ if (isPathDescendant(na, nb) || isPathDescendant(nb, na))
55
+ return 'partition';
56
+ return 'none';
57
+ }
58
+ exports.pathsOverlap = pathsOverlap;
59
+ //# sourceMappingURL=path-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-helpers.js","sourceRoot":"","sources":["../../src/events/path-helpers.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH;;;GAGG;AACH,SAAgB,aAAa,CAAC,CAAS;IACrC,OAAO,CAAC;SACL,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC1B,CAAC;AALD,sCAKC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,KAAa,EAAE,MAAc;IAC5D,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;AACxC,CAAC;AAFD,4CAEC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,YAAoB,EAAE,QAAgB;IAC/D,MAAM,CAAC,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAJD,gCAIC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,CAAS,EAAE,CAAS;IAC/C,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,UAAU,CAAC;IACjC,IAAI,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC;QAAE,OAAO,WAAW,CAAC;IAC7E,OAAO,MAAM,CAAC;AAChB,CAAC;AAND,oCAMC"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Execution loader for managing execution artifact files
3
+ *
4
+ * Supports loading execution files (.otel.json) from __executions__/ folders
5
+ * using the adapter pattern for environment-agnostic file operations.
6
+ *
7
+ * Automatically handles both OTLP standard format and legacy formats
8
+ * through ExecutionValidator conversion.
9
+ */
10
+ import type { FileSystemAdapter } from '@principal-ai/repository-abstraction';
11
+ import { type ExecutionData } from './ExecutionValidator';
12
+ /**
13
+ * Represents a single execution file
14
+ */
15
+ export interface ExecutionFile {
16
+ /** Execution name (filename without .otel.json extension) */
17
+ name: string;
18
+ /** Full path to the execution file */
19
+ path: string;
20
+ /** Parsed and validated execution data */
21
+ data: ExecutionData;
22
+ }
23
+ /**
24
+ * Result of loading all executions
25
+ */
26
+ export interface ExecutionLoadResult {
27
+ /** Successfully loaded executions */
28
+ executions: ExecutionFile[];
29
+ /** Errors encountered during loading */
30
+ errors: Array<{
31
+ file: string;
32
+ error: string;
33
+ }>;
34
+ }
35
+ /**
36
+ * Loader for managing execution artifact files from __executions__/ folders
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const loader = new ExecutionLoader(fsAdapter);
41
+ *
42
+ * // Check if __executions__/ exists
43
+ * if (await loader.hasExecutionDirectory('/path/to/project')) {
44
+ * // Load all execution files
45
+ * const result = await loader.loadAll('/path/to/project');
46
+ * console.log(`Loaded ${result.executions.length} executions`);
47
+ *
48
+ * // Load specific execution
49
+ * const execution = await loader.loadByName('test-run', '/path/to/project');
50
+ * }
51
+ * ```
52
+ */
53
+ export declare class ExecutionLoader {
54
+ private fsAdapter;
55
+ private static readonly EXECUTION_DIR;
56
+ private static readonly EXECUTION_EXTENSION;
57
+ private validator;
58
+ constructor(fsAdapter: FileSystemAdapter);
59
+ /**
60
+ * Check if __executions__/ directory exists
61
+ *
62
+ * @param baseDir - Base directory to search from
63
+ * @returns True if __executions__/ directory exists
64
+ */
65
+ hasExecutionDirectory(baseDir: string): Promise<boolean>;
66
+ /**
67
+ * List all available execution names in __executions__/ folder
68
+ *
69
+ * @param baseDir - Base directory containing __executions__/ folder
70
+ * @returns Array of execution names (without .otel.json extensions)
71
+ */
72
+ listExecutions(baseDir: string): Promise<string[]>;
73
+ /**
74
+ * Load a specific execution by name
75
+ *
76
+ * Automatically handles OTLP format conversion through ExecutionValidator.
77
+ *
78
+ * @param name - Execution name (without .otel.json extension)
79
+ * @param baseDir - Base directory containing __executions__/ folder
80
+ * @returns Execution file or null if not found/invalid
81
+ */
82
+ loadByName(name: string, baseDir: string): Promise<ExecutionFile | null>;
83
+ /**
84
+ * Load all executions from __executions__/ folder
85
+ *
86
+ * Automatically handles OTLP format conversion for all files.
87
+ *
88
+ * @param baseDir - Base directory containing __executions__/ folder
89
+ * @returns Result containing all loaded executions and any errors
90
+ */
91
+ loadAll(baseDir: string): Promise<ExecutionLoadResult>;
92
+ /**
93
+ * Get the execution directory path
94
+ *
95
+ * @param baseDir - Base directory
96
+ * @returns Full path to __executions__/ directory
97
+ */
98
+ getExecutionDirectoryPath(baseDir: string): string;
99
+ /**
100
+ * Search for __executions__/ directories recursively in a project
101
+ *
102
+ * Useful for monorepos where executions might be in multiple packages.
103
+ *
104
+ * @param baseDir - Base directory to search from
105
+ * @param maxDepth - Maximum directory depth to search (default: 3)
106
+ * @returns Array of paths to __executions__/ directories
107
+ */
108
+ findExecutionDirectories(baseDir: string, maxDepth?: number): Promise<string[]>;
109
+ /**
110
+ * Load all executions from multiple __executions__/ directories
111
+ *
112
+ * Useful for monorepos where executions are spread across packages.
113
+ *
114
+ * @param baseDir - Base directory to search from
115
+ * @param maxDepth - Maximum directory depth to search (default: 3)
116
+ * @returns Result containing all loaded executions and any errors
117
+ */
118
+ loadAllRecursive(baseDir: string, maxDepth?: number): Promise<ExecutionLoadResult>;
119
+ /**
120
+ * Check if a filename is an execution file
121
+ */
122
+ private isExecutionFile;
123
+ /**
124
+ * Extract execution name from filename
125
+ */
126
+ private getExecutionNameFromFilename;
127
+ }
128
+ /**
129
+ * Create a new execution loader instance
130
+ *
131
+ * @param fsAdapter - File system adapter for environment-agnostic operations
132
+ * @returns ExecutionLoader instance
133
+ */
134
+ export declare function createExecutionLoader(fsAdapter: FileSystemAdapter): ExecutionLoader;
135
+ //# sourceMappingURL=ExecutionLoader.d.ts.map