@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,381 @@
1
+ /**
2
+ * SpanMatcher
3
+ *
4
+ * Efficiently matches incoming OTEL spans to canvas nodes based on
5
+ * declarative matching criteria defined in node metadata.
6
+ *
7
+ * Implements the OTEL Span Matching specification from:
8
+ * .principal-views/OTEL-SPAN-MATCHING.md
9
+ */
10
+
11
+ import type { ExtendedCanvas, PVOtelExtension } from '../types/canvas';
12
+ import { isOtelNode, isStandardCanvasNode } from '../types/canvas';
13
+ import type { OtelSpanData, OtelResourceData } from '../types/otel';
14
+ import {
15
+ getAttributeValue,
16
+ flattenResourceAttributes,
17
+ parseNanoTime,
18
+ getSpanDuration,
19
+ } from '../types/otel';
20
+
21
+ /**
22
+ * Compiled matching rule for a single canvas node
23
+ */
24
+ interface CompiledMatchRule {
25
+ nodeId: string;
26
+ resourceMatchers: ResourceMatcher[];
27
+ spanMatchers: SpanMatcherFn;
28
+ }
29
+
30
+ /**
31
+ * Resource attribute matcher function
32
+ */
33
+ type ResourceMatcher = (resourceAttrs: Record<string, string>) => boolean;
34
+
35
+ /**
36
+ * Span matcher function
37
+ */
38
+ type SpanMatcherFn = (span: OtelSpanData) => boolean;
39
+
40
+ /**
41
+ * Match result containing matched node IDs and metadata
42
+ */
43
+ export interface SpanMatchResult {
44
+ /** IDs of nodes that matched this span */
45
+ matchedNodeIds: string[];
46
+ /** Timestamp extracted from span (milliseconds since epoch) */
47
+ timestamp: number;
48
+ /** Span duration in milliseconds */
49
+ duration: number;
50
+ }
51
+
52
+ /**
53
+ * SpanMatcher
54
+ *
55
+ * Efficiently matches incoming OTEL spans to canvas nodes based on
56
+ * declarative matching criteria defined in node metadata.
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * const canvas = loadCanvas('checkout-flow.otel.canvas.json');
61
+ * const matcher = new SpanMatcher(canvas);
62
+ *
63
+ * // Later, when spans arrive:
64
+ * const result = matcher.matchSpan(span, resource);
65
+ * if (result.matchedNodeIds.length > 0) {
66
+ * console.log('Matched nodes:', result.matchedNodeIds);
67
+ * }
68
+ * ```
69
+ */
70
+ export class SpanMatcher {
71
+ private rules: CompiledMatchRule[] = [];
72
+
73
+ /**
74
+ * Create a new SpanMatcher for a canvas
75
+ *
76
+ * @param canvas Canvas with nodes containing OTEL matching criteria
77
+ */
78
+ constructor(canvas: ExtendedCanvas) {
79
+ this.rules = this.compileRules(canvas);
80
+ }
81
+
82
+ /**
83
+ * Pre-compile matching rules from canvas nodes
84
+ *
85
+ * This is done once at initialization for performance.
86
+ */
87
+ private compileRules(canvas: ExtendedCanvas): CompiledMatchRule[] {
88
+ const rules: CompiledMatchRule[] = [];
89
+
90
+ if (!canvas.nodes) return rules;
91
+
92
+ for (const node of canvas.nodes) {
93
+ // Get OTEL metadata from either OTEL nodes (top-level) or standard nodes (pv.otel)
94
+ let otel: PVOtelExtension | undefined;
95
+
96
+ if (isOtelNode(node) && node.otel) {
97
+ otel = node.otel as PVOtelExtension;
98
+ } else if (isStandardCanvasNode(node) && node.pv?.otel) {
99
+ otel = node.pv.otel as PVOtelExtension;
100
+ }
101
+
102
+ if (!otel) continue;
103
+
104
+ const rule: CompiledMatchRule = {
105
+ nodeId: node.id,
106
+ resourceMatchers: [],
107
+ spanMatchers: () => true, // Default: match all spans (will be overridden if spanMatch is specified)
108
+ };
109
+
110
+ // Compile resource matchers
111
+ if (otel.resourceMatch) {
112
+ rule.resourceMatchers.push(
113
+ this.compileResourceMatcher(otel.resourceMatch)
114
+ );
115
+ }
116
+
117
+ // Compile span matchers
118
+ if (otel.spanMatch) {
119
+ const spanMatcherFns: SpanMatcherFn[] = [];
120
+
121
+ // Span name matcher
122
+ if (otel.spanMatch.name) {
123
+ spanMatcherFns.push(
124
+ this.compileSpanNameMatcher(otel.spanMatch.name)
125
+ );
126
+ }
127
+
128
+ // Span kind matcher
129
+ if (otel.spanMatch.kind) {
130
+ spanMatcherFns.push(
131
+ this.compileSpanKindMatcher(otel.spanMatch.kind)
132
+ );
133
+ }
134
+
135
+ // Span attributes matcher
136
+ if (otel.spanMatch.attributes) {
137
+ spanMatcherFns.push(
138
+ this.compileSpanAttributesMatcher(otel.spanMatch.attributes)
139
+ );
140
+ }
141
+
142
+ // Span event matcher
143
+ if (otel.spanMatch.event) {
144
+ spanMatcherFns.push(
145
+ this.compileSpanEventMatcher(otel.spanMatch.event)
146
+ );
147
+ }
148
+
149
+ // Combine all span matchers with AND logic
150
+ rule.spanMatchers = (span: OtelSpanData) => {
151
+ return spanMatcherFns.every((matcher) => matcher(span));
152
+ };
153
+ }
154
+
155
+ // Only add rule if it has at least one matcher
156
+ if (rule.resourceMatchers.length > 0 || rule.spanMatchers.length > 0) {
157
+ rules.push(rule);
158
+ }
159
+ }
160
+
161
+ return rules;
162
+ }
163
+
164
+ /**
165
+ * Compile resource attribute matcher
166
+ */
167
+ private compileResourceMatcher(
168
+ resourceMatch: Record<string, string | string[]>
169
+ ): ResourceMatcher {
170
+ return (resourceAttrs: Record<string, string>) => {
171
+ // All specified attributes must match (AND logic)
172
+ return Object.entries(resourceMatch).every(([key, pattern]) => {
173
+ const value = resourceAttrs[key];
174
+ if (!value) return false;
175
+
176
+ if (Array.isArray(pattern)) {
177
+ // Match any of the patterns (OR within the array)
178
+ return pattern.some((p) => this.matchPattern(value, p));
179
+ }
180
+
181
+ return this.matchPattern(value, pattern);
182
+ });
183
+ };
184
+ }
185
+
186
+ /**
187
+ * Compile span name matcher
188
+ */
189
+ private compileSpanNameMatcher(
190
+ namePattern: string | string[]
191
+ ): SpanMatcherFn {
192
+ const patterns = Array.isArray(namePattern) ? namePattern : [namePattern];
193
+
194
+ return (span: OtelSpanData) => {
195
+ return patterns.some((pattern) => this.matchPattern(span.name, pattern));
196
+ };
197
+ }
198
+
199
+ /**
200
+ * Compile span kind matcher
201
+ */
202
+ private compileSpanKindMatcher(
203
+ kindPattern: string | string[]
204
+ ): SpanMatcherFn {
205
+ const kindStrings = Array.isArray(kindPattern) ? kindPattern : [kindPattern];
206
+
207
+ // Convert string span kinds to numeric ESpanKind values
208
+ const kinds = kindStrings.map((k) => this.spanKindToNumber(k));
209
+
210
+ return (span: OtelSpanData) => {
211
+ return kinds.includes(span.kind);
212
+ };
213
+ }
214
+
215
+ /**
216
+ * Convert string span kind to ESpanKind number
217
+ */
218
+ private spanKindToNumber(kind: string): number {
219
+ const kindMap: Record<string, number> = {
220
+ 'SPAN_KIND_UNSPECIFIED': 0,
221
+ 'SPAN_KIND_INTERNAL': 1,
222
+ 'SPAN_KIND_SERVER': 2,
223
+ 'SPAN_KIND_CLIENT': 3,
224
+ 'SPAN_KIND_PRODUCER': 4,
225
+ 'SPAN_KIND_CONSUMER': 5,
226
+ };
227
+ return kindMap[kind] ?? 0;
228
+ }
229
+
230
+ /**
231
+ * Compile span attributes matcher
232
+ */
233
+ private compileSpanAttributesMatcher(
234
+ attributesMatch: Record<string, string | string[]>
235
+ ): SpanMatcherFn {
236
+ return (span: OtelSpanData) => {
237
+ // All specified attributes must match (AND logic)
238
+ return Object.entries(attributesMatch).every(([key, pattern]) => {
239
+ const value = getAttributeValue(span.attributes, key);
240
+ if (value === undefined) return false;
241
+
242
+ const valueStr = String(value);
243
+
244
+ if (Array.isArray(pattern)) {
245
+ return pattern.some((p) => this.matchPattern(valueStr, p));
246
+ }
247
+
248
+ return this.matchPattern(valueStr, pattern);
249
+ });
250
+ };
251
+ }
252
+
253
+ /**
254
+ * Compile span event matcher
255
+ */
256
+ private compileSpanEventMatcher(
257
+ eventMatch: {
258
+ name?: string | string[];
259
+ attributes?: Record<string, string | string[]>;
260
+ }
261
+ ): SpanMatcherFn {
262
+ return (span: OtelSpanData) => {
263
+ if (!span.events || span.events.length === 0) return false;
264
+
265
+ // At least one event must match
266
+ return span.events.some((event) => {
267
+ // Match event name if specified
268
+ if (eventMatch.name) {
269
+ const namePatterns = Array.isArray(eventMatch.name)
270
+ ? eventMatch.name
271
+ : [eventMatch.name];
272
+
273
+ const nameMatches = namePatterns.some((pattern) =>
274
+ this.matchPattern(event.name, pattern)
275
+ );
276
+
277
+ if (!nameMatches) return false;
278
+ }
279
+
280
+ // Match event attributes if specified
281
+ if (eventMatch.attributes) {
282
+ const attrsMatch = Object.entries(eventMatch.attributes).every(
283
+ ([key, pattern]) => {
284
+ const value = getAttributeValue(event.attributes, key);
285
+ if (value === undefined) return false;
286
+
287
+ const valueStr = String(value);
288
+
289
+ if (Array.isArray(pattern)) {
290
+ return pattern.some((p) => this.matchPattern(valueStr, p));
291
+ }
292
+
293
+ return this.matchPattern(valueStr, pattern);
294
+ }
295
+ );
296
+
297
+ if (!attrsMatch) return false;
298
+ }
299
+
300
+ return true;
301
+ });
302
+ };
303
+ }
304
+
305
+ /**
306
+ * Match a value against a pattern
307
+ *
308
+ * Supports:
309
+ * - Wildcard: "*" matches anything
310
+ * - Glob patterns: "GET /api/*" matches "GET /api/users"
311
+ * - Exact match: "validateUser" matches only "validateUser"
312
+ */
313
+ private matchPattern(value: string, pattern: string): boolean {
314
+ // Wildcard matches everything
315
+ if (pattern === '*') return true;
316
+
317
+ // Exact match (fast path)
318
+ if (!pattern.includes('*')) {
319
+ return value === pattern;
320
+ }
321
+
322
+ // Glob pattern matching
323
+ // Convert glob pattern to regex
324
+ const regexPattern = pattern
325
+ .replace(/[.+?^${}()|[\]\\]/g, '\\$&') // Escape regex special chars
326
+ .replace(/\*/g, '.*'); // Convert * to .*
327
+
328
+ const regex = new RegExp(`^${regexPattern}$`);
329
+ return regex.test(value);
330
+ }
331
+
332
+ /**
333
+ * Match a span against all canvas nodes
334
+ *
335
+ * @param span OTEL span to match
336
+ * @param resource OTEL resource associated with the span
337
+ * @returns Match result with matched node IDs and metadata
338
+ */
339
+ public matchSpan(span: OtelSpanData, resource: OtelResourceData): SpanMatchResult {
340
+ const matchedNodeIds: string[] = [];
341
+ const resourceAttrs = flattenResourceAttributes(resource);
342
+
343
+ for (const rule of this.rules) {
344
+ // Check if all resource matchers pass
345
+ const resourceMatch = rule.resourceMatchers.every((matcher) =>
346
+ matcher(resourceAttrs)
347
+ );
348
+
349
+ // Check if span matchers pass
350
+ const spanMatch = rule.spanMatchers(span);
351
+
352
+ // Node matches if both resource AND span criteria match
353
+ if (resourceMatch && spanMatch) {
354
+ matchedNodeIds.push(rule.nodeId);
355
+ }
356
+ }
357
+
358
+ return {
359
+ matchedNodeIds,
360
+ timestamp: parseNanoTime(span.startTimeUnixNano),
361
+ duration: getSpanDuration(span),
362
+ };
363
+ }
364
+
365
+ /**
366
+ * Get statistics about the compiled rules
367
+ *
368
+ * Useful for debugging and performance analysis.
369
+ */
370
+ public getStats(): {
371
+ totalRules: number;
372
+ rulesWithResourceMatch: number;
373
+ rulesWithSpanMatch: number;
374
+ } {
375
+ return {
376
+ totalRules: this.rules.length,
377
+ rulesWithResourceMatch: this.rules.filter((r) => r.resourceMatchers.length > 0).length,
378
+ rulesWithSpanMatch: this.rules.filter((r) => r.spanMatchers.length > 0).length,
379
+ };
380
+ }
381
+ }
package/src/node.ts ADDED
@@ -0,0 +1,316 @@
1
+ /**
2
+ * @principal-ai/subsystems-core/node
3
+ * Node.js-specific exports (require Node.js runtime)
4
+ *
5
+ * This entry point includes all functionality that depends on Node.js modules
6
+ * such as fs, path, glob, and other Node.js-only dependencies.
7
+ *
8
+ * The main entry point ('@principal-ai/subsystems-core') exports browser-safe
9
+ * functionality that works in any environment. Use this /node entry point when you
10
+ * need Node.js-specific utilities like buildFileTreeFromDirectory.
11
+ */
12
+
13
+ // Export all types (safe in all environments)
14
+ export * from './types';
15
+
16
+ // File-per-topic store (~/.principal/topics) — node:fs only. The browser-safe
17
+ // topic types it reads/writes are also re-exported here for node consumers.
18
+ export {
19
+ TopicStore,
20
+ PRINCIPAL_DIR,
21
+ TOPICS_DIR,
22
+ LEGACY_TOPICS_BLOB,
23
+ } from './storage/topicStore';
24
+ export type {
25
+ TopicIndexEntry,
26
+ TopicCreate,
27
+ TopicUpdate,
28
+ MigrationResult,
29
+ } from './storage/topicStore';
30
+ export { publishedFromDraft } from './storage/topic-types';
31
+ export type {
32
+ DraftTopic,
33
+ PublishedTopic,
34
+ PublishProjection,
35
+ TopicStatus,
36
+ TopicAsset,
37
+ TopicCreator,
38
+ } from './storage/topic-types';
39
+
40
+ // Export core classes (Node.js processing)
41
+ export { EventProcessor } from './EventProcessor';
42
+ export type { ProcessingResult } from './EventProcessor';
43
+
44
+ export { ValidationEngine } from './ValidationEngine';
45
+
46
+ export { ConfigurationValidator } from './ConfigurationValidator';
47
+ export type {
48
+ ConfigurationValidationError,
49
+ ConfigurationValidationResult,
50
+ } from './ConfigurationValidator';
51
+
52
+ // Export helpers
53
+ export { GraphInstrumentationHelper } from './helpers/GraphInstrumentationHelper';
54
+
55
+ // Export path-based processing (Milestone 1 & 2)
56
+ export { PathBasedEventProcessor } from './PathBasedEventProcessor';
57
+ export type { LogEntry } from './PathBasedEventProcessor';
58
+
59
+ // Export path utilities
60
+ export { PathMatcher } from './utils/PathMatcher';
61
+ export { GraphConverter } from './utils/GraphConverter';
62
+
63
+ // Export Canvas types and converter
64
+ export * from './types/canvas';
65
+ export { CanvasConverter } from './utils/CanvasConverter';
66
+ export type { ReactFlowNode, ReactFlowEdge } from './utils/CanvasConverter';
67
+
68
+ // Export telemetry event validation
69
+ export { EventValidator, createValidatedEmitter, EventValidationError } from './telemetry/event-validator';
70
+ export type { ValidationResult } from './telemetry/event-validator';
71
+
72
+ // Export telemetry coverage analysis (re-exported from main for convenience)
73
+ export { analyzeCoverage } from './telemetry/coverage';
74
+ export type {
75
+ CoverageMetrics,
76
+ FileInstrumentation,
77
+ PackageCoverageMetrics,
78
+ } from './telemetry/coverage';
79
+
80
+ // Export code generation (Node.js only - file system operations)
81
+ export { generateTypes, TypeScriptGenerator, generatorRegistry } from './codegen/type-generator';
82
+ export type { CodegenOptions, CodegenResult, CodeGenerator } from './codegen/type-generator';
83
+
84
+ // Export trace-to-canvas conversion
85
+ export { traceToCanvas, traceToCanvasJson } from './utils/TraceToCanvas';
86
+ export type {
87
+ TraceSpan,
88
+ TraceExport,
89
+ TraceToCanvasOptions,
90
+ TraceCanvasResult,
91
+ } from './utils/TraceToCanvas';
92
+
93
+ // Export session management (Event Recording System)
94
+ export { SessionManager } from './SessionManager';
95
+ export type {
96
+ SessionStatus,
97
+ SessionResult,
98
+ SessionMetadata,
99
+ EventSession,
100
+ CreateSessionOptions,
101
+ EndSessionOptions,
102
+ SessionChangeCallback,
103
+ SessionManagerConfig,
104
+ } from './SessionManager';
105
+
106
+ // Export event recorder service
107
+ export { EventRecorderService } from './EventRecorderService';
108
+ export type {
109
+ ProtocolMessageType,
110
+ ProtocolMessage,
111
+ SessionStartMessage,
112
+ SessionEndMessage,
113
+ LogMessage,
114
+ LogBatchMessage,
115
+ PingMessage,
116
+ PongMessage,
117
+ ErrorMessage,
118
+ AckMessage,
119
+ IncomingMessage,
120
+ OutgoingMessage,
121
+ RecordingMode,
122
+ EventCallback,
123
+ EventBatchCallback,
124
+ ConnectionState,
125
+ EventRecorderServiceConfig,
126
+ } from './EventRecorderService';
127
+
128
+ // Export configuration loading (Node.js only - file system)
129
+ export { ConfigurationLoader } from './ConfigurationLoader';
130
+ export type { ConfigurationFile, ConfigurationLoadResult } from './ConfigurationLoader';
131
+ export { parseYaml, isYamlFile, getConfigNameFromFilename } from './utils/YamlParser';
132
+ export type { YamlParseResult } from './utils/YamlParser';
133
+
134
+ // Export component library support (Node.js only - file system)
135
+ export { LibraryLoader } from './LibraryLoader';
136
+
137
+ // Export event registry (for cross-canvas event lookup)
138
+ export { EventRegistry } from './registry/EventRegistry';
139
+ export type { EventSource } from './registry/EventRegistry';
140
+
141
+ // Export opencode event retrieval (Node.js only - SQLite)
142
+ export { OpenCodeEventStore, defaultOpenCodeDBPath } from './opencode/OpenCodeEventStore';
143
+ export type { OpenCodeRawEvent, OpenCodeSessionEvents, OpenCodeEventRetriever, OpenCodeStoreOptions, SessionSummary, SessionListResult } from './opencode/types';
144
+
145
+ // Export shared, agent-agnostic session listing/fetch/normalization (Node.js only)
146
+ export { listAgentSessions, detectAgent, fetchRawEvents } from './opencode/agent-sessions';
147
+ export type { AgentSessionSummary, AgentSessionMeta, SupportedSessionAgent } from './opencode/agent-sessions';
148
+
149
+ // Export the frozen-fixture generator (Node.js only — runs git walk-up)
150
+ export { buildAgentSessionFixture } from './agent-sessions/fixture';
151
+ export type {
152
+ AgentSessionFixture,
153
+ AgentSessionFixtureMeta,
154
+ AgentSessionFixtureRepo,
155
+ AgentSessionFixtureSummary,
156
+ FixtureAgentSessionEvent,
157
+ FixtureHighlightLayer,
158
+ FixtureLayerItem,
159
+ } from './agent-sessions/fixture';
160
+
161
+ // Export the pure, runtime-agnostic session pipeline (no SQLite dependency)
162
+ export {
163
+ NodePathNormalizationAdapter,
164
+ normalizeEvents,
165
+ normalizeEventsWithAdapter,
166
+ accumulateEvents,
167
+ collectRepositories,
168
+ opencodeRowsToUniversalEvents,
169
+ } from './opencode/pipeline';
170
+ export type { OpenCodeEventRow } from './opencode/pipeline';
171
+
172
+ // Re-export FileSystemAdapter from repository-abstraction
173
+ export type { FileSystemAdapter } from '@principal-ai/repository-abstraction';
174
+ export { InMemoryFileSystemAdapter } from '@principal-ai/repository-abstraction';
175
+
176
+ // Export rules engine (Node.js only - OpenTelemetry dependencies)
177
+ export * from './rules';
178
+
179
+ // Export workflow template system (full system including Node.js validator)
180
+ export {
181
+ renderWorkflow,
182
+ parseTemplate,
183
+ ParsedTemplate,
184
+ selectScenario,
185
+ getRequiredEvents,
186
+ hasEventMatching,
187
+ computeAggregates,
188
+ getNestedValue,
189
+ setNestedValue,
190
+ createWorkflowValidator,
191
+ WorkflowValidator,
192
+ } from './workflow';
193
+ export type {
194
+ TemplateSegment,
195
+ WorkflowTemplate,
196
+ WorkflowScenario,
197
+ ScenarioTemplate,
198
+ LogTemplates,
199
+ FormattingOptions,
200
+ OtelEvent,
201
+ OtelSignal,
202
+ WorkflowContext,
203
+ WorkflowResult,
204
+ ScenarioMatchResult,
205
+ SpanTreeNode,
206
+ WorkflowValidationContext,
207
+ WorkflowViolation,
208
+ WorkflowValidationResult,
209
+ } from './workflow';
210
+
211
+ // Export canvas, workflow, and test trace discovery
212
+ export { CanvasDiscovery } from './discovery/CanvasDiscovery';
213
+ export type {
214
+ DiscoveredCanvas,
215
+ DiscoveredTestTrace,
216
+ CanvasDiscoveryResult,
217
+ DiscoveryOptions,
218
+ CanvasType,
219
+ TestTraceType,
220
+ DiscoveredCanvasWithContent,
221
+ DiscoveredTestTraceWithContent,
222
+ CanvasDiscoveryResultWithContent,
223
+ } from './discovery/types';
224
+
225
+ // Export library discovery
226
+ export { LibraryDiscovery } from './discovery/LibraryDiscovery';
227
+ export type {
228
+ DiscoveredLibrary,
229
+ LibraryDiscoveryResult,
230
+ LibraryValidationError,
231
+ LibraryValidationErrorType,
232
+ } from './discovery/LibraryDiscovery';
233
+
234
+ // Export execution validation
235
+ export { ExecutionValidator, createExecutionValidator } from './execution/ExecutionValidator';
236
+ export type {
237
+ ExecutionData,
238
+ ValidationError,
239
+ ExecutionValidationResult,
240
+ } from './execution/ExecutionValidator';
241
+
242
+ // Export dashboard validation
243
+ export { DashboardValidator, createDashboardValidator } from './dashboard';
244
+ export type {
245
+ DashboardValidationError,
246
+ DashboardValidationResult,
247
+ DashboardValidationContext,
248
+ } from './dashboard';
249
+
250
+ // Export execution loading (Node.js only - file system)
251
+ export { ExecutionLoader, createExecutionLoader } from './execution/ExecutionLoader';
252
+ export type {
253
+ ExecutionFile,
254
+ ExecutionLoadResult,
255
+ } from './execution/ExecutionLoader';
256
+
257
+ // Export scopes module (canvas validation + scope utilities)
258
+ export {
259
+ ScopesCanvasValidator,
260
+ ScopePathIndex,
261
+ validateScopeNamespaceNesting,
262
+ DEFAULT_SCOPE_COLOR,
263
+ DRAFT_NODE_COLOR,
264
+ getScopeNames,
265
+ getScopeDefinition,
266
+ getScopeColor,
267
+ normalizeScopes,
268
+ buildScopeColorMap,
269
+ getAllScopeNames,
270
+ } from './scopes';
271
+ export type {
272
+ ScopesCanvasValidationContext,
273
+ ScopesCanvasValidationResult,
274
+ ScopesCanvasViolation,
275
+ ScopePathEntry,
276
+ ScopePathMatch,
277
+ ScopeEventsCanvasPair,
278
+ ValidateScopeNamespaceNestingInput,
279
+ NormalizedScope,
280
+ } from './scopes';
281
+
282
+ // Export auxiliary module (manifest validation for non-OTEL project regions)
283
+ export {
284
+ AuxiliaryManifestValidator,
285
+ validateAreaScopeDisjoint,
286
+ } from './auxiliary';
287
+ export type {
288
+ AuxiliaryManifestValidationContext,
289
+ AuxiliaryManifestValidationResult,
290
+ AuxiliaryManifestViolation,
291
+ ValidateAreaScopeDisjointInput,
292
+ } from './auxiliary';
293
+
294
+ // Export events module (canvas validation)
295
+ export {
296
+ EventsCanvasValidator,
297
+ ScopeEventsValidator,
298
+ NamespacePathIndex,
299
+ OtelEventPathsValidator,
300
+ } from './events';
301
+ export type {
302
+ EventsCanvasValidationContext,
303
+ EventsCanvasValidationResult,
304
+ EventsCanvasViolation,
305
+ ScopeEventsValidationContext,
306
+ ScopeEventsValidationResult,
307
+ ScopeEventsViolation,
308
+ NamespacePathEntry,
309
+ NamespacePathMatch,
310
+ EventsCanvasInput,
311
+ OtelCanvasInput,
312
+ OtelEventPathsValidationContext,
313
+ OtelEventPathsValidationResult,
314
+ OtelEventPathsViolation,
315
+ OtelEventPathsRuleId,
316
+ } from './events';