@lumenflow/metrics 1.0.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 (51) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +161 -0
  3. package/dist/dora/calculate-dora-metrics.d.ts +34 -0
  4. package/dist/dora/calculate-dora-metrics.d.ts.map +1 -0
  5. package/dist/dora/calculate-dora-metrics.js +178 -0
  6. package/dist/dora/calculate-dora-metrics.js.map +1 -0
  7. package/dist/dora/constants.d.ts +61 -0
  8. package/dist/dora/constants.d.ts.map +1 -0
  9. package/dist/dora/constants.js +65 -0
  10. package/dist/dora/constants.js.map +1 -0
  11. package/dist/dora/index.d.ts +11 -0
  12. package/dist/dora/index.d.ts.map +1 -0
  13. package/dist/dora/index.js +11 -0
  14. package/dist/dora/index.js.map +1 -0
  15. package/dist/flow/analyze-bottlenecks.d.ts +51 -0
  16. package/dist/flow/analyze-bottlenecks.d.ts.map +1 -0
  17. package/dist/flow/analyze-bottlenecks.js +253 -0
  18. package/dist/flow/analyze-bottlenecks.js.map +1 -0
  19. package/dist/flow/calculate-flow-state.d.ts +13 -0
  20. package/dist/flow/calculate-flow-state.d.ts.map +1 -0
  21. package/dist/flow/calculate-flow-state.js +27 -0
  22. package/dist/flow/calculate-flow-state.js.map +1 -0
  23. package/dist/flow/capture-metrics-snapshot.d.ts +13 -0
  24. package/dist/flow/capture-metrics-snapshot.d.ts.map +1 -0
  25. package/dist/flow/capture-metrics-snapshot.js +126 -0
  26. package/dist/flow/capture-metrics-snapshot.js.map +1 -0
  27. package/dist/flow/generate-flow-report.d.ts +13 -0
  28. package/dist/flow/generate-flow-report.d.ts.map +1 -0
  29. package/dist/flow/generate-flow-report.js +254 -0
  30. package/dist/flow/generate-flow-report.js.map +1 -0
  31. package/dist/flow/index.d.ts +12 -0
  32. package/dist/flow/index.d.ts.map +1 -0
  33. package/dist/flow/index.js +12 -0
  34. package/dist/flow/index.js.map +1 -0
  35. package/dist/index.d.ts +13 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +15 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/telemetry/emit-telemetry.d.ts +31 -0
  40. package/dist/telemetry/emit-telemetry.d.ts.map +1 -0
  41. package/dist/telemetry/emit-telemetry.js +103 -0
  42. package/dist/telemetry/emit-telemetry.js.map +1 -0
  43. package/dist/telemetry/index.d.ts +9 -0
  44. package/dist/telemetry/index.d.ts.map +1 -0
  45. package/dist/telemetry/index.js +9 -0
  46. package/dist/telemetry/index.js.map +1 -0
  47. package/dist/types.d.ts +332 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +10 -0
  50. package/dist/types.js.map +1 -0
  51. package/package.json +74 -0
@@ -0,0 +1,332 @@
1
+ /**
2
+ * Types and Interfaces for @lumenflow/metrics
3
+ *
4
+ * DORA/SPACE analytics types for LumenFlow workflow framework.
5
+ * Based on "Accelerate" research by Nicole Forsgren, Jez Humble, Gene Kim.
6
+ *
7
+ * @module @lumenflow/metrics/types
8
+ */
9
+ /**
10
+ * Status classification tier for DORA metrics
11
+ * Based on DORA research thresholds.
12
+ */
13
+ export type DORAStatusTier = 'elite' | 'high' | 'medium' | 'low';
14
+ /**
15
+ * Work Unit lifecycle metadata
16
+ */
17
+ export interface WUMetrics {
18
+ id: string;
19
+ title: string;
20
+ lane: string;
21
+ status: 'ready' | 'in_progress' | 'blocked' | 'waiting' | 'done';
22
+ priority?: string;
23
+ claimedAt?: Date;
24
+ completedAt?: Date;
25
+ cycleTimeHours?: number;
26
+ }
27
+ /**
28
+ * Git commit metadata for deployment frequency and lead time
29
+ */
30
+ export interface GitCommit {
31
+ hash: string;
32
+ timestamp: Date;
33
+ message: string;
34
+ type?: string;
35
+ wuId?: string;
36
+ }
37
+ /**
38
+ * Skip-gates audit entry for Change Failure Rate calculation
39
+ */
40
+ export interface SkipGatesEntry {
41
+ timestamp: Date;
42
+ wuId: string;
43
+ reason: string;
44
+ gate: string;
45
+ }
46
+ /**
47
+ * Deployment Frequency metrics
48
+ */
49
+ export interface DeploymentFrequencyMetrics {
50
+ deploysPerWeek: number;
51
+ status: DORAStatusTier;
52
+ }
53
+ /**
54
+ * Lead Time for Changes metrics
55
+ */
56
+ export interface LeadTimeMetrics {
57
+ averageHours: number;
58
+ medianHours: number;
59
+ p90Hours: number;
60
+ status: DORAStatusTier;
61
+ }
62
+ /**
63
+ * Change Failure Rate metrics
64
+ */
65
+ export interface ChangeFailureRateMetrics {
66
+ failurePercentage: number;
67
+ totalDeployments: number;
68
+ failures: number;
69
+ status: DORAStatusTier;
70
+ }
71
+ /**
72
+ * Mean Time to Recovery metrics
73
+ */
74
+ export interface MTTRMetrics {
75
+ averageHours: number;
76
+ incidents: number;
77
+ status: DORAStatusTier;
78
+ }
79
+ /**
80
+ * Complete DORA metrics report
81
+ */
82
+ export interface DORAMetrics {
83
+ deploymentFrequency: DeploymentFrequencyMetrics;
84
+ leadTimeForChanges: LeadTimeMetrics;
85
+ changeFailureRate: ChangeFailureRateMetrics;
86
+ meanTimeToRecovery: MTTRMetrics;
87
+ }
88
+ /**
89
+ * Per-lane health aggregation
90
+ */
91
+ export interface LaneHealth {
92
+ lane: string;
93
+ wusCompleted: number;
94
+ wusInProgress: number;
95
+ wusBlocked: number;
96
+ averageCycleTimeHours: number;
97
+ medianCycleTimeHours: number;
98
+ status: 'healthy' | 'at-risk' | 'blocked';
99
+ }
100
+ /**
101
+ * WU flow state aggregation
102
+ */
103
+ export interface FlowState {
104
+ ready: number;
105
+ inProgress: number;
106
+ blocked: number;
107
+ waiting: number;
108
+ done: number;
109
+ totalActive: number;
110
+ }
111
+ /**
112
+ * Gate execution telemetry event
113
+ */
114
+ export interface GateTelemetryEvent {
115
+ timestamp: string;
116
+ wuId: string | null;
117
+ lane: string | null;
118
+ gateName: string;
119
+ passed: boolean;
120
+ durationMs: number;
121
+ }
122
+ /**
123
+ * LLM classification telemetry event
124
+ */
125
+ export interface LLMTelemetryEvent {
126
+ timestamp: string;
127
+ eventType: 'llm.classification.start' | 'llm.classification.complete' | 'llm.classification.error';
128
+ classificationType: string;
129
+ durationMs?: number;
130
+ tokensUsed?: number;
131
+ estimatedCostUsd?: number;
132
+ confidence?: number;
133
+ fallbackUsed?: boolean;
134
+ fallbackReason?: string;
135
+ errorType?: string;
136
+ errorMessage?: string;
137
+ }
138
+ /**
139
+ * Gate metrics by name for flow report
140
+ */
141
+ export interface GateMetricsByName {
142
+ [gateName: string]: {
143
+ total: number;
144
+ passed: number;
145
+ failed: number;
146
+ passRate: string;
147
+ };
148
+ }
149
+ /**
150
+ * LLM metrics summary
151
+ */
152
+ export interface LLMMetrics {
153
+ totalClassifications: number;
154
+ errorRate: string;
155
+ fallbackRate: string;
156
+ avgLatencyMs: number;
157
+ p50LatencyMs: number;
158
+ p95LatencyMs: number;
159
+ p99LatencyMs: number;
160
+ totalTokens: number;
161
+ totalCostUsd: number;
162
+ avgConfidence: string;
163
+ byType: {
164
+ [type: string]: {
165
+ count: number;
166
+ avgLatencyMs: number;
167
+ totalCostUsd: number;
168
+ fallbackRate: string;
169
+ };
170
+ };
171
+ }
172
+ /**
173
+ * Flow report data structure
174
+ */
175
+ export interface FlowReportData {
176
+ range: {
177
+ start: string;
178
+ end: string;
179
+ };
180
+ gates: {
181
+ passRate: string;
182
+ total: number;
183
+ passed: number;
184
+ failed: number;
185
+ p95: number;
186
+ byName: GateMetricsByName;
187
+ };
188
+ wus: {
189
+ completed: number;
190
+ list: Array<{
191
+ wuId: string;
192
+ completedDate: string;
193
+ lane: string;
194
+ title: string;
195
+ }>;
196
+ };
197
+ llm: LLMMetrics;
198
+ }
199
+ /**
200
+ * Bottleneck analysis result
201
+ */
202
+ export interface BottleneckResult {
203
+ id: string;
204
+ score: number;
205
+ title?: string;
206
+ }
207
+ /**
208
+ * Critical path result
209
+ */
210
+ export interface CriticalPathResult {
211
+ path: string[];
212
+ length: number;
213
+ warning?: string;
214
+ cycleNodes?: string[];
215
+ }
216
+ /**
217
+ * Bottleneck analysis output
218
+ */
219
+ export interface BottleneckAnalysis {
220
+ bottlenecks: BottleneckResult[];
221
+ criticalPath: CriticalPathResult;
222
+ }
223
+ /**
224
+ * Dependency graph node
225
+ */
226
+ export interface DependencyGraphNode {
227
+ id: string;
228
+ title: string;
229
+ blocks: string[];
230
+ blockedBy: string[];
231
+ status: string;
232
+ }
233
+ /**
234
+ * Metrics snapshot types
235
+ */
236
+ export type MetricsSnapshotType = 'dora' | 'lanes' | 'flow' | 'all';
237
+ /**
238
+ * Metrics snapshot data
239
+ */
240
+ export interface MetricsSnapshot {
241
+ dora?: DORAMetrics;
242
+ lanes?: {
243
+ lanes: LaneHealth[];
244
+ totalActive: number;
245
+ totalBlocked: number;
246
+ totalCompleted: number;
247
+ };
248
+ flow?: FlowState;
249
+ }
250
+ /**
251
+ * Telemetry emit function type
252
+ */
253
+ export type TelemetryEmitFn = (filePath: string, event: Record<string, unknown>) => void;
254
+ /**
255
+ * Input for gate event emission
256
+ */
257
+ export interface GateEventInput {
258
+ wuId?: string | null;
259
+ lane?: string | null;
260
+ gateName: string;
261
+ passed: boolean;
262
+ durationMs: number;
263
+ }
264
+ /**
265
+ * Input for LLM classification start
266
+ */
267
+ export interface LLMClassificationStartInput {
268
+ classificationType: string;
269
+ hasContext?: boolean;
270
+ wuId?: string;
271
+ lane?: string;
272
+ }
273
+ /**
274
+ * Input for LLM classification complete
275
+ */
276
+ export interface LLMClassificationCompleteInput {
277
+ classificationType: string;
278
+ durationMs: number;
279
+ tokensUsed: number;
280
+ estimatedCostUsd: number;
281
+ confidence: number;
282
+ fallbackUsed: boolean;
283
+ fallbackReason?: string;
284
+ wuId?: string;
285
+ lane?: string;
286
+ }
287
+ /**
288
+ * Input for LLM classification error
289
+ */
290
+ export interface LLMClassificationErrorInput {
291
+ classificationType: string;
292
+ errorType: string;
293
+ errorMessage: string;
294
+ durationMs?: number;
295
+ inputTextPreview?: string;
296
+ wuId?: string;
297
+ lane?: string;
298
+ }
299
+ /**
300
+ * Input for WU flow event
301
+ */
302
+ export interface WUFlowEventInput {
303
+ script: string;
304
+ wuId?: string;
305
+ lane?: string;
306
+ step?: string;
307
+ [key: string]: unknown;
308
+ }
309
+ /**
310
+ * Input for flow report generation
311
+ */
312
+ export interface FlowReportInput {
313
+ gateEvents: GateTelemetryEvent[];
314
+ llmEvents: LLMTelemetryEvent[];
315
+ completedWUs: WUMetrics[];
316
+ dateRange: {
317
+ start: string;
318
+ end: string;
319
+ };
320
+ }
321
+ /**
322
+ * Input for metrics snapshot capture
323
+ */
324
+ export interface MetricsSnapshotInput {
325
+ commits: GitCommit[];
326
+ wuMetrics: WUMetrics[];
327
+ skipGatesEntries: SkipGatesEntry[];
328
+ weekStart: Date;
329
+ weekEnd: Date;
330
+ type: MetricsSnapshotType;
331
+ }
332
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Types and Interfaces for @lumenflow/metrics
3
+ *
4
+ * DORA/SPACE analytics types for LumenFlow workflow framework.
5
+ * Based on "Accelerate" research by Nicole Forsgren, Jez Humble, Gene Kim.
6
+ *
7
+ * @module @lumenflow/metrics/types
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
package/package.json ADDED
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "@lumenflow/metrics",
3
+ "version": "1.0.0",
4
+ "description": "DORA/SPACE analytics and flow metrics for LumenFlow workflow framework",
5
+ "keywords": [
6
+ "lumenflow",
7
+ "metrics",
8
+ "dora",
9
+ "space",
10
+ "devops",
11
+ "analytics",
12
+ "workflow"
13
+ ],
14
+ "homepage": "https://github.com/hellmai/os",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/hellmai/os.git",
18
+ "directory": "packages/@lumenflow/metrics"
19
+ },
20
+ "license": "Apache-2.0",
21
+ "author": {
22
+ "name": "HellmAI",
23
+ "url": "https://hellm.ai"
24
+ },
25
+ "type": "module",
26
+ "exports": {
27
+ ".": {
28
+ "types": "./dist/index.d.ts",
29
+ "import": "./dist/index.js"
30
+ },
31
+ "./telemetry": {
32
+ "types": "./dist/telemetry/index.d.ts",
33
+ "import": "./dist/telemetry/index.js"
34
+ },
35
+ "./dora": {
36
+ "types": "./dist/dora/index.d.ts",
37
+ "import": "./dist/dora/index.js"
38
+ },
39
+ "./flow": {
40
+ "types": "./dist/flow/index.d.ts",
41
+ "import": "./dist/flow/index.js"
42
+ }
43
+ },
44
+ "main": "./dist/index.js",
45
+ "types": "./dist/index.d.ts",
46
+ "files": [
47
+ "dist",
48
+ "LICENSE",
49
+ "README.md"
50
+ ],
51
+ "dependencies": {
52
+ "simple-statistics": "^7.8.8"
53
+ },
54
+ "devDependencies": {
55
+ "@vitest/coverage-v8": "^4.0.0"
56
+ },
57
+ "engines": {
58
+ "node": ">=22"
59
+ },
60
+ "publishConfig": {
61
+ "access": "public"
62
+ },
63
+ "scripts": {
64
+ "build": "tsc",
65
+ "build:dist": "tsc -p tsconfig.build.json",
66
+ "pack:dist": "pnpm pack",
67
+ "clean": "rm -rf dist *.tgz",
68
+ "dev": "tsc --watch",
69
+ "test": "vitest run",
70
+ "test:coverage": "vitest run --coverage",
71
+ "lint": "eslint src --max-warnings 0",
72
+ "typecheck": "tsc --noEmit"
73
+ }
74
+ }