@principal-ai/principal-view-core 0.5.6

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 (204) hide show
  1. package/README.md +126 -0
  2. package/dist/ConfigurationLoader.d.ts +76 -0
  3. package/dist/ConfigurationLoader.d.ts.map +1 -0
  4. package/dist/ConfigurationLoader.js +144 -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 +242 -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 +215 -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 +463 -0
  17. package/dist/EventRecorderService.js.map +1 -0
  18. package/dist/LibraryLoader.d.ts +63 -0
  19. package/dist/LibraryLoader.d.ts.map +1 -0
  20. package/dist/LibraryLoader.js +188 -0
  21. package/dist/LibraryLoader.js.map +1 -0
  22. package/dist/PathBasedEventProcessor.d.ts +90 -0
  23. package/dist/PathBasedEventProcessor.d.ts.map +1 -0
  24. package/dist/PathBasedEventProcessor.js +239 -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 +299 -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 +158 -0
  33. package/dist/ValidationEngine.js.map +1 -0
  34. package/dist/helpers/GraphInstrumentationHelper.d.ts +93 -0
  35. package/dist/helpers/GraphInstrumentationHelper.d.ts.map +1 -0
  36. package/dist/helpers/GraphInstrumentationHelper.js +248 -0
  37. package/dist/helpers/GraphInstrumentationHelper.js.map +1 -0
  38. package/dist/index.d.ts +33 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +34 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/rules/config.d.ts +57 -0
  43. package/dist/rules/config.d.ts.map +1 -0
  44. package/dist/rules/config.js +382 -0
  45. package/dist/rules/config.js.map +1 -0
  46. package/dist/rules/engine.d.ts +70 -0
  47. package/dist/rules/engine.d.ts.map +1 -0
  48. package/dist/rules/engine.js +252 -0
  49. package/dist/rules/engine.js.map +1 -0
  50. package/dist/rules/implementations/connection-type-references.d.ts +7 -0
  51. package/dist/rules/implementations/connection-type-references.d.ts.map +1 -0
  52. package/dist/rules/implementations/connection-type-references.js +104 -0
  53. package/dist/rules/implementations/connection-type-references.js.map +1 -0
  54. package/dist/rules/implementations/dead-end-states.d.ts +17 -0
  55. package/dist/rules/implementations/dead-end-states.d.ts.map +1 -0
  56. package/dist/rules/implementations/dead-end-states.js +72 -0
  57. package/dist/rules/implementations/dead-end-states.js.map +1 -0
  58. package/dist/rules/implementations/index.d.ts +24 -0
  59. package/dist/rules/implementations/index.d.ts.map +1 -0
  60. package/dist/rules/implementations/index.js +62 -0
  61. package/dist/rules/implementations/index.js.map +1 -0
  62. package/dist/rules/implementations/library-node-type-match.d.ts +17 -0
  63. package/dist/rules/implementations/library-node-type-match.d.ts.map +1 -0
  64. package/dist/rules/implementations/library-node-type-match.js +123 -0
  65. package/dist/rules/implementations/library-node-type-match.js.map +1 -0
  66. package/dist/rules/implementations/minimum-node-sources.d.ts +22 -0
  67. package/dist/rules/implementations/minimum-node-sources.d.ts.map +1 -0
  68. package/dist/rules/implementations/minimum-node-sources.js +54 -0
  69. package/dist/rules/implementations/minimum-node-sources.js.map +1 -0
  70. package/dist/rules/implementations/no-unknown-fields.d.ts +7 -0
  71. package/dist/rules/implementations/no-unknown-fields.d.ts.map +1 -0
  72. package/dist/rules/implementations/no-unknown-fields.js +211 -0
  73. package/dist/rules/implementations/no-unknown-fields.js.map +1 -0
  74. package/dist/rules/implementations/orphaned-edge-types.d.ts +7 -0
  75. package/dist/rules/implementations/orphaned-edge-types.d.ts.map +1 -0
  76. package/dist/rules/implementations/orphaned-edge-types.js +47 -0
  77. package/dist/rules/implementations/orphaned-edge-types.js.map +1 -0
  78. package/dist/rules/implementations/orphaned-node-types.d.ts +7 -0
  79. package/dist/rules/implementations/orphaned-node-types.d.ts.map +1 -0
  80. package/dist/rules/implementations/orphaned-node-types.js +50 -0
  81. package/dist/rules/implementations/orphaned-node-types.js.map +1 -0
  82. package/dist/rules/implementations/required-metadata.d.ts +7 -0
  83. package/dist/rules/implementations/required-metadata.d.ts.map +1 -0
  84. package/dist/rules/implementations/required-metadata.js +57 -0
  85. package/dist/rules/implementations/required-metadata.js.map +1 -0
  86. package/dist/rules/implementations/state-transition-references.d.ts +7 -0
  87. package/dist/rules/implementations/state-transition-references.d.ts.map +1 -0
  88. package/dist/rules/implementations/state-transition-references.js +135 -0
  89. package/dist/rules/implementations/state-transition-references.js.map +1 -0
  90. package/dist/rules/implementations/unreachable-states.d.ts +7 -0
  91. package/dist/rules/implementations/unreachable-states.d.ts.map +1 -0
  92. package/dist/rules/implementations/unreachable-states.js +80 -0
  93. package/dist/rules/implementations/unreachable-states.js.map +1 -0
  94. package/dist/rules/implementations/valid-action-patterns.d.ts +17 -0
  95. package/dist/rules/implementations/valid-action-patterns.d.ts.map +1 -0
  96. package/dist/rules/implementations/valid-action-patterns.js +109 -0
  97. package/dist/rules/implementations/valid-action-patterns.js.map +1 -0
  98. package/dist/rules/implementations/valid-color-format.d.ts +7 -0
  99. package/dist/rules/implementations/valid-color-format.d.ts.map +1 -0
  100. package/dist/rules/implementations/valid-color-format.js +91 -0
  101. package/dist/rules/implementations/valid-color-format.js.map +1 -0
  102. package/dist/rules/implementations/valid-edge-types.d.ts +7 -0
  103. package/dist/rules/implementations/valid-edge-types.d.ts.map +1 -0
  104. package/dist/rules/implementations/valid-edge-types.js +244 -0
  105. package/dist/rules/implementations/valid-edge-types.js.map +1 -0
  106. package/dist/rules/implementations/valid-node-types.d.ts +7 -0
  107. package/dist/rules/implementations/valid-node-types.d.ts.map +1 -0
  108. package/dist/rules/implementations/valid-node-types.js +175 -0
  109. package/dist/rules/implementations/valid-node-types.js.map +1 -0
  110. package/dist/rules/index.d.ts +28 -0
  111. package/dist/rules/index.d.ts.map +1 -0
  112. package/dist/rules/index.js +45 -0
  113. package/dist/rules/index.js.map +1 -0
  114. package/dist/rules/types.d.ts +309 -0
  115. package/dist/rules/types.d.ts.map +1 -0
  116. package/dist/rules/types.js +35 -0
  117. package/dist/rules/types.js.map +1 -0
  118. package/dist/types/canvas.d.ts +409 -0
  119. package/dist/types/canvas.d.ts.map +1 -0
  120. package/dist/types/canvas.js +70 -0
  121. package/dist/types/canvas.js.map +1 -0
  122. package/dist/types/index.d.ts +311 -0
  123. package/dist/types/index.d.ts.map +1 -0
  124. package/dist/types/index.js +13 -0
  125. package/dist/types/index.js.map +1 -0
  126. package/dist/types/library.d.ts +185 -0
  127. package/dist/types/library.d.ts.map +1 -0
  128. package/dist/types/library.js +15 -0
  129. package/dist/types/library.js.map +1 -0
  130. package/dist/types/path-based-config.d.ts +230 -0
  131. package/dist/types/path-based-config.d.ts.map +1 -0
  132. package/dist/types/path-based-config.js +9 -0
  133. package/dist/types/path-based-config.js.map +1 -0
  134. package/dist/utils/CanvasConverter.d.ts +118 -0
  135. package/dist/utils/CanvasConverter.d.ts.map +1 -0
  136. package/dist/utils/CanvasConverter.js +315 -0
  137. package/dist/utils/CanvasConverter.js.map +1 -0
  138. package/dist/utils/GraphConverter.d.ts +18 -0
  139. package/dist/utils/GraphConverter.d.ts.map +1 -0
  140. package/dist/utils/GraphConverter.js +61 -0
  141. package/dist/utils/GraphConverter.js.map +1 -0
  142. package/dist/utils/LibraryConverter.d.ts +113 -0
  143. package/dist/utils/LibraryConverter.d.ts.map +1 -0
  144. package/dist/utils/LibraryConverter.js +166 -0
  145. package/dist/utils/LibraryConverter.js.map +1 -0
  146. package/dist/utils/PathMatcher.d.ts +55 -0
  147. package/dist/utils/PathMatcher.d.ts.map +1 -0
  148. package/dist/utils/PathMatcher.js +172 -0
  149. package/dist/utils/PathMatcher.js.map +1 -0
  150. package/dist/utils/YamlParser.d.ts +36 -0
  151. package/dist/utils/YamlParser.d.ts.map +1 -0
  152. package/dist/utils/YamlParser.js +63 -0
  153. package/dist/utils/YamlParser.js.map +1 -0
  154. package/package.json +47 -0
  155. package/src/ConfigurationLoader.test.ts +490 -0
  156. package/src/ConfigurationLoader.ts +185 -0
  157. package/src/ConfigurationValidator.test.ts +200 -0
  158. package/src/ConfigurationValidator.ts +283 -0
  159. package/src/EventProcessor.test.ts +405 -0
  160. package/src/EventProcessor.ts +250 -0
  161. package/src/EventRecorderService.test.ts +541 -0
  162. package/src/EventRecorderService.ts +744 -0
  163. package/src/LibraryLoader.ts +215 -0
  164. package/src/PathBasedEventProcessor.test.ts +567 -0
  165. package/src/PathBasedEventProcessor.ts +332 -0
  166. package/src/SessionManager.test.ts +424 -0
  167. package/src/SessionManager.ts +470 -0
  168. package/src/ValidationEngine.test.ts +371 -0
  169. package/src/ValidationEngine.ts +196 -0
  170. package/src/helpers/GraphInstrumentationHelper.test.ts +340 -0
  171. package/src/helpers/GraphInstrumentationHelper.ts +326 -0
  172. package/src/index.ts +85 -0
  173. package/src/rules/config.test.ts +278 -0
  174. package/src/rules/config.ts +459 -0
  175. package/src/rules/engine.test.ts +332 -0
  176. package/src/rules/engine.ts +318 -0
  177. package/src/rules/implementations/connection-type-references.ts +117 -0
  178. package/src/rules/implementations/dead-end-states.ts +101 -0
  179. package/src/rules/implementations/index.ts +73 -0
  180. package/src/rules/implementations/library-node-type-match.ts +148 -0
  181. package/src/rules/implementations/minimum-node-sources.ts +82 -0
  182. package/src/rules/implementations/no-unknown-fields.ts +342 -0
  183. package/src/rules/implementations/orphaned-edge-types.ts +55 -0
  184. package/src/rules/implementations/orphaned-node-types.ts +58 -0
  185. package/src/rules/implementations/required-metadata.ts +64 -0
  186. package/src/rules/implementations/state-transition-references.ts +151 -0
  187. package/src/rules/implementations/unreachable-states.ts +94 -0
  188. package/src/rules/implementations/valid-action-patterns.ts +136 -0
  189. package/src/rules/implementations/valid-color-format.ts +140 -0
  190. package/src/rules/implementations/valid-edge-types.ts +258 -0
  191. package/src/rules/implementations/valid-node-types.ts +189 -0
  192. package/src/rules/index.ts +95 -0
  193. package/src/rules/types.ts +426 -0
  194. package/src/types/canvas.ts +496 -0
  195. package/src/types/index.ts +382 -0
  196. package/src/types/library.ts +233 -0
  197. package/src/types/path-based-config.ts +281 -0
  198. package/src/utils/CanvasConverter.ts +431 -0
  199. package/src/utils/GraphConverter.test.ts +195 -0
  200. package/src/utils/GraphConverter.ts +71 -0
  201. package/src/utils/LibraryConverter.ts +245 -0
  202. package/src/utils/PathMatcher.test.ts +148 -0
  203. package/src/utils/PathMatcher.ts +183 -0
  204. package/src/utils/YamlParser.ts +75 -0
@@ -0,0 +1,49 @@
1
+ import type { GraphEvent, GraphConfiguration, GraphState, ValidationResult } from './types';
2
+ export interface ProcessingResult {
3
+ success: boolean;
4
+ state: GraphState;
5
+ validation: ValidationResult;
6
+ error?: string;
7
+ }
8
+ /**
9
+ * EventProcessor handles the ingestion and processing of graph events
10
+ */
11
+ export declare class EventProcessor {
12
+ private state;
13
+ private validationEngine;
14
+ private eventHistory;
15
+ constructor(configuration: GraphConfiguration, options?: {
16
+ validateConfig?: boolean;
17
+ });
18
+ /**
19
+ * Process a single graph event
20
+ */
21
+ processEvent(event: GraphEvent): ProcessingResult;
22
+ /**
23
+ * Validate an event against configuration rules
24
+ */
25
+ validateEvent(event: GraphEvent): ValidationResult;
26
+ /**
27
+ * Get the current graph state
28
+ */
29
+ getGraphState(): GraphState;
30
+ /**
31
+ * Get event history
32
+ */
33
+ getEventHistory(): GraphEvent[];
34
+ /**
35
+ * Reset processor state
36
+ */
37
+ reset(): void;
38
+ /**
39
+ * Apply event to internal state
40
+ */
41
+ private applyEvent;
42
+ private handleNodeEvent;
43
+ private handleEdgeEvent;
44
+ private handleStateEvent;
45
+ private handleDataEvent;
46
+ private handleSystemEvent;
47
+ private getEmptyMetrics;
48
+ }
49
+ //# sourceMappingURL=EventProcessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventProcessor.d.ts","sourceRoot":"","sources":["../src/EventProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAGjB,MAAM,SAAS,CAAC;AAIjB,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAAoB;gBAE5B,aAAa,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE;IAcrF;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB;IA+BjD;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB;IAIlD;;OAEG;IACH,aAAa,IAAI,UAAU;IAI3B;;OAEG;IACH,eAAe,IAAI,UAAU,EAAE;IAI/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,eAAe;IAmCvB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,eAAe;CAUxB"}
@@ -0,0 +1,215 @@
1
+ import { ValidationEngine } from './ValidationEngine';
2
+ import { ConfigurationValidator } from './ConfigurationValidator';
3
+ /**
4
+ * EventProcessor handles the ingestion and processing of graph events
5
+ */
6
+ export class EventProcessor {
7
+ constructor(configuration, options) {
8
+ this.eventHistory = [];
9
+ // Validate configuration by default (can be disabled for performance)
10
+ if (options?.validateConfig !== false) {
11
+ ConfigurationValidator.validateOrThrow(configuration);
12
+ }
13
+ this.state = {
14
+ nodes: new Map(),
15
+ edges: new Map(),
16
+ configuration,
17
+ };
18
+ this.validationEngine = new ValidationEngine(configuration.validation || {});
19
+ }
20
+ /**
21
+ * Process a single graph event
22
+ */
23
+ processEvent(event) {
24
+ try {
25
+ // Validate event first
26
+ const validation = this.validateEvent(event);
27
+ // Apply the event to state
28
+ this.applyEvent(event);
29
+ // Store in history
30
+ this.eventHistory.push(event);
31
+ return {
32
+ success: true,
33
+ state: this.state,
34
+ validation,
35
+ };
36
+ }
37
+ catch (error) {
38
+ return {
39
+ success: false,
40
+ state: this.state,
41
+ validation: {
42
+ valid: false,
43
+ violations: [],
44
+ warnings: [],
45
+ metrics: this.getEmptyMetrics(),
46
+ },
47
+ error: error instanceof Error ? error.message : 'Unknown error',
48
+ };
49
+ }
50
+ }
51
+ /**
52
+ * Validate an event against configuration rules
53
+ */
54
+ validateEvent(event) {
55
+ return this.validationEngine.validate(event, this.state);
56
+ }
57
+ /**
58
+ * Get the current graph state
59
+ */
60
+ getGraphState() {
61
+ return this.state;
62
+ }
63
+ /**
64
+ * Get event history
65
+ */
66
+ getEventHistory() {
67
+ return [...this.eventHistory];
68
+ }
69
+ /**
70
+ * Reset processor state
71
+ */
72
+ reset() {
73
+ this.state.nodes.clear();
74
+ this.state.edges.clear();
75
+ this.eventHistory = [];
76
+ }
77
+ /**
78
+ * Apply event to internal state
79
+ */
80
+ applyEvent(event) {
81
+ const timestamp = event.timestamp;
82
+ switch (event.category) {
83
+ case 'node':
84
+ this.handleNodeEvent(event, timestamp);
85
+ break;
86
+ case 'edge':
87
+ this.handleEdgeEvent(event, timestamp);
88
+ break;
89
+ case 'state':
90
+ this.handleStateEvent(event, timestamp);
91
+ break;
92
+ case 'data':
93
+ this.handleDataEvent(event);
94
+ break;
95
+ case 'system':
96
+ this.handleSystemEvent(event);
97
+ break;
98
+ }
99
+ }
100
+ handleNodeEvent(event, timestamp) {
101
+ const payload = event.payload;
102
+ switch (payload.operation) {
103
+ case 'create':
104
+ this.state.nodes.set(payload.nodeId, {
105
+ id: payload.nodeId,
106
+ type: payload.nodeType,
107
+ data: payload.data || {},
108
+ position: payload.position,
109
+ createdAt: timestamp,
110
+ updatedAt: timestamp,
111
+ });
112
+ break;
113
+ case 'update': {
114
+ const existingNode = this.state.nodes.get(payload.nodeId);
115
+ if (existingNode) {
116
+ this.state.nodes.set(payload.nodeId, {
117
+ ...existingNode,
118
+ data: { ...existingNode.data, ...payload.data },
119
+ position: payload.position || existingNode.position,
120
+ updatedAt: timestamp,
121
+ });
122
+ }
123
+ break;
124
+ }
125
+ case 'delete':
126
+ this.state.nodes.delete(payload.nodeId);
127
+ break;
128
+ }
129
+ }
130
+ handleEdgeEvent(event, timestamp) {
131
+ const payload = event.payload;
132
+ switch (payload.operation) {
133
+ case 'create':
134
+ this.state.edges.set(payload.edgeId, {
135
+ id: payload.edgeId,
136
+ type: payload.edgeType,
137
+ from: payload.from,
138
+ to: payload.to,
139
+ data: payload.data,
140
+ createdAt: timestamp,
141
+ updatedAt: timestamp,
142
+ });
143
+ break;
144
+ case 'update': {
145
+ const existingEdge = this.state.edges.get(payload.edgeId);
146
+ if (existingEdge) {
147
+ this.state.edges.set(payload.edgeId, {
148
+ ...existingEdge,
149
+ data: { ...existingEdge.data, ...payload.data },
150
+ updatedAt: timestamp,
151
+ });
152
+ }
153
+ break;
154
+ }
155
+ case 'delete':
156
+ this.state.edges.delete(payload.edgeId);
157
+ break;
158
+ case 'animate':
159
+ // Animation is handled by the UI layer
160
+ break;
161
+ }
162
+ }
163
+ handleStateEvent(event, timestamp) {
164
+ const payload = event.payload;
165
+ const node = this.state.nodes.get(payload.nodeId);
166
+ if (node) {
167
+ this.state.nodes.set(payload.nodeId, {
168
+ ...node,
169
+ state: payload.newState,
170
+ data: { ...node.data, ...payload.data },
171
+ updatedAt: timestamp,
172
+ });
173
+ }
174
+ }
175
+ handleDataEvent(event) {
176
+ const payload = event.payload;
177
+ if (payload.targetType === 'node') {
178
+ const node = this.state.nodes.get(payload.targetId);
179
+ if (node) {
180
+ this.state.nodes.set(payload.targetId, {
181
+ ...node,
182
+ data: { ...node.data, ...payload.updates },
183
+ updatedAt: event.timestamp,
184
+ });
185
+ }
186
+ }
187
+ else {
188
+ const edge = this.state.edges.get(payload.targetId);
189
+ if (edge) {
190
+ this.state.edges.set(payload.targetId, {
191
+ ...edge,
192
+ data: { ...edge.data, ...payload.updates },
193
+ updatedAt: event.timestamp,
194
+ });
195
+ }
196
+ }
197
+ }
198
+ handleSystemEvent(event) {
199
+ const payload = event.payload;
200
+ if (payload.action === 'reset') {
201
+ this.reset();
202
+ }
203
+ }
204
+ getEmptyMetrics() {
205
+ return {
206
+ totalEvents: 0,
207
+ validEvents: 0,
208
+ violations: 0,
209
+ warnings: 0,
210
+ unexpectedEvents: 0,
211
+ expectedEventsMissing: 0,
212
+ };
213
+ }
214
+ }
215
+ //# sourceMappingURL=EventProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventProcessor.js","sourceRoot":"","sources":["../src/EventProcessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,305 @@
1
+ /**
2
+ * EventRecorderService - Log ingestion and event recording service
3
+ *
4
+ * This service:
5
+ * 1. Accepts logs via message protocol or direct API
6
+ * 2. Processes logs through PathBasedEventProcessor
7
+ * 3. Manages sessions through SessionManager
8
+ * 4. Emits events to subscribers for visualization
9
+ *
10
+ * The service is transport-agnostic - it handles message parsing and responses
11
+ * but does not implement any specific transport (WebSocket, IPC, etc.).
12
+ * The host application is responsible for the actual transport layer.
13
+ */
14
+ import { SessionManager } from './SessionManager';
15
+ import type { EventSession, CreateSessionOptions, EndSessionOptions } from './SessionManager';
16
+ import type { LogEntry } from './PathBasedEventProcessor';
17
+ import type { PathBasedGraphConfiguration, PathBasedEvent } from './types/path-based-config';
18
+ import type { GraphEvent } from './types';
19
+ /**
20
+ * Protocol message types for log ingestion
21
+ */
22
+ export type ProtocolMessageType = 'session_start' | 'session_end' | 'log' | 'log_batch' | 'ping' | 'pong' | 'error' | 'ack';
23
+ /**
24
+ * Base protocol message structure
25
+ */
26
+ export interface ProtocolMessage {
27
+ type: ProtocolMessageType;
28
+ timestamp: number;
29
+ requestId?: string;
30
+ }
31
+ /**
32
+ * Session start message
33
+ */
34
+ export interface SessionStartMessage extends ProtocolMessage {
35
+ type: 'session_start';
36
+ payload: {
37
+ name: string;
38
+ id?: string;
39
+ metadata?: {
40
+ testFile?: string;
41
+ testName?: string;
42
+ testSuite?: string;
43
+ tags?: string[];
44
+ };
45
+ };
46
+ }
47
+ /**
48
+ * Session end message
49
+ */
50
+ export interface SessionEndMessage extends ProtocolMessage {
51
+ type: 'session_end';
52
+ payload: {
53
+ sessionId: string;
54
+ result?: 'pass' | 'fail' | 'skip';
55
+ error?: string;
56
+ };
57
+ }
58
+ /**
59
+ * Single log message
60
+ */
61
+ export interface LogMessage extends ProtocolMessage {
62
+ type: 'log';
63
+ payload: LogEntry;
64
+ }
65
+ /**
66
+ * Batch log message
67
+ */
68
+ export interface LogBatchMessage extends ProtocolMessage {
69
+ type: 'log_batch';
70
+ payload: {
71
+ logs: LogEntry[];
72
+ };
73
+ }
74
+ /**
75
+ * Ping message for keepalive
76
+ */
77
+ export interface PingMessage extends ProtocolMessage {
78
+ type: 'ping';
79
+ }
80
+ /**
81
+ * Pong response
82
+ */
83
+ export interface PongMessage extends ProtocolMessage {
84
+ type: 'pong';
85
+ }
86
+ /**
87
+ * Error response
88
+ */
89
+ export interface ErrorMessage extends ProtocolMessage {
90
+ type: 'error';
91
+ payload: {
92
+ code: string;
93
+ message: string;
94
+ requestId?: string;
95
+ };
96
+ }
97
+ /**
98
+ * Acknowledgment response
99
+ */
100
+ export interface AckMessage extends ProtocolMessage {
101
+ type: 'ack';
102
+ payload: {
103
+ requestId: string;
104
+ sessionId?: string;
105
+ };
106
+ }
107
+ /**
108
+ * Union type for all incoming messages
109
+ */
110
+ export type IncomingMessage = SessionStartMessage | SessionEndMessage | LogMessage | LogBatchMessage | PingMessage;
111
+ /**
112
+ * Union type for all outgoing messages
113
+ */
114
+ export type OutgoingMessage = PongMessage | ErrorMessage | AckMessage;
115
+ /**
116
+ * Recording mode
117
+ */
118
+ export type RecordingMode = 'auto' | 'manual' | 'continuous';
119
+ /**
120
+ * Event callback for processed events
121
+ */
122
+ export type EventCallback = (event: PathBasedEvent | GraphEvent) => void;
123
+ /**
124
+ * Event batch callback
125
+ */
126
+ export type EventBatchCallback = (events: Array<PathBasedEvent | GraphEvent>) => void;
127
+ /**
128
+ * Connection state
129
+ */
130
+ export interface ConnectionState {
131
+ id: string;
132
+ connectedAt: number;
133
+ lastActivityAt: number;
134
+ activeSessionId: string | null;
135
+ }
136
+ /**
137
+ * EventRecorderService configuration
138
+ */
139
+ export interface EventRecorderServiceConfig {
140
+ /** Graph configuration for PathBasedEventProcessor */
141
+ graphConfig: PathBasedGraphConfiguration;
142
+ /** Recording mode (default: 'manual') */
143
+ recordingMode?: RecordingMode;
144
+ /** Whether to emit events immediately or batch them (default: true) */
145
+ emitImmediately?: boolean;
146
+ /** Batch interval in ms when emitImmediately is false (default: 100) */
147
+ batchIntervalMs?: number;
148
+ /** SessionManager configuration */
149
+ sessionConfig?: {
150
+ maxEventsPerSession?: number;
151
+ maxSessions?: number;
152
+ sessionRetention?: number;
153
+ autoCleanup?: boolean;
154
+ };
155
+ }
156
+ /**
157
+ * EventRecorderService - Main service for log ingestion and event recording
158
+ */
159
+ export declare class EventRecorderService {
160
+ private sessionManager;
161
+ private eventProcessor;
162
+ private config;
163
+ private eventListeners;
164
+ private batchListeners;
165
+ private eventBuffer;
166
+ private batchTimer;
167
+ private connections;
168
+ private isRecording;
169
+ constructor(config: EventRecorderServiceConfig);
170
+ /**
171
+ * Process an incoming protocol message
172
+ */
173
+ processMessage(message: IncomingMessage, connectionId: string): OutgoingMessage | null;
174
+ /**
175
+ * Handle session start message
176
+ */
177
+ private handleSessionStart;
178
+ /**
179
+ * Handle session end message
180
+ */
181
+ private handleSessionEnd;
182
+ /**
183
+ * Handle single log message
184
+ */
185
+ private handleLog;
186
+ /**
187
+ * Handle batch log message
188
+ */
189
+ private handleLogBatch;
190
+ /**
191
+ * Handle ping message
192
+ */
193
+ private handlePing;
194
+ /**
195
+ * Create an error response
196
+ */
197
+ private createError;
198
+ /**
199
+ * Emit events to listeners
200
+ */
201
+ private emitEvents;
202
+ /**
203
+ * Start batch processing timer
204
+ */
205
+ private startBatchProcessing;
206
+ /**
207
+ * Stop batch processing timer
208
+ */
209
+ private stopBatchProcessing;
210
+ /**
211
+ * Process a log entry directly (without protocol message wrapper)
212
+ */
213
+ processLog(log: LogEntry): PathBasedEvent[];
214
+ /**
215
+ * Process multiple log entries directly (without protocol message wrapper)
216
+ */
217
+ processLogs(logs: LogEntry[]): PathBasedEvent[];
218
+ /**
219
+ * Start a new session directly
220
+ */
221
+ startSession(options: CreateSessionOptions): EventSession;
222
+ /**
223
+ * End a session directly
224
+ */
225
+ endSession(sessionId: string, options?: EndSessionOptions): void;
226
+ /**
227
+ * End the active session
228
+ */
229
+ endActiveSession(options?: EndSessionOptions): void;
230
+ /**
231
+ * Start recording (for manual mode)
232
+ */
233
+ startRecording(): void;
234
+ /**
235
+ * Stop recording (for manual mode)
236
+ */
237
+ stopRecording(): void;
238
+ /**
239
+ * Check if currently recording
240
+ */
241
+ get recording(): boolean;
242
+ /**
243
+ * Register a new connection
244
+ */
245
+ registerConnection(connectionId: string): void;
246
+ /**
247
+ * Unregister a connection
248
+ */
249
+ unregisterConnection(connectionId: string): void;
250
+ /**
251
+ * Get connection state
252
+ */
253
+ getConnection(connectionId: string): ConnectionState | undefined;
254
+ /**
255
+ * Get all active connections
256
+ */
257
+ getConnections(): ConnectionState[];
258
+ /**
259
+ * Subscribe to individual events
260
+ */
261
+ onEvent(callback: EventCallback): () => void;
262
+ /**
263
+ * Subscribe to event batches
264
+ */
265
+ onEventBatch(callback: EventBatchCallback): () => void;
266
+ /**
267
+ * Get SessionManager for direct access
268
+ */
269
+ getSessionManager(): SessionManager;
270
+ /**
271
+ * Get active session
272
+ */
273
+ getActiveSession(): EventSession | undefined;
274
+ /**
275
+ * Get session by ID
276
+ */
277
+ getSession(id: string): EventSession | undefined;
278
+ /**
279
+ * List all sessions
280
+ */
281
+ listSessions(): EventSession[];
282
+ /**
283
+ * Get service statistics
284
+ */
285
+ getStats(): {
286
+ isRecording: boolean;
287
+ recordingMode: RecordingMode;
288
+ activeConnections: number;
289
+ sessions: {
290
+ total: number;
291
+ active: number;
292
+ totalEvents: number;
293
+ };
294
+ processor: {
295
+ totalComponents: number;
296
+ componentsWithSources: number;
297
+ totalSourcePatterns: number;
298
+ };
299
+ };
300
+ /**
301
+ * Dispose of the service
302
+ */
303
+ dispose(): void;
304
+ }
305
+ //# sourceMappingURL=EventRecorderService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventRecorderService.d.ts","sourceRoot":"","sources":["../src/EventRecorderService.ts"],"names":[],"mappings":"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"}