memento-mcp-server 1.12.0 → 1.13.0-b
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/algorithms/forgetting-algorithm.d.ts +21 -13
- package/dist/algorithms/forgetting-algorithm.d.ts.map +1 -1
- package/dist/algorithms/forgetting-algorithm.js +32 -24
- package/dist/algorithms/forgetting-algorithm.js.map +1 -1
- package/dist/algorithms/hybrid-search-engine.d.ts +11 -9
- package/dist/algorithms/hybrid-search-engine.d.ts.map +1 -1
- package/dist/algorithms/hybrid-search-engine.js +77 -75
- package/dist/algorithms/hybrid-search-engine.js.map +1 -1
- package/dist/algorithms/search-engine.d.ts +33 -11
- package/dist/algorithms/search-engine.d.ts.map +1 -1
- package/dist/algorithms/search-engine.js +157 -62
- package/dist/algorithms/search-engine.js.map +1 -1
- package/dist/algorithms/search-ranking.d.ts +57 -50
- package/dist/algorithms/search-ranking.d.ts.map +1 -1
- package/dist/algorithms/search-ranking.js +91 -84
- package/dist/algorithms/search-ranking.js.map +1 -1
- package/dist/algorithms/spaced-repetition.d.ts +18 -13
- package/dist/algorithms/spaced-repetition.d.ts.map +1 -1
- package/dist/algorithms/spaced-repetition.js +28 -23
- package/dist/algorithms/spaced-repetition.js.map +1 -1
- package/dist/algorithms/vector-search-engine-migration.d.ts +8 -6
- package/dist/algorithms/vector-search-engine-migration.d.ts.map +1 -1
- package/dist/algorithms/vector-search-engine-migration.js +13 -11
- package/dist/algorithms/vector-search-engine-migration.js.map +1 -1
- package/dist/algorithms/vector-search-engine-refactored.d.ts +7 -7
- package/dist/algorithms/vector-search-engine-refactored.d.ts.map +1 -1
- package/dist/algorithms/vector-search-engine-refactored.js +7 -7
- package/dist/algorithms/vector-search-engine-refactored.js.map +1 -1
- package/dist/algorithms/vector-search-engine.d.ts +25 -20
- package/dist/algorithms/vector-search-engine.d.ts.map +1 -1
- package/dist/algorithms/vector-search-engine.js +47 -43
- package/dist/algorithms/vector-search-engine.js.map +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +4 -1
- package/dist/config/index.js.map +1 -1
- package/dist/database/init.d.ts.map +1 -1
- package/dist/database/init.js +24 -4
- package/dist/database/init.js.map +1 -1
- package/dist/database/migration/migrations/006-fts5-reflection-notes-migration-status.sql +30 -0
- package/dist/database/migration/migrations/006-fts5-reflection-notes.d.ts +113 -0
- package/dist/database/migration/migrations/006-fts5-reflection-notes.d.ts.map +1 -0
- package/dist/database/migration/migrations/006-fts5-reflection-notes.js +441 -0
- package/dist/database/migration/migrations/006-fts5-reflection-notes.js.map +1 -0
- package/dist/database/migration/migrations/006-fts5-reflection-notes.sql +26 -0
- package/dist/database/schema.sql +11 -9
- package/dist/server/bootstrap.d.ts +4 -0
- package/dist/server/bootstrap.d.ts.map +1 -1
- package/dist/server/bootstrap.js +11 -1
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/context.js +3 -1
- package/dist/server/context.js.map +1 -1
- package/dist/server/http-server.d.ts.map +1 -1
- package/dist/server/http-server.js +2 -1
- package/dist/server/http-server.js.map +1 -1
- package/dist/server/index.js +3 -1
- package/dist/server/index.js.map +1 -1
- package/dist/services/async-optimizer.d.ts +2 -1
- package/dist/services/async-optimizer.d.ts.map +1 -1
- package/dist/services/async-optimizer.js +28 -1
- package/dist/services/async-optimizer.js.map +1 -1
- package/dist/services/batch-scheduler.d.ts +5 -1
- package/dist/services/batch-scheduler.d.ts.map +1 -1
- package/dist/services/batch-scheduler.js +13 -1
- package/dist/services/batch-scheduler.js.map +1 -1
- package/dist/services/cache-service.js +1 -1
- package/dist/services/cache-service.js.map +1 -1
- package/dist/services/failure-detector.d.ts +120 -0
- package/dist/services/failure-detector.d.ts.map +1 -0
- package/dist/services/failure-detector.js +370 -0
- package/dist/services/failure-detector.js.map +1 -0
- package/dist/services/llm-based-relation-extractor.js +1 -1
- package/dist/services/llm-based-relation-extractor.js.map +1 -1
- package/dist/services/reflexion-worker.d.ts +170 -0
- package/dist/services/reflexion-worker.d.ts.map +1 -0
- package/dist/services/reflexion-worker.js +636 -0
- package/dist/services/reflexion-worker.js.map +1 -0
- package/dist/services/relation-graph.d.ts +2 -2
- package/dist/services/relation-graph.js +3 -3
- package/dist/services/relation-graph.js.map +1 -1
- package/dist/tools/base-tool.d.ts +5 -0
- package/dist/tools/base-tool.d.ts.map +1 -1
- package/dist/tools/base-tool.js +39 -0
- package/dist/tools/base-tool.js.map +1 -1
- package/dist/tools/recall-tool.d.ts.map +1 -1
- package/dist/tools/recall-tool.js +36 -2
- package/dist/tools/recall-tool.js.map +1 -1
- package/dist/tools/remember-tool.d.ts +24 -0
- package/dist/tools/remember-tool.d.ts.map +1 -1
- package/dist/tools/remember-tool.js +445 -273
- package/dist/tools/remember-tool.js.map +1 -1
- package/dist/tools/types.d.ts +5 -1
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/database.d.ts.map +1 -1
- package/dist/utils/database.js +34 -10
- package/dist/utils/database.js.map +1 -1
- package/dist/utils/fts5-migration-status.d.ts +72 -0
- package/dist/utils/fts5-migration-status.d.ts.map +1 -0
- package/dist/utils/fts5-migration-status.js +304 -0
- package/dist/utils/fts5-migration-status.js.map +1 -0
- package/dist/utils/reflection-notes-merge.d.ts +58 -0
- package/dist/utils/reflection-notes-merge.d.ts.map +1 -0
- package/dist/utils/reflection-notes-merge.js +227 -0
- package/dist/utils/reflection-notes-merge.js.map +1 -0
- package/dist/utils/reflection-notes-normalize.d.ts +43 -0
- package/dist/utils/reflection-notes-normalize.d.ts.map +1 -0
- package/dist/utils/reflection-notes-normalize.js +164 -0
- package/dist/utils/reflection-notes-normalize.js.map +1 -0
- package/dist/utils/reflection-notes-schema.d.ts +84 -0
- package/dist/utils/reflection-notes-schema.d.ts.map +1 -0
- package/dist/utils/reflection-notes-schema.js +215 -0
- package/dist/utils/reflection-notes-schema.js.map +1 -0
- package/package.json +3 -1
- package/src/database/schema.sql +11 -9
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 검색
|
|
3
|
-
* Memento-Goals.md
|
|
2
|
+
* 검색 결과의 관련성을 정량적으로 평가하여 사용자에게 가장 유용한 결과를 우선 제공합니다.
|
|
3
|
+
* Memento-Goals.md에 정의된 검증된 랭킹 공식을 구현하여 일관되고 신뢰할 수 있는 검색 품질을 보장합니다.
|
|
4
4
|
*/
|
|
5
5
|
export class SearchRanking {
|
|
6
6
|
weights;
|
|
@@ -16,12 +16,11 @@ export class SearchRanking {
|
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
19
|
+
* 단일 지표만으로는 검색 결과의 품질을 정확히 평가할 수 없으므로, 여러 지표를 가중 평균하여 종합적인 평가를 수행합니다.
|
|
20
|
+
* 관련성, 최근성, 중요도, 사용성, 관계 가중치를 결합하고 중복 패널티를 적용하여 사용자에게 가장 유용한 결과를 우선 제공합니다.
|
|
21
21
|
*
|
|
22
|
-
* Consolidation Score가
|
|
23
|
-
*
|
|
24
|
-
* (기존 공식과 별도로 계산하여 통합)
|
|
22
|
+
* Consolidation Score가 제공되면 벡터 유사도와 통합 점수를 결합하여 더 정교한 평가를 수행합니다.
|
|
23
|
+
* 기존 공식과 별도로 계산하여 통합함으로써 점진적 기능 확장을 가능하게 합니다.
|
|
25
24
|
*/
|
|
26
25
|
calculateFinalScore(features) {
|
|
27
26
|
const baseScore = this.weights.relevance * features.relevance +
|
|
@@ -30,24 +29,22 @@ export class SearchRanking {
|
|
|
30
29
|
this.weights.usage * features.usage +
|
|
31
30
|
(this.weights.relation_weight * (features.relation_weight || 0)) -
|
|
32
31
|
this.weights.duplication_penalty * features.duplication_penalty;
|
|
33
|
-
//
|
|
32
|
+
// 통합 점수 기능이 활성화된 경우 추가적인 관련성 지표를 활용하여 검색 품질을 향상시킵니다.
|
|
34
33
|
if (features.consolidation_score !== undefined && this.weights.consolidation_score !== undefined) {
|
|
35
|
-
//
|
|
34
|
+
// 통합 점수의 영향력을 제한하여 벡터 유사도의 중요성을 보장합니다.
|
|
36
35
|
const w2 = Math.min(this.weights.consolidation_score, 0.4);
|
|
37
|
-
const w1 = 1 - w2; //
|
|
38
|
-
//
|
|
36
|
+
const w1 = 1 - w2; // 가중치의 합이 1이 되도록 보장하여 점수 범위의 일관성을 유지합니다.
|
|
37
|
+
// 벡터 유사도를 텍스트 관련성과 동일한 의미로 해석하여 일관된 점수 계산을 수행합니다.
|
|
39
38
|
const vectorSimilarity = features.relevance;
|
|
40
39
|
const consolidationScore = features.consolidation_score;
|
|
41
|
-
//
|
|
40
|
+
// 가중 평균을 통해 벡터 유사도와 통합 점수를 균형있게 결합하여 최종 점수를 계산합니다.
|
|
42
41
|
return w1 * vectorSimilarity + w2 * consolidationScore;
|
|
43
42
|
}
|
|
44
43
|
return baseScore;
|
|
45
44
|
}
|
|
46
45
|
/**
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* @param profile 검색 프로파일 ('recent', 'balanced', 'memory')
|
|
50
|
-
* @returns Consolidation Score 가중치 설정
|
|
46
|
+
* 사용자의 검색 목적에 맞는 가중치를 제공하여 최적의 검색 결과를 제공합니다.
|
|
47
|
+
* 최근 정보를 우선하는 경우, 균형잡힌 검색, 장기 기억 중심 검색 등 다양한 시나리오를 지원합니다.
|
|
51
48
|
*/
|
|
52
49
|
getConsolidationScoreWeights(profile = 'balanced') {
|
|
53
50
|
switch (profile) {
|
|
@@ -56,55 +53,52 @@ export class SearchRanking {
|
|
|
56
53
|
case 'balanced':
|
|
57
54
|
return { vectorSimilarity: 0.8, consolidationScore: 0.2 };
|
|
58
55
|
case 'memory':
|
|
59
|
-
return { vectorSimilarity: 0.7, consolidationScore: 0.3 }; // 상한 0.4
|
|
56
|
+
return { vectorSimilarity: 0.7, consolidationScore: 0.3 }; // 상한 0.4가 적용되어 벡터 유사도의 최소 비율을 보장합니다.
|
|
60
57
|
default:
|
|
61
58
|
return { vectorSimilarity: 0.8, consolidationScore: 0.2 };
|
|
62
59
|
}
|
|
63
60
|
}
|
|
64
61
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* @param vectorSimilarity 벡터 유사도 (0-1)
|
|
68
|
-
* @param consolidationScore Consolidation Score (0-1)
|
|
69
|
-
* @param profile 검색 프로파일 (기본값: 'balanced')
|
|
70
|
-
* @returns 최종 점수 (0-1)
|
|
62
|
+
* 벡터 유사도와 통합 점수를 프로파일에 맞게 결합하여 최종 검색 점수를 계산합니다.
|
|
63
|
+
* 사용자의 검색 목적에 따라 다른 가중치를 적용하여 맞춤형 검색 결과를 제공합니다.
|
|
71
64
|
*/
|
|
72
65
|
calculateFinalScoreWithConsolidation(vectorSimilarity, consolidationScore, profile = 'balanced') {
|
|
73
66
|
const weights = this.getConsolidationScoreWeights(profile);
|
|
74
|
-
//
|
|
67
|
+
// 통합 점수의 영향력을 제한하여 벡터 유사도의 중요성을 보장합니다.
|
|
75
68
|
const w2 = Math.min(weights.consolidationScore, 0.4);
|
|
76
|
-
const w1 = 1 - w2; //
|
|
69
|
+
const w1 = 1 - w2; // 가중치의 합이 1이 되도록 보장하여 점수 범위의 일관성을 유지합니다.
|
|
77
70
|
return w1 * vectorSimilarity + w2 * consolidationScore;
|
|
78
71
|
}
|
|
79
72
|
/**
|
|
80
|
-
* 관련성
|
|
81
|
-
* 임베딩
|
|
73
|
+
* 단일 지표만으로는 검색 관련성을 정확히 평가할 수 없으므로, 다양한 관련성 지표를 가중 평균하여 종합적인 관련성 점수를 계산합니다.
|
|
74
|
+
* 임베딩 유사도, BM25, 태그 매칭, 타이틀 히트를 결합하여 검색 정확도를 향상시킵니다.
|
|
82
75
|
*/
|
|
83
76
|
calculateRelevance(input) {
|
|
84
77
|
const { query, content, title, tags, embeddingSimilarity, bm25Result } = input;
|
|
85
|
-
//
|
|
78
|
+
// 잘못된 입력으로 인한 오류를 방지하고 안정적인 점수 계산을 보장합니다.
|
|
86
79
|
if (!query || !content)
|
|
87
80
|
return 0;
|
|
88
|
-
//
|
|
81
|
+
// 의미적 유사성을 가장 중요하게 평가하여 사용자의 의도와 가장 가까운 결과를 찾습니다.
|
|
89
82
|
const embeddingScore = embeddingSimilarity
|
|
90
83
|
? this.calculateEmbeddingSimilarity(embeddingSimilarity.queryEmbedding, embeddingSimilarity.docEmbedding)
|
|
91
84
|
: 0;
|
|
92
|
-
//
|
|
85
|
+
// 키워드 빈도 기반의 전통적인 검색 알고리즘을 활용하여 정확한 키워드 매칭을 보장합니다.
|
|
93
86
|
const bm25Score = bm25Result
|
|
94
87
|
? this.normalizeBM25(bm25Result.score)
|
|
95
88
|
: this.calculateSimpleBM25(query, content);
|
|
96
|
-
//
|
|
89
|
+
// 사용자가 명시적으로 설정한 태그를 활용하여 메타데이터 기반 관련성을 평가합니다.
|
|
97
90
|
const tagScore = this.calculateTagMatch(query, tags);
|
|
98
|
-
//
|
|
91
|
+
// 문서의 제목이 검색어와 일치하는 경우 높은 관련성을 부여하여 정확한 매칭을 우선 제공합니다.
|
|
99
92
|
const titleScore = title ? this.calculateTitleHit(query, title) : 0;
|
|
100
|
-
//
|
|
93
|
+
// 각 지표의 중요도에 따라 가중 평균을 적용하여 종합적인 관련성 점수를 계산합니다.
|
|
101
94
|
return 0.60 * embeddingScore +
|
|
102
95
|
0.30 * bm25Score +
|
|
103
96
|
0.05 * tagScore +
|
|
104
97
|
0.05 * titleScore;
|
|
105
98
|
}
|
|
106
99
|
/**
|
|
107
|
-
*
|
|
100
|
+
* 벡터 공간에서의 의미적 유사성을 정량화하여 검색 정확도를 향상시킵니다.
|
|
101
|
+
* 코사인 유사도를 사용하여 벡터의 방향성을 비교하고 크기 차이의 영향을 제거합니다.
|
|
108
102
|
*/
|
|
109
103
|
calculateEmbeddingSimilarity(queryEmbedding, docEmbedding) {
|
|
110
104
|
if (queryEmbedding.length !== docEmbedding.length)
|
|
@@ -115,25 +109,26 @@ export class SearchRanking {
|
|
|
115
109
|
if (magnitudeA === 0 || magnitudeB === 0)
|
|
116
110
|
return 0;
|
|
117
111
|
const cosine = dotProduct / (magnitudeA * magnitudeB);
|
|
118
|
-
return Math.max(0, cosine); // 음수
|
|
112
|
+
return Math.max(0, cosine); // 음수 유사도를 0으로 제한하여 점수 범위의 일관성을 유지합니다.
|
|
119
113
|
}
|
|
120
114
|
/**
|
|
121
|
-
* BM25 점수
|
|
115
|
+
* BM25 점수를 0-1 범위로 정규화하여 다른 점수 지표와 일관된 비교가 가능하도록 합니다.
|
|
122
116
|
*/
|
|
123
117
|
normalizeBM25(bm25Score, kNorm = 2.0) {
|
|
124
118
|
return bm25Score / (bm25Score + kNorm);
|
|
125
119
|
}
|
|
126
120
|
/**
|
|
127
|
-
*
|
|
121
|
+
* 외부 BM25 라이브러리가 없는 경우에도 기본적인 키워드 빈도 기반 검색을 제공합니다.
|
|
122
|
+
* 간소화된 BM25 알고리즘을 구현하여 검색 기능의 안정성을 보장합니다.
|
|
128
123
|
*/
|
|
129
124
|
calculateSimpleBM25(query, content) {
|
|
130
|
-
//
|
|
125
|
+
// 잘못된 입력으로 인한 오류를 방지하고 안정적인 점수 계산을 보장합니다.
|
|
131
126
|
if (!query || !content)
|
|
132
127
|
return 0;
|
|
133
128
|
const queryTerms = query.toLowerCase().split(/\s+/);
|
|
134
129
|
const contentTerms = content.toLowerCase().split(/\s+/);
|
|
135
130
|
const termFreq = new Map();
|
|
136
|
-
//
|
|
131
|
+
// 문서 내 각 용어의 출현 빈도를 계산하여 키워드 매칭 점수를 산출합니다.
|
|
137
132
|
for (const term of contentTerms) {
|
|
138
133
|
termFreq.set(term, (termFreq.get(term) || 0) + 1);
|
|
139
134
|
}
|
|
@@ -141,19 +136,20 @@ export class SearchRanking {
|
|
|
141
136
|
const k1 = 1.2;
|
|
142
137
|
const b = 0.75;
|
|
143
138
|
const docLength = contentTerms.length;
|
|
144
|
-
const avgDocLength = 100; //
|
|
139
|
+
const avgDocLength = 100; // 문서 길이 정규화를 위한 평균값을 사용하여 긴 문서의 불공정한 우위를 방지합니다.
|
|
145
140
|
for (const term of queryTerms) {
|
|
146
141
|
const tf = termFreq.get(term) || 0;
|
|
147
142
|
if (tf > 0) {
|
|
148
|
-
const idf = Math.log(2); // 간단한 IDF (
|
|
143
|
+
const idf = Math.log(2); // 간단한 IDF를 사용하여 희귀 용어에 더 높은 가중치를 부여합니다. (실제 구현에서는 전체 문서 수가 필요)
|
|
149
144
|
const normalizedTf = (tf * (k1 + 1)) / (tf + k1 * (1 - b + b * (docLength / avgDocLength)));
|
|
150
145
|
score += idf * normalizedTf;
|
|
151
146
|
}
|
|
152
147
|
}
|
|
153
|
-
return Math.min(1.0, score / 10); //
|
|
148
|
+
return Math.min(1.0, score / 10); // 점수를 0-1 범위로 정규화하여 다른 지표와 일관된 비교가 가능하도록 합니다.
|
|
154
149
|
}
|
|
155
150
|
/**
|
|
156
|
-
* 태그
|
|
151
|
+
* 검색어와 태그 간의 집합 유사도를 계산하여 메타데이터 기반 관련성을 평가합니다.
|
|
152
|
+
* 자카드 유사도를 사용하여 교집합과 합집합의 비율로 관련성을 정량화합니다.
|
|
157
153
|
*/
|
|
158
154
|
calculateTagMatch(query, tags) {
|
|
159
155
|
if (tags.length === 0)
|
|
@@ -165,25 +161,27 @@ export class SearchRanking {
|
|
|
165
161
|
return union.size > 0 ? intersection.size / union.size : 0;
|
|
166
162
|
}
|
|
167
163
|
/**
|
|
168
|
-
*
|
|
164
|
+
* 문서 제목이 검색어와 일치하는 정도를 평가하여 정확한 매칭을 우선 제공합니다.
|
|
165
|
+
* 제목은 문서의 핵심 내용을 요약하므로 높은 관련성 지표로 활용합니다.
|
|
169
166
|
*/
|
|
170
167
|
calculateTitleHit(query, title) {
|
|
171
168
|
const queryLower = query.toLowerCase();
|
|
172
169
|
const titleLower = title.toLowerCase();
|
|
173
170
|
let score = 0;
|
|
174
|
-
//
|
|
171
|
+
// 정확한 일치를 최우선으로 평가하여 가장 관련성 높은 결과를 제공합니다.
|
|
175
172
|
if (titleLower === queryLower)
|
|
176
173
|
score += 1.0;
|
|
177
|
-
//
|
|
174
|
+
// 부분 일치도 일정한 관련성을 인정하여 유연한 검색을 지원합니다.
|
|
178
175
|
else if (titleLower.startsWith(queryLower))
|
|
179
176
|
score += 0.5;
|
|
180
|
-
// N-gram
|
|
177
|
+
// N-gram 기반 유사 매칭을 통해 오타나 변형된 검색어도 처리합니다.
|
|
181
178
|
else if (this.hasNgramMatch(queryLower, titleLower))
|
|
182
179
|
score += 0.2;
|
|
183
180
|
return Math.min(1.0, score);
|
|
184
181
|
}
|
|
185
182
|
/**
|
|
186
|
-
*
|
|
183
|
+
* 연속된 문자 시퀀스의 일치 여부를 확인하여 부분 문자열 매칭을 지원합니다.
|
|
184
|
+
* 오타나 변형된 검색어에 대해서도 관련 결과를 찾을 수 있도록 합니다.
|
|
187
185
|
*/
|
|
188
186
|
hasNgramMatch(query, text, n = 3) {
|
|
189
187
|
if (query.length < n || text.length < n)
|
|
@@ -197,7 +195,8 @@ export class SearchRanking {
|
|
|
197
195
|
return false;
|
|
198
196
|
}
|
|
199
197
|
/**
|
|
200
|
-
* N
|
|
198
|
+
* 텍스트를 연속된 N개의 문자로 분할하여 부분 문자열 매칭을 수행합니다.
|
|
199
|
+
* 다양한 길이의 N-gram을 생성하여 유연한 패턴 매칭을 지원합니다.
|
|
201
200
|
*/
|
|
202
201
|
generateNgrams(text, n) {
|
|
203
202
|
const ngrams = new Set();
|
|
@@ -207,20 +206,21 @@ export class SearchRanking {
|
|
|
207
206
|
return ngrams;
|
|
208
207
|
}
|
|
209
208
|
/**
|
|
210
|
-
*
|
|
209
|
+
* 두 벡터의 내적을 계산하여 방향성 유사성을 측정합니다.
|
|
210
|
+
* 코사인 유사도 계산의 기초가 되는 연산을 수행합니다.
|
|
211
211
|
*/
|
|
212
212
|
dotProduct(a, b) {
|
|
213
213
|
return a.reduce((sum, val, i) => sum + val * (b[i] || 0), 0);
|
|
214
214
|
}
|
|
215
215
|
/**
|
|
216
|
-
* 벡터
|
|
216
|
+
* 벡터의 유클리드 노름을 계산하여 코사인 유사도 계산에 필요한 벡터 크기를 구합니다.
|
|
217
217
|
*/
|
|
218
218
|
magnitude(vector) {
|
|
219
219
|
return Math.sqrt(vector.reduce((sum, val) => sum + val * val, 0));
|
|
220
220
|
}
|
|
221
221
|
/**
|
|
222
|
-
*
|
|
223
|
-
* 반감기 기반 지수
|
|
222
|
+
* 시간에 따른 기억의 자연스러운 감쇠를 반영하여 최신 정보를 우선 제공합니다.
|
|
223
|
+
* 반감기 기반 지수 감쇠를 사용하여 시간이 지날수록 점수가 감소하도록 설계했습니다.
|
|
224
224
|
*/
|
|
225
225
|
calculateRecency(createdAt, type) {
|
|
226
226
|
const ageDays = this.getAgeInDays(createdAt);
|
|
@@ -228,7 +228,8 @@ export class SearchRanking {
|
|
|
228
228
|
return Math.exp(-Math.log(2) * ageDays / halfLife);
|
|
229
229
|
}
|
|
230
230
|
/**
|
|
231
|
-
*
|
|
231
|
+
* 사용자가 명시적으로 설정한 중요도와 고정 여부를 반영하여 우선순위를 결정합니다.
|
|
232
|
+
* 메모리 타입에 따른 기본 중요도를 적용하여 일관된 점수 체계를 유지합니다.
|
|
232
233
|
*/
|
|
233
234
|
calculateImportance(userImportance, isPinned, type) {
|
|
234
235
|
const pinnedBoost = isPinned ? 0.2 : 0;
|
|
@@ -236,31 +237,33 @@ export class SearchRanking {
|
|
|
236
237
|
return Math.max(0, Math.min(1, userImportance + pinnedBoost + typeBoost));
|
|
237
238
|
}
|
|
238
239
|
/**
|
|
239
|
-
*
|
|
240
|
-
*
|
|
240
|
+
* 실제 사용 빈도를 반영하여 자주 참조되는 기억을 우선 제공합니다.
|
|
241
|
+
* 로그 스케일을 사용하여 과도한 사용 빈도가 점수를 지배하지 않도록 균형을 맞춥니다.
|
|
242
|
+
* 인용과 편집에 다른 가중치를 부여하여 사용 패턴의 차이를 반영합니다.
|
|
241
243
|
*/
|
|
242
244
|
calculateUsage(metrics, batchMin, batchMax) {
|
|
243
|
-
//
|
|
245
|
+
// 잘못된 입력으로 인한 오류를 방지하고 안정적인 점수 계산을 보장합니다.
|
|
244
246
|
if (!metrics)
|
|
245
247
|
return 0;
|
|
246
248
|
const { viewCount, citeCount, editCount } = metrics;
|
|
247
|
-
// 로그
|
|
249
|
+
// 로그 스케일을 사용하여 사용 빈도의 차이를 완화하고 균형잡힌 점수 분포를 생성합니다.
|
|
248
250
|
const rawUsage = Math.log(1 + viewCount) +
|
|
249
251
|
2 * Math.log(1 + citeCount) +
|
|
250
252
|
0.5 * Math.log(1 + editCount);
|
|
251
|
-
//
|
|
253
|
+
// 사용 기록이 없는 경우에도 기본 점수를 부여하여 완전히 배제되지 않도록 합니다.
|
|
252
254
|
if (rawUsage === 0) {
|
|
253
|
-
return 0.1; // 기본 사용성
|
|
255
|
+
return 0.1; // 기본 사용성 점수를 제공하여 새로운 기억도 검색 결과에 포함될 수 있도록 합니다.
|
|
254
256
|
}
|
|
255
|
-
//
|
|
257
|
+
// 전체 배치의 최소/최대값을 기준으로 정규화하여 상대적 사용성을 정확히 반영합니다.
|
|
256
258
|
if (batchMin !== undefined && batchMax !== undefined) {
|
|
257
259
|
return this.normalize(rawUsage, batchMin, batchMax);
|
|
258
260
|
}
|
|
259
|
-
//
|
|
261
|
+
// 배치 정보가 없는 경우 개별적으로 정규화하여 안정적인 점수 범위를 보장합니다.
|
|
260
262
|
return Math.min(1.0, rawUsage / 10);
|
|
261
263
|
}
|
|
262
264
|
/**
|
|
263
|
-
*
|
|
265
|
+
* 여러 메모리의 사용성을 일괄 계산하여 상대적 비교가 가능하도록 합니다.
|
|
266
|
+
* 배치 단위 정규화를 통해 더 정확한 사용성 평가를 수행합니다.
|
|
264
267
|
*/
|
|
265
268
|
calculateBatchUsage(metricsList) {
|
|
266
269
|
const rawUsages = metricsList.map(metrics => {
|
|
@@ -275,15 +278,17 @@ export class SearchRanking {
|
|
|
275
278
|
return { normalized, min, max };
|
|
276
279
|
}
|
|
277
280
|
/**
|
|
278
|
-
*
|
|
281
|
+
* 값을 0-1 범위로 정규화하여 다른 점수 지표와 일관된 비교가 가능하도록 합니다.
|
|
282
|
+
* 최소/최대값이 같은 경우를 처리하여 안정적인 점수 계산을 보장합니다.
|
|
279
283
|
*/
|
|
280
284
|
normalize(value, min, max, epsilon = 1e-6) {
|
|
281
285
|
if (max === min)
|
|
282
|
-
return 0.5; // 모든 값이 같을 때
|
|
286
|
+
return 0.5; // 모든 값이 같을 때 중간값을 반환하여 구분 불가능한 경우를 처리합니다.
|
|
283
287
|
return (value - min) / (max - min + epsilon);
|
|
284
288
|
}
|
|
285
289
|
/**
|
|
286
|
-
* 중복
|
|
290
|
+
* 유사한 내용의 중복 결과를 제거하여 검색 결과의 다양성을 확보합니다.
|
|
291
|
+
* MMR(Maximal Marginal Relevance) 알고리즘을 구현하여 관련성과 다양성의 균형을 맞춥니다.
|
|
287
292
|
*/
|
|
288
293
|
calculateDuplicationPenalty(candidateContent, selectedContents) {
|
|
289
294
|
if (selectedContents.length === 0)
|
|
@@ -296,7 +301,8 @@ export class SearchRanking {
|
|
|
296
301
|
return maxSimilarity;
|
|
297
302
|
}
|
|
298
303
|
/**
|
|
299
|
-
* 텍스트
|
|
304
|
+
* 두 텍스트 간의 집합 유사도를 계산하여 중복 여부를 판단합니다.
|
|
305
|
+
* 자카드 유사도를 사용하여 단어 집합의 교집합과 합집합 비율로 유사성을 정량화합니다.
|
|
300
306
|
*/
|
|
301
307
|
calculateTextSimilarity(text1, text2) {
|
|
302
308
|
const words1 = new Set(text1.toLowerCase().split(/\s+/));
|
|
@@ -306,18 +312,15 @@ export class SearchRanking {
|
|
|
306
312
|
return union.size > 0 ? intersection.size / union.size : 0;
|
|
307
313
|
}
|
|
308
314
|
/**
|
|
309
|
-
* 관계
|
|
310
|
-
* 여러 관계의 confidence와 type_boost를 정규화하여 계산합니다.
|
|
311
|
-
*
|
|
312
|
-
* @param relations 관계 목록 (confidence와 relation_type 포함)
|
|
313
|
-
* @param maxRelations 정규화를 위한 최대 관계 수 (기본값: 5)
|
|
314
|
-
* @returns 정규화된 관계 가중치 (0-1)
|
|
315
|
+
* 관계 그래프의 신뢰도와 관계 유형을 종합하여 관련성 점수에 반영합니다.
|
|
316
|
+
* 여러 관계의 confidence와 type_boost를 정규화하여 일관된 가중치를 계산합니다.
|
|
317
|
+
* 관계의 개수와 유형에 따라 다른 가중치를 적용하여 정확한 관련성 평가를 수행합니다.
|
|
315
318
|
*/
|
|
316
319
|
calculateRelationWeight(relations, maxRelations = 5) {
|
|
317
320
|
if (relations.length === 0) {
|
|
318
321
|
return 0;
|
|
319
322
|
}
|
|
320
|
-
// 관계
|
|
323
|
+
// 관계 유형에 따라 다른 중요도를 부여하여 인과관계나 의존성 같은 중요한 관계를 우선 평가합니다.
|
|
321
324
|
const typeBoostMap = {
|
|
322
325
|
'CAUSES': 1.2,
|
|
323
326
|
'DEPENDS_ON': 1.1,
|
|
@@ -326,22 +329,23 @@ export class SearchRanking {
|
|
|
326
329
|
'REFERENCES': 0.8,
|
|
327
330
|
'BELONGS_TO': 1.0
|
|
328
331
|
};
|
|
329
|
-
//
|
|
332
|
+
// 신뢰도와 관계 유형 부스트를 곱하여 종합적인 관계 가중치를 계산합니다.
|
|
330
333
|
const weightedScores = relations.map(relation => {
|
|
331
334
|
const typeBoost = typeBoostMap[relation.relation_type] || 1.0;
|
|
332
335
|
return relation.confidence * typeBoost;
|
|
333
336
|
});
|
|
334
|
-
//
|
|
337
|
+
// 모든 관계의 가중치를 평균내어 종합적인 관계 점수를 산출합니다.
|
|
335
338
|
const averageScore = weightedScores.reduce((sum, score) => sum + score, 0) / weightedScores.length;
|
|
336
|
-
//
|
|
337
|
-
// 실제 관계 수가
|
|
339
|
+
// 관계 수에 따라 정규화하여 관계가 많은 경우 불공정한 우위를 방지합니다.
|
|
340
|
+
// 실제 관계 수가 최대값보다 적으면 그대로 사용하여 정규화 과소평가를 방지합니다.
|
|
338
341
|
const normalizationFactor = Math.min(relations.length, maxRelations);
|
|
339
342
|
const normalizedScore = averageScore / normalizationFactor;
|
|
340
|
-
// 0-1
|
|
343
|
+
// 점수 범위를 0-1로 제한하여 다른 지표와 일관된 비교가 가능하도록 합니다.
|
|
341
344
|
return Math.max(0, Math.min(1, normalizedScore));
|
|
342
345
|
}
|
|
343
346
|
/**
|
|
344
|
-
*
|
|
347
|
+
* 기존 API와의 호환성을 유지하면서 간단한 관련성 계산을 제공합니다.
|
|
348
|
+
* 임베딩이나 BM25가 없는 경우에도 기본적인 텍스트 매칭을 수행합니다.
|
|
345
349
|
*/
|
|
346
350
|
calculateRelevanceSimple(query, content, tags = []) {
|
|
347
351
|
return this.calculateRelevance({
|
|
@@ -353,7 +357,8 @@ export class SearchRanking {
|
|
|
353
357
|
});
|
|
354
358
|
}
|
|
355
359
|
/**
|
|
356
|
-
*
|
|
360
|
+
* 기존 API와의 호환성을 유지하면서 간단한 사용성 계산을 제공합니다.
|
|
361
|
+
* 마지막 접근 시간만을 사용하여 사용 빈도 데이터가 없는 경우에도 평가가 가능하도록 합니다.
|
|
357
362
|
*/
|
|
358
363
|
calculateUsageSimple(lastAccessed) {
|
|
359
364
|
if (!lastAccessed)
|
|
@@ -362,7 +367,7 @@ export class SearchRanking {
|
|
|
362
367
|
return Math.exp(-daysSinceAccess / 30);
|
|
363
368
|
}
|
|
364
369
|
/**
|
|
365
|
-
*
|
|
370
|
+
* 메모리의 생성 시간으로부터 경과된 일수를 계산하여 최근성 평가에 사용합니다.
|
|
366
371
|
*/
|
|
367
372
|
getAgeInDays(date) {
|
|
368
373
|
const now = new Date();
|
|
@@ -370,7 +375,8 @@ export class SearchRanking {
|
|
|
370
375
|
return diffTime / (1000 * 60 * 60 * 24);
|
|
371
376
|
}
|
|
372
377
|
/**
|
|
373
|
-
* 타입별
|
|
378
|
+
* 메모리 타입에 따라 다른 반감기를 설정하여 타입별 특성에 맞는 감쇠 속도를 적용합니다.
|
|
379
|
+
* working 메모리는 빠르게, semantic 메모리는 천천히 감쇠하도록 설계했습니다.
|
|
374
380
|
*/
|
|
375
381
|
getHalfLife(type) {
|
|
376
382
|
switch (type) {
|
|
@@ -382,7 +388,8 @@ export class SearchRanking {
|
|
|
382
388
|
}
|
|
383
389
|
}
|
|
384
390
|
/**
|
|
385
|
-
* 타입별
|
|
391
|
+
* 메모리 타입에 따라 기본 중요도를 조정하여 타입별 특성을 반영합니다.
|
|
392
|
+
* semantic 메모리는 높은 중요도를, working 메모리는 낮은 중요도를 부여합니다.
|
|
386
393
|
*/
|
|
387
394
|
getTypeBoost(type) {
|
|
388
395
|
switch (type) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-ranking.js","sourceRoot":"","sources":["../../src/algorithms/search-ranking.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search-ranking.js","sourceRoot":"","sources":["../../src/algorithms/search-ranking.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* Memento-Goals.md
|
|
2
|
+
* 학습 효율을 극대화하기 위해 최적의 리뷰 시점을 계산합니다.
|
|
3
|
+
* Memento-Goals.md에 정의된 검증된 간격 반복 공식을 구현하여 과학적 근거에 기반한 학습 스케줄을 제공합니다.
|
|
4
4
|
*/
|
|
5
5
|
export interface SpacedRepetitionFeatures {
|
|
6
6
|
importance: number;
|
|
@@ -27,26 +27,28 @@ export declare class SpacedRepetitionAlgorithm {
|
|
|
27
27
|
private readonly recallThreshold;
|
|
28
28
|
constructor(weights?: Partial<SpacedRepetitionWeights>);
|
|
29
29
|
/**
|
|
30
|
-
* 다음 리뷰
|
|
31
|
-
*
|
|
30
|
+
* 학습자의 성과와 피드백을 반영하여 다음 리뷰 간격을 동적으로 조정합니다.
|
|
31
|
+
* 중요도, 사용성, 긍정적 피드백은 간격을 늘리고, 부정적 피드백은 간격을 줄여 학습 효율을 최적화합니다.
|
|
32
32
|
*/
|
|
33
33
|
calculateNextInterval(currentInterval: number, features: SpacedRepetitionFeatures): number;
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
35
|
+
* 지수 감쇠 모델을 사용하여 시간 경과에 따른 기억 유지 확률을 계산합니다.
|
|
36
|
+
* 마지막 리뷰로부터 경과된 시간과 현재 간격을 비교하여 리콜 가능성을 정량화합니다.
|
|
37
37
|
*/
|
|
38
38
|
calculateRecallProbability(timeSinceLastReview: number, // 일 단위
|
|
39
39
|
interval: number): number;
|
|
40
40
|
/**
|
|
41
|
-
*
|
|
41
|
+
* 계산된 리콜 확률이 임계값 이하인지 확인하여 리뷰가 필요한지 판단합니다.
|
|
42
|
+
* 망각 직전에 복습할 수 있도록 적절한 시점에 리뷰를 권장합니다.
|
|
42
43
|
*/
|
|
43
44
|
needsReview(timeSinceLastReview: number, interval: number, threshold?: number): boolean;
|
|
44
45
|
/**
|
|
45
|
-
* 리뷰
|
|
46
|
+
* 메모리의 특성과 학습 성과를 반영하여 최적의 리뷰 스케줄을 생성합니다.
|
|
47
|
+
* 다음 리뷰 날짜, 간격, 리콜 확률 등을 종합하여 학습 계획을 수립합니다.
|
|
46
48
|
*/
|
|
47
49
|
createReviewSchedule(memoryId: string, currentInterval: number, lastReviewDate: Date, features: SpacedRepetitionFeatures): ReviewSchedule;
|
|
48
50
|
/**
|
|
49
|
-
*
|
|
51
|
+
* 여러 메모리에 대해 일괄적으로 리뷰 스케줄을 생성하여 효율적인 학습 계획을 수립합니다.
|
|
50
52
|
*/
|
|
51
53
|
createBatchReviewSchedules(memories: Array<{
|
|
52
54
|
id: string;
|
|
@@ -58,11 +60,13 @@ export declare class SpacedRepetitionAlgorithm {
|
|
|
58
60
|
bad_feedback: number;
|
|
59
61
|
}>): ReviewSchedule[];
|
|
60
62
|
/**
|
|
61
|
-
* 리뷰
|
|
63
|
+
* 리콜 확률과 간격을 종합하여 리뷰 우선순위를 계산합니다.
|
|
64
|
+
* 긴급한 리뷰를 우선 처리하여 학습 효율을 최적화합니다.
|
|
62
65
|
*/
|
|
63
66
|
calculateReviewPriority(schedule: ReviewSchedule): number;
|
|
64
67
|
/**
|
|
65
|
-
*
|
|
68
|
+
* 실제 리콜 성과를 분석하여 알고리즘의 효과를 평가합니다.
|
|
69
|
+
* 간격별 성과를 분석하여 최적의 간격을 찾기 위해
|
|
66
70
|
*/
|
|
67
71
|
analyzeReviewPerformance(schedules: ReviewSchedule[], actualRecall: Map<string, boolean>): {
|
|
68
72
|
totalMemories: number;
|
|
@@ -71,12 +75,13 @@ export declare class SpacedRepetitionAlgorithm {
|
|
|
71
75
|
performanceByInterval: Map<number, number>;
|
|
72
76
|
};
|
|
73
77
|
/**
|
|
74
|
-
*
|
|
78
|
+
* 학습자의 실제 리콜 성과를 반영하여 최적의 간격을 추천합니다.
|
|
79
|
+
* 성과가 좋으면 간격을 늘리고, 성과가 나쁘면 간격을 줄여 학습 효율을 최적화합니다.
|
|
75
80
|
*/
|
|
76
81
|
recommendOptimalInterval(currentInterval: number, recallHistory: boolean[], // 최근 리콜 성공/실패 기록
|
|
77
82
|
features: SpacedRepetitionFeatures): number;
|
|
78
83
|
/**
|
|
79
|
-
*
|
|
84
|
+
* 특정 날짜로부터 경과된 일수를 계산하여 시간 기반 계산에 사용합니다.
|
|
80
85
|
*/
|
|
81
86
|
private getDaysSince;
|
|
82
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spaced-repetition.d.ts","sourceRoot":"","sources":["../../src/algorithms/spaced-repetition.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,IAAI,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAe;gBAEnC,OAAO,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC;IAUtD;;;OAGG;IACH,qBAAqB,CACnB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,wBAAwB,GACjC,MAAM;IAYT;;;OAGG;IACH,0BAA0B,CACxB,mBAAmB,EAAE,MAAM,EAAE,OAAO;IACpC,QAAQ,EAAE,MAAM,GACf,MAAM;IAIT
|
|
1
|
+
{"version":3,"file":"spaced-repetition.d.ts","sourceRoot":"","sources":["../../src/algorithms/spaced-repetition.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,IAAI,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAe;gBAEnC,OAAO,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC;IAUtD;;;OAGG;IACH,qBAAqB,CACnB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,wBAAwB,GACjC,MAAM;IAYT;;;OAGG;IACH,0BAA0B,CACxB,mBAAmB,EAAE,MAAM,EAAE,OAAO;IACpC,QAAQ,EAAE,MAAM,GACf,MAAM;IAIT;;;OAGG;IACH,WAAW,CACT,mBAAmB,EAAE,MAAM,EAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAA6B,GACvC,OAAO;IAKV;;;OAGG;IACH,oBAAoB,CAClB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,IAAI,EACpB,QAAQ,EAAE,wBAAwB,GACjC,cAAc;IAkBjB;;OAEG;IACH,0BAA0B,CACxB,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,IAAI,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC,GACD,cAAc,EAAE;IAkBnB;;;OAGG;IACH,uBAAuB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM;IAQzD;;;OAGG;IACH,wBAAwB,CACtB,SAAS,EAAE,cAAc,EAAE,EAC3B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC;QACD,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C;IAsCD;;;OAGG;IACH,wBAAwB,CACtB,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,OAAO,EAAE,EAAE,iBAAiB;IAC3C,QAAQ,EAAE,wBAAwB,GACjC,MAAM;IAqBT;;OAEG;IACH,OAAO,CAAC,YAAY;CAKrB"}
|