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