@nahisaho/musubix-library-learner 2.1.0 → 2.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 (81) hide show
  1. package/dist/EnhancedLibraryLearner.d.ts +159 -0
  2. package/dist/EnhancedLibraryLearner.d.ts.map +1 -0
  3. package/dist/EnhancedLibraryLearner.js +296 -0
  4. package/dist/EnhancedLibraryLearner.js.map +1 -0
  5. package/dist/domain/DomainAwareAbstractor.d.ts +226 -0
  6. package/dist/domain/DomainAwareAbstractor.d.ts.map +1 -0
  7. package/dist/domain/DomainAwareAbstractor.js +237 -0
  8. package/dist/domain/DomainAwareAbstractor.js.map +1 -0
  9. package/dist/domain/__tests__/DomainAwareAbstractor.test.d.ts +9 -0
  10. package/dist/domain/__tests__/DomainAwareAbstractor.test.d.ts.map +1 -0
  11. package/dist/domain/__tests__/DomainAwareAbstractor.test.js +217 -0
  12. package/dist/domain/__tests__/DomainAwareAbstractor.test.js.map +1 -0
  13. package/dist/domain/index.d.ts +7 -0
  14. package/dist/domain/index.d.ts.map +1 -0
  15. package/dist/domain/index.js +6 -0
  16. package/dist/domain/index.js.map +1 -0
  17. package/dist/hierarchy/HierarchyManager.d.ts +227 -0
  18. package/dist/hierarchy/HierarchyManager.d.ts.map +1 -0
  19. package/dist/hierarchy/HierarchyManager.js +342 -0
  20. package/dist/hierarchy/HierarchyManager.js.map +1 -0
  21. package/dist/hierarchy/index.d.ts +9 -0
  22. package/dist/hierarchy/index.d.ts.map +1 -0
  23. package/dist/hierarchy/index.js +8 -0
  24. package/dist/hierarchy/index.js.map +1 -0
  25. package/dist/index.d.ts +18 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +13 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/library/IterativeCompressor.d.ts +196 -0
  30. package/dist/library/IterativeCompressor.d.ts.map +1 -0
  31. package/dist/library/IterativeCompressor.js +367 -0
  32. package/dist/library/IterativeCompressor.js.map +1 -0
  33. package/dist/library/PatternVersionManager.d.ts +177 -0
  34. package/dist/library/PatternVersionManager.d.ts.map +1 -0
  35. package/dist/library/PatternVersionManager.js +223 -0
  36. package/dist/library/PatternVersionManager.js.map +1 -0
  37. package/dist/library/__tests__/IterativeCompressor.test.d.ts +9 -0
  38. package/dist/library/__tests__/IterativeCompressor.test.d.ts.map +1 -0
  39. package/dist/library/__tests__/IterativeCompressor.test.js +200 -0
  40. package/dist/library/__tests__/IterativeCompressor.test.js.map +1 -0
  41. package/dist/library/__tests__/PatternVersionManager.test.d.ts +9 -0
  42. package/dist/library/__tests__/PatternVersionManager.test.d.ts.map +1 -0
  43. package/dist/library/__tests__/PatternVersionManager.test.js +218 -0
  44. package/dist/library/__tests__/PatternVersionManager.test.js.map +1 -0
  45. package/dist/library/index.d.ts +4 -0
  46. package/dist/library/index.d.ts.map +1 -1
  47. package/dist/library/index.js +4 -0
  48. package/dist/library/index.js.map +1 -1
  49. package/dist/metrics/MetricsExporter.d.ts +128 -0
  50. package/dist/metrics/MetricsExporter.d.ts.map +1 -0
  51. package/dist/metrics/MetricsExporter.js +157 -0
  52. package/dist/metrics/MetricsExporter.js.map +1 -0
  53. package/dist/metrics/index.d.ts +9 -0
  54. package/dist/metrics/index.d.ts.map +1 -0
  55. package/dist/metrics/index.js +8 -0
  56. package/dist/metrics/index.js.map +1 -0
  57. package/dist/rewrite/RewriteRuleSet.d.ts +136 -0
  58. package/dist/rewrite/RewriteRuleSet.d.ts.map +1 -0
  59. package/dist/rewrite/RewriteRuleSet.js +460 -0
  60. package/dist/rewrite/RewriteRuleSet.js.map +1 -0
  61. package/dist/rewrite/index.d.ts +9 -0
  62. package/dist/rewrite/index.d.ts.map +1 -0
  63. package/dist/rewrite/index.js +8 -0
  64. package/dist/rewrite/index.js.map +1 -0
  65. package/dist/search/TypeDirectedPruner.d.ts +138 -0
  66. package/dist/search/TypeDirectedPruner.d.ts.map +1 -0
  67. package/dist/search/TypeDirectedPruner.js +245 -0
  68. package/dist/search/TypeDirectedPruner.js.map +1 -0
  69. package/dist/search/index.d.ts +9 -0
  70. package/dist/search/index.d.ts.map +1 -0
  71. package/dist/search/index.js +8 -0
  72. package/dist/search/index.js.map +1 -0
  73. package/dist/updater/IncrementalUpdater.d.ts +152 -0
  74. package/dist/updater/IncrementalUpdater.d.ts.map +1 -0
  75. package/dist/updater/IncrementalUpdater.js +283 -0
  76. package/dist/updater/IncrementalUpdater.js.map +1 -0
  77. package/dist/updater/index.d.ts +7 -0
  78. package/dist/updater/index.d.ts.map +1 -0
  79. package/dist/updater/index.js +6 -0
  80. package/dist/updater/index.js.map +1 -0
  81. package/package.json +1 -1
@@ -0,0 +1,218 @@
1
+ /**
2
+ * PatternVersionManager Tests
3
+ * @module @nahisaho/musubix-library-learner
4
+ * @see TSK-LL-105
5
+ * @see DES-LL-105
6
+ * @see REQ-LL-105 Pattern version management with rollback
7
+ */
8
+ import { describe, it, expect, beforeEach } from 'vitest';
9
+ import { createPatternVersionManager, } from '../PatternVersionManager.js';
10
+ describe('PatternVersionManager', () => {
11
+ let manager;
12
+ // Helper to create mock patterns
13
+ const createPattern = (id, version) => ({
14
+ id,
15
+ name: `Pattern-${id}-v${version}`,
16
+ level: 1,
17
+ content: {
18
+ id,
19
+ ast: { type: 'Expression', value: version },
20
+ occurrenceCount: 5 + version,
21
+ locations: [],
22
+ },
23
+ usageCount: 10 * version,
24
+ confidence: 0.7 + version * 0.1,
25
+ createdAt: new Date(),
26
+ lastUsedAt: new Date(),
27
+ tags: ['test', `v${version}`],
28
+ });
29
+ beforeEach(() => {
30
+ manager = createPatternVersionManager();
31
+ });
32
+ describe('Factory Function', () => {
33
+ it('should create a PatternVersionManager instance', () => {
34
+ const instance = createPatternVersionManager();
35
+ expect(instance).toBeDefined();
36
+ expect(typeof instance.recordVersion).toBe('function');
37
+ });
38
+ it('should create with custom config', () => {
39
+ const instance = createPatternVersionManager({
40
+ maxVersionsPerPattern: 100,
41
+ autoCleanup: false,
42
+ });
43
+ expect(instance).toBeDefined();
44
+ });
45
+ });
46
+ describe('recordVersion', () => {
47
+ it('should record a new pattern version', () => {
48
+ const pattern = createPattern('PAT-001', 1);
49
+ const versionId = manager.recordVersion(pattern);
50
+ expect(versionId).toBeDefined();
51
+ expect(typeof versionId).toBe('string');
52
+ });
53
+ it('should assign incremental version numbers', () => {
54
+ const pattern1 = createPattern('PAT-001', 1);
55
+ const pattern2 = createPattern('PAT-001', 2);
56
+ const version1 = manager.recordVersion(pattern1);
57
+ const version2 = manager.recordVersion(pattern2);
58
+ expect(version1).not.toBe(version2);
59
+ });
60
+ it('should store pattern snapshot', () => {
61
+ const pattern = createPattern('PAT-001', 1);
62
+ const versionId = manager.recordVersion(pattern);
63
+ const retrieved = manager.getVersion(pattern.id, versionId);
64
+ expect(retrieved).toBeDefined();
65
+ expect(retrieved?.name).toBe(pattern.name);
66
+ });
67
+ it('should record metadata with version', () => {
68
+ const pattern = createPattern('PAT-001', 1);
69
+ manager.recordVersion(pattern, {
70
+ reason: 'Initial version',
71
+ author: 'test-user',
72
+ });
73
+ const history = manager.getHistory(pattern.id);
74
+ expect(history[0].metadata?.reason).toBe('Initial version');
75
+ });
76
+ });
77
+ describe('getHistory', () => {
78
+ it('should return empty array for unknown pattern', () => {
79
+ const history = manager.getHistory('unknown-pattern');
80
+ expect(history).toEqual([]);
81
+ });
82
+ it('should return version history in chronological order', () => {
83
+ const patternId = 'PAT-001';
84
+ manager.recordVersion(createPattern(patternId, 1));
85
+ manager.recordVersion(createPattern(patternId, 2));
86
+ manager.recordVersion(createPattern(patternId, 3));
87
+ const history = manager.getHistory(patternId);
88
+ expect(history).toHaveLength(3);
89
+ expect(history[0].versionNumber).toBeLessThan(history[1].versionNumber);
90
+ expect(history[1].versionNumber).toBeLessThan(history[2].versionNumber);
91
+ });
92
+ it('should include timestamps', () => {
93
+ const pattern = createPattern('PAT-001', 1);
94
+ manager.recordVersion(pattern);
95
+ const history = manager.getHistory(pattern.id);
96
+ expect(history[0].timestamp).toBeInstanceOf(Date);
97
+ });
98
+ });
99
+ describe('getVersion', () => {
100
+ it('should retrieve specific version', () => {
101
+ const patternId = 'PAT-001';
102
+ const v1 = manager.recordVersion(createPattern(patternId, 1));
103
+ manager.recordVersion(createPattern(patternId, 2));
104
+ manager.recordVersion(createPattern(patternId, 3));
105
+ const retrieved = manager.getVersion(patternId, v1);
106
+ expect(retrieved?.name).toContain('v1');
107
+ });
108
+ it('should return undefined for non-existent version', () => {
109
+ const pattern = createPattern('PAT-001', 1);
110
+ manager.recordVersion(pattern);
111
+ const retrieved = manager.getVersion(pattern.id, 'non-existent');
112
+ expect(retrieved).toBeUndefined();
113
+ });
114
+ });
115
+ describe('rollback', () => {
116
+ it('should rollback to specific version', async () => {
117
+ const patternId = 'PAT-001';
118
+ const v1 = manager.recordVersion(createPattern(patternId, 1));
119
+ manager.recordVersion(createPattern(patternId, 2));
120
+ manager.recordVersion(createPattern(patternId, 3));
121
+ const rolledBack = await manager.rollback(patternId, v1);
122
+ expect(rolledBack).toBeDefined();
123
+ expect(rolledBack?.name).toContain('v1');
124
+ });
125
+ it('should create new version after rollback', async () => {
126
+ const patternId = 'PAT-ROLLBACK-NEW';
127
+ const v1 = manager.recordVersion(createPattern(patternId, 1));
128
+ manager.recordVersion(createPattern(patternId, 2));
129
+ const historyBefore = manager.getHistory(patternId);
130
+ expect(historyBefore.length).toBe(2); // Verify initial state
131
+ await manager.rollback(patternId, v1);
132
+ const historyAfter = manager.getHistory(patternId);
133
+ // Rollback should create a new version
134
+ expect(historyAfter.length).toBe(3);
135
+ });
136
+ it('should throw for unknown pattern', async () => {
137
+ await expect(manager.rollback('unknown', 'v1')).rejects.toThrow();
138
+ });
139
+ it('should throw for unknown version', async () => {
140
+ const pattern = createPattern('PAT-001', 1);
141
+ manager.recordVersion(pattern);
142
+ await expect(manager.rollback(pattern.id, 'non-existent')).rejects.toThrow();
143
+ });
144
+ });
145
+ describe('getLatestVersion', () => {
146
+ it('should return latest version', () => {
147
+ const patternId = 'PAT-001';
148
+ manager.recordVersion(createPattern(patternId, 1));
149
+ manager.recordVersion(createPattern(patternId, 2));
150
+ manager.recordVersion(createPattern(patternId, 3));
151
+ const latest = manager.getLatestVersion(patternId);
152
+ expect(latest?.name).toContain('v3');
153
+ });
154
+ it('should return undefined for unknown pattern', () => {
155
+ const latest = manager.getLatestVersion('unknown');
156
+ expect(latest).toBeUndefined();
157
+ });
158
+ });
159
+ describe('compareVersions', () => {
160
+ it('should compare two versions', () => {
161
+ const patternId = 'PAT-001';
162
+ const v1 = manager.recordVersion(createPattern(patternId, 1));
163
+ const v2 = manager.recordVersion(createPattern(patternId, 2));
164
+ const diff = manager.compareVersions(patternId, v1, v2);
165
+ expect(diff).toBeDefined();
166
+ expect(diff.changes).toBeDefined();
167
+ });
168
+ it('should detect no changes for same version', () => {
169
+ const patternId = 'PAT-001';
170
+ const v1 = manager.recordVersion(createPattern(patternId, 1));
171
+ const diff = manager.compareVersions(patternId, v1, v1);
172
+ expect(diff.changes).toHaveLength(0);
173
+ });
174
+ });
175
+ describe('Version Limits', () => {
176
+ it('should respect max versions per pattern', () => {
177
+ const customManager = createPatternVersionManager({
178
+ maxVersionsPerPattern: 3,
179
+ autoCleanup: true,
180
+ });
181
+ const patternId = 'PAT-001';
182
+ for (let i = 1; i <= 5; i++) {
183
+ customManager.recordVersion(createPattern(patternId, i));
184
+ }
185
+ const history = customManager.getHistory(patternId);
186
+ expect(history.length).toBeLessThanOrEqual(3);
187
+ });
188
+ });
189
+ describe('Statistics', () => {
190
+ it('should track version statistics', () => {
191
+ manager.recordVersion(createPattern('PAT-001', 1));
192
+ manager.recordVersion(createPattern('PAT-001', 2));
193
+ manager.recordVersion(createPattern('PAT-002', 1));
194
+ const stats = manager.getStatistics();
195
+ expect(stats.totalVersions).toBe(3);
196
+ expect(stats.totalPatterns).toBe(2);
197
+ });
198
+ });
199
+ describe('Serialization', () => {
200
+ it('should serialize to JSON', () => {
201
+ manager.recordVersion(createPattern('PAT-001', 1));
202
+ manager.recordVersion(createPattern('PAT-001', 2));
203
+ const json = manager.toJSON();
204
+ expect(typeof json).toBe('string');
205
+ const parsed = JSON.parse(json);
206
+ expect(parsed.patterns).toBeDefined();
207
+ });
208
+ it('should deserialize from JSON', () => {
209
+ manager.recordVersion(createPattern('PAT-001', 1));
210
+ const json = manager.toJSON();
211
+ const newManager = createPatternVersionManager();
212
+ newManager.fromJSON(json);
213
+ const history = newManager.getHistory('PAT-001');
214
+ expect(history.length).toBe(1);
215
+ });
216
+ });
217
+ });
218
+ //# sourceMappingURL=PatternVersionManager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatternVersionManager.test.js","sourceRoot":"","sources":["../../../src/library/__tests__/PatternVersionManager.test.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,8 @@ export type { Consolidator } from './Consolidator.js';
7
7
  export { createConsolidator } from './Consolidator.js';
8
8
  export type { Pruner } from './Pruner.js';
9
9
  export { createPruner } from './Pruner.js';
10
+ export { createIterativeCompressor, DefaultIterativeCompressor, } from './IterativeCompressor.js';
11
+ export type { IterativeCompressor, IterativeCompressorConfig, CompressionReport, MergedGroup, CompressionStatistics, } from './IterativeCompressor.js';
12
+ export { createPatternVersionManager, DefaultPatternVersionManager, } from './PatternVersionManager.js';
13
+ export type { PatternVersionManager, PatternVersionManagerConfig, VersionMetadata, VersionEntry, VersionDiff, VersionChange, VersionStatistics, } from './PatternVersionManager.js';
10
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/library/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/library/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,WAAW,EACX,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,qBAAqB,EACrB,2BAA2B,EAC3B,eAAe,EACf,YAAY,EACZ,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,4BAA4B,CAAC"}
@@ -4,4 +4,8 @@
4
4
  export { createLibraryStore } from './LibraryStore.js';
5
5
  export { createConsolidator } from './Consolidator.js';
6
6
  export { createPruner } from './Pruner.js';
7
+ // IterativeCompressor (v2.2.0 NEW!)
8
+ export { createIterativeCompressor, DefaultIterativeCompressor, } from './IterativeCompressor.js';
9
+ // PatternVersionManager (v2.2.0 NEW!)
10
+ export { createPatternVersionManager, DefaultPatternVersionManager, } from './PatternVersionManager.js';
7
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/library/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/library/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,oCAAoC;AACpC,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AASlC,sCAAsC;AACtC,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * MetricsExporter
3
+ *
4
+ * Pattern library metrics export in JSON/Markdown format
5
+ *
6
+ * @packageDocumentation
7
+ * @module library-learner/metrics
8
+ *
9
+ * @see TSK-LL-108 - MetricsExporter実装
10
+ * @see REQ-LL-108 - メトリクスエクスポート要件
11
+ */
12
+ /**
13
+ * Pattern usage information
14
+ */
15
+ export interface PatternUsageInfo {
16
+ count: number;
17
+ lastUsed: Date;
18
+ }
19
+ /**
20
+ * Library metrics data
21
+ */
22
+ export interface LibraryMetrics {
23
+ totalPatterns: number;
24
+ activePatterns: number;
25
+ patternUsage: Record<string, PatternUsageInfo>;
26
+ compressionRate: number;
27
+ searchReductionRate: number;
28
+ hierarchyDepth: number;
29
+ abstractionLevels: string[];
30
+ lastUpdated: Date;
31
+ }
32
+ /**
33
+ * Formatted metrics with human-readable values
34
+ */
35
+ export interface FormattedMetrics {
36
+ compressionRateFormatted: string;
37
+ searchReductionRateFormatted: string;
38
+ utilizationRate: string;
39
+ topPatterns: Array<{
40
+ id: string;
41
+ count: number;
42
+ lastUsed: Date;
43
+ }>;
44
+ }
45
+ /**
46
+ * Metrics summary with health status
47
+ */
48
+ export interface MetricsSummary {
49
+ totalPatterns: number;
50
+ activePatterns: number;
51
+ compressionRate: number;
52
+ searchReductionRate: number;
53
+ health: 'good' | 'warning' | 'poor';
54
+ }
55
+ /**
56
+ * Library state for metrics collection
57
+ */
58
+ export interface LibraryState {
59
+ patterns: Array<{
60
+ id: string;
61
+ usageCount: number;
62
+ }>;
63
+ compressionHistory: number[];
64
+ searchStats: {
65
+ totalPruned: number;
66
+ totalExplored: number;
67
+ };
68
+ }
69
+ /**
70
+ * Export format type
71
+ */
72
+ export type ExportFormat = 'json' | 'markdown';
73
+ /**
74
+ * MetricsExporter interface
75
+ */
76
+ export interface MetricsExporter {
77
+ /**
78
+ * Export metrics in specified format
79
+ */
80
+ export(metrics: LibraryMetrics, format: ExportFormat): string;
81
+ /**
82
+ * Collect metrics from library state
83
+ */
84
+ collectMetrics(state: LibraryState): LibraryMetrics;
85
+ /**
86
+ * Format metrics with human-readable values
87
+ */
88
+ formatMetrics(metrics: LibraryMetrics): FormattedMetrics;
89
+ /**
90
+ * Get summary with health status
91
+ */
92
+ getSummary(metrics: LibraryMetrics): MetricsSummary;
93
+ }
94
+ /**
95
+ * Default MetricsExporter implementation
96
+ */
97
+ declare class DefaultMetricsExporter implements MetricsExporter {
98
+ /**
99
+ * Export metrics in specified format
100
+ */
101
+ export(metrics: LibraryMetrics, format: ExportFormat): string;
102
+ /**
103
+ * Export as JSON
104
+ */
105
+ private exportJson;
106
+ /**
107
+ * Export as Markdown
108
+ */
109
+ private exportMarkdown;
110
+ /**
111
+ * Collect metrics from library state
112
+ */
113
+ collectMetrics(state: LibraryState): LibraryMetrics;
114
+ /**
115
+ * Format metrics with human-readable values
116
+ */
117
+ formatMetrics(metrics: LibraryMetrics): FormattedMetrics;
118
+ /**
119
+ * Get summary with health status
120
+ */
121
+ getSummary(metrics: LibraryMetrics): MetricsSummary;
122
+ }
123
+ /**
124
+ * Create MetricsExporter instance
125
+ */
126
+ export declare function createMetricsExporter(): MetricsExporter;
127
+ export { DefaultMetricsExporter };
128
+ //# sourceMappingURL=MetricsExporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricsExporter.d.ts","sourceRoot":"","sources":["../../src/metrics/MetricsExporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,IAAI,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC/C,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB,EAAE,MAAM,CAAC;IACjC,4BAA4B,EAAE,MAAM,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC;IAE9D;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,cAAc,CAAC;IAEpD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,gBAAgB,CAAC;IAEzD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,CAAC;CACrD;AAED;;GAEG;AACH,cAAM,sBAAuB,YAAW,eAAe;IACrD;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM;IAW7D;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAyCtB;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,cAAc;IAkCnD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,gBAAgB;IAiBxD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc;CAmBpD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * MetricsExporter
3
+ *
4
+ * Pattern library metrics export in JSON/Markdown format
5
+ *
6
+ * @packageDocumentation
7
+ * @module library-learner/metrics
8
+ *
9
+ * @see TSK-LL-108 - MetricsExporter実装
10
+ * @see REQ-LL-108 - メトリクスエクスポート要件
11
+ */
12
+ /**
13
+ * Default MetricsExporter implementation
14
+ */
15
+ class DefaultMetricsExporter {
16
+ /**
17
+ * Export metrics in specified format
18
+ */
19
+ export(metrics, format) {
20
+ if (format !== 'json' && format !== 'markdown') {
21
+ throw new Error(`Invalid export format: ${format}. Use 'json' or 'markdown'.`);
22
+ }
23
+ if (format === 'json') {
24
+ return this.exportJson(metrics);
25
+ }
26
+ return this.exportMarkdown(metrics);
27
+ }
28
+ /**
29
+ * Export as JSON
30
+ */
31
+ exportJson(metrics) {
32
+ return JSON.stringify(metrics, (_key, value) => {
33
+ if (value instanceof Date) {
34
+ return value.toISOString();
35
+ }
36
+ return value;
37
+ }, 2);
38
+ }
39
+ /**
40
+ * Export as Markdown
41
+ */
42
+ exportMarkdown(metrics) {
43
+ const formatted = this.formatMetrics(metrics);
44
+ const summary = this.getSummary(metrics);
45
+ const lines = [
46
+ '# Pattern Library Metrics',
47
+ '',
48
+ `> Generated: ${metrics.lastUpdated.toISOString()}`,
49
+ '',
50
+ '## Summary',
51
+ '',
52
+ '| Metric | Value |',
53
+ '|--------|-------|',
54
+ `| Total Patterns | ${metrics.totalPatterns} |`,
55
+ `| Active Patterns | ${metrics.activePatterns} |`,
56
+ `| Utilization Rate | ${formatted.utilizationRate} |`,
57
+ `| Compression Rate | ${formatted.compressionRateFormatted} |`,
58
+ `| Search Reduction | ${formatted.searchReductionRateFormatted} |`,
59
+ `| Hierarchy Depth | ${metrics.hierarchyDepth} |`,
60
+ `| Health Status | ${summary.health} |`,
61
+ '',
62
+ '## Top Patterns by Usage',
63
+ '',
64
+ '| Pattern ID | Usage Count | Last Used |',
65
+ '|------------|-------------|-----------|',
66
+ ];
67
+ for (const pattern of formatted.topPatterns.slice(0, 10)) {
68
+ lines.push(`| ${pattern.id} | ${pattern.count} | ${pattern.lastUsed.toISOString().split('T')[0]} |`);
69
+ }
70
+ lines.push('');
71
+ lines.push('## Hierarchy Levels');
72
+ lines.push('');
73
+ for (let i = 0; i < metrics.abstractionLevels.length; i++) {
74
+ lines.push(`${i + 1}. ${metrics.abstractionLevels[i]}`);
75
+ }
76
+ return lines.join('\n');
77
+ }
78
+ /**
79
+ * Collect metrics from library state
80
+ */
81
+ collectMetrics(state) {
82
+ const patternUsage = {};
83
+ let activeCount = 0;
84
+ for (const pattern of state.patterns) {
85
+ patternUsage[pattern.id] = {
86
+ count: pattern.usageCount,
87
+ lastUsed: new Date(),
88
+ };
89
+ if (pattern.usageCount > 0) {
90
+ activeCount++;
91
+ }
92
+ }
93
+ const compressionRate = state.compressionHistory.length > 0
94
+ ? state.compressionHistory[state.compressionHistory.length - 1]
95
+ : 0;
96
+ const searchReductionRate = state.searchStats.totalExplored > 0
97
+ ? state.searchStats.totalPruned / state.searchStats.totalExplored
98
+ : 0;
99
+ return {
100
+ totalPatterns: state.patterns.length,
101
+ activePatterns: activeCount,
102
+ patternUsage,
103
+ compressionRate,
104
+ searchReductionRate,
105
+ hierarchyDepth: 1,
106
+ abstractionLevels: ['concrete'],
107
+ lastUpdated: new Date(),
108
+ };
109
+ }
110
+ /**
111
+ * Format metrics with human-readable values
112
+ */
113
+ formatMetrics(metrics) {
114
+ const utilizationRate = metrics.totalPatterns > 0
115
+ ? (metrics.activePatterns / metrics.totalPatterns) * 100
116
+ : 0;
117
+ const topPatterns = Object.entries(metrics.patternUsage)
118
+ .map(([id, info]) => ({ id, count: info.count, lastUsed: info.lastUsed }))
119
+ .sort((a, b) => b.count - a.count);
120
+ return {
121
+ compressionRateFormatted: `${(metrics.compressionRate * 100).toFixed(1)}%`,
122
+ searchReductionRateFormatted: `${(metrics.searchReductionRate * 100).toFixed(1)}%`,
123
+ utilizationRate: `${utilizationRate.toFixed(1)}%`,
124
+ topPatterns,
125
+ };
126
+ }
127
+ /**
128
+ * Get summary with health status
129
+ */
130
+ getSummary(metrics) {
131
+ let health;
132
+ if (metrics.compressionRate >= 0.2 && metrics.searchReductionRate >= 0.7) {
133
+ health = 'good';
134
+ }
135
+ else if (metrics.compressionRate >= 0.1 && metrics.searchReductionRate >= 0.5) {
136
+ health = 'warning';
137
+ }
138
+ else {
139
+ health = 'poor';
140
+ }
141
+ return {
142
+ totalPatterns: metrics.totalPatterns,
143
+ activePatterns: metrics.activePatterns,
144
+ compressionRate: metrics.compressionRate,
145
+ searchReductionRate: metrics.searchReductionRate,
146
+ health,
147
+ };
148
+ }
149
+ }
150
+ /**
151
+ * Create MetricsExporter instance
152
+ */
153
+ export function createMetricsExporter() {
154
+ return new DefaultMetricsExporter();
155
+ }
156
+ export { DefaultMetricsExporter };
157
+ //# sourceMappingURL=MetricsExporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricsExporter.js","sourceRoot":"","sources":["../../src/metrics/MetricsExporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Metrics Module
3
+ *
4
+ * @packageDocumentation
5
+ * @module library-learner/metrics
6
+ */
7
+ export { createMetricsExporter, DefaultMetricsExporter, } from './MetricsExporter.js';
8
+ export type { MetricsExporter, LibraryMetrics, FormattedMetrics, MetricsSummary, LibraryState, PatternUsageInfo, ExportFormat, } from './MetricsExporter.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/metrics/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,YAAY,GACb,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Metrics Module
3
+ *
4
+ * @packageDocumentation
5
+ * @module library-learner/metrics
6
+ */
7
+ export { createMetricsExporter, DefaultMetricsExporter, } from './MetricsExporter.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metrics/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC"}