psychmem 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +632 -0
- package/dist/adapters/claude-code/index.d.ts +125 -0
- package/dist/adapters/claude-code/index.d.ts.map +1 -0
- package/dist/adapters/claude-code/index.js +398 -0
- package/dist/adapters/claude-code/index.js.map +1 -0
- package/dist/adapters/opencode/index.d.ts +50 -0
- package/dist/adapters/opencode/index.d.ts.map +1 -0
- package/dist/adapters/opencode/index.js +793 -0
- package/dist/adapters/opencode/index.js.map +1 -0
- package/dist/adapters/types.d.ts +226 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +6 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/cli.d.ts +19 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +461 -0
- package/dist/cli.js.map +1 -0
- package/dist/hooks/index.d.ts +92 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +304 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/post-tool-use.d.ts +26 -0
- package/dist/hooks/post-tool-use.d.ts.map +1 -0
- package/dist/hooks/post-tool-use.js +69 -0
- package/dist/hooks/post-tool-use.js.map +1 -0
- package/dist/hooks/session-end.d.ts +32 -0
- package/dist/hooks/session-end.d.ts.map +1 -0
- package/dist/hooks/session-end.js +66 -0
- package/dist/hooks/session-end.js.map +1 -0
- package/dist/hooks/session-start.d.ts +55 -0
- package/dist/hooks/session-start.d.ts.map +1 -0
- package/dist/hooks/session-start.js +173 -0
- package/dist/hooks/session-start.js.map +1 -0
- package/dist/hooks/stop.d.ts +72 -0
- package/dist/hooks/stop.d.ts.map +1 -0
- package/dist/hooks/stop.js +273 -0
- package/dist/hooks/stop.js.map +1 -0
- package/dist/index.d.ts +114 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +191 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/context-sweep.d.ts +107 -0
- package/dist/memory/context-sweep.d.ts.map +1 -0
- package/dist/memory/context-sweep.js +557 -0
- package/dist/memory/context-sweep.js.map +1 -0
- package/dist/memory/patterns.d.ts +106 -0
- package/dist/memory/patterns.d.ts.map +1 -0
- package/dist/memory/patterns.js +613 -0
- package/dist/memory/patterns.js.map +1 -0
- package/dist/memory/selective-memory.d.ts +78 -0
- package/dist/memory/selective-memory.d.ts.map +1 -0
- package/dist/memory/selective-memory.js +227 -0
- package/dist/memory/selective-memory.js.map +1 -0
- package/dist/memory/structural-analyzer.d.ts +75 -0
- package/dist/memory/structural-analyzer.d.ts.map +1 -0
- package/dist/memory/structural-analyzer.js +359 -0
- package/dist/memory/structural-analyzer.js.map +1 -0
- package/dist/retrieval/index.d.ts +106 -0
- package/dist/retrieval/index.d.ts.map +1 -0
- package/dist/retrieval/index.js +291 -0
- package/dist/retrieval/index.js.map +1 -0
- package/dist/storage/database.d.ts +138 -0
- package/dist/storage/database.d.ts.map +1 -0
- package/dist/storage/database.js +748 -0
- package/dist/storage/database.js.map +1 -0
- package/dist/storage/sqlite-adapter.d.ts +35 -0
- package/dist/storage/sqlite-adapter.d.ts.map +1 -0
- package/dist/storage/sqlite-adapter.js +103 -0
- package/dist/storage/sqlite-adapter.js.map +1 -0
- package/dist/transcript/index.d.ts +8 -0
- package/dist/transcript/index.d.ts.map +1 -0
- package/dist/transcript/index.js +6 -0
- package/dist/transcript/index.js.map +1 -0
- package/dist/transcript/parser.d.ts +93 -0
- package/dist/transcript/parser.d.ts.map +1 -0
- package/dist/transcript/parser.js +373 -0
- package/dist/transcript/parser.js.map +1 -0
- package/dist/transcript/sweep.d.ts +75 -0
- package/dist/transcript/sweep.d.ts.map +1 -0
- package/dist/transcript/sweep.js +202 -0
- package/dist/transcript/sweep.js.map +1 -0
- package/dist/types/index.d.ts +328 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +80 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/paths.d.ts +19 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +43 -0
- package/dist/utils/paths.js.map +1 -0
- package/hooks/hooks.json +54 -0
- package/package.json +83 -0
- package/plugin.js +45 -0
- package/plugin.json +19 -0
|
@@ -0,0 +1,613 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multilingual Importance Pattern Dictionaries
|
|
3
|
+
*
|
|
4
|
+
* Patterns for detecting importance signals across 15 languages:
|
|
5
|
+
* English, Spanish, French, German, Portuguese, Japanese, Chinese, Korean,
|
|
6
|
+
* Russian, Arabic, Hindi, Italian, Dutch, Turkish, Polish
|
|
7
|
+
*
|
|
8
|
+
* For Latin scripts: compiled to single \b-bounded regex per category
|
|
9
|
+
* For CJK/Arabic/Hindi: matched via string.includes() since \b doesn't work
|
|
10
|
+
*/
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// Pattern Categories
|
|
13
|
+
// =============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* Explicit remember signals - user explicitly asks to remember something
|
|
16
|
+
* Weight: 0.9 (highest - direct user intent)
|
|
17
|
+
*/
|
|
18
|
+
export const EXPLICIT_REMEMBER = {
|
|
19
|
+
signalType: 'explicit_remember',
|
|
20
|
+
weight: 0.9,
|
|
21
|
+
latin: [
|
|
22
|
+
// English
|
|
23
|
+
'remember this', 'don\'t forget', 'keep in mind', 'note that', 'important to remember',
|
|
24
|
+
'make sure to remember', 'never forget', 'always remember',
|
|
25
|
+
// Spanish
|
|
26
|
+
'recuerda esto', 'no olvides', 'ten en cuenta', 'nota que', 'importante recordar',
|
|
27
|
+
// French
|
|
28
|
+
'souviens-toi', 'n\'oublie pas', 'garde en tête', 'note que', 'retiens',
|
|
29
|
+
// German
|
|
30
|
+
'merk dir', 'vergiss nicht', 'beachte', 'denk daran', 'wichtig zu merken',
|
|
31
|
+
// Portuguese
|
|
32
|
+
'lembre-se', 'não esqueça', 'tenha em mente', 'note que', 'importante lembrar',
|
|
33
|
+
// Italian
|
|
34
|
+
'ricorda questo', 'non dimenticare', 'tieni a mente', 'nota che',
|
|
35
|
+
// Dutch
|
|
36
|
+
'onthoud dit', 'vergeet niet', 'houd in gedachten', 'let op',
|
|
37
|
+
// Turkish
|
|
38
|
+
'bunu unutma', 'aklında tut', 'dikkat et', 'not et',
|
|
39
|
+
// Polish
|
|
40
|
+
'zapamiętaj to', 'nie zapomnij', 'pamiętaj że', 'zwróć uwagę',
|
|
41
|
+
// Russian (transliterated)
|
|
42
|
+
'zapomni eto', 'ne zabud',
|
|
43
|
+
],
|
|
44
|
+
nonLatin: [
|
|
45
|
+
// Japanese
|
|
46
|
+
'覚えておいて', '忘れないで', '覚えて', 'メモして', '重要なこと',
|
|
47
|
+
// Chinese (Simplified)
|
|
48
|
+
'记住这个', '不要忘记', '请记住', '重要的是', '注意',
|
|
49
|
+
// Chinese (Traditional)
|
|
50
|
+
'記住這個', '不要忘記', '請記住',
|
|
51
|
+
// Korean
|
|
52
|
+
'기억해', '잊지마', '명심해', '메모해',
|
|
53
|
+
// Russian
|
|
54
|
+
'запомни это', 'не забудь', 'имей в виду', 'обрати внимание',
|
|
55
|
+
// Arabic
|
|
56
|
+
'تذكر هذا', 'لا تنسى', 'ضع في اعتبارك',
|
|
57
|
+
// Hindi
|
|
58
|
+
'याद रखो', 'मत भूलो', 'ध्यान रखें',
|
|
59
|
+
],
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Emphasis cue signals - words indicating importance/emphasis
|
|
63
|
+
* Weight: 0.8
|
|
64
|
+
*/
|
|
65
|
+
export const EMPHASIS_CUE = {
|
|
66
|
+
signalType: 'emphasis_cue',
|
|
67
|
+
weight: 0.8,
|
|
68
|
+
latin: [
|
|
69
|
+
// English
|
|
70
|
+
'always', 'never', 'must', 'critical', 'essential', 'crucial', 'vital',
|
|
71
|
+
'extremely important', 'absolutely', 'definitely', 'certainly',
|
|
72
|
+
// Spanish
|
|
73
|
+
'siempre', 'nunca', 'debe', 'crítico', 'esencial', 'crucial', 'vital',
|
|
74
|
+
'absolutamente', 'definitivamente',
|
|
75
|
+
// French
|
|
76
|
+
'toujours', 'jamais', 'doit', 'critique', 'essentiel', 'crucial',
|
|
77
|
+
'absolument', 'certainement',
|
|
78
|
+
// German
|
|
79
|
+
'immer', 'niemals', 'muss', 'kritisch', 'wesentlich', 'entscheidend',
|
|
80
|
+
'unbedingt', 'definitiv',
|
|
81
|
+
// Portuguese
|
|
82
|
+
'sempre', 'nunca', 'deve', 'crítico', 'essencial', 'crucial',
|
|
83
|
+
'absolutamente', 'definitivamente',
|
|
84
|
+
// Italian
|
|
85
|
+
'sempre', 'mai', 'deve', 'critico', 'essenziale', 'cruciale',
|
|
86
|
+
'assolutamente', 'certamente',
|
|
87
|
+
// Dutch
|
|
88
|
+
'altijd', 'nooit', 'moet', 'kritiek', 'essentieel', 'cruciaal',
|
|
89
|
+
'absoluut', 'zeker',
|
|
90
|
+
// Turkish
|
|
91
|
+
'her zaman', 'asla', 'mutlaka', 'kritik', 'temel', 'kesinlikle',
|
|
92
|
+
// Polish
|
|
93
|
+
'zawsze', 'nigdy', 'musi', 'krytyczny', 'niezbędny', 'kluczowy',
|
|
94
|
+
'absolutnie', 'zdecydowanie',
|
|
95
|
+
],
|
|
96
|
+
nonLatin: [
|
|
97
|
+
// Japanese
|
|
98
|
+
'必ず', '絶対に', '常に', '決して', '重要', '必須', '不可欠',
|
|
99
|
+
// Chinese
|
|
100
|
+
'必须', '一定要', '总是', '从不', '关键', '重要', '绝对',
|
|
101
|
+
'必須', '一定要', '總是', '從不', '關鍵', '重要', '絕對',
|
|
102
|
+
// Korean
|
|
103
|
+
'항상', '절대', '반드시', '필수', '중요한', '결정적인',
|
|
104
|
+
// Russian
|
|
105
|
+
'всегда', 'никогда', 'должен', 'критично', 'важно', 'обязательно',
|
|
106
|
+
// Arabic
|
|
107
|
+
'دائما', 'أبدا', 'يجب', 'حرج', 'أساسي', 'بالتأكيد',
|
|
108
|
+
// Hindi
|
|
109
|
+
'हमेशा', 'कभी नहीं', 'ज़रूरी', 'महत्वपूर्ण', 'अनिवार्य',
|
|
110
|
+
],
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Correction signals - user correcting themselves or the AI
|
|
114
|
+
* Weight: 0.7
|
|
115
|
+
*/
|
|
116
|
+
export const CORRECTION = {
|
|
117
|
+
signalType: 'correction',
|
|
118
|
+
weight: 0.7,
|
|
119
|
+
latin: [
|
|
120
|
+
// English
|
|
121
|
+
'actually', 'wait', 'no,', 'correction', 'wrong', 'mistake', 'oops',
|
|
122
|
+
'sorry, I meant', 'let me correct', 'that\'s not right', 'I was wrong',
|
|
123
|
+
'my bad', 'scratch that', 'disregard',
|
|
124
|
+
// Spanish
|
|
125
|
+
'en realidad', 'espera', 'no,', 'corrección', 'incorrecto', 'error',
|
|
126
|
+
'perdón, quise decir', 'me equivoqué',
|
|
127
|
+
// French
|
|
128
|
+
'en fait', 'attends', 'non,', 'correction', 'faux', 'erreur',
|
|
129
|
+
'pardon, je voulais dire', 'je me suis trompé',
|
|
130
|
+
// German
|
|
131
|
+
'eigentlich', 'warte', 'nein,', 'korrektur', 'falsch', 'fehler',
|
|
132
|
+
'ich meinte', 'das war falsch',
|
|
133
|
+
// Portuguese
|
|
134
|
+
'na verdade', 'espera', 'não,', 'correção', 'errado', 'erro',
|
|
135
|
+
'desculpa, quis dizer', 'me enganei',
|
|
136
|
+
// Italian
|
|
137
|
+
'in realtà', 'aspetta', 'no,', 'correzione', 'sbagliato', 'errore',
|
|
138
|
+
'scusa, intendevo', 'mi sono sbagliato',
|
|
139
|
+
// Dutch
|
|
140
|
+
'eigenlijk', 'wacht', 'nee,', 'correctie', 'fout', 'vergissing',
|
|
141
|
+
'ik bedoelde',
|
|
142
|
+
// Turkish
|
|
143
|
+
'aslında', 'bekle', 'hayır,', 'düzeltme', 'yanlış', 'hata',
|
|
144
|
+
// Polish
|
|
145
|
+
'właściwie', 'czekaj', 'nie,', 'korekta', 'błąd', 'pomyłka',
|
|
146
|
+
'miałem na myśli',
|
|
147
|
+
],
|
|
148
|
+
nonLatin: [
|
|
149
|
+
// Japanese
|
|
150
|
+
'実は', 'ちょっと待って', '違う', '訂正', '間違い', 'ごめん',
|
|
151
|
+
// Chinese
|
|
152
|
+
'其实', '等一下', '不对', '更正', '错了', '抱歉',
|
|
153
|
+
'其實', '等一下', '不對', '更正', '錯了',
|
|
154
|
+
// Korean
|
|
155
|
+
'사실', '잠깐', '아니', '수정', '틀렸어', '죄송',
|
|
156
|
+
// Russian
|
|
157
|
+
'на самом деле', 'подожди', 'нет,', 'исправление', 'ошибка', 'неправильно',
|
|
158
|
+
// Arabic
|
|
159
|
+
'في الواقع', 'انتظر', 'لا،', 'تصحيح', 'خطأ',
|
|
160
|
+
// Hindi
|
|
161
|
+
'असल में', 'रुको', 'नहीं,', 'सुधार', 'गलती', 'माफ करें',
|
|
162
|
+
],
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* Preference signals - user expressing preferences
|
|
166
|
+
* Weight: 0.6
|
|
167
|
+
*/
|
|
168
|
+
export const PREFERENCE = {
|
|
169
|
+
signalType: 'preference',
|
|
170
|
+
weight: 0.6,
|
|
171
|
+
latin: [
|
|
172
|
+
// English
|
|
173
|
+
'prefer', 'like', 'want', 'don\'t like', 'hate', 'avoid',
|
|
174
|
+
'I\'d rather', 'better if', 'instead of', 'rather than',
|
|
175
|
+
// Spanish
|
|
176
|
+
'prefiero', 'me gusta', 'quiero', 'no me gusta', 'odio', 'evitar',
|
|
177
|
+
'preferiría', 'mejor si',
|
|
178
|
+
// French
|
|
179
|
+
'je préfère', 'j\'aime', 'je veux', 'je n\'aime pas', 'je déteste', 'éviter',
|
|
180
|
+
'plutôt', 'mieux si',
|
|
181
|
+
// German
|
|
182
|
+
'bevorzuge', 'mag', 'will', 'mag nicht', 'hasse', 'vermeiden',
|
|
183
|
+
'lieber', 'besser wenn',
|
|
184
|
+
// Portuguese
|
|
185
|
+
'prefiro', 'gosto', 'quero', 'não gosto', 'odeio', 'evitar',
|
|
186
|
+
'preferiria', 'melhor se',
|
|
187
|
+
// Italian
|
|
188
|
+
'preferisco', 'mi piace', 'voglio', 'non mi piace', 'odio', 'evitare',
|
|
189
|
+
'piuttosto', 'meglio se',
|
|
190
|
+
// Dutch
|
|
191
|
+
'ik geef de voorkeur', 'ik hou van', 'ik wil', 'ik haat', 'vermijden',
|
|
192
|
+
'liever', 'beter als',
|
|
193
|
+
// Turkish
|
|
194
|
+
'tercih ederim', 'seviyorum', 'istiyorum', 'sevmiyorum', 'nefret', 'kaçınmak',
|
|
195
|
+
// Polish
|
|
196
|
+
'wolę', 'lubię', 'chcę', 'nie lubię', 'nienawidzę', 'unikać',
|
|
197
|
+
'lepiej gdyby',
|
|
198
|
+
],
|
|
199
|
+
nonLatin: [
|
|
200
|
+
// Japanese
|
|
201
|
+
'好き', '嫌い', '欲しい', '避けたい', 'の方がいい', '好み',
|
|
202
|
+
// Chinese
|
|
203
|
+
'喜欢', '不喜欢', '想要', '讨厌', '避免', '偏好', '宁愿',
|
|
204
|
+
'喜歡', '不喜歡', '想要', '討厭', '避免', '偏好', '寧願',
|
|
205
|
+
// Korean
|
|
206
|
+
'좋아해', '싫어해', '원해', '피하고 싶어', '선호해',
|
|
207
|
+
// Russian
|
|
208
|
+
'предпочитаю', 'нравится', 'хочу', 'не нравится', 'ненавижу', 'избегать',
|
|
209
|
+
// Arabic
|
|
210
|
+
'أفضل', 'أحب', 'أريد', 'لا أحب', 'أكره', 'تجنب',
|
|
211
|
+
// Hindi
|
|
212
|
+
'पसंद', 'नापसंद', 'चाहिए', 'नफरत', 'बचना',
|
|
213
|
+
],
|
|
214
|
+
};
|
|
215
|
+
/**
|
|
216
|
+
* Decision signals - decisions being made
|
|
217
|
+
* Weight: 0.7
|
|
218
|
+
*/
|
|
219
|
+
export const DECISION = {
|
|
220
|
+
signalType: 'decision',
|
|
221
|
+
weight: 0.7,
|
|
222
|
+
latin: [
|
|
223
|
+
// English
|
|
224
|
+
'decided', 'decision', 'chose', 'going with', 'let\'s use', 'we\'ll use',
|
|
225
|
+
'we decided', 'the plan is', 'settled on', 'final choice',
|
|
226
|
+
// Spanish
|
|
227
|
+
'decidí', 'decisión', 'elegí', 'vamos con', 'usaremos', 'el plan es',
|
|
228
|
+
// French
|
|
229
|
+
'décidé', 'décision', 'choisi', 'on va utiliser', 'le plan est',
|
|
230
|
+
// German
|
|
231
|
+
'entschieden', 'entscheidung', 'gewählt', 'wir nehmen', 'der plan ist',
|
|
232
|
+
// Portuguese
|
|
233
|
+
'decidi', 'decisão', 'escolhi', 'vamos usar', 'o plano é',
|
|
234
|
+
// Italian
|
|
235
|
+
'deciso', 'decisione', 'scelto', 'useremo', 'il piano è',
|
|
236
|
+
// Dutch
|
|
237
|
+
'besloten', 'beslissing', 'gekozen', 'we gebruiken', 'het plan is',
|
|
238
|
+
// Turkish
|
|
239
|
+
'karar verdim', 'karar', 'seçtim', 'kullanacağız', 'plan şu',
|
|
240
|
+
// Polish
|
|
241
|
+
'zdecydowałem', 'decyzja', 'wybrałem', 'użyjemy', 'plan jest',
|
|
242
|
+
],
|
|
243
|
+
nonLatin: [
|
|
244
|
+
// Japanese
|
|
245
|
+
'決めた', '決定', '選んだ', 'にする', '使うことにした', '計画は',
|
|
246
|
+
// Chinese
|
|
247
|
+
'决定了', '选择了', '我们用', '计划是', '最终选择',
|
|
248
|
+
'決定了', '選擇了', '我們用', '計劃是',
|
|
249
|
+
// Korean
|
|
250
|
+
'결정했어', '선택했어', '사용하기로', '계획은',
|
|
251
|
+
// Russian
|
|
252
|
+
'решил', 'решение', 'выбрал', 'будем использовать', 'план',
|
|
253
|
+
// Arabic
|
|
254
|
+
'قررت', 'قرار', 'اخترت', 'سنستخدم', 'الخطة',
|
|
255
|
+
// Hindi
|
|
256
|
+
'तय किया', 'फैसला', 'चुना', 'इस्तेमाल करेंगे', 'योजना है',
|
|
257
|
+
],
|
|
258
|
+
};
|
|
259
|
+
/**
|
|
260
|
+
* Constraint signals - rules and limitations
|
|
261
|
+
* Weight: 0.7
|
|
262
|
+
*/
|
|
263
|
+
export const CONSTRAINT = {
|
|
264
|
+
signalType: 'constraint',
|
|
265
|
+
weight: 0.7,
|
|
266
|
+
latin: [
|
|
267
|
+
// English
|
|
268
|
+
'can\'t', 'cannot', 'shouldn\'t', 'must not', 'forbidden', 'not allowed',
|
|
269
|
+
'don\'t ever', 'never do', 'off limits', 'prohibited', 'restricted',
|
|
270
|
+
// Spanish
|
|
271
|
+
'no puedo', 'no puede', 'no debería', 'prohibido', 'no permitido',
|
|
272
|
+
'nunca hagas', 'restringido',
|
|
273
|
+
// French
|
|
274
|
+
'ne peut pas', 'ne doit pas', 'interdit', 'pas autorisé', 'jamais faire',
|
|
275
|
+
// German
|
|
276
|
+
'kann nicht', 'darf nicht', 'verboten', 'nicht erlaubt', 'niemals',
|
|
277
|
+
// Portuguese
|
|
278
|
+
'não pode', 'não deve', 'proibido', 'não permitido', 'nunca faça',
|
|
279
|
+
// Italian
|
|
280
|
+
'non può', 'non deve', 'vietato', 'non permesso', 'mai fare',
|
|
281
|
+
// Dutch
|
|
282
|
+
'kan niet', 'mag niet', 'verboden', 'niet toegestaan', 'nooit doen',
|
|
283
|
+
// Turkish
|
|
284
|
+
'yapamam', 'yapmamalı', 'yasak', 'izin verilmiyor', 'asla yapma',
|
|
285
|
+
// Polish
|
|
286
|
+
'nie może', 'nie wolno', 'zabronione', 'niedozwolone', 'nigdy nie rób',
|
|
287
|
+
],
|
|
288
|
+
nonLatin: [
|
|
289
|
+
// Japanese
|
|
290
|
+
'できない', 'してはいけない', '禁止', '許可されていない', '絶対にしない',
|
|
291
|
+
// Chinese
|
|
292
|
+
'不能', '不可以', '禁止', '不允许', '绝不要',
|
|
293
|
+
'不能', '不可以', '禁止', '不允許', '絕不要',
|
|
294
|
+
// Korean
|
|
295
|
+
'할 수 없어', '하면 안 돼', '금지', '허용되지 않아',
|
|
296
|
+
// Russian
|
|
297
|
+
'нельзя', 'не может', 'запрещено', 'не разрешено', 'никогда не делай',
|
|
298
|
+
// Arabic
|
|
299
|
+
'لا يمكن', 'لا يجب', 'ممنوع', 'غير مسموح',
|
|
300
|
+
// Hindi
|
|
301
|
+
'नहीं कर सकते', 'नहीं करना चाहिए', 'मना है', 'अनुमति नहीं',
|
|
302
|
+
],
|
|
303
|
+
};
|
|
304
|
+
/**
|
|
305
|
+
* Bug/error signals - errors and issues
|
|
306
|
+
* Weight: 0.8
|
|
307
|
+
*/
|
|
308
|
+
export const BUG_FIX = {
|
|
309
|
+
signalType: 'bug_fix',
|
|
310
|
+
weight: 0.8,
|
|
311
|
+
latin: [
|
|
312
|
+
// English
|
|
313
|
+
'bug', 'error', 'exception', 'crash', 'fail', 'broken', 'issue',
|
|
314
|
+
'fix', 'fixed', 'resolved', 'solved', 'patched', 'workaround',
|
|
315
|
+
'TypeError', 'ReferenceError', 'SyntaxError', 'null', 'undefined',
|
|
316
|
+
'stack trace', 'traceback', 'segfault', 'memory leak',
|
|
317
|
+
// Spanish
|
|
318
|
+
'error', 'excepción', 'fallo', 'roto', 'problema', 'arreglado', 'solucionado',
|
|
319
|
+
// French
|
|
320
|
+
'erreur', 'exception', 'plantage', 'cassé', 'problème', 'corrigé', 'résolu',
|
|
321
|
+
// German
|
|
322
|
+
'fehler', 'ausnahme', 'absturz', 'kaputt', 'problem', 'behoben', 'gelöst',
|
|
323
|
+
// Portuguese
|
|
324
|
+
'erro', 'exceção', 'falha', 'quebrado', 'problema', 'corrigido', 'resolvido',
|
|
325
|
+
// Italian
|
|
326
|
+
'errore', 'eccezione', 'crash', 'rotto', 'problema', 'risolto', 'corretto',
|
|
327
|
+
// Dutch
|
|
328
|
+
'fout', 'uitzondering', 'crash', 'kapot', 'probleem', 'opgelost', 'gerepareerd',
|
|
329
|
+
// Turkish
|
|
330
|
+
'hata', 'istisna', 'çökme', 'bozuk', 'sorun', 'düzeltildi', 'çözüldü',
|
|
331
|
+
// Polish
|
|
332
|
+
'błąd', 'wyjątek', 'awaria', 'zepsuty', 'problem', 'naprawiono', 'rozwiązano',
|
|
333
|
+
],
|
|
334
|
+
nonLatin: [
|
|
335
|
+
// Japanese
|
|
336
|
+
'バグ', 'エラー', '例外', 'クラッシュ', '失敗', '壊れた', '問題',
|
|
337
|
+
'修正', '解決', 'ワークアラウンド',
|
|
338
|
+
// Chinese
|
|
339
|
+
'错误', '异常', '崩溃', '失败', '问题', '修复', '解决',
|
|
340
|
+
'錯誤', '異常', '崩潰', '失敗', '問題', '修復', '解決',
|
|
341
|
+
// Korean
|
|
342
|
+
'버그', '오류', '예외', '크래시', '실패', '문제', '수정됨', '해결됨',
|
|
343
|
+
// Russian
|
|
344
|
+
'ошибка', 'исключение', 'сбой', 'сломано', 'проблема', 'исправлено', 'решено',
|
|
345
|
+
// Arabic
|
|
346
|
+
'خطأ', 'استثناء', 'تعطل', 'مشكلة', 'تم الإصلاح', 'تم الحل',
|
|
347
|
+
// Hindi
|
|
348
|
+
'त्रुटि', 'अपवाद', 'क्रैश', 'समस्या', 'ठीक किया', 'हल किया',
|
|
349
|
+
],
|
|
350
|
+
};
|
|
351
|
+
/**
|
|
352
|
+
* Learning signals - discoveries and insights
|
|
353
|
+
* Weight: 0.8
|
|
354
|
+
*/
|
|
355
|
+
export const LEARNING = {
|
|
356
|
+
signalType: 'learning',
|
|
357
|
+
weight: 0.8,
|
|
358
|
+
latin: [
|
|
359
|
+
// English
|
|
360
|
+
'learned', 'realized', 'discovered', 'found out', 'turns out',
|
|
361
|
+
'TIL', 'insight', 'aha', 'gotcha', 'trick', 'tip',
|
|
362
|
+
'the key is', 'the trick is', 'the solution is', 'the way to',
|
|
363
|
+
'now I understand', 'I see now',
|
|
364
|
+
// Spanish
|
|
365
|
+
'aprendí', 'descubrí', 'resulta que', 'el truco es', 'la clave es',
|
|
366
|
+
'ahora entiendo',
|
|
367
|
+
// French
|
|
368
|
+
'j\'ai appris', 'j\'ai découvert', 'il s\'avère', 'l\'astuce est', 'la clé est',
|
|
369
|
+
'maintenant je comprends',
|
|
370
|
+
// German
|
|
371
|
+
'gelernt', 'entdeckt', 'herausgefunden', 'der trick ist', 'der schlüssel ist',
|
|
372
|
+
'jetzt verstehe ich',
|
|
373
|
+
// Portuguese
|
|
374
|
+
'aprendi', 'descobri', 'percebi', 'o truque é', 'a chave é',
|
|
375
|
+
'agora entendo',
|
|
376
|
+
// Italian
|
|
377
|
+
'ho imparato', 'ho scoperto', 'il trucco è', 'la chiave è',
|
|
378
|
+
'ora capisco',
|
|
379
|
+
// Dutch
|
|
380
|
+
'geleerd', 'ontdekt', 'blijkt dat', 'de truc is', 'de sleutel is',
|
|
381
|
+
'nu begrijp ik',
|
|
382
|
+
// Turkish
|
|
383
|
+
'öğrendim', 'keşfettim', 'anladım ki', 'hile şu', 'anahtar şu',
|
|
384
|
+
// Polish
|
|
385
|
+
'nauczyłem się', 'odkryłem', 'okazuje się', 'sztuczka to', 'klucz to',
|
|
386
|
+
'teraz rozumiem',
|
|
387
|
+
],
|
|
388
|
+
nonLatin: [
|
|
389
|
+
// Japanese
|
|
390
|
+
'学んだ', '分かった', '発見した', 'コツは', 'ポイントは', '理解した',
|
|
391
|
+
// Chinese
|
|
392
|
+
'学到了', '发现了', '原来', '诀窍是', '关键是', '明白了',
|
|
393
|
+
'學到了', '發現了', '原來', '訣竅是', '關鍵是', '明白了',
|
|
394
|
+
// Korean
|
|
395
|
+
'배웠어', '알게 됐어', '발견했어', '비결은', '핵심은', '이해했어',
|
|
396
|
+
// Russian
|
|
397
|
+
'узнал', 'обнаружил', 'понял', 'фишка в том', 'ключ в том', 'теперь понимаю',
|
|
398
|
+
// Arabic
|
|
399
|
+
'تعلمت', 'اكتشفت', 'اتضح', 'الحيلة هي', 'المفتاح هو', 'الآن أفهم',
|
|
400
|
+
// Hindi
|
|
401
|
+
'सीखा', 'पता चला', 'समझ गया', 'तरीका है', 'कुंजी है',
|
|
402
|
+
],
|
|
403
|
+
};
|
|
404
|
+
// =============================================================================
|
|
405
|
+
// All Pattern Categories
|
|
406
|
+
// =============================================================================
|
|
407
|
+
export const ALL_PATTERNS = [
|
|
408
|
+
EXPLICIT_REMEMBER,
|
|
409
|
+
EMPHASIS_CUE,
|
|
410
|
+
CORRECTION,
|
|
411
|
+
PREFERENCE,
|
|
412
|
+
DECISION,
|
|
413
|
+
CONSTRAINT,
|
|
414
|
+
BUG_FIX,
|
|
415
|
+
LEARNING,
|
|
416
|
+
];
|
|
417
|
+
// =============================================================================
|
|
418
|
+
// Classification Patterns (for classifyContent)
|
|
419
|
+
// =============================================================================
|
|
420
|
+
/**
|
|
421
|
+
* Patterns for classifying content after importance is detected.
|
|
422
|
+
* More specific than importance patterns - used to determine MemoryClassification.
|
|
423
|
+
*/
|
|
424
|
+
export const CLASSIFICATION_PATTERNS = {
|
|
425
|
+
bugfix: {
|
|
426
|
+
latin: [
|
|
427
|
+
'bug', 'error', 'exception', 'crash', 'fail', 'broken', 'issue',
|
|
428
|
+
'fix', 'fixed', 'resolved', 'solved', 'patched', 'workaround',
|
|
429
|
+
'TypeError', 'ReferenceError', 'SyntaxError', 'null pointer',
|
|
430
|
+
'stack trace', 'traceback', 'segfault',
|
|
431
|
+
],
|
|
432
|
+
nonLatin: [
|
|
433
|
+
'バグ', 'エラー', '修正', '解決',
|
|
434
|
+
'错误', '修复', '解决', '錯誤', '修復', '解決',
|
|
435
|
+
'버그', '오류', '수정',
|
|
436
|
+
'ошибка', 'исправлено',
|
|
437
|
+
'خطأ', 'إصلاح',
|
|
438
|
+
'त्रुटि', 'ठीक',
|
|
439
|
+
],
|
|
440
|
+
},
|
|
441
|
+
learning: {
|
|
442
|
+
latin: [
|
|
443
|
+
'learned', 'realized', 'discovered', 'found out', 'turns out',
|
|
444
|
+
'TIL', 'insight', 'the key is', 'the trick is', 'now I understand',
|
|
445
|
+
],
|
|
446
|
+
nonLatin: [
|
|
447
|
+
'学んだ', '分かった', '発見',
|
|
448
|
+
'学到', '发现', '明白', '學到', '發現',
|
|
449
|
+
'배웠', '알게',
|
|
450
|
+
'узнал', 'понял',
|
|
451
|
+
'تعلمت', 'اكتشفت',
|
|
452
|
+
'सीखा', 'समझ',
|
|
453
|
+
],
|
|
454
|
+
},
|
|
455
|
+
constraint: {
|
|
456
|
+
latin: [
|
|
457
|
+
'can\'t', 'cannot', 'shouldn\'t', 'must not', 'forbidden', 'not allowed',
|
|
458
|
+
'never', 'must', 'prohibited', 'restricted', 'off limits',
|
|
459
|
+
],
|
|
460
|
+
nonLatin: [
|
|
461
|
+
'できない', 'してはいけない', '禁止',
|
|
462
|
+
'不能', '不可以', '禁止', '不允许',
|
|
463
|
+
'안 돼', '금지',
|
|
464
|
+
'нельзя', 'запрещено',
|
|
465
|
+
'ممنوع', 'لا يجب',
|
|
466
|
+
'मना है', 'नहीं',
|
|
467
|
+
],
|
|
468
|
+
},
|
|
469
|
+
decision: {
|
|
470
|
+
latin: [
|
|
471
|
+
'decided', 'decision', 'chose', 'going with', 'let\'s use', 'we\'ll use',
|
|
472
|
+
'settled on', 'final choice', 'the plan is',
|
|
473
|
+
],
|
|
474
|
+
nonLatin: [
|
|
475
|
+
'決めた', '決定', '選んだ',
|
|
476
|
+
'决定', '选择', '決定', '選擇',
|
|
477
|
+
'결정', '선택',
|
|
478
|
+
'решил', 'выбрал',
|
|
479
|
+
'قررت', 'اخترت',
|
|
480
|
+
'तय किया', 'चुना',
|
|
481
|
+
],
|
|
482
|
+
},
|
|
483
|
+
preference: {
|
|
484
|
+
latin: [
|
|
485
|
+
'prefer', 'like', 'want', 'don\'t like', 'hate', 'avoid',
|
|
486
|
+
'I\'d rather', 'better if', 'always',
|
|
487
|
+
],
|
|
488
|
+
nonLatin: [
|
|
489
|
+
'好き', '嫌い', '好み',
|
|
490
|
+
'喜欢', '不喜欢', '偏好', '喜歡', '不喜歡',
|
|
491
|
+
'좋아', '싫어', '선호',
|
|
492
|
+
'предпочитаю', 'нравится',
|
|
493
|
+
'أفضل', 'أحب',
|
|
494
|
+
'पसंद', 'नापसंद',
|
|
495
|
+
],
|
|
496
|
+
},
|
|
497
|
+
procedural: {
|
|
498
|
+
latin: [
|
|
499
|
+
'step', 'workflow', 'process', 'procedure', 'how to', 'the way to',
|
|
500
|
+
'first', 'then', 'finally', 'next',
|
|
501
|
+
],
|
|
502
|
+
nonLatin: [
|
|
503
|
+
'ステップ', '手順', '方法',
|
|
504
|
+
'步骤', '流程', '方法', '步驟', '流程',
|
|
505
|
+
'단계', '절차', '방법',
|
|
506
|
+
'шаг', 'процесс', 'процедура',
|
|
507
|
+
'خطوة', 'إجراء',
|
|
508
|
+
'कदम', 'प्रक्रिया',
|
|
509
|
+
],
|
|
510
|
+
},
|
|
511
|
+
};
|
|
512
|
+
// =============================================================================
|
|
513
|
+
// Pattern Matching Functions
|
|
514
|
+
// =============================================================================
|
|
515
|
+
/**
|
|
516
|
+
* Compile a pattern category's Latin keywords into a single regex.
|
|
517
|
+
* Caches the compiled regex on the category object.
|
|
518
|
+
*/
|
|
519
|
+
function compileLatinRegex(category) {
|
|
520
|
+
if (category.compiledRegex) {
|
|
521
|
+
return category.compiledRegex;
|
|
522
|
+
}
|
|
523
|
+
// Escape special regex characters and join with |
|
|
524
|
+
const escaped = category.latin.map(keyword => keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
|
|
525
|
+
// Create case-insensitive regex with word boundaries
|
|
526
|
+
category.compiledRegex = new RegExp(`\\b(${escaped.join('|')})\\b`, 'i');
|
|
527
|
+
return category.compiledRegex;
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Check if text matches any non-Latin keyword via includes()
|
|
531
|
+
*/
|
|
532
|
+
function matchNonLatin(text, keywords) {
|
|
533
|
+
for (const keyword of keywords) {
|
|
534
|
+
if (text.includes(keyword)) {
|
|
535
|
+
return keyword;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
return null;
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* Match text against a pattern category, returning an ImportanceSignal if matched.
|
|
542
|
+
*/
|
|
543
|
+
export function matchPattern(text, category) {
|
|
544
|
+
// Try Latin regex first
|
|
545
|
+
if (category.latin.length > 0) {
|
|
546
|
+
const regex = compileLatinRegex(category);
|
|
547
|
+
const match = text.match(regex);
|
|
548
|
+
if (match) {
|
|
549
|
+
return {
|
|
550
|
+
type: category.signalType,
|
|
551
|
+
source: match[0],
|
|
552
|
+
weight: category.weight,
|
|
553
|
+
};
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
// Try non-Latin includes
|
|
557
|
+
if (category.nonLatin.length > 0) {
|
|
558
|
+
const match = matchNonLatin(text, category.nonLatin);
|
|
559
|
+
if (match) {
|
|
560
|
+
return {
|
|
561
|
+
type: category.signalType,
|
|
562
|
+
source: match,
|
|
563
|
+
weight: category.weight,
|
|
564
|
+
};
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
return null;
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* Match text against all pattern categories, returning all matched signals.
|
|
571
|
+
*/
|
|
572
|
+
export function matchAllPatterns(text) {
|
|
573
|
+
const signals = [];
|
|
574
|
+
for (const category of ALL_PATTERNS) {
|
|
575
|
+
const signal = matchPattern(text, category);
|
|
576
|
+
if (signal) {
|
|
577
|
+
signals.push(signal);
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
return signals;
|
|
581
|
+
}
|
|
582
|
+
/**
|
|
583
|
+
* Classify content based on matched keywords.
|
|
584
|
+
* Returns the best-matching MemoryClassification.
|
|
585
|
+
*/
|
|
586
|
+
export function classifyByPatterns(text) {
|
|
587
|
+
const lowerText = text.toLowerCase();
|
|
588
|
+
// Check each classification in priority order
|
|
589
|
+
const checks = [
|
|
590
|
+
{ classification: 'bugfix', patterns: CLASSIFICATION_PATTERNS.bugfix },
|
|
591
|
+
{ classification: 'learning', patterns: CLASSIFICATION_PATTERNS.learning },
|
|
592
|
+
{ classification: 'constraint', patterns: CLASSIFICATION_PATTERNS.constraint },
|
|
593
|
+
{ classification: 'decision', patterns: CLASSIFICATION_PATTERNS.decision },
|
|
594
|
+
{ classification: 'preference', patterns: CLASSIFICATION_PATTERNS.preference },
|
|
595
|
+
{ classification: 'procedural', patterns: CLASSIFICATION_PATTERNS.procedural },
|
|
596
|
+
];
|
|
597
|
+
for (const { classification, patterns } of checks) {
|
|
598
|
+
// Check Latin patterns
|
|
599
|
+
for (const keyword of patterns.latin) {
|
|
600
|
+
if (lowerText.includes(keyword.toLowerCase())) {
|
|
601
|
+
return classification;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
// Check non-Latin patterns
|
|
605
|
+
for (const keyword of patterns.nonLatin) {
|
|
606
|
+
if (text.includes(keyword)) {
|
|
607
|
+
return classification;
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
return null;
|
|
612
|
+
}
|
|
613
|
+
//# sourceMappingURL=patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/memory/patterns.ts"],"names":[],"mappings":"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"}
|