@principal-ai/principal-view-core 0.6.4 → 0.7.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.
- package/dist/ConfigurationLoader.js +2 -1
- package/dist/ConfigurationLoader.js.map +1 -1
- package/dist/ConfigurationValidator.js.map +1 -1
- package/dist/EventProcessor.js.map +1 -1
- package/dist/EventRecorderService.js.map +1 -1
- package/dist/LibraryLoader.js.map +1 -1
- package/dist/PathBasedEventProcessor.js.map +1 -1
- package/dist/SessionManager.js +1 -1
- package/dist/SessionManager.js.map +1 -1
- package/dist/ValidationEngine.js.map +1 -1
- package/dist/cli/codegen.js.map +1 -1
- package/dist/codegen/type-generator.js.map +1 -1
- package/dist/codegen/usage-example.js.map +1 -1
- package/dist/helpers/GraphInstrumentationHelper.js +2 -2
- package/dist/helpers/GraphInstrumentationHelper.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/narrative/example.d.ts +11 -0
- package/dist/narrative/example.d.ts.map +1 -0
- package/dist/narrative/example.js +331 -0
- package/dist/narrative/example.js.map +1 -0
- package/dist/narrative/index.d.ts +12 -0
- package/dist/narrative/index.d.ts.map +1 -0
- package/dist/narrative/index.js +14 -0
- package/dist/narrative/index.js.map +1 -0
- package/dist/narrative/scenario-matcher.d.ts +87 -0
- package/dist/narrative/scenario-matcher.d.ts.map +1 -0
- package/dist/narrative/scenario-matcher.js +269 -0
- package/dist/narrative/scenario-matcher.js.map +1 -0
- package/dist/narrative/template-parser.d.ts +33 -0
- package/dist/narrative/template-parser.d.ts.map +1 -0
- package/dist/narrative/template-parser.js +288 -0
- package/dist/narrative/template-parser.js.map +1 -0
- package/dist/narrative/template-renderer.d.ts +18 -0
- package/dist/narrative/template-renderer.d.ts.map +1 -0
- package/dist/narrative/template-renderer.js +367 -0
- package/dist/narrative/template-renderer.js.map +1 -0
- package/dist/narrative/types.d.ts +268 -0
- package/dist/narrative/types.d.ts.map +1 -0
- package/dist/narrative/types.js +10 -0
- package/dist/narrative/types.js.map +1 -0
- package/dist/rules/config.js.map +1 -1
- package/dist/rules/engine.js.map +1 -1
- package/dist/rules/implementations/connection-type-references.js.map +1 -1
- package/dist/rules/implementations/dead-end-states.js.map +1 -1
- package/dist/rules/implementations/library-node-type-match.js.map +1 -1
- package/dist/rules/implementations/minimum-node-sources.js.map +1 -1
- package/dist/rules/implementations/no-unknown-fields.js.map +1 -1
- package/dist/rules/implementations/orphaned-edge-types.js.map +1 -1
- package/dist/rules/implementations/orphaned-node-types.js.map +1 -1
- package/dist/rules/implementations/required-metadata.js.map +1 -1
- package/dist/rules/implementations/state-transition-references.js.map +1 -1
- package/dist/rules/implementations/unreachable-states.js.map +1 -1
- package/dist/rules/implementations/valid-action-patterns.js.map +1 -1
- package/dist/rules/implementations/valid-color-format.js.map +1 -1
- package/dist/rules/implementations/valid-edge-types.js.map +1 -1
- package/dist/rules/implementations/valid-node-types.js.map +1 -1
- package/dist/rules/types.js.map +1 -1
- package/dist/telemetry/coverage.js.map +1 -1
- package/dist/telemetry/event-validator.js.map +1 -1
- package/dist/types/audit.js.map +1 -1
- package/dist/types/canvas.js +5 -5
- package/dist/types/canvas.js.map +1 -1
- package/dist/types/otel.js.map +1 -1
- package/dist/types/resource-match.js.map +1 -1
- package/dist/utils/CanvasConverter.js.map +1 -1
- package/dist/utils/GraphConverter.js.map +1 -1
- package/dist/utils/LibraryConverter.js.map +1 -1
- package/dist/utils/PathMatcher.js.map +1 -1
- package/dist/utils/TraceToCanvas.js +7 -7
- package/dist/utils/TraceToCanvas.js.map +1 -1
- package/dist/utils/YamlParser.js.map +1 -1
- package/package.json +15 -15
- package/src/index.ts +31 -13
- package/src/narrative/README.md +381 -0
- package/src/narrative/__tests__/scenario-matcher.test.ts +368 -0
- package/src/narrative/__tests__/template-parser.test.ts +235 -0
- package/src/narrative/__tests__/template-renderer.test.ts +377 -0
- package/src/narrative/example.ts +349 -0
- package/src/narrative/index.ts +35 -0
- package/src/narrative/scenario-matcher.ts +331 -0
- package/src/narrative/template-parser.ts +298 -0
- package/src/narrative/template-renderer.ts +423 -0
- package/src/narrative/types.ts +368 -0
- package/src/utils/GraphConverter.test.ts +0 -79
- package/dist/utils/ExecutionFileDiscovery.d.ts +0 -206
- package/dist/utils/ExecutionFileDiscovery.d.ts.map +0 -1
- package/dist/utils/ExecutionFileDiscovery.js +0 -340
- package/dist/utils/ExecutionFileDiscovery.js.map +0 -1
- package/src/utils/ExecutionFileDiscovery.ts +0 -522
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template Renderer
|
|
3
|
+
*
|
|
4
|
+
* Renders narrative templates into human-readable text using
|
|
5
|
+
* OTEL events, selected scenarios, and template expressions.
|
|
6
|
+
*/
|
|
7
|
+
import { parseTemplate } from './template-parser';
|
|
8
|
+
import { selectScenario, computeAggregates } from './scenario-matcher';
|
|
9
|
+
/**
|
|
10
|
+
* Render a narrative from a template and events
|
|
11
|
+
*
|
|
12
|
+
* Main entry point for narrative generation.
|
|
13
|
+
*
|
|
14
|
+
* @param template - Narrative template
|
|
15
|
+
* @param events - Collected OTEL events
|
|
16
|
+
* @returns Rendered narrative
|
|
17
|
+
*/
|
|
18
|
+
export function renderNarrative(template, events) {
|
|
19
|
+
// Compute aggregates for scenario matching and templates
|
|
20
|
+
const aggregates = computeAggregates(events);
|
|
21
|
+
// Select scenario
|
|
22
|
+
const matchResult = selectScenario(template, events, aggregates);
|
|
23
|
+
// Build context
|
|
24
|
+
const context = {
|
|
25
|
+
template,
|
|
26
|
+
scenario: matchResult.scenario,
|
|
27
|
+
events,
|
|
28
|
+
aggregates,
|
|
29
|
+
formatting: {
|
|
30
|
+
indentPerLevel: ' ',
|
|
31
|
+
timestampFormat: 'HH:mm:ss.SSS',
|
|
32
|
+
showTimestamps: false,
|
|
33
|
+
showDuration: true,
|
|
34
|
+
showSpanIds: false,
|
|
35
|
+
showAttributes: 'matched',
|
|
36
|
+
...template.formatting,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
// Build span tree if needed
|
|
40
|
+
if (template.mode === 'span-tree') {
|
|
41
|
+
context.spanTree = buildSpanTree(events, template.showLogsPerSpan);
|
|
42
|
+
}
|
|
43
|
+
// Render narrative
|
|
44
|
+
const text = renderScenario(context);
|
|
45
|
+
// Build metadata
|
|
46
|
+
const spans = events.filter((e) => e.type === 'span');
|
|
47
|
+
const logs = events.filter((e) => e.type === 'log');
|
|
48
|
+
const timestamps = events.map((e) => normalizeTimestamp(e.timestamp)).filter((t) => !isNaN(t));
|
|
49
|
+
return {
|
|
50
|
+
text,
|
|
51
|
+
scenarioId: matchResult.scenario.id,
|
|
52
|
+
metadata: {
|
|
53
|
+
eventCount: events.length,
|
|
54
|
+
spanCount: spans.length,
|
|
55
|
+
logCount: logs.length,
|
|
56
|
+
timeRange: timestamps.length > 0
|
|
57
|
+
? {
|
|
58
|
+
start: Math.min(...timestamps),
|
|
59
|
+
end: Math.max(...timestamps),
|
|
60
|
+
}
|
|
61
|
+
: undefined,
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Render a scenario template
|
|
67
|
+
*
|
|
68
|
+
* @param context - Narrative context
|
|
69
|
+
* @returns Rendered text
|
|
70
|
+
*/
|
|
71
|
+
function renderScenario(context) {
|
|
72
|
+
const { scenario, template, events, aggregates, formatting } = context;
|
|
73
|
+
const parts = [];
|
|
74
|
+
// Create template evaluation context (merge aggregates and events)
|
|
75
|
+
const evalContext = {
|
|
76
|
+
...aggregates,
|
|
77
|
+
events,
|
|
78
|
+
totalEvents: events.length,
|
|
79
|
+
};
|
|
80
|
+
// Introduction
|
|
81
|
+
if (scenario.template.introduction) {
|
|
82
|
+
parts.push(parseTemplate(scenario.template.introduction, evalContext));
|
|
83
|
+
parts.push(''); // Blank line
|
|
84
|
+
}
|
|
85
|
+
// Main content based on mode
|
|
86
|
+
switch (template.mode) {
|
|
87
|
+
case 'span-tree':
|
|
88
|
+
if (context.spanTree) {
|
|
89
|
+
parts.push(renderSpanTree(context.spanTree, scenario, evalContext, formatting));
|
|
90
|
+
}
|
|
91
|
+
break;
|
|
92
|
+
case 'timeline':
|
|
93
|
+
parts.push(renderTimeline(events, scenario, evalContext, formatting));
|
|
94
|
+
break;
|
|
95
|
+
case 'summary-only':
|
|
96
|
+
// Only introduction and summary, no event details
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
// Flow directives
|
|
100
|
+
if (scenario.template.flow) {
|
|
101
|
+
parts.push(renderFlow(scenario.template.flow, evalContext));
|
|
102
|
+
}
|
|
103
|
+
// Summary
|
|
104
|
+
if (scenario.template.summary) {
|
|
105
|
+
if (parts.length > 0) {
|
|
106
|
+
parts.push(''); // Blank line before summary
|
|
107
|
+
}
|
|
108
|
+
parts.push(parseTemplate(scenario.template.summary, evalContext));
|
|
109
|
+
}
|
|
110
|
+
return parts.join('\n');
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Render span tree (hierarchical view)
|
|
114
|
+
*
|
|
115
|
+
* @param tree - Span tree nodes
|
|
116
|
+
* @param scenario - Scenario being rendered
|
|
117
|
+
* @param context - Evaluation context
|
|
118
|
+
* @param formatting - Formatting options
|
|
119
|
+
* @returns Rendered tree text
|
|
120
|
+
*/
|
|
121
|
+
function renderSpanTree(tree, scenario, context, formatting) {
|
|
122
|
+
const parts = [];
|
|
123
|
+
for (const node of tree) {
|
|
124
|
+
const indent = (formatting.indentPerLevel || ' ').repeat(node.depth);
|
|
125
|
+
const eventContext = { ...context, ...node.span.attributes, span: node.span };
|
|
126
|
+
// Render span
|
|
127
|
+
if (scenario.template.span) {
|
|
128
|
+
const spanText = parseTemplate(scenario.template.span, eventContext);
|
|
129
|
+
parts.push(indent + spanText);
|
|
130
|
+
}
|
|
131
|
+
else if (scenario.template.events?.[node.span.name]) {
|
|
132
|
+
const eventTemplate = scenario.template.events[node.span.name];
|
|
133
|
+
const eventText = parseTemplate(eventTemplate, eventContext);
|
|
134
|
+
parts.push(indent + eventText);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
// Default span rendering
|
|
138
|
+
parts.push(indent + `→ ${node.span.name}`);
|
|
139
|
+
}
|
|
140
|
+
// Render associated logs
|
|
141
|
+
if (node.logs && node.logs.length > 0) {
|
|
142
|
+
for (const log of node.logs) {
|
|
143
|
+
const logContext = { ...context, log };
|
|
144
|
+
const logText = renderLog(log, scenario, logContext, formatting);
|
|
145
|
+
if (logText) {
|
|
146
|
+
parts.push(indent + (formatting.indentPerLevel || ' ') + logText);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Render children
|
|
151
|
+
if (node.children.length > 0 && scenario.template.children !== 'ignore') {
|
|
152
|
+
parts.push(renderSpanTree(node.children, scenario, context, formatting));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return parts.join('\n');
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Render timeline (chronological view)
|
|
159
|
+
*
|
|
160
|
+
* @param events - Events in chronological order
|
|
161
|
+
* @param scenario - Scenario being rendered
|
|
162
|
+
* @param context - Evaluation context
|
|
163
|
+
* @param formatting - Formatting options
|
|
164
|
+
* @returns Rendered timeline text
|
|
165
|
+
*/
|
|
166
|
+
function renderTimeline(events, scenario, context, formatting) {
|
|
167
|
+
const parts = [];
|
|
168
|
+
// Sort events by timestamp
|
|
169
|
+
const sorted = [...events].sort((a, b) => {
|
|
170
|
+
const aTime = normalizeTimestamp(a.timestamp);
|
|
171
|
+
const bTime = normalizeTimestamp(b.timestamp);
|
|
172
|
+
return aTime - bTime;
|
|
173
|
+
});
|
|
174
|
+
for (const event of sorted) {
|
|
175
|
+
const eventContext = { ...context, ...event.attributes };
|
|
176
|
+
let eventText;
|
|
177
|
+
if (event.type === 'log') {
|
|
178
|
+
eventText = renderLog(event, scenario, { ...eventContext, log: event }, formatting);
|
|
179
|
+
}
|
|
180
|
+
else if (scenario.template.events?.[event.name]) {
|
|
181
|
+
eventText = parseTemplate(scenario.template.events[event.name], eventContext);
|
|
182
|
+
}
|
|
183
|
+
if (eventText) {
|
|
184
|
+
if (formatting.showTimestamps) {
|
|
185
|
+
const timestamp = formatTimestamp(event.timestamp, formatting.timestampFormat || 'HH:mm:ss.SSS');
|
|
186
|
+
parts.push(`[${timestamp}] ${eventText}`);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
parts.push(eventText);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return parts.join('\n');
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Render a log event
|
|
197
|
+
*
|
|
198
|
+
* @param log - Log event
|
|
199
|
+
* @param scenario - Scenario being rendered
|
|
200
|
+
* @param context - Evaluation context
|
|
201
|
+
* @param formatting - Formatting options
|
|
202
|
+
* @returns Rendered log text
|
|
203
|
+
*/
|
|
204
|
+
function renderLog(log, scenario, context, formatting) {
|
|
205
|
+
// Check for severity-specific template
|
|
206
|
+
if (scenario.template.logs) {
|
|
207
|
+
const severity = getSeverityLevel(log.severityNumber);
|
|
208
|
+
const logTemplate = scenario.template.logs[severity] || scenario.template.logs.default;
|
|
209
|
+
if (logTemplate) {
|
|
210
|
+
return parseTemplate(logTemplate, context);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Check for event-specific template
|
|
214
|
+
if (scenario.template.events?.[`log.${log.severityText?.toLowerCase()}`]) {
|
|
215
|
+
return parseTemplate(scenario.template.events[`log.${log.severityText?.toLowerCase()}`], context);
|
|
216
|
+
}
|
|
217
|
+
// Default log rendering
|
|
218
|
+
return `[${log.severityText || 'LOG'}] ${log.body}`;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Get severity level name from severity number
|
|
222
|
+
*
|
|
223
|
+
* @param severityNumber - OTEL severity number (1-24)
|
|
224
|
+
* @returns Severity level name
|
|
225
|
+
*/
|
|
226
|
+
function getSeverityLevel(severityNumber) {
|
|
227
|
+
if (!severityNumber)
|
|
228
|
+
return 'info';
|
|
229
|
+
if (severityNumber >= 21)
|
|
230
|
+
return 'fatal';
|
|
231
|
+
if (severityNumber >= 17)
|
|
232
|
+
return 'error';
|
|
233
|
+
if (severityNumber >= 13)
|
|
234
|
+
return 'warn';
|
|
235
|
+
if (severityNumber >= 9)
|
|
236
|
+
return 'info';
|
|
237
|
+
if (severityNumber >= 5)
|
|
238
|
+
return 'debug';
|
|
239
|
+
return 'trace';
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Render flow directives
|
|
243
|
+
*
|
|
244
|
+
* @param flow - Flow directives
|
|
245
|
+
* @param context - Evaluation context
|
|
246
|
+
* @returns Rendered flow text
|
|
247
|
+
*/
|
|
248
|
+
function renderFlow(flow, context) {
|
|
249
|
+
const parts = [];
|
|
250
|
+
for (const item of flow) {
|
|
251
|
+
if (typeof item === 'string') {
|
|
252
|
+
// Simple string template
|
|
253
|
+
parts.push(parseTemplate(item, context));
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
// Flow directive
|
|
257
|
+
if (item.forEach && item.template) {
|
|
258
|
+
// Iteration
|
|
259
|
+
const collection = context[item.forEach];
|
|
260
|
+
if (Array.isArray(collection)) {
|
|
261
|
+
for (let i = 0; i < collection.length; i++) {
|
|
262
|
+
const collectionItem = collection[i];
|
|
263
|
+
const itemContext = {
|
|
264
|
+
...context,
|
|
265
|
+
...(typeof collectionItem === 'object' && collectionItem !== null ? collectionItem : {}),
|
|
266
|
+
index: i,
|
|
267
|
+
};
|
|
268
|
+
parts.push(parseTemplate(item.template, itemContext));
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
else if (item.if) {
|
|
273
|
+
// Conditional
|
|
274
|
+
const condition = parseTemplate(item.if, context);
|
|
275
|
+
if (condition === 'true' || condition === '1') {
|
|
276
|
+
if (item.then) {
|
|
277
|
+
parts.push(parseTemplate(item.then, context));
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
if (item.else) {
|
|
282
|
+
parts.push(parseTemplate(item.else, context));
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return parts.join('\n');
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Build span tree from events
|
|
292
|
+
*
|
|
293
|
+
* @param events - All events
|
|
294
|
+
* @param includeLogsPerSpan - Whether to attach logs to spans
|
|
295
|
+
* @returns Span tree
|
|
296
|
+
*/
|
|
297
|
+
function buildSpanTree(events, includeLogsPerSpan = false) {
|
|
298
|
+
const spans = events.filter((e) => e.type === 'span');
|
|
299
|
+
const logs = includeLogsPerSpan ? events.filter((e) => e.type === 'log') : [];
|
|
300
|
+
// Build map of spans by ID
|
|
301
|
+
const spanMap = new Map();
|
|
302
|
+
for (const span of spans) {
|
|
303
|
+
if (span.spanId) {
|
|
304
|
+
spanMap.set(span.spanId, {
|
|
305
|
+
span,
|
|
306
|
+
children: [],
|
|
307
|
+
logs: [],
|
|
308
|
+
depth: 0,
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
// Attach logs to spans
|
|
313
|
+
if (includeLogsPerSpan) {
|
|
314
|
+
for (const log of logs) {
|
|
315
|
+
if (log.spanId && spanMap.has(log.spanId)) {
|
|
316
|
+
spanMap.get(log.spanId).logs.push(log);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
// Build tree structure
|
|
321
|
+
const roots = [];
|
|
322
|
+
for (const node of spanMap.values()) {
|
|
323
|
+
if (node.span.parentSpanId && spanMap.has(node.span.parentSpanId)) {
|
|
324
|
+
const parent = spanMap.get(node.span.parentSpanId);
|
|
325
|
+
parent.children.push(node);
|
|
326
|
+
node.depth = parent.depth + 1;
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
roots.push(node);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
return roots;
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Normalize timestamp to milliseconds
|
|
336
|
+
*
|
|
337
|
+
* @param timestamp - Timestamp (number or ISO string)
|
|
338
|
+
* @returns Milliseconds since epoch
|
|
339
|
+
*/
|
|
340
|
+
function normalizeTimestamp(timestamp) {
|
|
341
|
+
if (typeof timestamp === 'number') {
|
|
342
|
+
// Assume milliseconds if < 10^12, otherwise nanoseconds
|
|
343
|
+
return timestamp < 1e12 ? timestamp : timestamp / 1e6;
|
|
344
|
+
}
|
|
345
|
+
return new Date(timestamp).getTime();
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Format timestamp
|
|
349
|
+
*
|
|
350
|
+
* @param timestamp - Timestamp to format
|
|
351
|
+
* @param format - Format string (simplified, only supports HH:mm:ss.SSS)
|
|
352
|
+
* @returns Formatted timestamp
|
|
353
|
+
*/
|
|
354
|
+
function formatTimestamp(timestamp, format) {
|
|
355
|
+
const ms = normalizeTimestamp(timestamp);
|
|
356
|
+
const date = new Date(ms);
|
|
357
|
+
if (format === 'HH:mm:ss.SSS') {
|
|
358
|
+
const hours = String(date.getHours()).padStart(2, '0');
|
|
359
|
+
const minutes = String(date.getMinutes()).padStart(2, '0');
|
|
360
|
+
const seconds = String(date.getSeconds()).padStart(2, '0');
|
|
361
|
+
const milliseconds = String(date.getMilliseconds()).padStart(3, '0');
|
|
362
|
+
return `${hours}:${minutes}:${seconds}.${milliseconds}`;
|
|
363
|
+
}
|
|
364
|
+
// Fallback to ISO string
|
|
365
|
+
return date.toISOString();
|
|
366
|
+
}
|
|
367
|
+
//# sourceMappingURL=template-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-renderer.js","sourceRoot":"","sources":["../../src/narrative/template-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Narrative Template System Types
|
|
3
|
+
*
|
|
4
|
+
* Types for transforming OpenTelemetry event streams into human-readable
|
|
5
|
+
* execution narratives based on OTEL canvas definitions.
|
|
6
|
+
*
|
|
7
|
+
* @see docs/NARRATIVE_TEMPLATES_DESIGN.md
|
|
8
|
+
*/
|
|
9
|
+
import type { OtelLog, OtelSpan } from '../types/otel';
|
|
10
|
+
/**
|
|
11
|
+
* Combined OTEL signal type for narrative processing
|
|
12
|
+
*/
|
|
13
|
+
export type OtelSignal = OtelSpan | OtelLog | OtelEvent;
|
|
14
|
+
/**
|
|
15
|
+
* Generic OTEL event (spans can also be treated as events)
|
|
16
|
+
*/
|
|
17
|
+
export interface OtelEvent {
|
|
18
|
+
/** Event name (e.g., "conversion.started", "log.error") */
|
|
19
|
+
name: string;
|
|
20
|
+
/** Event timestamp */
|
|
21
|
+
timestamp: string | number;
|
|
22
|
+
/** Event type (span, log, metric) */
|
|
23
|
+
type?: 'span' | 'log' | 'metric';
|
|
24
|
+
/** Event attributes */
|
|
25
|
+
attributes?: Record<string, string | number | boolean>;
|
|
26
|
+
/** Trace correlation */
|
|
27
|
+
traceId?: string;
|
|
28
|
+
spanId?: string;
|
|
29
|
+
parentSpanId?: string;
|
|
30
|
+
/** For logs: severity information */
|
|
31
|
+
severityText?: string;
|
|
32
|
+
severityNumber?: number;
|
|
33
|
+
/** For logs: message body */
|
|
34
|
+
body?: string | Record<string, unknown>;
|
|
35
|
+
/** For spans: duration */
|
|
36
|
+
duration?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Narrative template definition
|
|
40
|
+
*
|
|
41
|
+
* References an .otel.canvas file and defines how to render
|
|
42
|
+
* execution events into human-readable narratives.
|
|
43
|
+
*/
|
|
44
|
+
export interface NarrativeTemplate {
|
|
45
|
+
/** Schema version (e.g., "1.0.0") */
|
|
46
|
+
version: string;
|
|
47
|
+
/** Reference to .otel.canvas file */
|
|
48
|
+
canvas: string;
|
|
49
|
+
/** Human-readable template name */
|
|
50
|
+
name: string;
|
|
51
|
+
/** Purpose of this narrative view */
|
|
52
|
+
description: string;
|
|
53
|
+
/** How to structure the narrative */
|
|
54
|
+
mode: NarrativeMode;
|
|
55
|
+
/** Scenario selection strategy */
|
|
56
|
+
scenarioSelection: 'first-match' | 'manual';
|
|
57
|
+
/** Show logs associated with each span (span-tree mode) */
|
|
58
|
+
showLogsPerSpan?: boolean;
|
|
59
|
+
/** Mix spans/logs by timestamp (timeline mode) */
|
|
60
|
+
interleaveSignals?: boolean;
|
|
61
|
+
/** Mutually exclusive narrative scenarios */
|
|
62
|
+
scenarios: NarrativeScenario[];
|
|
63
|
+
/** Display formatting preferences */
|
|
64
|
+
formatting?: FormattingOptions;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Narrative rendering mode
|
|
68
|
+
*/
|
|
69
|
+
export type NarrativeMode = 'span-tree' | 'timeline' | 'summary-only';
|
|
70
|
+
/**
|
|
71
|
+
* Narrative scenario definition
|
|
72
|
+
*
|
|
73
|
+
* Scenarios are mutually exclusive narrative templates selected
|
|
74
|
+
* based on which events occurred during execution.
|
|
75
|
+
*/
|
|
76
|
+
export interface NarrativeScenario {
|
|
77
|
+
/** Unique scenario identifier (kebab-case) */
|
|
78
|
+
id: string;
|
|
79
|
+
/** Selection priority (lower = higher priority, 1 = highest) */
|
|
80
|
+
priority: number;
|
|
81
|
+
/** What this scenario represents */
|
|
82
|
+
description: string;
|
|
83
|
+
/** Conditions that must be met for this scenario to match */
|
|
84
|
+
condition: ScenarioCondition;
|
|
85
|
+
/** Narrative template content */
|
|
86
|
+
template: ScenarioTemplate;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Scenario matching conditions
|
|
90
|
+
*/
|
|
91
|
+
export interface ScenarioCondition {
|
|
92
|
+
/** Must have these events (supports glob patterns like "*.error") */
|
|
93
|
+
requires?: string[];
|
|
94
|
+
/** Must NOT have these events (supports glob patterns) */
|
|
95
|
+
excludes?: string[];
|
|
96
|
+
/** Assertions on event attributes */
|
|
97
|
+
assertions?: Record<string, Assertion>;
|
|
98
|
+
/** Always matches (use as fallback) */
|
|
99
|
+
default?: boolean;
|
|
100
|
+
/** Match if ANY requires condition met (instead of ALL) */
|
|
101
|
+
any?: boolean;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Attribute assertion operators
|
|
105
|
+
*/
|
|
106
|
+
export interface Assertion {
|
|
107
|
+
/** Greater than */
|
|
108
|
+
$gt?: number;
|
|
109
|
+
/** Greater than or equal */
|
|
110
|
+
$gte?: number;
|
|
111
|
+
/** Less than */
|
|
112
|
+
$lt?: number;
|
|
113
|
+
/** Less than or equal */
|
|
114
|
+
$lte?: number;
|
|
115
|
+
/** Equal to */
|
|
116
|
+
$eq?: string | number | boolean;
|
|
117
|
+
/** Not equal to */
|
|
118
|
+
$ne?: string | number | boolean;
|
|
119
|
+
/** Attribute exists/doesn't exist */
|
|
120
|
+
$exists?: boolean;
|
|
121
|
+
/** Value in array */
|
|
122
|
+
$in?: (string | number | boolean)[];
|
|
123
|
+
/** Value not in array */
|
|
124
|
+
$nin?: (string | number | boolean)[];
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Scenario template content
|
|
128
|
+
*/
|
|
129
|
+
export interface ScenarioTemplate {
|
|
130
|
+
/** Opening text */
|
|
131
|
+
introduction?: string;
|
|
132
|
+
/** Event/log name -> template mapping */
|
|
133
|
+
events?: Record<string, string>;
|
|
134
|
+
/** Optional: separate log templates by severity */
|
|
135
|
+
logs?: LogTemplates;
|
|
136
|
+
/** Narrative flow steps */
|
|
137
|
+
flow?: Array<string | FlowDirective>;
|
|
138
|
+
/** Closing text */
|
|
139
|
+
summary?: string;
|
|
140
|
+
/** For span-tree mode: span rendering template */
|
|
141
|
+
span?: string;
|
|
142
|
+
/** For span-tree mode: how to recurse into children */
|
|
143
|
+
children?: 'recurse' | 'ignore';
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Log templates by severity level
|
|
147
|
+
*/
|
|
148
|
+
export interface LogTemplates {
|
|
149
|
+
/** Template for TRACE logs (severity 1-4) */
|
|
150
|
+
trace?: string;
|
|
151
|
+
/** Template for DEBUG logs (severity 5-8) */
|
|
152
|
+
debug?: string;
|
|
153
|
+
/** Template for INFO logs (severity 9-12) */
|
|
154
|
+
info?: string;
|
|
155
|
+
/** Template for WARN logs (severity 13-16) */
|
|
156
|
+
warn?: string;
|
|
157
|
+
/** Template for ERROR logs (severity 17-20) */
|
|
158
|
+
error?: string;
|
|
159
|
+
/** Template for FATAL logs (severity 21-24) */
|
|
160
|
+
fatal?: string;
|
|
161
|
+
/** Fallback for any log */
|
|
162
|
+
default?: string;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Flow directive for narrative generation
|
|
166
|
+
*/
|
|
167
|
+
export interface FlowDirective {
|
|
168
|
+
/** Iterate over collection (e.g., "violations", "logs.filter(l => l.severityNumber >= 17)") */
|
|
169
|
+
forEach?: string;
|
|
170
|
+
/** Template for each item in iteration */
|
|
171
|
+
template?: string;
|
|
172
|
+
/** Conditional expression */
|
|
173
|
+
if?: string;
|
|
174
|
+
/** Template if condition true */
|
|
175
|
+
then?: string;
|
|
176
|
+
/** Template if condition false */
|
|
177
|
+
else?: string;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Formatting options for narrative rendering
|
|
181
|
+
*/
|
|
182
|
+
export interface FormattingOptions {
|
|
183
|
+
/** Indentation per hierarchy level (default: " ") */
|
|
184
|
+
indentPerLevel?: string;
|
|
185
|
+
/** Timestamp format (default: "HH:mm:ss.SSS") */
|
|
186
|
+
timestampFormat?: string;
|
|
187
|
+
/** Show timestamps in output (default: false) */
|
|
188
|
+
showTimestamps?: boolean;
|
|
189
|
+
/** Show duration information (default: true) */
|
|
190
|
+
showDuration?: boolean;
|
|
191
|
+
/** Show span IDs (useful for debugging) (default: false) */
|
|
192
|
+
showSpanIds?: boolean;
|
|
193
|
+
/** Which attributes to show: none, matched (from template), or all (default: 'matched') */
|
|
194
|
+
showAttributes?: 'none' | 'matched' | 'all';
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Narrative rendering context
|
|
198
|
+
*
|
|
199
|
+
* Contains all data needed to render a narrative from events.
|
|
200
|
+
*/
|
|
201
|
+
export interface NarrativeContext {
|
|
202
|
+
/** The narrative template being used */
|
|
203
|
+
template: NarrativeTemplate;
|
|
204
|
+
/** Selected scenario */
|
|
205
|
+
scenario: NarrativeScenario;
|
|
206
|
+
/** All collected events */
|
|
207
|
+
events: OtelEvent[];
|
|
208
|
+
/** Span tree (for span-tree mode) */
|
|
209
|
+
spanTree?: SpanTreeNode[];
|
|
210
|
+
/** Computed aggregate values */
|
|
211
|
+
aggregates?: Record<string, unknown>;
|
|
212
|
+
/** Formatting options */
|
|
213
|
+
formatting: FormattingOptions;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Span tree node for hierarchical rendering
|
|
217
|
+
*/
|
|
218
|
+
export interface SpanTreeNode {
|
|
219
|
+
/** The span event */
|
|
220
|
+
span: OtelEvent;
|
|
221
|
+
/** Child spans */
|
|
222
|
+
children: SpanTreeNode[];
|
|
223
|
+
/** Associated logs (if showLogsPerSpan is true) */
|
|
224
|
+
logs?: OtelEvent[];
|
|
225
|
+
/** Depth in tree (for indentation) */
|
|
226
|
+
depth: number;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Narrative rendering result
|
|
230
|
+
*/
|
|
231
|
+
export interface NarrativeResult {
|
|
232
|
+
/** Rendered narrative text */
|
|
233
|
+
text: string;
|
|
234
|
+
/** Scenario that was selected */
|
|
235
|
+
scenarioId: string;
|
|
236
|
+
/** Metadata about the rendering */
|
|
237
|
+
metadata: {
|
|
238
|
+
/** Number of events processed */
|
|
239
|
+
eventCount: number;
|
|
240
|
+
/** Number of spans */
|
|
241
|
+
spanCount: number;
|
|
242
|
+
/** Number of logs */
|
|
243
|
+
logCount: number;
|
|
244
|
+
/** Time range of events */
|
|
245
|
+
timeRange?: {
|
|
246
|
+
start: string | number;
|
|
247
|
+
end: string | number;
|
|
248
|
+
};
|
|
249
|
+
/** Any errors encountered during rendering */
|
|
250
|
+
errors?: string[];
|
|
251
|
+
/** Any warnings encountered during rendering */
|
|
252
|
+
warnings?: string[];
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Scenario matching result
|
|
257
|
+
*/
|
|
258
|
+
export interface ScenarioMatchResult {
|
|
259
|
+
/** The matched scenario */
|
|
260
|
+
scenario: NarrativeScenario;
|
|
261
|
+
/** Whether this was the default/fallback scenario */
|
|
262
|
+
isDefault: boolean;
|
|
263
|
+
/** All applicable scenarios (for manual selection UI) */
|
|
264
|
+
applicableScenarios: NarrativeScenario[];
|
|
265
|
+
/** Reasons why other scenarios didn't match */
|
|
266
|
+
matchReasons?: Record<string, string>;
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/narrative/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Narrative Template System Types
|
|
3
|
+
*
|
|
4
|
+
* Types for transforming OpenTelemetry event streams into human-readable
|
|
5
|
+
* execution narratives based on OTEL canvas definitions.
|
|
6
|
+
*
|
|
7
|
+
* @see docs/NARRATIVE_TEMPLATES_DESIGN.md
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/narrative/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|