@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,283 @@
1
+ /**
2
+ * Component Library Types
3
+ *
4
+ * Defines the structure for component libraries (.yaml/.json files)
5
+ * that contain reusable node and edge type definitions.
6
+ *
7
+ * Libraries are separate from canvas files:
8
+ * - Canvas files (.canvas) = actual graph layouts that get rendered
9
+ * - Library files (.yaml/.json) = collections of reusable type definitions
10
+ *
11
+ * When a user adds a component from the library to a canvas,
12
+ * the type definition gets embedded into the node's `pv` field.
13
+ */
14
+
15
+ import type {
16
+ PVNodeShape,
17
+ PVEdgeStyle,
18
+ PVAnimationType,
19
+ // PVActionPattern removed - see docs/LEGACY_PATH_BASED_PATTERNS.md
20
+ PVNodeState,
21
+ PVEventSchema,
22
+ } from './canvas';
23
+
24
+ // ============================================================================
25
+ // Resource Types
26
+ // ============================================================================
27
+
28
+ /**
29
+ * Definition for an instrumentation scope
30
+ *
31
+ * Describes a scope with its color and optional metadata.
32
+ * Used for consistent visual representation across canvases.
33
+ *
34
+ * @deprecated Scope visual metadata is now defined in .scopes.canvas files using OtelScopeNode type.
35
+ * This type is kept for backward compatibility during migration but will be removed in a future version.
36
+ * Use .scopes.canvas files instead of the top-level scopes section in library.yaml.
37
+ */
38
+ export interface ScopeDefinition {
39
+ /** Color for nodes belonging to this scope (hex format). Required unless external. */
40
+ color?: string;
41
+
42
+ /** Icon identifier (Lucide icons) */
43
+ icon?: string;
44
+
45
+ /** Human-readable description of what this scope covers */
46
+ description?: string;
47
+
48
+ /**
49
+ * Mark this scope as external - defined in another library/package.
50
+ * External scopes don't require color (they inherit from the defining library).
51
+ */
52
+ external?: boolean;
53
+ }
54
+
55
+ /**
56
+ * Owned scopes: array of scope names that reference top-level scopes
57
+ *
58
+ * Scope definitions are declared in the top-level `scopes` section of library.yaml.
59
+ * Resources reference those scopes by name.
60
+ */
61
+ export type OwnedScopes = string[];
62
+
63
+ /**
64
+ * OTEL resource attributes for a service/component
65
+ *
66
+ * Represents the actual resource attribute values (not match patterns).
67
+ * These are the attributes that would be set when instrumenting the service.
68
+ *
69
+ * @see https://opentelemetry.io/docs/specs/semconv/resource/
70
+ */
71
+ export interface ResourceAttributes {
72
+ /** Service identification (required) */
73
+ 'service.name': string;
74
+
75
+ /** Service version (recommended) */
76
+ 'service.version'?: string;
77
+
78
+ /** Service namespace (optional) */
79
+ 'service.namespace'?: string;
80
+
81
+ /** Service instance ID (optional) */
82
+ 'service.instance.id'?: string;
83
+
84
+ /** Deployment environment (recommended) */
85
+ 'deployment.environment'?: string;
86
+
87
+ /** Kubernetes namespace */
88
+ 'k8s.namespace.name'?: string;
89
+
90
+ /** Kubernetes deployment name */
91
+ 'k8s.deployment.name'?: string;
92
+
93
+ /** Kubernetes pod name */
94
+ 'k8s.pod.name'?: string;
95
+
96
+ /** Kubernetes container name */
97
+ 'k8s.container.name'?: string;
98
+
99
+ /** Kubernetes node name */
100
+ 'k8s.node.name'?: string;
101
+
102
+ /** Database system */
103
+ 'db.system'?: string;
104
+
105
+ /** Database name */
106
+ 'db.name'?: string;
107
+
108
+ /** Host name */
109
+ 'host.name'?: string;
110
+
111
+ /** Host ID */
112
+ 'host.id'?: string;
113
+
114
+ /** Cloud provider */
115
+ 'cloud.provider'?: string;
116
+
117
+ /** Cloud region */
118
+ 'cloud.region'?: string;
119
+
120
+ /** Messaging system */
121
+ 'messaging.system'?: string;
122
+
123
+ /** Messaging destination name */
124
+ 'messaging.destination.name'?: string;
125
+
126
+ /**
127
+ * Instrumentation scopes owned by this service
128
+ *
129
+ * Lists the tracer/instrumentation scope names that belong to this service.
130
+ * Spans from these scopes will be matched against this service's storyboards
131
+ * rather than looking up external registries.
132
+ *
133
+ * Scope names must reference scopes defined in the top-level `scopes` section.
134
+ *
135
+ * @example
136
+ * ```yaml
137
+ * scopes:
138
+ * auth-flow:
139
+ * color: "#DC2626"
140
+ * description: "Authentication flow instrumentation"
141
+ *
142
+ * resources:
143
+ * auth-service:
144
+ * service.name: "auth-service"
145
+ * owned-scopes:
146
+ * - "auth-flow"
147
+ * ```
148
+ */
149
+ 'owned-scopes'?: OwnedScopes;
150
+
151
+ /** Allow arbitrary OTEL resource attributes */
152
+ [key: string]: string | string[] | undefined;
153
+ }
154
+
155
+
156
+ // ============================================================================
157
+ // Component Library Root Type
158
+ // ============================================================================
159
+
160
+ /**
161
+ * Root type for a component library file (.yaml or .json).
162
+ *
163
+ * Example library.yaml:
164
+ * ```yaml
165
+ * version: "1.0.0"
166
+ * name: "My Service"
167
+ * description: "OTEL instrumentation configuration"
168
+ *
169
+ * resources:
170
+ * auth-service:
171
+ * service.name: "auth-service"
172
+ * service.version: "1.0.0"
173
+ * deployment.environment: "production"
174
+ * owned-scopes:
175
+ * - "auth-flow"
176
+ *
177
+ * eventSchemas:
178
+ * user.login.success:
179
+ * description: "User successfully logged in"
180
+ * attributes:
181
+ * user.id:
182
+ * type: string
183
+ * required: true
184
+ * session.id:
185
+ * type: string
186
+ * required: true
187
+ * ```
188
+ *
189
+ * Note: Scope visual metadata (colors, icons) are now defined in .scopes.canvas files.
190
+ * The `owned-scopes` field in resources is used for telemetry routing only.
191
+ */
192
+ export interface ComponentLibrary {
193
+ /** Library schema version */
194
+ version: string;
195
+
196
+ /** Library name */
197
+ name: string;
198
+
199
+ /** Library description */
200
+ description?: string;
201
+
202
+ /**
203
+ * Service resource registry
204
+ *
205
+ * Defines the services in this package and their expected OTEL resource attributes.
206
+ * Each service configures its own resources at runtime (via env vars or SDK),
207
+ * but declaring them here provides:
208
+ * - Service documentation/registry
209
+ * - Expected resource schema for validation
210
+ * - Dev instrumentation defaults
211
+ * - Canvas node generation
212
+ *
213
+ * The key is a service identifier (used for reference), and the value contains
214
+ * the OTEL resource attributes for that service.
215
+ *
216
+ * @example
217
+ * ```yaml
218
+ * resources:
219
+ * payment-api:
220
+ * service.name: "payment-api"
221
+ * service.version: "1.0.0"
222
+ * deployment.environment: "development"
223
+ *
224
+ * payment-worker:
225
+ * service.name: "payment-worker"
226
+ * service.version: "1.0.0"
227
+ * deployment.environment: "development"
228
+ * ```
229
+ */
230
+ resources?: Record<string, ResourceAttributes>;
231
+
232
+ /**
233
+ * Reusable event schema definitions
234
+ *
235
+ * Defines event schemas that can be referenced by canvas nodes via `pv.eventRef`.
236
+ * This promotes reusability and consistency across canvases.
237
+ *
238
+ * @example
239
+ * ```yaml
240
+ * eventSchemas:
241
+ * auth.callback.started:
242
+ * description: "Authentication callback initiated"
243
+ * attributes:
244
+ * session.id:
245
+ * type: string
246
+ * required: true
247
+ * description: "Session identifier"
248
+ * ```
249
+ */
250
+ eventSchemas?: Record<string, Omit<PVEventSchema, 'name'>>;
251
+ }
252
+
253
+ // ============================================================================
254
+ // Utility Types
255
+ // ============================================================================
256
+
257
+ /**
258
+ * Result of loading a component library
259
+ */
260
+ export interface LibraryLoadResult {
261
+ /** Whether the library was loaded successfully */
262
+ success: boolean;
263
+
264
+ /** The loaded library (if successful) */
265
+ library?: ComponentLibrary;
266
+
267
+ /** Error message (if failed) */
268
+ error?: string;
269
+
270
+ /** Path the library was loaded from */
271
+ path: string;
272
+ }
273
+
274
+ /**
275
+ * Options for the library loader
276
+ */
277
+ export interface LibraryLoaderOptions {
278
+ /** Base directory to search for library files */
279
+ baseDir?: string;
280
+
281
+ /** Custom library file name (default: "library.yaml" or "library.json") */
282
+ fileName?: string;
283
+ }
@@ -0,0 +1,219 @@
1
+ import { describe, it, expect } from 'bun:test';
2
+ import {
3
+ getAttributeStringValue,
4
+ findAttribute,
5
+ getAttributeValue,
6
+ flattenResourceAttributes,
7
+ parseNanoTime,
8
+ getSpanDuration,
9
+ isErrorSeverity,
10
+ isWarnSeverity,
11
+ type OtelAnyValue,
12
+ type OtelKeyValue,
13
+ type OtelResourceData,
14
+ type OtelSpanData,
15
+ } from './otel';
16
+
17
+ describe('OTEL Helper Functions', () => {
18
+ describe('getAttributeStringValue', () => {
19
+ it('should extract string value', () => {
20
+ const value: OtelAnyValue = { stringValue: 'test' };
21
+ expect(getAttributeStringValue(value)).toBe('test');
22
+ });
23
+
24
+ it('should return undefined for non-string values', () => {
25
+ expect(getAttributeStringValue({ intValue: 123 })).toBeUndefined();
26
+ expect(getAttributeStringValue({ boolValue: true })).toBeUndefined();
27
+ expect(getAttributeStringValue({})).toBeUndefined();
28
+ });
29
+ });
30
+
31
+ describe('findAttribute', () => {
32
+ const attributes: OtelKeyValue[] = [
33
+ { key: 'service.name', value: { stringValue: 'test-service' } },
34
+ { key: 'http.status_code', value: { intValue: 200 } },
35
+ { key: 'error', value: { boolValue: false } },
36
+ ];
37
+
38
+ it('should find attribute by key', () => {
39
+ const attr = findAttribute(attributes, 'service.name');
40
+ expect(attr).toBeDefined();
41
+ expect(attr?.key).toBe('service.name');
42
+ expect(attr?.value.stringValue).toBe('test-service');
43
+ });
44
+
45
+ it('should return undefined for missing key', () => {
46
+ expect(findAttribute(attributes, 'missing.key')).toBeUndefined();
47
+ });
48
+
49
+ it('should handle undefined attributes array', () => {
50
+ expect(findAttribute(undefined, 'any.key')).toBeUndefined();
51
+ });
52
+ });
53
+
54
+ describe('getAttributeValue', () => {
55
+ const attributes: OtelKeyValue[] = [
56
+ { key: 'http.method', value: { stringValue: 'GET' } },
57
+ { key: 'http.status_code', value: { intValue: 200 } },
58
+ { key: 'response.time', value: { doubleValue: 123.45 } },
59
+ { key: 'success', value: { boolValue: true } },
60
+ ];
61
+
62
+ it('should get string values', () => {
63
+ expect(getAttributeValue(attributes, 'http.method')).toBe('GET');
64
+ });
65
+
66
+ it('should get integer values', () => {
67
+ expect(getAttributeValue(attributes, 'http.status_code')).toBe(200);
68
+ });
69
+
70
+ it('should get double values', () => {
71
+ expect(getAttributeValue(attributes, 'response.time')).toBe(123.45);
72
+ });
73
+
74
+ it('should get boolean values', () => {
75
+ expect(getAttributeValue(attributes, 'success')).toBe(true);
76
+ });
77
+
78
+ it('should return undefined for missing keys', () => {
79
+ expect(getAttributeValue(attributes, 'missing')).toBeUndefined();
80
+ });
81
+
82
+ it('should handle undefined attributes array', () => {
83
+ expect(getAttributeValue(undefined, 'any.key')).toBeUndefined();
84
+ });
85
+ });
86
+
87
+ describe('flattenResourceAttributes', () => {
88
+ it('should flatten resource attributes to string map', () => {
89
+ const resource: OtelResourceData = {
90
+ attributes: [
91
+ { key: 'service.name', value: { stringValue: 'checkout-api' } },
92
+ { key: 'deployment.environment', value: { stringValue: 'production' } },
93
+ { key: 'service.version', value: { stringValue: '1.2.3' } },
94
+ ],
95
+ };
96
+
97
+ const flattened = flattenResourceAttributes(resource);
98
+
99
+ expect(flattened).toEqual({
100
+ 'service.name': 'checkout-api',
101
+ 'deployment.environment': 'production',
102
+ 'service.version': '1.2.3',
103
+ });
104
+ });
105
+
106
+ it('should skip non-string attributes', () => {
107
+ const resource: OtelResourceData = {
108
+ attributes: [
109
+ { key: 'service.name', value: { stringValue: 'api' } },
110
+ { key: 'port', value: { intValue: 8080 } },
111
+ { key: 'enabled', value: { boolValue: true } },
112
+ ],
113
+ };
114
+
115
+ const flattened = flattenResourceAttributes(resource);
116
+
117
+ expect(flattened).toEqual({
118
+ 'service.name': 'api',
119
+ });
120
+ });
121
+
122
+ it('should handle empty attributes', () => {
123
+ const resource: OtelResourceData = { attributes: [] };
124
+ expect(flattenResourceAttributes(resource)).toEqual({});
125
+ });
126
+ });
127
+
128
+ describe('parseNanoTime', () => {
129
+ it('should convert nanoseconds to milliseconds (string input)', () => {
130
+ expect(parseNanoTime('1737835200000000000')).toBe(1737835200000);
131
+ expect(parseNanoTime('1000000000')).toBe(1000);
132
+ });
133
+
134
+ it('should convert nanoseconds to milliseconds (number input)', () => {
135
+ expect(parseNanoTime(1737835200000000000)).toBe(1737835200000);
136
+ expect(parseNanoTime(1000000000)).toBe(1000);
137
+ });
138
+
139
+ it('should handle zero', () => {
140
+ expect(parseNanoTime('0')).toBe(0);
141
+ expect(parseNanoTime(0)).toBe(0);
142
+ });
143
+ });
144
+
145
+ describe('getSpanDuration', () => {
146
+ it('should calculate span duration in milliseconds', () => {
147
+ const span: OtelSpanData = {
148
+ traceId: 'abc123',
149
+ spanId: 'span1',
150
+ name: 'test',
151
+ kind: 2,
152
+ startTimeUnixNano: '1737835200000000000',
153
+ endTimeUnixNano: '1737835200150000000', // 150ms later
154
+ attributes: [],
155
+ events: [],
156
+ status: { code: 1 },
157
+ };
158
+
159
+ expect(getSpanDuration(span)).toBeCloseTo(150, 0);
160
+ });
161
+
162
+ it('should handle zero duration', () => {
163
+ const span: OtelSpanData = {
164
+ traceId: 'abc123',
165
+ spanId: 'span1',
166
+ name: 'test',
167
+ kind: 2,
168
+ startTimeUnixNano: '1737835200000000000',
169
+ endTimeUnixNano: '1737835200000000000',
170
+ attributes: [],
171
+ events: [],
172
+ status: { code: 1 },
173
+ };
174
+
175
+ expect(getSpanDuration(span)).toBe(0);
176
+ });
177
+ });
178
+
179
+ describe('isErrorSeverity', () => {
180
+ it('should detect ERROR severity text', () => {
181
+ expect(isErrorSeverity('ERROR')).toBe(true);
182
+ expect(isErrorSeverity('FATAL')).toBe(true);
183
+ });
184
+
185
+ it('should detect ERROR severity numbers', () => {
186
+ expect(isErrorSeverity(17)).toBe(true);
187
+ expect(isErrorSeverity(20)).toBe(true);
188
+ expect(isErrorSeverity(24)).toBe(true);
189
+ });
190
+
191
+ it('should not detect non-error severities', () => {
192
+ expect(isErrorSeverity('INFO')).toBe(false);
193
+ expect(isErrorSeverity('WARN')).toBe(false);
194
+ expect(isErrorSeverity('DEBUG')).toBe(false);
195
+ expect(isErrorSeverity(12)).toBe(false);
196
+ expect(isErrorSeverity(undefined)).toBe(false);
197
+ });
198
+ });
199
+
200
+ describe('isWarnSeverity', () => {
201
+ it('should detect WARN severity text', () => {
202
+ expect(isWarnSeverity('WARN')).toBe(true);
203
+ });
204
+
205
+ it('should detect WARN severity numbers', () => {
206
+ expect(isWarnSeverity(13)).toBe(true);
207
+ expect(isWarnSeverity(14)).toBe(true);
208
+ expect(isWarnSeverity(16)).toBe(true);
209
+ });
210
+
211
+ it('should not detect non-warn severities', () => {
212
+ expect(isWarnSeverity('INFO')).toBe(false);
213
+ expect(isWarnSeverity('ERROR')).toBe(false);
214
+ expect(isWarnSeverity(12)).toBe(false);
215
+ expect(isWarnSeverity(17)).toBe(false);
216
+ expect(isWarnSeverity(undefined)).toBe(false);
217
+ });
218
+ });
219
+ });