a2a-memory 0.9.1 → 0.10.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 (141) hide show
  1. package/dist/cli/commands/add.d.ts.map +1 -1
  2. package/dist/cli/commands/add.js +1 -0
  3. package/dist/cli/commands/add.js.map +1 -1
  4. package/dist/cli/commands/claude-sync.d.ts.map +1 -1
  5. package/dist/cli/commands/claude-sync.js +1 -0
  6. package/dist/cli/commands/claude-sync.js.map +1 -1
  7. package/dist/cli/commands/cleanup.d.ts.map +1 -1
  8. package/dist/cli/commands/cleanup.js +1 -0
  9. package/dist/cli/commands/cleanup.js.map +1 -1
  10. package/dist/cli/commands/config.d.ts.map +1 -1
  11. package/dist/cli/commands/config.js +2 -0
  12. package/dist/cli/commands/config.js.map +1 -1
  13. package/dist/cli/commands/edit.d.ts.map +1 -1
  14. package/dist/cli/commands/edit.js +3 -0
  15. package/dist/cli/commands/edit.js.map +1 -1
  16. package/dist/cli/commands/embed.d.ts.map +1 -1
  17. package/dist/cli/commands/embed.js +1 -0
  18. package/dist/cli/commands/embed.js.map +1 -1
  19. package/dist/cli/commands/proficiency.d.ts.map +1 -1
  20. package/dist/cli/commands/proficiency.js +4 -0
  21. package/dist/cli/commands/proficiency.js.map +1 -1
  22. package/dist/cli/commands/rm.d.ts.map +1 -1
  23. package/dist/cli/commands/rm.js +4 -0
  24. package/dist/cli/commands/rm.js.map +1 -1
  25. package/dist/cli/commands/search.d.ts.map +1 -1
  26. package/dist/cli/commands/search.js +52 -8
  27. package/dist/cli/commands/search.js.map +1 -1
  28. package/dist/cli/commands/setup.js +24 -0
  29. package/dist/cli/commands/setup.js.map +1 -1
  30. package/dist/cli/commands/skill.d.ts.map +1 -1
  31. package/dist/cli/commands/skill.js +16 -1
  32. package/dist/cli/commands/skill.js.map +1 -1
  33. package/dist/cli/commands/sync.d.ts.map +1 -1
  34. package/dist/cli/commands/sync.js +3 -0
  35. package/dist/cli/commands/sync.js.map +1 -1
  36. package/dist/config/manager.d.ts +67 -13
  37. package/dist/config/manager.d.ts.map +1 -1
  38. package/dist/config/manager.js +20 -5
  39. package/dist/config/manager.js.map +1 -1
  40. package/dist/db/database.d.ts +5 -0
  41. package/dist/db/database.d.ts.map +1 -1
  42. package/dist/db/database.js +47 -24
  43. package/dist/db/database.js.map +1 -1
  44. package/dist/embedding/e5-provider.d.ts +41 -0
  45. package/dist/embedding/e5-provider.d.ts.map +1 -0
  46. package/dist/embedding/e5-provider.js +147 -0
  47. package/dist/embedding/e5-provider.js.map +1 -0
  48. package/dist/embedding/index.d.ts +1 -0
  49. package/dist/embedding/index.d.ts.map +1 -1
  50. package/dist/embedding/index.js +5 -0
  51. package/dist/embedding/index.js.map +1 -1
  52. package/dist/extraction/dedup-manager.d.ts +40 -0
  53. package/dist/extraction/dedup-manager.d.ts.map +1 -0
  54. package/dist/extraction/dedup-manager.js +148 -0
  55. package/dist/extraction/dedup-manager.js.map +1 -0
  56. package/dist/extraction/extractor.d.ts.map +1 -1
  57. package/dist/extraction/extractor.js +23 -6
  58. package/dist/extraction/extractor.js.map +1 -1
  59. package/dist/extraction/filter.d.ts.map +1 -1
  60. package/dist/extraction/filter.js +3 -0
  61. package/dist/extraction/filter.js.map +1 -1
  62. package/dist/extraction/scorer.js +23 -12
  63. package/dist/extraction/scorer.js.map +1 -1
  64. package/dist/hooks/client-factory.d.ts +14 -0
  65. package/dist/hooks/client-factory.d.ts.map +1 -0
  66. package/dist/hooks/client-factory.js +22 -0
  67. package/dist/hooks/client-factory.js.map +1 -0
  68. package/dist/hooks/post-tool-use.d.ts.map +1 -1
  69. package/dist/hooks/post-tool-use.js +101 -22
  70. package/dist/hooks/post-tool-use.js.map +1 -1
  71. package/dist/hooks/pre-compact.d.ts +15 -0
  72. package/dist/hooks/pre-compact.d.ts.map +1 -0
  73. package/dist/hooks/pre-compact.js +209 -0
  74. package/dist/hooks/pre-compact.js.map +1 -0
  75. package/dist/hooks/session-end.d.ts.map +1 -1
  76. package/dist/hooks/session-end.js +56 -46
  77. package/dist/hooks/session-end.js.map +1 -1
  78. package/dist/hooks/session-start.d.ts.map +1 -1
  79. package/dist/hooks/session-start.js +205 -138
  80. package/dist/hooks/session-start.js.map +1 -1
  81. package/dist/hooks/shared.d.ts +1 -0
  82. package/dist/hooks/shared.d.ts.map +1 -1
  83. package/dist/hooks/shared.js +35 -0
  84. package/dist/hooks/shared.js.map +1 -1
  85. package/dist/hooks/user-prompt-submit.d.ts +15 -0
  86. package/dist/hooks/user-prompt-submit.d.ts.map +1 -0
  87. package/dist/hooks/user-prompt-submit.js +240 -0
  88. package/dist/hooks/user-prompt-submit.js.map +1 -0
  89. package/dist/index.d.ts +11 -3
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +8 -2
  92. package/dist/index.js.map +1 -1
  93. package/dist/lifecycle/quality-scorer.d.ts +2 -2
  94. package/dist/lifecycle/quality-scorer.d.ts.map +1 -1
  95. package/dist/lifecycle/quality-scorer.js +13 -7
  96. package/dist/lifecycle/quality-scorer.js.map +1 -1
  97. package/dist/lifecycle/tiering.d.ts.map +1 -1
  98. package/dist/lifecycle/tiering.js +11 -1
  99. package/dist/lifecycle/tiering.js.map +1 -1
  100. package/dist/proficiency/detection.d.ts +2 -4
  101. package/dist/proficiency/detection.d.ts.map +1 -1
  102. package/dist/proficiency/detection.js +11 -15
  103. package/dist/proficiency/detection.js.map +1 -1
  104. package/dist/proficiency/tracker.d.ts +2 -2
  105. package/dist/proficiency/tracker.d.ts.map +1 -1
  106. package/dist/proficiency/tracker.js +10 -7
  107. package/dist/proficiency/tracker.js.map +1 -1
  108. package/dist/search/adaptive-router.d.ts +28 -0
  109. package/dist/search/adaptive-router.d.ts.map +1 -0
  110. package/dist/search/adaptive-router.js +93 -0
  111. package/dist/search/adaptive-router.js.map +1 -0
  112. package/dist/search/ranker.d.ts +4 -0
  113. package/dist/search/ranker.d.ts.map +1 -1
  114. package/dist/search/ranker.js +4 -0
  115. package/dist/search/ranker.js.map +1 -1
  116. package/dist/search/reranker.d.ts +48 -0
  117. package/dist/search/reranker.d.ts.map +1 -0
  118. package/dist/search/reranker.js +155 -0
  119. package/dist/search/reranker.js.map +1 -0
  120. package/dist/skill/evaluator.d.ts +7 -9
  121. package/dist/skill/evaluator.d.ts.map +1 -1
  122. package/dist/skill/evaluator.js +122 -33
  123. package/dist/skill/evaluator.js.map +1 -1
  124. package/dist/skill/types.d.ts +5 -0
  125. package/dist/skill/types.d.ts.map +1 -1
  126. package/dist/sync/client.d.ts +26 -1
  127. package/dist/sync/client.d.ts.map +1 -1
  128. package/dist/sync/client.js +81 -28
  129. package/dist/sync/client.js.map +1 -1
  130. package/dist/sync/queue.d.ts +1 -1
  131. package/dist/sync/queue.d.ts.map +1 -1
  132. package/dist/sync/queue.js +20 -28
  133. package/dist/sync/queue.js.map +1 -1
  134. package/dist/sync/synchronizer.js +1 -1
  135. package/dist/sync/synchronizer.js.map +1 -1
  136. package/dist/sync/team-synchronizer.js.map +1 -1
  137. package/dist/types/index.d.ts +19 -2
  138. package/dist/types/index.d.ts.map +1 -1
  139. package/dist/types/index.js +11 -3
  140. package/dist/types/index.js.map +1 -1
  141. package/package.json +1 -1
@@ -0,0 +1,240 @@
1
+ /**
2
+ * UserPromptSubmit Hook
3
+ *
4
+ * 사용자가 프롬프트를 제출할 때마다 실행됩니다.
5
+ * 프롬프트 기반 실시간 메모리 검색 + 주입으로
6
+ * 세션 중 축적된 메모리를 즉시 활용합니다.
7
+ *
8
+ * 성능 타겟: p50 < 30ms, p99 < 100ms
9
+ */
10
+ import { getSharedDb, closeSharedDb, normalizeHookInput, extractSearchKeywords } from './shared.js';
11
+ import { ConfigManager } from '../config/manager.js';
12
+ import { createLogger } from '../utils/logger.js';
13
+ class QueryCache {
14
+ cache = new Map();
15
+ maxSize;
16
+ ttlMs;
17
+ constructor(maxSize, ttlSeconds) {
18
+ this.maxSize = maxSize;
19
+ this.ttlMs = ttlSeconds * 1000;
20
+ }
21
+ get(key) {
22
+ const entry = this.cache.get(key);
23
+ if (!entry)
24
+ return null;
25
+ if (Date.now() - entry.timestamp > this.ttlMs) {
26
+ this.cache.delete(key);
27
+ return null;
28
+ }
29
+ // LRU: 재삽입으로 순서 갱신
30
+ this.cache.delete(key);
31
+ this.cache.set(key, entry);
32
+ return entry.result;
33
+ }
34
+ set(key, result) {
35
+ // 용량 초과 시 가장 오래된 항목 제거
36
+ if (this.cache.size >= this.maxSize) {
37
+ const oldest = this.cache.keys().next().value;
38
+ if (oldest !== undefined) {
39
+ this.cache.delete(oldest);
40
+ }
41
+ }
42
+ this.cache.set(key, { result, timestamp: Date.now() });
43
+ }
44
+ clear() {
45
+ this.cache.clear();
46
+ }
47
+ }
48
+ // 프로세스 내 싱글톤 캐시 (Hook 프로세스 수명 = 1회 실행이지만, 테스트에서 재사용)
49
+ let _queryCache = null;
50
+ function getQueryCache(config) {
51
+ if (!_queryCache) {
52
+ _queryCache = new QueryCache(config.cacheSize, config.cacheTTLSeconds);
53
+ }
54
+ return _queryCache;
55
+ }
56
+ /** 테스트용 캐시 리셋 */
57
+ export function resetQueryCache() {
58
+ _queryCache = null;
59
+ }
60
+ // ============================================================
61
+ // Memory Formatting
62
+ // ============================================================
63
+ /** 카테고리 축약 레이블 */
64
+ const CATEGORY_SHORT = {
65
+ error_solution: 'error_solution',
66
+ code_pattern: 'code_pattern',
67
+ decision: 'decision',
68
+ context: 'context',
69
+ convention: 'convention',
70
+ skill: 'skill',
71
+ learning: 'learning',
72
+ project_knowledge: 'project_knowledge',
73
+ };
74
+ /**
75
+ * 메모리를 compact 형식으로 포맷
76
+ * 토큰 예산 내에서 최대한 많은 메모리 포함
77
+ */
78
+ function formatRealtimeOutput(memories, maxTokens) {
79
+ if (memories.length === 0)
80
+ return '';
81
+ const lines = ['<!-- A2A Realtime Context -->'];
82
+ let estimatedTokens = 10; // 헤더/푸터 오버헤드
83
+ for (const { memory } of memories) {
84
+ const cat = CATEGORY_SHORT[memory.category] || memory.category;
85
+ // 한 줄 요약 (최대 200자)
86
+ const content = memory.content.split('\n').filter(l => l.trim()).join(' ').slice(0, 200);
87
+ const line = `- [${cat}] ${content}`;
88
+ // 토큰 추정: ~4 chars per token
89
+ const lineTokens = Math.ceil(line.length / 4);
90
+ if (estimatedTokens + lineTokens > maxTokens)
91
+ break;
92
+ lines.push(line);
93
+ estimatedTokens += lineTokens;
94
+ }
95
+ if (lines.length <= 1)
96
+ return ''; // 헤더만 있으면 빈 문자열
97
+ lines.push('');
98
+ lines.push('\u{1F4A1} `a2a-memory search <query>` for details.');
99
+ lines.push('<!-- /A2A Realtime Context -->');
100
+ return lines.join('\n');
101
+ }
102
+ // ============================================================
103
+ // Core Logic
104
+ // ============================================================
105
+ export async function handleUserPromptSubmit(context) {
106
+ const config = new ConfigManager().load();
107
+ const logger = createLogger('UserPromptSubmit', config.logging);
108
+ const startTime = performance.now();
109
+ const realtimeConfig = config.realtimeInject ?? {
110
+ enabled: true,
111
+ maxMemories: 3,
112
+ maxTokens: 1000,
113
+ cacheSize: 20,
114
+ cacheTTLSeconds: 60,
115
+ timeoutMs: 100,
116
+ };
117
+ if (!realtimeConfig.enabled) {
118
+ logger.info('Realtime inject disabled');
119
+ logger.flush();
120
+ return '';
121
+ }
122
+ // 짧은 프롬프트는 스킵 (인사, 단답 등)
123
+ const prompt = context.userPrompt?.trim() || '';
124
+ if (prompt.length < 5) {
125
+ logger.debug('Prompt too short, skipping');
126
+ logger.flush();
127
+ return '';
128
+ }
129
+ // 키워드 추출
130
+ const rawKeywords = extractSearchKeywords(prompt);
131
+ if (!rawKeywords || rawKeywords.trim().length < 2) {
132
+ logger.debug('No meaningful keywords extracted');
133
+ logger.flush();
134
+ return '';
135
+ }
136
+ // FTS5 OR 쿼리로 변환 (implicit AND 대신)
137
+ // "SQLite bind error" → "SQLite OR bind OR error"
138
+ const keywords = rawKeywords.split(/\s+/).filter(k => k.length > 1).join(' OR ');
139
+ // 캐시 확인
140
+ const cache = getQueryCache(realtimeConfig);
141
+ const cached = cache.get(keywords);
142
+ if (cached !== null) {
143
+ logger.info('Cache hit', { keywords, durationMs: Math.round(performance.now() - startTime) });
144
+ logger.flush();
145
+ return cached;
146
+ }
147
+ try {
148
+ const db = getSharedDb(config.db.path);
149
+ const limit = realtimeConfig.maxMemories;
150
+ // FTS 전용 빠른 경로 (임베딩 계산 없이)
151
+ let results = [];
152
+ try {
153
+ results = db.searchByFTS(keywords, limit * 2); // 오버페치 → 필터링
154
+ }
155
+ catch {
156
+ // FTS 쿼리 실패 시 (특수문자 등)
157
+ results = [];
158
+ }
159
+ // 프로젝트 경로 필터링 (같은 프로젝트 우선)
160
+ const projectResults = results.filter(r => r.memory.projectPath === context.projectPath);
161
+ const otherResults = results.filter(r => r.memory.projectPath !== context.projectPath);
162
+ // 같은 프로젝트 우선, 부족하면 타 프로젝트 보충
163
+ const combined = [...projectResults, ...otherResults].slice(0, limit);
164
+ if (combined.length === 0) {
165
+ const output = '';
166
+ cache.set(keywords, output);
167
+ logger.info('No results', { keywords, durationMs: Math.round(performance.now() - startTime) });
168
+ logger.flush();
169
+ return output;
170
+ }
171
+ // 접근 추적
172
+ for (const { memory } of combined) {
173
+ try {
174
+ db.recordAccess(memory.id);
175
+ }
176
+ catch {
177
+ // 접근 추적 실패 무시
178
+ }
179
+ }
180
+ const output = formatRealtimeOutput(combined, realtimeConfig.maxTokens);
181
+ cache.set(keywords, output);
182
+ logger.info('Hook completed', {
183
+ keywords,
184
+ count: combined.length,
185
+ durationMs: Math.round(performance.now() - startTime),
186
+ });
187
+ logger.flush();
188
+ return output;
189
+ }
190
+ catch (err) {
191
+ logger.error('Search failed', err instanceof Error ? err : new Error(String(err)), { keywords });
192
+ logger.flush();
193
+ return '';
194
+ }
195
+ }
196
+ // ============================================================
197
+ // CLI Entrypoint
198
+ // ============================================================
199
+ /** 전체 Hook 안전 타임아웃 (ms) */
200
+ const HOOK_TIMEOUT_MS = 5_000; // UserPromptSubmit은 더 짧은 타임아웃
201
+ export async function main() {
202
+ const chunks = [];
203
+ for await (const chunk of process.stdin) {
204
+ chunks.push(chunk);
205
+ }
206
+ const input = Buffer.concat(chunks).toString('utf-8').trim();
207
+ if (!input) {
208
+ closeSharedDb();
209
+ process.exit(0);
210
+ }
211
+ // 안전 타임아웃
212
+ const safetyTimer = setTimeout(() => {
213
+ console.error(`[a2a] UserPromptSubmit safety timeout (${HOOK_TIMEOUT_MS}ms)`);
214
+ closeSharedDb();
215
+ process.exit(0);
216
+ }, HOOK_TIMEOUT_MS);
217
+ safetyTimer.unref();
218
+ try {
219
+ const raw = JSON.parse(input);
220
+ const context = normalizeHookInput(raw);
221
+ const output = await handleUserPromptSubmit(context);
222
+ if (output) {
223
+ process.stdout.write(output);
224
+ }
225
+ }
226
+ catch (err) {
227
+ console.error('[a2a] UserPromptSubmit error:', err instanceof Error ? err.message : err);
228
+ }
229
+ finally {
230
+ closeSharedDb();
231
+ process.exit(0);
232
+ }
233
+ }
234
+ // 직접 실행 시에만 main() 호출
235
+ const isMainModule = process.argv[1]?.endsWith('user-prompt-submit.js') ||
236
+ process.argv[1]?.endsWith('user-prompt-submit.ts');
237
+ if (isMainModule) {
238
+ main();
239
+ }
240
+ //# sourceMappingURL=user-prompt-submit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-prompt-submit.js","sourceRoot":"","sources":["../../src/hooks/user-prompt-submit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAYlD,MAAM,UAAU;IACN,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IACtC,OAAO,CAAS;IAChB,KAAK,CAAS;IAEtB,YAAY,OAAe,EAAE,UAAkB;QAC7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mBAAmB;QACnB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3B,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,MAAc;QAC7B,uBAAuB;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC9C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AAED,qDAAqD;AACrD,IAAI,WAAW,GAAsB,IAAI,CAAC;AAE1C,SAAS,aAAa,CAAC,MAA4B;IACjD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,iBAAiB;AACjB,MAAM,UAAU,eAAe;IAC7B,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED,+DAA+D;AAC/D,oBAAoB;AACpB,+DAA+D;AAE/D,kBAAkB;AAClB,MAAM,cAAc,GAA2B;IAC7C,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,iBAAiB,EAAE,mBAAmB;CACvC,CAAC;AAEF;;;GAGG;AACH,SAAS,oBAAoB,CAC3B,QAAkD,EAClD,SAAiB;IAEjB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,KAAK,GAAa,CAAC,+BAA+B,CAAC,CAAC;IAC1D,IAAI,eAAe,GAAG,EAAE,CAAC,CAAC,aAAa;IAEvC,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC;QAC/D,mBAAmB;QACnB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzF,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,OAAO,EAAE,CAAC;QAErC,4BAA4B;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9C,IAAI,eAAe,GAAG,UAAU,GAAG,SAAS;YAAE,MAAM;QAEpD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,eAAe,IAAI,UAAU,CAAC;IAChC,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC,CAAC,gBAAgB;IAElD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,+DAA+D;AAC/D,aAAa;AACb,+DAA+D;AAE/D,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAgC;IAEhC,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEpC,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI;QAC9C,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,EAAE;QACb,eAAe,EAAE,EAAE;QACnB,SAAS,EAAE,GAAG;KACf,CAAC;IAEF,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,yBAAyB;IACzB,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,SAAS;IACT,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,mCAAmC;IACnC,kDAAkD;IAClD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEjF,QAAQ;IACR,MAAM,KAAK,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAC9F,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC;QAEzC,2BAA2B;QAC3B,IAAI,OAAO,GAAgE,EAAE,CAAC;QAC9E,IAAI,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa;QAC9D,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;YACvB,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QAED,2BAA2B;QAC3B,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;QACzF,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;QAEvF,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEtE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,EAAE,CAAC;YAClB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;YAC/F,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,QAAQ;QACR,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;QACxE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC5B,QAAQ;YACR,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;SACtD,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,EAAE,CAAC;QAEf,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CACV,eAAe,EACf,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EACnD,EAAE,QAAQ,EAAE,CACb,CAAC;QACF,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,iBAAiB;AACjB,+DAA+D;AAE/D,2BAA2B;AAC3B,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,8BAA8B;AAE7D,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,aAAa,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,UAAU;IACV,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;QAClC,OAAO,CAAC,KAAK,CAAC,0CAA0C,eAAe,KAAK,CAAC,CAAC;QAC9E,aAAa,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,EAAE,eAAe,CAAC,CAAC;IACpB,WAAW,CAAC,KAAK,EAAE,CAAC;IAEpB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAuC,CAAC;QAC9E,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3F,CAAC;YAAS,CAAC;QACT,aAAa,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,sBAAsB;AACtB,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AACxE,IAAI,YAAY,EAAE,CAAC;IACjB,IAAI,EAAE,CAAC;AACT,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * A2A Memory Plugin - Public API
3
3
  */
4
- export type { Memory, MemoryCreateInput, MemorySearchOptions, MemorySearchResult, MemoryCategory, MemoryTier, SessionMessage, SessionContentBlock, SessionInfo, ExtractionResult, A2AConfig, TeamConfig, LLMConfig, EmbeddingConfig, LifecycleConfig, MemoryQuality, VectorClockState, HookContext, SessionStartContext, PostToolUseContext, SessionEndContext, SignificanceSignal, SignificanceResult, QuantizationLevel, } from './types/index.js';
4
+ export type { Memory, MemoryCreateInput, MemorySearchOptions, MemorySearchResult, MemoryCategory, MemoryTier, SessionMessage, SessionContentBlock, SessionInfo, ExtractionResult, A2AConfig, TeamConfig, LLMConfig, EmbeddingConfig, LifecycleConfig, MemoryQuality, VectorClockState, HookContext, SessionStartContext, PostToolUseContext, SessionEndContext, UserPromptSubmitContext, PreCompactContext, RealtimeInjectConfig, SignificanceSignal, SignificanceResult, QuantizationLevel, } from './types/index.js';
5
5
  export { DEFAULT_CONFIG, SENSITIVE_PATTERNS } from './types/index.js';
6
6
  export { MemoryDatabase } from './db/database.js';
7
7
  export { ConfigManager, generateNodeId, getConfigManager, resetConfigManager } from './config/manager.js';
@@ -12,15 +12,23 @@ export { filterSensitiveInfo, isSensitivePath } from './extraction/filter.js';
12
12
  export { handleSessionStart } from './hooks/session-start.js';
13
13
  export { handlePostToolUse } from './hooks/post-tool-use.js';
14
14
  export { handleSessionEnd } from './hooks/session-end.js';
15
- export { getSharedDb, closeSharedDb, resetSharedDb } from './hooks/shared.js';
15
+ export { handleUserPromptSubmit, resetQueryCache } from './hooks/user-prompt-submit.js';
16
+ export { handlePreCompact } from './hooks/pre-compact.js';
17
+ export { getSharedDb, closeSharedDb, resetSharedDb, extractSearchKeywords } from './hooks/shared.js';
16
18
  export { A2AClient, MemorySynchronizer, SyncQueue, LocalVectorClock, TeamSynchronizer, SyncScheduler, mapCategory, mapTier, encryptContent, decryptContent, encryptEmbedding, decryptEmbedding, deriveKey, generateEncryptionKey, wrapEncryptedContent, unwrapEncryptedContent, isValidEncryptedPayload, } from './sync/index.js';
17
19
  export type { A2AClientConfig, RemoteMemory, SyncResult, QueueFlushResult, FlushOptions, TeamSyncResult, TeamSyncStatus, SyncSchedulerOptions, SyncSchedulerStatus, EncryptedPayload, EncryptionConfig, KeyDerivationResult, } from './sync/index.js';
18
20
  export { createLLMClient, OpenAILLMClient, AnthropicLLMClient, NoOpLLMClient } from './llm/index.js';
19
21
  export type { LLMClient } from './llm/index.js';
20
- export { createEmbeddingProvider, LocalEmbeddingProvider, OpenAIEmbeddingProvider, quantizeToFloat32, dequantizeFromFloat32, quantizeToInt8, dequantizeFromInt8, } from './embedding/index.js';
22
+ export { createEmbeddingProvider, LocalEmbeddingProvider, OpenAIEmbeddingProvider, E5EmbeddingProvider, resetE5Pipeline, quantizeToFloat32, dequantizeFromFloat32, quantizeToInt8, dequantizeFromInt8, } from './embedding/index.js';
21
23
  export type { EmbeddingProvider, QuantizationStats } from './embedding/index.js';
22
24
  export { HybridRanker } from './search/index.js';
23
25
  export type { RankedResult } from './search/index.js';
26
+ export { AdaptiveRouter } from './search/adaptive-router.js';
27
+ export type { QueryComplexity, RoutingResult } from './search/adaptive-router.js';
28
+ export { CrossEncoderReranker, resetRerankerPipeline } from './search/reranker.js';
29
+ export type { RerankerOptions } from './search/reranker.js';
30
+ export { DedupManager } from './extraction/dedup-manager.js';
31
+ export type { DedupAction, DedupDecision } from './extraction/dedup-manager.js';
24
32
  export { scoreQuality, cleanupMemories, determineTier, rebalanceTiers, promoteOnAccess } from './lifecycle/index.js';
25
33
  export type { CleanupResult, TieringConfig, TieringResult, StorageTier } from './lifecycle/index.js';
26
34
  export type { LogLevel, LoggingConfig } from './types/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -13,15 +13,21 @@ export { filterSensitiveInfo, isSensitivePath } from './extraction/filter.js';
13
13
  export { handleSessionStart } from './hooks/session-start.js';
14
14
  export { handlePostToolUse } from './hooks/post-tool-use.js';
15
15
  export { handleSessionEnd } from './hooks/session-end.js';
16
- export { getSharedDb, closeSharedDb, resetSharedDb } from './hooks/shared.js';
16
+ export { handleUserPromptSubmit, resetQueryCache } from './hooks/user-prompt-submit.js';
17
+ export { handlePreCompact } from './hooks/pre-compact.js';
18
+ export { getSharedDb, closeSharedDb, resetSharedDb, extractSearchKeywords } from './hooks/shared.js';
17
19
  // Sync
18
20
  export { A2AClient, MemorySynchronizer, SyncQueue, LocalVectorClock, TeamSynchronizer, SyncScheduler, mapCategory, mapTier, encryptContent, decryptContent, encryptEmbedding, decryptEmbedding, deriveKey, generateEncryptionKey, wrapEncryptedContent, unwrapEncryptedContent, isValidEncryptedPayload, } from './sync/index.js';
19
21
  // LLM
20
22
  export { createLLMClient, OpenAILLMClient, AnthropicLLMClient, NoOpLLMClient } from './llm/index.js';
21
23
  // Embedding
22
- export { createEmbeddingProvider, LocalEmbeddingProvider, OpenAIEmbeddingProvider, quantizeToFloat32, dequantizeFromFloat32, quantizeToInt8, dequantizeFromInt8, } from './embedding/index.js';
24
+ export { createEmbeddingProvider, LocalEmbeddingProvider, OpenAIEmbeddingProvider, E5EmbeddingProvider, resetE5Pipeline, quantizeToFloat32, dequantizeFromFloat32, quantizeToInt8, dequantizeFromInt8, } from './embedding/index.js';
23
25
  // Search
24
26
  export { HybridRanker } from './search/index.js';
27
+ export { AdaptiveRouter } from './search/adaptive-router.js';
28
+ export { CrossEncoderReranker, resetRerankerPipeline } from './search/reranker.js';
29
+ // Extraction - DedupManager
30
+ export { DedupManager } from './extraction/dedup-manager.js';
25
31
  // Lifecycle
26
32
  export { scoreQuality, cleanupMemories, determineTier, rebalanceTiers, promoteOnAccess } from './lifecycle/index.js';
27
33
  export { createLogger } from './utils/logger.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AA8BH,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtE,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9E,QAAQ;AACR,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO;AACP,OAAO,EACL,SAAS,EAAE,kBAAkB,EAAE,SAAS,EACxC,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EACjD,WAAW,EAAE,OAAO,EACpB,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,qBAAqB,EAChC,oBAAoB,EAAE,sBAAsB,EAC5C,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AASzB,MAAM;AACN,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGrG,YAAY;AACZ,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAG9B,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,YAAY;AACZ,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMrH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEhG,iBAAiB;AACjB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAG7E,OAAO;AACP,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGrF,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAOxE,oBAAoB;AACpB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,9 @@
2
2
  * Memory Quality Scorer
3
3
  *
4
4
  * 메모리 품질 점수를 계산합니다.
5
- * - relevance: 검색 빈도 기반 (access_count)
5
+ * - relevance: 접근 횟수 × 최근성 가중 (recencyBoost)
6
6
  * - freshness: 시간 기반 감쇠 (exponential decay)
7
- * - usage: 접근 횟수 정규화
7
+ * - usage: 일평균 접근 빈도 정규화 (createdAt 대비)
8
8
  * - overall: 가중 평균 (0.4 * relevance + 0.3 * freshness + 0.3 * usage)
9
9
  */
10
10
  import type { Memory, MemoryQuality, LifecycleConfig } from '../types/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"quality-scorer.d.ts","sourceRoot":"","sources":["../../src/lifecycle/quality-scorer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEhF;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,aAAa,CA0BpF"}
1
+ {"version":3,"file":"quality-scorer.d.ts","sourceRoot":"","sources":["../../src/lifecycle/quality-scorer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEhF;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,aAAa,CAiCpF"}
@@ -2,9 +2,9 @@
2
2
  * Memory Quality Scorer
3
3
  *
4
4
  * 메모리 품질 점수를 계산합니다.
5
- * - relevance: 검색 빈도 기반 (access_count)
5
+ * - relevance: 접근 횟수 × 최근성 가중 (recencyBoost)
6
6
  * - freshness: 시간 기반 감쇠 (exponential decay)
7
- * - usage: 접근 횟수 정규화
7
+ * - usage: 일평균 접근 빈도 정규화 (createdAt 대비)
8
8
  * - overall: 가중 평균 (0.4 * relevance + 0.3 * freshness + 0.3 * usage)
9
9
  */
10
10
  /**
@@ -15,18 +15,24 @@
15
15
  * @returns 품질 점수 객체 (0~1 범위)
16
16
  */
17
17
  export function scoreQuality(memory, _config) {
18
- // 1. Relevance: 검색 빈도 기반 (access_count / 10으로 정규화, 최대 1.0)
19
- const relevance = Math.min(1.0, memory.accessCount / 10);
18
+ const now = new Date();
19
+ // 1. Relevance: 접근 횟수 + 최근성 가중 (최근 접근일수록 높은 가중)
20
+ const recencyBoost = memory.lastAccessedAt
21
+ ? Math.exp(-0.01 * ((now.getTime() - new Date(memory.lastAccessedAt).getTime()) / (1000 * 60 * 60 * 24)))
22
+ : 0.5;
23
+ const relevance = Math.min(1.0, (memory.accessCount / 10) * recencyBoost);
20
24
  // 2. Freshness: 시간 기반 감쇠 (exponential decay)
21
25
  // freshness = exp(-lambda * daysSinceUpdate)
22
26
  // lambda = 0.01 (100일 후 약 0.37)
23
27
  const lambda = 0.01;
24
28
  const updatedAt = new Date(memory.updatedAt);
25
- const now = new Date();
26
29
  const daysSinceUpdate = (now.getTime() - updatedAt.getTime()) / (1000 * 60 * 60 * 24);
27
30
  const freshness = Math.exp(-lambda * daysSinceUpdate);
28
- // 3. Usage: access_count를 정규화 (relevance와 동일 로직)
29
- const usage = Math.min(1.0, memory.accessCount / 10);
31
+ // 3. Usage: 일평균 접근 빈도 기반 (생성일 대비 정규화)
32
+ // 하루 0.5회 접근이면 1.0 (= 정상적 활용 수준)
33
+ const daysAlive = Math.max(1, (now.getTime() - new Date(memory.createdAt).getTime()) / (1000 * 60 * 60 * 24));
34
+ const accessRate = memory.accessCount / daysAlive;
35
+ const usage = Math.min(1.0, accessRate / 0.5);
30
36
  // 4. Overall: 가중 평균
31
37
  // 40% relevance + 30% freshness + 30% usage
32
38
  const overall = 0.4 * relevance + 0.3 * freshness + 0.3 * usage;
@@ -1 +1 @@
1
- {"version":3,"file":"quality-scorer.js","sourceRoot":"","sources":["../../src/lifecycle/quality-scorer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,OAAwB;IACnE,2DAA2D;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IAEzD,6CAA6C;IAC7C,6CAA6C;IAC7C,gCAAgC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;IAEtD,iDAAiD;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IAErD,oBAAoB;IACpB,4CAA4C;IAC5C,MAAM,OAAO,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC;IAEhE,OAAO;QACL,SAAS;QACT,SAAS;QACT,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"quality-scorer.js","sourceRoot":"","sources":["../../src/lifecycle/quality-scorer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,OAAwB;IACnE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,gDAAgD;IAChD,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc;QACxC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACzG,CAAC,CAAC,GAAG,CAAC;IACR,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC;IAE1E,6CAA6C;IAC7C,6CAA6C;IAC7C,gCAAgC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;IAEtD,sCAAsC;IACtC,iCAAiC;IACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9G,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,GAAG,CAAC,CAAC;IAE9C,oBAAoB;IACpB,4CAA4C;IAC5C,MAAM,OAAO,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC;IAEhE,OAAO;QACL,SAAS;QACT,SAAS;QACT,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tiering.d.ts","sourceRoot":"","sources":["../../src/lifecycle/tiering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,WAAW,CAwChF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,GAAG,aAAa,CAgEvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,GACpB,IAAI,CAuBN"}
1
+ {"version":3,"file":"tiering.d.ts","sourceRoot":"","sources":["../../src/lifecycle/tiering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,WAAW,CAwChF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,GAAG,aAAa,CAyEvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,GACpB,IAAI,CAuBN"}
@@ -75,7 +75,17 @@ export function rebalanceTiers(db, config) {
75
75
  if (!config.enabled) {
76
76
  return { promoted: 0, demoted: 0, compressed: 0, totalProcessed: 0 };
77
77
  }
78
- const allMemories = db.listMemories({ limit: 999999 });
78
+ // 배치 처리: 1000개씩 분할 조회 (offset 지원)
79
+ const BATCH_SIZE = 1000;
80
+ const allMemories = [];
81
+ let offset = 0;
82
+ while (true) {
83
+ const batch = db.listMemories({ limit: BATCH_SIZE, offset });
84
+ allMemories.push(...batch);
85
+ if (batch.length < BATCH_SIZE)
86
+ break;
87
+ offset += BATCH_SIZE;
88
+ }
79
89
  let promoted = 0;
80
90
  let demoted = 0;
81
91
  let compressed = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"tiering.js","sourceRoot":"","sources":["../../src/lifecycle/tiering.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tiering.js","sourceRoot":"","sources":["../../src/lifecycle/tiering.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Multi-signal skill practice detection.
3
3
  */
4
+ import { cosineSimilarity } from '../extraction/similarity.js';
5
+ export { cosineSimilarity };
4
6
  export interface DetectionResult {
5
7
  skillMemoryId: string;
6
8
  outcome: 'success' | 'partial' | 'failure';
@@ -26,10 +28,6 @@ export declare function jaccardSimilarity(setA: string[], setB: string[]): numbe
26
28
  * Keyword match ratio
27
29
  */
28
30
  export declare function keywordMatchRatio(skillContent: string, sessionTexts: string[]): number;
29
- /**
30
- * Cosine similarity between two vectors
31
- */
32
- export declare function cosineSimilarity(a: number[], b: number[]): number;
33
31
  /**
34
32
  * Multi-signal skill practice detection
35
33
  * Weights: embedding 0.5 + tag overlap 0.3 + keyword 0.2
@@ -1 +1 @@
1
- {"version":3,"file":"detection.d.ts","sourceRoot":"","sources":["../../src/proficiency/detection.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAOxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAYtF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CASjE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,EAChB,eAAe,EAAE,aAAa,EAAE,GAC/B,eAAe,GAAG,IAAI,CAiCxB"}
1
+ {"version":3,"file":"detection.d.ts","sourceRoot":"","sources":["../../src/proficiency/detection.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAOxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAYtF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,EAChB,eAAe,EAAE,aAAa,EAAE,GAC/B,eAAe,GAAG,IAAI,CAwCxB"}
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Multi-signal skill practice detection.
3
3
  */
4
+ import { cosineSimilarity } from '../extraction/similarity.js';
5
+ export { cosineSimilarity };
4
6
  /**
5
7
  * Jaccard similarity between two tag sets
6
8
  */
@@ -30,20 +32,6 @@ export function keywordMatchRatio(skillContent, sessionTexts) {
30
32
  const matches = keywords.filter(kw => sessionText.includes(kw));
31
33
  return matches.length / keywords.length;
32
34
  }
33
- /**
34
- * Cosine similarity between two vectors
35
- */
36
- export function cosineSimilarity(a, b) {
37
- if (a.length !== b.length || a.length === 0)
38
- return 0;
39
- let dot = 0, normA = 0, normB = 0;
40
- for (let i = 0; i < a.length; i++) {
41
- dot += a[i] * b[i];
42
- normA += a[i] ** 2;
43
- normB += b[i] ** 2;
44
- }
45
- return normA > 0 && normB > 0 ? dot / (Math.sqrt(normA) * Math.sqrt(normB)) : 0;
46
- }
47
35
  /**
48
36
  * Multi-signal skill practice detection
49
37
  * Weights: embedding 0.5 + tag overlap 0.3 + keyword 0.2
@@ -68,7 +56,15 @@ export function detectSkillPractice(skill, sessionMemories) {
68
56
  const sessionTexts = sessionMemories.map(m => m.content);
69
57
  const keywordSim = keywordMatchRatio(skill.content, sessionTexts);
70
58
  // Weighted sum
71
- const score = embeddingSim * 0.5 + tagSim * 0.3 + keywordSim * 0.2;
59
+ // 임베딩 없으면 tag/keyword에 가중치 재분배
60
+ let score;
61
+ if (embeddingSim > 0) {
62
+ score = embeddingSim * 0.5 + tagSim * 0.3 + keywordSim * 0.2;
63
+ }
64
+ else {
65
+ // 임베딩 미사용: tag 0.55 + keyword 0.45
66
+ score = tagSim * 0.55 + keywordSim * 0.45;
67
+ }
72
68
  if (score < 0.4)
73
69
  return null;
74
70
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"detection.js","sourceRoot":"","sources":["../../src/proficiency/detection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detection.js","sourceRoot":"","sources":["../../src/proficiency/detection.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  * 레벨 공식 (Hybrid):
7
7
  * countScore = log2(1 + N) / log2(151) // Power Law of Practice
8
8
  * successScore = 0.3 + successRate * 0.7 // 성공률 반영
9
- * recencyFactor = exp(-daysSince * 0.02) // ACT-R Forgetting Curve
9
+ * recencyFactor = exp(-daysSince * 0.007) // ACT-R Forgetting Curve (완화: 30일→0.81)
10
10
  * difficultyBonus = avgDifficulty * 0.1 // 난이도 보상
11
11
  * level = ceil(clamp(countScore * successScore * recencyFactor + difficultyBonus, 0, 1) * maxLevel)
12
12
  *
@@ -46,5 +46,5 @@ export declare class ProficiencyTracker {
46
46
  *
47
47
  * Power Law of Practice (log 성장) + Forgetting Curve (지수 감쇠) + 난이도 보너스
48
48
  */
49
- export declare function computePracticalLevel(experienceCount: number, successRate: number, daysSinceLastPractice: number, avgDifficulty: number, maxLevel: number): number;
49
+ export declare function computePracticalLevel(experienceCount: number, successRate: number, daysSinceLastPractice: number, avgDifficulty: number, maxLevel: number, actrActivation?: number): number;
50
50
  //# sourceMappingURL=tracker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/proficiency/tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAMpB,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,MAAM,CAAa;gBAEf,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB;IAMzD;;OAEG;IACH,cAAc,CACZ,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,EAC1C,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,MAAM,EAAO,EAC1B,SAAS,CAAC,EAAE,MAAM,GACjB,iBAAiB;IAgBpB;;OAEG;IACH,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB;IAwE1D;;OAEG;IACH,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB;IAiB3D;;OAEG;IACH,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAI5D;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,EAAE;CA2BjD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,EAC7B,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,MAAM,CAiBR"}
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/proficiency/tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAMpB,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,MAAM,CAAa;gBAEf,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB;IAMzD;;OAEG;IACH,cAAc,CACZ,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,EAC1C,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,MAAM,EAAO,EAC1B,SAAS,CAAC,EAAE,MAAM,GACjB,iBAAiB;IAgBpB;;OAEG;IACH,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB;IAyE1D;;OAEG;IACH,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB;IAiB3D;;OAEG;IACH,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAI5D;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,EAAE;CA2BjD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,EAC7B,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAqBR"}