@ocpp-debugkit/toolkit 0.2.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 (124) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +14 -0
  3. package/README.md +35 -0
  4. package/dist/cli/commands/inspect.d.ts +8 -0
  5. package/dist/cli/commands/inspect.d.ts.map +1 -0
  6. package/dist/cli/commands/inspect.js +63 -0
  7. package/dist/cli/commands/inspect.js.map +1 -0
  8. package/dist/cli/commands/report.d.ts +9 -0
  9. package/dist/cli/commands/report.d.ts.map +1 -0
  10. package/dist/cli/commands/report.js +54 -0
  11. package/dist/cli/commands/report.js.map +1 -0
  12. package/dist/cli/commands/scenario.d.ts +10 -0
  13. package/dist/cli/commands/scenario.d.ts.map +1 -0
  14. package/dist/cli/commands/scenario.js +104 -0
  15. package/dist/cli/commands/scenario.js.map +1 -0
  16. package/dist/cli/index.d.ts +7 -0
  17. package/dist/cli/index.d.ts.map +1 -0
  18. package/dist/cli/index.js +47 -0
  19. package/dist/cli/index.js.map +1 -0
  20. package/dist/cli/utils.d.ts +13 -0
  21. package/dist/cli/utils.d.ts.map +1 -0
  22. package/dist/cli/utils.js +43 -0
  23. package/dist/cli/utils.js.map +1 -0
  24. package/dist/core/__fixtures__/connector-fault.d.ts +116 -0
  25. package/dist/core/__fixtures__/connector-fault.d.ts.map +1 -0
  26. package/dist/core/__fixtures__/connector-fault.js +231 -0
  27. package/dist/core/__fixtures__/connector-fault.js.map +1 -0
  28. package/dist/core/__fixtures__/failed-auth.d.ts +64 -0
  29. package/dist/core/__fixtures__/failed-auth.d.ts.map +1 -0
  30. package/dist/core/__fixtures__/failed-auth.js +173 -0
  31. package/dist/core/__fixtures__/failed-auth.js.map +1 -0
  32. package/dist/core/__fixtures__/normal-session.d.ts +108 -0
  33. package/dist/core/__fixtures__/normal-session.d.ts.map +1 -0
  34. package/dist/core/__fixtures__/normal-session.js +261 -0
  35. package/dist/core/__fixtures__/normal-session.js.map +1 -0
  36. package/dist/core/detection.d.ts +23 -0
  37. package/dist/core/detection.d.ts.map +1 -0
  38. package/dist/core/detection.js +226 -0
  39. package/dist/core/detection.js.map +1 -0
  40. package/dist/core/fixtures/index.d.ts +298 -0
  41. package/dist/core/fixtures/index.d.ts.map +1 -0
  42. package/dist/core/fixtures/index.js +19 -0
  43. package/dist/core/fixtures/index.js.map +1 -0
  44. package/dist/core/index.d.ts +14 -0
  45. package/dist/core/index.d.ts.map +1 -0
  46. package/dist/core/index.js +22 -0
  47. package/dist/core/index.js.map +1 -0
  48. package/dist/core/normalizer.d.ts +83 -0
  49. package/dist/core/normalizer.d.ts.map +1 -0
  50. package/dist/core/normalizer.js +289 -0
  51. package/dist/core/normalizer.js.map +1 -0
  52. package/dist/core/parser.d.ts +53 -0
  53. package/dist/core/parser.d.ts.map +1 -0
  54. package/dist/core/parser.js +282 -0
  55. package/dist/core/parser.js.map +1 -0
  56. package/dist/core/schemas.d.ts +68 -0
  57. package/dist/core/schemas.d.ts.map +1 -0
  58. package/dist/core/schemas.js +81 -0
  59. package/dist/core/schemas.js.map +1 -0
  60. package/dist/core/summarizer.d.ts +25 -0
  61. package/dist/core/summarizer.d.ts.map +1 -0
  62. package/dist/core/summarizer.js +47 -0
  63. package/dist/core/summarizer.js.map +1 -0
  64. package/dist/core/timeline.d.ts +26 -0
  65. package/dist/core/timeline.d.ts.map +1 -0
  66. package/dist/core/timeline.js +318 -0
  67. package/dist/core/timeline.js.map +1 -0
  68. package/dist/core/types.d.ts +160 -0
  69. package/dist/core/types.d.ts.map +1 -0
  70. package/dist/core/types.js +9 -0
  71. package/dist/core/types.js.map +1 -0
  72. package/dist/core/validator.d.ts +33 -0
  73. package/dist/core/validator.d.ts.map +1 -0
  74. package/dist/core/validator.js +122 -0
  75. package/dist/core/validator.js.map +1 -0
  76. package/dist/index.d.ts +24 -0
  77. package/dist/index.d.ts.map +1 -0
  78. package/dist/index.js +26 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/react/components.d.ts +50 -0
  81. package/dist/react/components.d.ts.map +1 -0
  82. package/dist/react/components.js +49 -0
  83. package/dist/react/components.js.map +1 -0
  84. package/dist/react/index.d.ts +11 -0
  85. package/dist/react/index.d.ts.map +1 -0
  86. package/dist/react/index.js +10 -0
  87. package/dist/react/index.js.map +1 -0
  88. package/dist/react/types.d.ts +33 -0
  89. package/dist/react/types.d.ts.map +1 -0
  90. package/dist/react/types.js +5 -0
  91. package/dist/react/types.js.map +1 -0
  92. package/dist/replay/engine.d.ts +55 -0
  93. package/dist/replay/engine.d.ts.map +1 -0
  94. package/dist/replay/engine.js +86 -0
  95. package/dist/replay/engine.js.map +1 -0
  96. package/dist/replay/index.d.ts +11 -0
  97. package/dist/replay/index.d.ts.map +1 -0
  98. package/dist/replay/index.js +11 -0
  99. package/dist/replay/index.js.map +1 -0
  100. package/dist/reporter/index.d.ts +6 -0
  101. package/dist/reporter/index.d.ts.map +1 -0
  102. package/dist/reporter/index.js +5 -0
  103. package/dist/reporter/index.js.map +1 -0
  104. package/dist/reporter/markdown.d.ts +20 -0
  105. package/dist/reporter/markdown.d.ts.map +1 -0
  106. package/dist/reporter/markdown.js +181 -0
  107. package/dist/reporter/markdown.js.map +1 -0
  108. package/dist/reporter/types.d.ts +34 -0
  109. package/dist/reporter/types.d.ts.map +1 -0
  110. package/dist/reporter/types.js +9 -0
  111. package/dist/reporter/types.js.map +1 -0
  112. package/dist/scenarios/__scenarios__/station-offline.d.ts +94 -0
  113. package/dist/scenarios/__scenarios__/station-offline.d.ts.map +1 -0
  114. package/dist/scenarios/__scenarios__/station-offline.js +168 -0
  115. package/dist/scenarios/__scenarios__/station-offline.js.map +1 -0
  116. package/dist/scenarios/__scenarios__/unexpected-stop-reason.d.ts +112 -0
  117. package/dist/scenarios/__scenarios__/unexpected-stop-reason.d.ts.map +1 -0
  118. package/dist/scenarios/__scenarios__/unexpected-stop-reason.js +216 -0
  119. package/dist/scenarios/__scenarios__/unexpected-stop-reason.js.map +1 -0
  120. package/dist/scenarios/index.d.ts +21 -0
  121. package/dist/scenarios/index.d.ts.map +1 -0
  122. package/dist/scenarios/index.js +61 -0
  123. package/dist/scenarios/index.js.map +1 -0
  124. package/package.json +110 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/replay/engine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAMvD,MAAM,WAAW,WAAW;IAC1B,4BAA4B;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,kDAAkD;IAClD,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,8BAA8B;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,wBAAwB;IACxB,SAAS,EAAE,KAAK,EAAE,CAAC;IACnB,sCAAsC;IACtC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,GAAE,OAAO,EAAO,EAAE,OAAO,CAAC,EAAE,aAAa;IAM9E,8BAA8B;IAC9B,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,8DAA8D;IAC9D,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,6EAA6E;IAC7E,IAAI,IAAI,WAAW,GAAG,IAAI;IAc1B,8EAA8E;IAC9E,QAAQ,IAAI,WAAW,GAAG,IAAI;IAQ9B,yFAAyF;IACzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAQzC,6CAA6C;IAC7C,QAAQ,IAAI,WAAW;IAkBvB,yCAAyC;IACzC,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Replay engine — replays OCPP trace events in timestamp order.
3
+ *
4
+ * @module @ocpp-debugkit/toolkit/replay
5
+ */
6
+ // ---------------------------------------------------------------------------
7
+ // ReplayEngine
8
+ // ---------------------------------------------------------------------------
9
+ /**
10
+ * Deterministic replay engine for OCPP traces.
11
+ *
12
+ * The engine is pure — it does not use timers or I/O. The consumer
13
+ * calls `step()`, `stepBack()`, or `jumpTo()` to advance the replay.
14
+ */
15
+ export class ReplayEngine {
16
+ events;
17
+ failures;
18
+ currentIndex;
19
+ constructor(events, failures = [], options) {
20
+ this.events = [...events];
21
+ this.failures = [...failures];
22
+ this.currentIndex = options?.startIndex ?? 0;
23
+ }
24
+ /** Total number of events. */
25
+ get totalEvents() {
26
+ return this.events.length;
27
+ }
28
+ /** Current event index (0-based). Returns -1 if no events. */
29
+ get current() {
30
+ return this.events.length === 0 ? -1 : this.currentIndex;
31
+ }
32
+ /** Step forward one event. Returns the replay event, or null if complete. */
33
+ step() {
34
+ if (this.currentIndex >= this.events.length) {
35
+ return null;
36
+ }
37
+ const event = this.events[this.currentIndex];
38
+ if (!event) {
39
+ return null;
40
+ }
41
+ const index = this.currentIndex;
42
+ const failures = this.failures.filter((f) => f.eventIds.includes(event.id));
43
+ this.currentIndex++;
44
+ return { event, failures, index };
45
+ }
46
+ /** Step backward one event. Returns the replay event, or null if at start. */
47
+ stepBack() {
48
+ if (this.currentIndex <= 1) {
49
+ return null;
50
+ }
51
+ this.currentIndex -= 2;
52
+ return this.step();
53
+ }
54
+ /** Jump to a specific event index. Returns the replay event, or null if out of range. */
55
+ jumpTo(index) {
56
+ if (index < 0 || index >= this.events.length) {
57
+ return null;
58
+ }
59
+ this.currentIndex = index;
60
+ return this.step();
61
+ }
62
+ /** Get the current replay state snapshot. */
63
+ getState() {
64
+ const played = [];
65
+ for (let i = 0; i < this.currentIndex && i < this.events.length; i++) {
66
+ const event = this.events[i];
67
+ if (!event)
68
+ continue;
69
+ played.push({
70
+ event,
71
+ failures: this.failures.filter((f) => f.eventIds.includes(event.id)),
72
+ index: i,
73
+ });
74
+ }
75
+ return {
76
+ played,
77
+ remaining: this.events.slice(this.currentIndex),
78
+ complete: this.currentIndex >= this.events.length,
79
+ };
80
+ }
81
+ /** Reset the replay to the beginning. */
82
+ reset() {
83
+ this.currentIndex = 0;
84
+ }
85
+ }
86
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/replay/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Replay engine module — v0.2.0.
3
+ *
4
+ * The replay engine takes a parsed trace and replays events in timestamp order,
5
+ * emitting state transitions and failures. It is pure — no timers, no I/O.
6
+ * The consumer (app or CLI) drives the clock.
7
+ *
8
+ * @module @ocpp-debugkit/toolkit/replay
9
+ */
10
+ export { ReplayEngine, type ReplayEvent, type ReplayState, type ReplayOptions } from './engine.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/replay/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Replay engine module — v0.2.0.
3
+ *
4
+ * The replay engine takes a parsed trace and replays events in timestamp order,
5
+ * emitting state transitions and failures. It is pure — no timers, no I/O.
6
+ * The consumer (app or CLI) drives the clock.
7
+ *
8
+ * @module @ocpp-debugkit/toolkit/replay
9
+ */
10
+ export { ReplayEngine } from './engine.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/replay/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAA0D,MAAM,aAAa,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Barrel export for the @ocpp-debugkit/reporter package.
3
+ */
4
+ export type { AnalysisResult } from './types.js';
5
+ export { generateMarkdownReport } from './markdown.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reporter/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Barrel export for the @ocpp-debugkit/reporter package.
3
+ */
4
+ export { generateMarkdownReport } from './markdown.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reporter/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Markdown report generator — produces a human-readable Markdown report
3
+ * from an AnalysisResult.
4
+ *
5
+ * Sections:
6
+ * 1. Session overview (station ID, connector, duration, status)
7
+ * 2. Timeline summary (event count, action sequence)
8
+ * 3. Failures (severity, description, suggested steps)
9
+ * 4. Suggested next steps
10
+ * 5. Raw event appendix (compact)
11
+ */
12
+ import type { AnalysisResult } from './types.js';
13
+ /**
14
+ * Generate a Markdown report from an analysis result.
15
+ *
16
+ * @param result - The analysis result to report on
17
+ * @returns A Markdown string
18
+ */
19
+ export declare function generateMarkdownReport(result: AnalysisResult): string;
20
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/reporter/markdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA+MjD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAWrE"}
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Markdown report generator — produces a human-readable Markdown report
3
+ * from an AnalysisResult.
4
+ *
5
+ * Sections:
6
+ * 1. Session overview (station ID, connector, duration, status)
7
+ * 2. Timeline summary (event count, action sequence)
8
+ * 3. Failures (severity, description, suggested steps)
9
+ * 4. Suggested next steps
10
+ * 5. Raw event appendix (compact)
11
+ */
12
+ // ---------------------------------------------------------------------------
13
+ // Helpers
14
+ // ---------------------------------------------------------------------------
15
+ /** Format a duration in milliseconds as a human-readable string. */
16
+ function formatDuration(ms) {
17
+ if (ms === null)
18
+ return 'Unknown';
19
+ if (ms < 1000)
20
+ return `${ms}ms`;
21
+ const seconds = Math.floor(ms / 1000);
22
+ if (seconds < 60)
23
+ return `${seconds}s`;
24
+ const minutes = Math.floor(seconds / 60);
25
+ const remainingSeconds = seconds % 60;
26
+ if (minutes < 60)
27
+ return `${minutes}m ${remainingSeconds}s`;
28
+ const hours = Math.floor(minutes / 60);
29
+ const remainingMinutes = minutes % 60;
30
+ return `${hours}h ${remainingMinutes}m`;
31
+ }
32
+ /** Format an epoch millisecond timestamp as ISO 8601. */
33
+ function formatTimestamp(ms) {
34
+ if (ms === null)
35
+ return 'Unknown';
36
+ return new Date(ms).toISOString();
37
+ }
38
+ /** Get severity emoji for a failure. */
39
+ function severityEmoji(severity) {
40
+ switch (severity) {
41
+ case 'critical':
42
+ return '🔴';
43
+ case 'warning':
44
+ return '🟡';
45
+ case 'info':
46
+ return '🔵';
47
+ default:
48
+ return '⚪';
49
+ }
50
+ }
51
+ /** Compact representation of an event for the appendix. */
52
+ function formatEventCompact(event) {
53
+ const time = formatTimestamp(event.timestamp);
54
+ const dir = event.direction;
55
+ const type = event.messageType;
56
+ const action = event.action ?? '-';
57
+ const msgId = event.messageId;
58
+ return `| ${event.id} | ${time} | ${dir} | ${type} | ${action} | ${msgId} |`;
59
+ }
60
+ // ---------------------------------------------------------------------------
61
+ // Section generators
62
+ // ---------------------------------------------------------------------------
63
+ function generateHeader(result) {
64
+ const lines = ['# OCPP DebugKit — Trace Analysis Report', ''];
65
+ if (result.metadata?.stationId) {
66
+ lines.push(`**Station:** ${result.metadata.stationId}`);
67
+ }
68
+ if (result.metadata?.ocppVersion) {
69
+ lines.push(`**OCPP Version:** ${result.metadata.ocppVersion}`);
70
+ }
71
+ if (result.metadata?.source) {
72
+ lines.push(`**Source:** ${result.metadata.source}`);
73
+ }
74
+ if (result.metadata?.description) {
75
+ lines.push(`**Description:** ${result.metadata.description}`);
76
+ }
77
+ lines.push(`**Events:** ${result.events.length}`, `**Sessions:** ${result.sessions.length}`, `**Failures:** ${result.failures.length}`, `**Warnings:** ${result.warnings.length}`);
78
+ if (result.warnings.length > 0) {
79
+ lines.push('', '## Parse Warnings', '');
80
+ for (const w of result.warnings) {
81
+ lines.push(`- ${w.message}`);
82
+ }
83
+ }
84
+ return lines.join('\n');
85
+ }
86
+ function generateSessionOverview(result) {
87
+ if (result.sessions.length === 0) {
88
+ return '## Session Overview\n\nNo sessions detected.\n';
89
+ }
90
+ const lines = [
91
+ '## Session Overview',
92
+ '',
93
+ '| Session | Station | Connector | Transaction | Start | End | Duration | Status |',
94
+ '|---------|---------|-----------|-------------|-------|-----|----------|--------|',
95
+ ];
96
+ for (const session of result.sessions) {
97
+ const summary = result.summaries.find((s) => s.sessionId === session.sessionId);
98
+ const duration = summary?.durationMs ?? null;
99
+ lines.push(`| ${session.sessionId} | ${session.stationId} | ${session.connectorId ?? '-'} | ${session.transactionId ?? '-'} | ${formatTimestamp(session.startTime)} | ${formatTimestamp(session.endTime)} | ${formatDuration(duration)} | ${session.status} |`);
100
+ }
101
+ return lines.join('\n');
102
+ }
103
+ function generateTimelineSummary(result) {
104
+ if (result.summaries.length === 0) {
105
+ return '## Timeline Summary\n\nNo sessions to summarize.\n';
106
+ }
107
+ const lines = ['## Timeline Summary', ''];
108
+ for (const summary of result.summaries) {
109
+ lines.push(`### ${summary.sessionId}`, '', `- **Events:** ${summary.eventCount}`, `- **Duration:** ${formatDuration(summary.durationMs)}`, `- **Failures:** ${summary.failureCount}`, `- **Action Sequence:** ${summary.actionSequence.join(' → ') || 'None'}`, '');
110
+ }
111
+ return lines.join('\n');
112
+ }
113
+ function generateFailures(result) {
114
+ if (result.failures.length === 0) {
115
+ return '## Failures\n\nNo failures detected. ✅\n';
116
+ }
117
+ const lines = ['## Failures', ''];
118
+ for (const failure of result.failures) {
119
+ lines.push(`### ${severityEmoji(failure.severity)} ${failure.code}`, '', `**Severity:** ${failure.severity}`, `**Description:** ${failure.description}`, `**Events:** ${failure.eventIds.join(', ')}`, '', '**Suggested Steps:**', '');
120
+ for (const step of failure.suggestedSteps) {
121
+ lines.push(`1. ${step}`);
122
+ }
123
+ lines.push('');
124
+ }
125
+ return lines.join('\n');
126
+ }
127
+ function generateSuggestedSteps(result) {
128
+ if (result.failures.length === 0) {
129
+ return '## Suggested Next Steps\n\nNo issues detected. The trace appears to represent a normal charging session.\n';
130
+ }
131
+ const lines = ['## Suggested Next Steps', ''];
132
+ // Collect unique suggested steps from all failures
133
+ const allSteps = new Set();
134
+ for (const failure of result.failures) {
135
+ for (const step of failure.suggestedSteps) {
136
+ allSteps.add(step);
137
+ }
138
+ }
139
+ let i = 1;
140
+ for (const step of allSteps) {
141
+ lines.push(`${i}. ${step}`);
142
+ i++;
143
+ }
144
+ return lines.join('\n');
145
+ }
146
+ function generateEventAppendix(result) {
147
+ if (result.events.length === 0) {
148
+ return '## Event Appendix\n\nNo events to display.\n';
149
+ }
150
+ const lines = [
151
+ '## Event Appendix',
152
+ '',
153
+ '| ID | Timestamp | Direction | Type | Action | MessageId |',
154
+ '|----|-----------|-----------|------|--------|-----------|',
155
+ ];
156
+ for (const event of result.events) {
157
+ lines.push(formatEventCompact(event));
158
+ }
159
+ return lines.join('\n');
160
+ }
161
+ // ---------------------------------------------------------------------------
162
+ // generateMarkdownReport()
163
+ // ---------------------------------------------------------------------------
164
+ /**
165
+ * Generate a Markdown report from an analysis result.
166
+ *
167
+ * @param result - The analysis result to report on
168
+ * @returns A Markdown string
169
+ */
170
+ export function generateMarkdownReport(result) {
171
+ const sections = [
172
+ generateHeader(result),
173
+ generateSessionOverview(result),
174
+ generateTimelineSummary(result),
175
+ generateFailures(result),
176
+ generateSuggestedSteps(result),
177
+ generateEventAppendix(result),
178
+ ];
179
+ return sections.join('\n\n');
180
+ }
181
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/reporter/markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Input types for the reporter package.
3
+ *
4
+ * These types represent the analysis result that reporters consume.
5
+ * They are produced by the core package's parseTrace + buildSessionTimeline +
6
+ * detectFailures pipeline.
7
+ */
8
+ import type { Event, Failure, Session, SessionSummary } from '../core/index.js';
9
+ /** Analysis result passed to report generators. */
10
+ export interface AnalysisResult {
11
+ /** All normalized events from the trace. */
12
+ events: Event[];
13
+ /** Sessions derived from the events. */
14
+ sessions: Session[];
15
+ /** Failures detected in the trace. */
16
+ failures: Failure[];
17
+ /** Summaries for each session. */
18
+ summaries: SessionSummary[];
19
+ /** Warnings produced during parsing. */
20
+ warnings: {
21
+ index: number;
22
+ message: string;
23
+ rawInput?: string;
24
+ }[];
25
+ /** Trace metadata, if available. */
26
+ metadata?: {
27
+ traceId?: string;
28
+ stationId?: string;
29
+ ocppVersion?: string;
30
+ source?: string;
31
+ description?: string;
32
+ };
33
+ }
34
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/reporter/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEhF,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,wCAAwC;IACxC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,sCAAsC;IACtC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,kCAAkC;IAClC,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,wCAAwC;IACxC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClE,oCAAoC;IACpC,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Input types for the reporter package.
3
+ *
4
+ * These types represent the analysis result that reporters consume.
5
+ * They are produced by the core package's parseTrace + buildSessionTimeline +
6
+ * detectFailures pipeline.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/reporter/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,94 @@
1
+ declare const _default: {
2
+ name: string;
3
+ description: string;
4
+ trace: {
5
+ traceId: string;
6
+ metadata: {
7
+ stationId: string;
8
+ ocppVersion: string;
9
+ source: string;
10
+ description: string;
11
+ };
12
+ events: ({
13
+ timestamp: string;
14
+ direction: string;
15
+ message: (string | number | {
16
+ chargePointVendor: string;
17
+ chargePointModel: string;
18
+ chargePointSerialNumber: string;
19
+ firmwareVersion: string;
20
+ })[];
21
+ } | {
22
+ timestamp: string;
23
+ direction: string;
24
+ message: (string | number | {
25
+ currentTime: string;
26
+ interval: number;
27
+ status: string;
28
+ })[];
29
+ } | {
30
+ timestamp: string;
31
+ direction: string;
32
+ message: (string | number | {
33
+ connectorId: number;
34
+ status: string;
35
+ errorCode: string;
36
+ })[];
37
+ } | {
38
+ timestamp: string;
39
+ direction: string;
40
+ message: {}[];
41
+ } | {
42
+ timestamp: string;
43
+ direction: string;
44
+ message: (string | number | {
45
+ idTag: string;
46
+ })[];
47
+ } | {
48
+ timestamp: string;
49
+ direction: string;
50
+ message: (string | number | {
51
+ idTagInfo: {
52
+ status: string;
53
+ expiryDate: string;
54
+ };
55
+ })[];
56
+ } | {
57
+ timestamp: string;
58
+ direction: string;
59
+ message: (string | number | {
60
+ connectorId: number;
61
+ idTag: string;
62
+ meterStart: number;
63
+ timestamp: string;
64
+ })[];
65
+ } | {
66
+ timestamp: string;
67
+ direction: string;
68
+ message: (string | number | {
69
+ transactionId: number;
70
+ idTagInfo: {
71
+ status: string;
72
+ };
73
+ })[];
74
+ } | {
75
+ timestamp: string;
76
+ direction: string;
77
+ message: (string | number | {
78
+ connectorId: number;
79
+ transactionId: number;
80
+ meterValue: {
81
+ timestamp: string;
82
+ sampledValue: {
83
+ value: string;
84
+ measurand: string;
85
+ unit: string;
86
+ }[];
87
+ }[];
88
+ })[];
89
+ })[];
90
+ };
91
+ expectedFailures: string[];
92
+ };
93
+ export default _default;
94
+ //# sourceMappingURL=station-offline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"station-offline.d.ts","sourceRoot":"","sources":["../../../src/scenarios/__scenarios__/station-offline.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBAwKE"}