@vainplex/openclaw-cortex 0.2.2 → 0.3.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 (63) hide show
  1. package/dist/src/config.d.ts.map +1 -1
  2. package/dist/src/config.js +27 -0
  3. package/dist/src/config.js.map +1 -1
  4. package/dist/src/patterns/index.d.ts +7 -0
  5. package/dist/src/patterns/index.d.ts.map +1 -0
  6. package/dist/src/patterns/index.js +6 -0
  7. package/dist/src/patterns/index.js.map +1 -0
  8. package/dist/src/patterns/lang-de.d.ts +4 -0
  9. package/dist/src/patterns/lang-de.d.ts.map +1 -0
  10. package/dist/src/patterns/lang-de.js +43 -0
  11. package/dist/src/patterns/lang-de.js.map +1 -0
  12. package/dist/src/patterns/lang-en.d.ts +4 -0
  13. package/dist/src/patterns/lang-en.d.ts.map +1 -0
  14. package/dist/src/patterns/lang-en.js +44 -0
  15. package/dist/src/patterns/lang-en.js.map +1 -0
  16. package/dist/src/patterns/lang-es.d.ts +4 -0
  17. package/dist/src/patterns/lang-es.d.ts.map +1 -0
  18. package/dist/src/patterns/lang-es.js +47 -0
  19. package/dist/src/patterns/lang-es.js.map +1 -0
  20. package/dist/src/patterns/lang-fr.d.ts +4 -0
  21. package/dist/src/patterns/lang-fr.d.ts.map +1 -0
  22. package/dist/src/patterns/lang-fr.js +46 -0
  23. package/dist/src/patterns/lang-fr.js.map +1 -0
  24. package/dist/src/patterns/lang-it.d.ts +4 -0
  25. package/dist/src/patterns/lang-it.d.ts.map +1 -0
  26. package/dist/src/patterns/lang-it.js +47 -0
  27. package/dist/src/patterns/lang-it.js.map +1 -0
  28. package/dist/src/patterns/lang-ja.d.ts +4 -0
  29. package/dist/src/patterns/lang-ja.d.ts.map +1 -0
  30. package/dist/src/patterns/lang-ja.js +46 -0
  31. package/dist/src/patterns/lang-ja.js.map +1 -0
  32. package/dist/src/patterns/lang-ko.d.ts +4 -0
  33. package/dist/src/patterns/lang-ko.d.ts.map +1 -0
  34. package/dist/src/patterns/lang-ko.js +46 -0
  35. package/dist/src/patterns/lang-ko.js.map +1 -0
  36. package/dist/src/patterns/lang-pt.d.ts +4 -0
  37. package/dist/src/patterns/lang-pt.d.ts.map +1 -0
  38. package/dist/src/patterns/lang-pt.js +47 -0
  39. package/dist/src/patterns/lang-pt.js.map +1 -0
  40. package/dist/src/patterns/lang-ru.d.ts +4 -0
  41. package/dist/src/patterns/lang-ru.d.ts.map +1 -0
  42. package/dist/src/patterns/lang-ru.js +46 -0
  43. package/dist/src/patterns/lang-ru.js.map +1 -0
  44. package/dist/src/patterns/lang-zh.d.ts +4 -0
  45. package/dist/src/patterns/lang-zh.d.ts.map +1 -0
  46. package/dist/src/patterns/lang-zh.js +46 -0
  47. package/dist/src/patterns/lang-zh.js.map +1 -0
  48. package/dist/src/patterns/registry.d.ts +38 -0
  49. package/dist/src/patterns/registry.d.ts.map +1 -0
  50. package/dist/src/patterns/registry.js +220 -0
  51. package/dist/src/patterns/registry.js.map +1 -0
  52. package/dist/src/patterns/types.d.ts +53 -0
  53. package/dist/src/patterns/types.d.ts.map +1 -0
  54. package/dist/src/patterns/types.js +2 -0
  55. package/dist/src/patterns/types.js.map +1 -0
  56. package/dist/src/patterns.d.ts +12 -12
  57. package/dist/src/patterns.d.ts.map +1 -1
  58. package/dist/src/patterns.js +39 -88
  59. package/dist/src/patterns.js.map +1 -1
  60. package/dist/src/types.d.ts +10 -1
  61. package/dist/src/types.d.ts.map +1 -1
  62. package/dist/src/types.js.map +1 -1
  63. package/package.json +1 -1
@@ -0,0 +1,46 @@
1
+ export const LANG_RU = {
2
+ code: "ru",
3
+ name: "Русский",
4
+ nameEn: "Russian",
5
+ patterns: {
6
+ decision: [
7
+ /(?:решили|решение|давайте сделаем|план[:\s]|подход:)/i,
8
+ /(?:договорились|выбрали|остановились на|утвердили)/i,
9
+ ],
10
+ close: [
11
+ /(?:^|\s)(?:уже )?(?:сделано|решено|закрыто|готово|исправлено)(?:\s|[.!]|$)/i,
12
+ /(?:^|\s)(?:уже )?работает(?:\s|[.!]|$)/i,
13
+ ],
14
+ wait: [
15
+ /(?:ждём|заблокировано|нужно.*сначала)/i,
16
+ /(?:ожидаем|зависит от|сперва нужно)/i,
17
+ ],
18
+ topic: [
19
+ /(?:вернёмся к|теперь о|по поводу|давайте обсудим|касательно)\s+([а-яёА-ЯЁ\w][а-яёА-ЯЁ\w\s-]{3,40})/i,
20
+ ],
21
+ },
22
+ topicBlacklist: [
23
+ "это", "то", "этот", "тот", "эта", "та", "здесь", "там",
24
+ "я", "ты", "он", "она", "мы", "они", "вы",
25
+ "ничего", "что-то", "всё",
26
+ "сегодня", "завтра", "вчера",
27
+ "ещё", "уже", "сейчас", "потом", "тоже", "но", "или",
28
+ ],
29
+ highImpactKeywords: [
30
+ "архитектура", "безопасность", "миграция", "удалить",
31
+ "продакшн", "деплой", "критический", "стратегия",
32
+ "бюджет", "контракт", "важный",
33
+ ],
34
+ moodPatterns: {
35
+ frustrated: /(?:блять|чёрт|пиздец|задолбало|бесит|ёпт)/i,
36
+ excited: /(?:круто|офигенно|класс|супер|шикарно|огонь)/i,
37
+ tense: /(?:осторожно|опасно|срочно|критично|внимание|риск)/i,
38
+ productive: /(?:сделано|готово|задеплоил|починил|выкатил)/i,
39
+ exploratory: /(?:а если|может быть|идея|попробуем|как насчёт|вариант)/i,
40
+ },
41
+ noisePrefixes: [
42
+ "я", "мы", "ты", "он", "она", "ничего", "что-то",
43
+ ],
44
+ };
45
+ export default LANG_RU;
46
+ //# sourceMappingURL=lang-ru.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lang-ru.js","sourceRoot":"","sources":["../../../src/patterns/lang-ru.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAiB;IACnC,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,SAAS;IAEjB,QAAQ,EAAE;QACR,QAAQ,EAAE;YACR,uDAAuD;YACvD,qDAAqD;SACtD;QACD,KAAK,EAAE;YACL,6EAA6E;YAC7E,yCAAyC;SAC1C;QACD,IAAI,EAAE;YACJ,wCAAwC;YACxC,sCAAsC;SACvC;QACD,KAAK,EAAE;YACL,qGAAqG;SACtG;KACF;IAED,cAAc,EAAE;QACd,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK;QACvD,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI;QACzC,QAAQ,EAAE,QAAQ,EAAE,KAAK;QACzB,SAAS,EAAE,QAAQ,EAAE,OAAO;QAC5B,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK;KACrD;IAED,kBAAkB,EAAE;QAClB,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS;QACpD,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW;QAChD,QAAQ,EAAE,UAAU,EAAE,QAAQ;KAC/B;IAED,YAAY,EAAE;QACZ,UAAU,EAAE,4CAA4C;QACxD,OAAO,EAAE,+CAA+C;QACxD,KAAK,EAAE,qDAAqD;QAC5D,UAAU,EAAE,+CAA+C;QAC3D,WAAW,EAAE,0DAA0D;KACxE;IAED,aAAa,EAAE;QACb,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ;KACjD;CACF,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { LanguagePack } from "./types.js";
2
+ export declare const LANG_ZH: LanguagePack;
3
+ export default LANG_ZH;
4
+ //# sourceMappingURL=lang-zh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lang-zh.d.ts","sourceRoot":"","sources":["../../../src/patterns/lang-zh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,OAAO,EAAE,YAgDrB,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,46 @@
1
+ export const LANG_ZH = {
2
+ code: "zh",
3
+ name: "中文",
4
+ nameEn: "Chinese",
5
+ patterns: {
6
+ decision: [
7
+ /(?:决定|已决定|方案[是为]|我们[用采]|确定了|就这么[定办])/,
8
+ /(?:敲定|拍板|最终[选方]|采用|选择了)/,
9
+ ],
10
+ close: [
11
+ /(?:完成|搞定|解决了|已[关修]|修好了|结束了)/,
12
+ /(?:好了|没问题了|可以了|OK了|行了)/,
13
+ ],
14
+ wait: [
15
+ /(?:等待|等[着]?|被.*阻塞|需要.*才能|还差)/,
16
+ /(?:卡在|依赖于|前提是)/,
17
+ ],
18
+ topic: [
19
+ /(?:关于|回到|讨论|说[说到]|看看)\s*([\u4e00-\u9fff\w]{2,20})/,
20
+ /(?:至于|针对|聊聊)\s*([\u4e00-\u9fff\w]{2,20})/,
21
+ ],
22
+ },
23
+ topicBlacklist: [
24
+ "这个", "那个", "什么", "哪个", "这里", "那里",
25
+ "我", "你", "他", "她", "我们", "他们",
26
+ "没有", "东西", "事情",
27
+ "今天", "明天", "昨天",
28
+ ],
29
+ highImpactKeywords: [
30
+ "架构", "安全", "迁移", "删除",
31
+ "生产", "部署", "关键", "策略",
32
+ "预算", "合同", "重大",
33
+ ],
34
+ moodPatterns: {
35
+ frustrated: /(?:靠|妈的|草|烦死|崩溃|要命|坑爹)/,
36
+ excited: /(?:太好了|牛逼|厉害|完美|太棒了|666)/,
37
+ tense: /(?:小心|危险|紧急|注意|当心|风险)/,
38
+ productive: /(?:搞定|完成|修好|部署了|上线了)/,
39
+ exploratory: /(?:如果|或许|想法|试试|要不|可以考虑)/,
40
+ },
41
+ noisePrefixes: [
42
+ "我", "你", "他", "她", "我们", "没有",
43
+ ],
44
+ };
45
+ export default LANG_ZH;
46
+ //# sourceMappingURL=lang-zh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lang-zh.js","sourceRoot":"","sources":["../../../src/patterns/lang-zh.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAiB;IACnC,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,SAAS;IAEjB,QAAQ,EAAE;QACR,QAAQ,EAAE;YACR,sCAAsC;YACtC,yBAAyB;SAC1B;QACD,KAAK,EAAE;YACL,6BAA6B;YAC7B,wBAAwB;SACzB;QACD,IAAI,EAAE;YACJ,8BAA8B;YAC9B,gBAAgB;SACjB;QACD,KAAK,EAAE;YACL,mDAAmD;YACnD,0CAA0C;SAC3C;KACF;IAED,cAAc,EAAE;QACd,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAClC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;QAC9B,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,IAAI,EAAE,IAAI,EAAE,IAAI;KACjB;IAED,kBAAkB,EAAE;QAClB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QACtB,IAAI,EAAE,IAAI,EAAE,IAAI;KACjB;IAED,YAAY,EAAE;QACZ,UAAU,EAAE,wBAAwB;QACpC,OAAO,EAAE,0BAA0B;QACnC,KAAK,EAAE,uBAAuB;QAC9B,UAAU,EAAE,sBAAsB;QAClC,WAAW,EAAE,yBAAyB;KACvC;IAED,aAAa,EAAE;QACb,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;KAC/B;CACF,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { Mood } from "../types.js";
2
+ import type { LanguagePack, PatternSet, CustomPatternConfig } from "./types.js";
3
+ /** All built-in language codes. */
4
+ export declare const BUILTIN_LANGUAGES: string[];
5
+ export declare class PatternRegistry {
6
+ private packs;
7
+ private customConfig;
8
+ private cachedPatterns;
9
+ private cachedBlacklist;
10
+ private cachedKeywords;
11
+ private cachedMoodPatterns;
12
+ private cachedNoisePrefixPattern;
13
+ /** Async load — supports all languages including lazy-loaded ones. */
14
+ load(codes: string[], custom?: CustomPatternConfig): Promise<void>;
15
+ /** Synchronous load — works for EN/DE and any runtime-registered packs. */
16
+ loadSync(codes: string[], custom?: CustomPatternConfig): void;
17
+ /** Register a language pack at runtime. */
18
+ registerLanguagePack(pack: LanguagePack): void;
19
+ /** Get merged pattern set (cached). */
20
+ getPatterns(): PatternSet;
21
+ /** Get merged topic blacklist (cached). */
22
+ getBlacklist(): Set<string>;
23
+ /** Get merged high-impact keywords (cached, deduplicated). */
24
+ getHighImpactKeywords(): string[];
25
+ /** Get merged mood patterns (cached). */
26
+ getMoodPatterns(): Record<Exclude<Mood, "neutral">, RegExp>;
27
+ /** Get noise prefix regex (cached). */
28
+ getNoisePrefixPattern(): RegExp | null;
29
+ /** Get loaded language codes. */
30
+ getLoadedLanguages(): string[];
31
+ /** Compile custom pattern strings to RegExp. */
32
+ private compileCustomStrings;
33
+ /** Apply custom patterns to merged set. */
34
+ private applyCustomPatterns;
35
+ /** Invalidate all caches. */
36
+ private invalidateCache;
37
+ }
38
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/patterns/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AA+BhF,mCAAmC;AACnC,eAAO,MAAM,iBAAiB,UAE7B,CAAC;AAEF,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,kBAAkB,CAAyD;IACnF,OAAO,CAAC,wBAAwB,CAAuB;IAEvD,sEAAsE;IAChE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxE,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,mBAAmB,GAAG,IAAI;IAY7D,2CAA2C;IAC3C,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAM9C,uCAAuC;IACvC,WAAW,IAAI,UAAU;IAmBzB,2CAA2C;IAC3C,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC;IAa3B,8DAA8D;IAC9D,qBAAqB,IAAI,MAAM,EAAE;IAajC,yCAAyC;IACzC,eAAe,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IA8B3D,uCAAuC;IACvC,qBAAqB,IAAI,MAAM,GAAG,IAAI;IAiBtC,iCAAiC;IACjC,kBAAkB,IAAI,MAAM,EAAE;IAI9B,gDAAgD;IAChD,OAAO,CAAC,oBAAoB;IAU5B,2CAA2C;IAC3C,OAAO,CAAC,mBAAmB;IAuB3B,6BAA6B;IAC7B,OAAO,CAAC,eAAe;CAOxB"}
@@ -0,0 +1,220 @@
1
+ import { LANG_EN } from "./lang-en.js";
2
+ import { LANG_DE } from "./lang-de.js";
3
+ /** Universal mood patterns (emoji — language-independent). */
4
+ const BASE_MOOD = {
5
+ frustrated: [/(?:wtf|argh)/i],
6
+ excited: [/(?:🎯|🚀)/],
7
+ tense: [/(?:⚠️|‼️)/],
8
+ productive: [/(?:✅)/],
9
+ exploratory: [/(?:🤔|💡)/],
10
+ };
11
+ /** Map of built-in language packs available synchronously. */
12
+ const SYNC_PACKS = {
13
+ en: LANG_EN,
14
+ de: LANG_DE,
15
+ };
16
+ /** Lazy loaders for additional languages. */
17
+ const ASYNC_LOADERS = {
18
+ fr: async () => (await import("./lang-fr.js")).default,
19
+ es: async () => (await import("./lang-es.js")).default,
20
+ pt: async () => (await import("./lang-pt.js")).default,
21
+ it: async () => (await import("./lang-it.js")).default,
22
+ zh: async () => (await import("./lang-zh.js")).default,
23
+ ja: async () => (await import("./lang-ja.js")).default,
24
+ ko: async () => (await import("./lang-ko.js")).default,
25
+ ru: async () => (await import("./lang-ru.js")).default,
26
+ };
27
+ /** All built-in language codes. */
28
+ export const BUILTIN_LANGUAGES = [
29
+ "en", "de", "fr", "es", "pt", "it", "zh", "ja", "ko", "ru",
30
+ ];
31
+ export class PatternRegistry {
32
+ packs = [];
33
+ customConfig = null;
34
+ cachedPatterns = null;
35
+ cachedBlacklist = null;
36
+ cachedKeywords = null;
37
+ cachedMoodPatterns = null;
38
+ cachedNoisePrefixPattern = null;
39
+ /** Async load — supports all languages including lazy-loaded ones. */
40
+ async load(codes, custom) {
41
+ this.packs = [];
42
+ this.customConfig = custom ?? null;
43
+ this.invalidateCache();
44
+ for (const code of codes) {
45
+ if (SYNC_PACKS[code]) {
46
+ this.packs.push(SYNC_PACKS[code]);
47
+ }
48
+ else if (ASYNC_LOADERS[code]) {
49
+ this.packs.push(await ASYNC_LOADERS[code]());
50
+ }
51
+ }
52
+ }
53
+ /** Synchronous load — works for EN/DE and any runtime-registered packs. */
54
+ loadSync(codes, custom) {
55
+ this.packs = [];
56
+ this.customConfig = custom ?? null;
57
+ this.invalidateCache();
58
+ for (const code of codes) {
59
+ if (SYNC_PACKS[code]) {
60
+ this.packs.push(SYNC_PACKS[code]);
61
+ }
62
+ }
63
+ }
64
+ /** Register a language pack at runtime. */
65
+ registerLanguagePack(pack) {
66
+ this.packs = this.packs.filter(p => p.code !== pack.code);
67
+ this.packs.push(pack);
68
+ this.invalidateCache();
69
+ }
70
+ /** Get merged pattern set (cached). */
71
+ getPatterns() {
72
+ if (this.cachedPatterns)
73
+ return this.cachedPatterns;
74
+ const merged = { decision: [], close: [], wait: [], topic: [] };
75
+ for (const pack of this.packs) {
76
+ merged.decision.push(...pack.patterns.decision);
77
+ merged.close.push(...pack.patterns.close);
78
+ merged.wait.push(...pack.patterns.wait);
79
+ merged.topic.push(...pack.patterns.topic);
80
+ }
81
+ if (this.customConfig) {
82
+ this.applyCustomPatterns(merged);
83
+ }
84
+ this.cachedPatterns = merged;
85
+ return merged;
86
+ }
87
+ /** Get merged topic blacklist (cached). */
88
+ getBlacklist() {
89
+ if (this.cachedBlacklist)
90
+ return this.cachedBlacklist;
91
+ const set = new Set();
92
+ for (const pack of this.packs) {
93
+ for (const word of pack.topicBlacklist)
94
+ set.add(word);
95
+ }
96
+ if (this.customConfig?.topicBlacklist) {
97
+ for (const word of this.customConfig.topicBlacklist)
98
+ set.add(word);
99
+ }
100
+ this.cachedBlacklist = set;
101
+ return set;
102
+ }
103
+ /** Get merged high-impact keywords (cached, deduplicated). */
104
+ getHighImpactKeywords() {
105
+ if (this.cachedKeywords)
106
+ return this.cachedKeywords;
107
+ const set = new Set();
108
+ for (const pack of this.packs) {
109
+ for (const kw of pack.highImpactKeywords)
110
+ set.add(kw);
111
+ }
112
+ if (this.customConfig?.highImpactKeywords) {
113
+ for (const kw of this.customConfig.highImpactKeywords)
114
+ set.add(kw);
115
+ }
116
+ this.cachedKeywords = [...set];
117
+ return this.cachedKeywords;
118
+ }
119
+ /** Get merged mood patterns (cached). */
120
+ getMoodPatterns() {
121
+ if (this.cachedMoodPatterns)
122
+ return this.cachedMoodPatterns;
123
+ const sources = {
124
+ frustrated: [...BASE_MOOD.frustrated],
125
+ excited: [...BASE_MOOD.excited],
126
+ tense: [...BASE_MOOD.tense],
127
+ productive: [...BASE_MOOD.productive],
128
+ exploratory: [...BASE_MOOD.exploratory],
129
+ };
130
+ for (const pack of this.packs) {
131
+ if (!pack.moodPatterns)
132
+ continue;
133
+ for (const [mood, pattern] of Object.entries(pack.moodPatterns)) {
134
+ if (pattern) {
135
+ sources[mood].push(pattern);
136
+ }
137
+ }
138
+ }
139
+ const merged = {};
140
+ for (const [mood, patterns] of Object.entries(sources)) {
141
+ const combined = patterns.map(p => p.source).join("|");
142
+ merged[mood] = new RegExp(combined, "i");
143
+ }
144
+ this.cachedMoodPatterns = merged;
145
+ return merged;
146
+ }
147
+ /** Get noise prefix regex (cached). */
148
+ getNoisePrefixPattern() {
149
+ if (this.cachedNoisePrefixPattern !== null) {
150
+ return this.cachedNoisePrefixPattern;
151
+ }
152
+ const prefixes = [];
153
+ for (const pack of this.packs) {
154
+ if (pack.noisePrefixes)
155
+ prefixes.push(...pack.noisePrefixes);
156
+ }
157
+ if (prefixes.length === 0)
158
+ return null;
159
+ const deduped = [...new Set(prefixes)];
160
+ const pattern = new RegExp(`^(${deduped.join("|")})\\s`, "i");
161
+ this.cachedNoisePrefixPattern = pattern;
162
+ return pattern;
163
+ }
164
+ /** Get loaded language codes. */
165
+ getLoadedLanguages() {
166
+ return this.packs.map(p => p.code);
167
+ }
168
+ /** Compile custom pattern strings to RegExp. */
169
+ compileCustomStrings(strings) {
170
+ if (!strings)
171
+ return [];
172
+ return strings
173
+ .map(s => {
174
+ try {
175
+ return new RegExp(s, "i");
176
+ }
177
+ catch {
178
+ return null;
179
+ }
180
+ })
181
+ .filter((r) => r !== null);
182
+ }
183
+ /** Apply custom patterns to merged set. */
184
+ applyCustomPatterns(merged) {
185
+ if (!this.customConfig)
186
+ return;
187
+ const cfg = this.customConfig;
188
+ const compiled = {
189
+ decision: this.compileCustomStrings(cfg.decision),
190
+ close: this.compileCustomStrings(cfg.close),
191
+ wait: this.compileCustomStrings(cfg.wait),
192
+ topic: this.compileCustomStrings(cfg.topic),
193
+ };
194
+ if (cfg.mode === "override") {
195
+ if (compiled.decision.length)
196
+ merged.decision = compiled.decision;
197
+ if (compiled.close.length)
198
+ merged.close = compiled.close;
199
+ if (compiled.wait.length)
200
+ merged.wait = compiled.wait;
201
+ if (compiled.topic.length)
202
+ merged.topic = compiled.topic;
203
+ }
204
+ else {
205
+ merged.decision.push(...compiled.decision);
206
+ merged.close.push(...compiled.close);
207
+ merged.wait.push(...compiled.wait);
208
+ merged.topic.push(...compiled.topic);
209
+ }
210
+ }
211
+ /** Invalidate all caches. */
212
+ invalidateCache() {
213
+ this.cachedPatterns = null;
214
+ this.cachedBlacklist = null;
215
+ this.cachedKeywords = null;
216
+ this.cachedMoodPatterns = null;
217
+ this.cachedNoisePrefixPattern = null;
218
+ }
219
+ }
220
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/patterns/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { Mood } from "../types.js";
2
+ /** A complete language pack for pattern-based detection. */
3
+ export type LanguagePack = {
4
+ /** ISO 639-1 code (e.g., "en", "de", "fr", "zh") */
5
+ code: string;
6
+ /** Name in the language itself (e.g., "English", "Deutsch", "Français") */
7
+ name: string;
8
+ /** English name for logs (e.g., "English", "German", "French") */
9
+ nameEn: string;
10
+ /** Core detection patterns */
11
+ patterns: {
12
+ /** Patterns matching decision-indicating phrases */
13
+ decision: RegExp[];
14
+ /** Patterns matching thread closure phrases */
15
+ close: RegExp[];
16
+ /** Patterns matching blocked/waiting states */
17
+ wait: RegExp[];
18
+ /** Patterns matching topic shifts — MUST have capture group 1 */
19
+ topic: RegExp[];
20
+ };
21
+ /** Words to filter out as noise when extracting thread titles */
22
+ topicBlacklist: string[];
23
+ /** Keywords indicating high-impact decisions */
24
+ highImpactKeywords: string[];
25
+ /**
26
+ * Language-specific mood words (optional).
27
+ * Merged with universal base patterns (emoji).
28
+ */
29
+ moodPatterns?: Partial<Record<Exclude<Mood, "neutral">, RegExp>>;
30
+ /**
31
+ * Pronoun/noise prefixes for topic filtering (optional).
32
+ * These get compiled into a prefix regex for isNoiseTopic().
33
+ */
34
+ noisePrefixes?: string[];
35
+ };
36
+ /** Merged pattern set — result of combining multiple language packs. */
37
+ export type PatternSet = {
38
+ decision: RegExp[];
39
+ close: RegExp[];
40
+ wait: RegExp[];
41
+ topic: RegExp[];
42
+ };
43
+ /** Custom pattern config from user. */
44
+ export type CustomPatternConfig = {
45
+ decision?: string[];
46
+ close?: string[];
47
+ wait?: string[];
48
+ topic?: string[];
49
+ topicBlacklist?: string[];
50
+ highImpactKeywords?: string[];
51
+ mode?: "extend" | "override";
52
+ };
53
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/patterns/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,4DAA4D;AAC5D,MAAM,MAAM,YAAY,GAAG;IACzB,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;IAEf,8BAA8B;IAC9B,QAAQ,EAAE;QACR,oDAAoD;QACpD,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,+CAA+C;QAC/C,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,+CAA+C;QAC/C,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,iEAAiE;QACjE,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IAEF,iEAAiE;IACjE,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB,gDAAgD;IAChD,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAE7B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAEjE;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,wEAAwE;AACxE,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,uCAAuC;AACvC,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;CAC9B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/patterns/types.ts"],"names":[],"mappings":""}
@@ -1,15 +1,15 @@
1
+ /**
2
+ * Backward-compatible shim — delegates to PatternRegistry.
3
+ * All existing imports (getPatterns, detectMood, isNoiseTopic,
4
+ * HIGH_IMPACT_KEYWORDS, MOOD_PATTERNS) continue to work identically.
5
+ */
1
6
  import type { Mood } from "./types.js";
2
- declare const MOOD_PATTERNS: Record<Exclude<Mood, "neutral">, RegExp>;
3
- export type PatternLanguage = "en" | "de" | "both";
4
- export type PatternSet = {
5
- decision: RegExp[];
6
- close: RegExp[];
7
- wait: RegExp[];
8
- topic: RegExp[];
9
- };
7
+ import type { PatternSet } from "./patterns/types.js";
8
+ export type { PatternSet };
9
+ export type PatternLanguage = "en" | "de" | "both" | string | string[];
10
10
  /**
11
11
  * Get pattern set for the configured language.
12
- * "both" merges EN + DE patterns.
12
+ * "both" merges EN + DE patterns (backward compat).
13
13
  */
14
14
  export declare function getPatterns(language: PatternLanguage): PatternSet;
15
15
  /**
@@ -21,8 +21,8 @@ export declare function detectMood(text: string): Mood;
21
21
  * Check if a topic candidate is noise (too short, blacklisted, or garbage).
22
22
  */
23
23
  export declare function isNoiseTopic(topic: string): boolean;
24
- /** High-impact keywords for decision impact inference */
24
+ /** High-impact keywords for decision impact inference. */
25
25
  export declare const HIGH_IMPACT_KEYWORDS: string[];
26
- /** Export mood patterns for testing */
27
- export { MOOD_PATTERNS };
26
+ /** Mood patterns (merged EN+DE + universal base). */
27
+ export declare const MOOD_PATTERNS: Record<"frustrated" | "excited" | "tense" | "productive" | "exploratory", RegExp>;
28
28
  //# sourceMappingURL=patterns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAmDvC,QAAA,MAAM,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,CAM3D,CAAC;AAMF,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,UAAU,CAwBjE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAmB7C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAanD;AAED,yDAAyD;AACzD,eAAO,MAAM,oBAAoB,UAKhC,CAAC;AAEF,uCAAuC;AACvC,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/patterns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,YAAY,EAAE,UAAU,EAAE,CAAC;AAC3B,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAsBvE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,UAAU,CAGjE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAmB7C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAenD;AAED,0DAA0D;AAC1D,eAAO,MAAM,oBAAoB,UAAwC,CAAC;AAE1E,qDAAqD;AACrD,eAAO,MAAM,aAAa,mFAAkC,CAAC"}