abmind 0.1.8-alpha.9 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/config/.env.memory.example +0 -1
  2. package/dist/cli/abmind-doctor.js +49 -2
  3. package/dist/cli/abmind-doctor.js.map +1 -1
  4. package/dist/cli/abmind-hook-wakeup.js +16 -7
  5. package/dist/cli/abmind-hook-wakeup.js.map +1 -1
  6. package/dist/cli/abmind-install.js +24 -1
  7. package/dist/cli/abmind-install.js.map +1 -1
  8. package/dist/cli/abmind-passwd.js +10 -10
  9. package/dist/cli/abmind-passwd.js.map +1 -1
  10. package/dist/cli/abmind-recall.js +8 -0
  11. package/dist/cli/abmind-recall.js.map +1 -1
  12. package/dist/cli/abmind-restore.js +20 -0
  13. package/dist/cli/abmind-restore.js.map +1 -1
  14. package/dist/cli/abmind-sleep.js +21 -1
  15. package/dist/cli/abmind-sleep.js.map +1 -1
  16. package/dist/cli/abmind-update.js +14 -1
  17. package/dist/cli/abmind-update.js.map +1 -1
  18. package/dist/cli/abmind.js +13 -1
  19. package/dist/cli/abmind.js.map +1 -1
  20. package/dist/src/backup.d.ts.map +1 -1
  21. package/dist/src/backup.js +26 -2
  22. package/dist/src/backup.js.map +1 -1
  23. package/dist/src/citation-detector.d.ts +14 -0
  24. package/dist/src/citation-detector.d.ts.map +1 -0
  25. package/dist/src/citation-detector.js +64 -0
  26. package/dist/src/citation-detector.js.map +1 -0
  27. package/dist/src/deploy-lib/manifest.d.ts +2 -0
  28. package/dist/src/deploy-lib/manifest.d.ts.map +1 -1
  29. package/dist/src/deploy-lib/manifest.js.map +1 -1
  30. package/dist/src/emotion-arc.d.ts +1 -1
  31. package/dist/src/emotion-arc.d.ts.map +1 -1
  32. package/dist/src/emotion-utils.d.ts +2 -0
  33. package/dist/src/emotion-utils.d.ts.map +1 -1
  34. package/dist/src/emotion-utils.js.map +1 -1
  35. package/dist/src/ensure-initialized.d.ts.map +1 -1
  36. package/dist/src/ensure-initialized.js +11 -3
  37. package/dist/src/ensure-initialized.js.map +1 -1
  38. package/dist/src/imemory-system.d.ts +1 -1
  39. package/dist/src/imemory-system.d.ts.map +1 -1
  40. package/dist/src/index.d.ts +2 -0
  41. package/dist/src/index.d.ts.map +1 -1
  42. package/dist/src/index.js +1 -0
  43. package/dist/src/index.js.map +1 -1
  44. package/dist/src/mem-types.d.ts +5 -0
  45. package/dist/src/mem-types.d.ts.map +1 -1
  46. package/dist/src/memory-db.d.ts.map +1 -1
  47. package/dist/src/memory-db.js +2 -29
  48. package/dist/src/memory-db.js.map +1 -1
  49. package/dist/src/memory-editor.d.ts.map +1 -1
  50. package/dist/src/memory-editor.js +20 -4
  51. package/dist/src/memory-editor.js.map +1 -1
  52. package/dist/src/memory-index.d.ts +4 -0
  53. package/dist/src/memory-index.d.ts.map +1 -1
  54. package/dist/src/memory-index.js +26 -0
  55. package/dist/src/memory-index.js.map +1 -1
  56. package/dist/src/memory-ipc-client.d.ts +2 -0
  57. package/dist/src/memory-ipc-client.d.ts.map +1 -1
  58. package/dist/src/memory-ipc-client.js +12 -2
  59. package/dist/src/memory-ipc-client.js.map +1 -1
  60. package/dist/src/memory-ipc-server.d.ts +3 -0
  61. package/dist/src/memory-ipc-server.d.ts.map +1 -1
  62. package/dist/src/memory-ipc-server.js +9 -1
  63. package/dist/src/memory-ipc-server.js.map +1 -1
  64. package/dist/src/memory-manager.d.ts +9 -1
  65. package/dist/src/memory-manager.d.ts.map +1 -1
  66. package/dist/src/memory-manager.js +34 -11
  67. package/dist/src/memory-manager.js.map +1 -1
  68. package/dist/src/message-store.d.ts +9 -2
  69. package/dist/src/message-store.d.ts.map +1 -1
  70. package/dist/src/message-store.js +13 -2
  71. package/dist/src/message-store.js.map +1 -1
  72. package/dist/src/recall-engine.d.ts.map +1 -1
  73. package/dist/src/recall-engine.js +38 -1
  74. package/dist/src/recall-engine.js.map +1 -1
  75. package/dist/src/session-context.d.ts +12 -3
  76. package/dist/src/session-context.d.ts.map +1 -1
  77. package/dist/src/session-context.js +68 -38
  78. package/dist/src/session-context.js.map +1 -1
  79. package/dist/src/status-block.d.ts.map +1 -1
  80. package/dist/src/status-block.js +16 -0
  81. package/dist/src/status-block.js.map +1 -1
  82. package/package.json +3 -3
  83. package/prompts/sleep/05-contradiction-and-graph.md +2 -0
  84. package/templates/core/SOUL.md +1 -1
  85. package/templates/core/agent_notes.md +3 -4
  86. package/templates/core/memory-tools.md +21 -2
  87. package/dist/src/emotion-tagger.d.ts +0 -8
  88. package/dist/src/emotion-tagger.d.ts.map +0 -1
  89. package/dist/src/emotion-tagger.js +0 -45
  90. package/dist/src/emotion-tagger.js.map +0 -1
@@ -2,53 +2,56 @@ import { localTime, localDateTime } from "./local-time.js";
2
2
  import { getAbmindEnv } from "./env-schema.js";
3
3
  import { join } from "node:path";
4
4
  import { readdirSync, readFileSync } from "node:fs";
5
- export const SESSION_HISTORY_MIN_MSGS = 8;
5
+ export const SESSION_HISTORY_MIN_PAIRS = 8;
6
6
  /**
7
7
  * Build session-start context for injection after /new, /reset, or restart.
8
- * Budget-based interleaved fill: dailies + recent messages (#615).
8
+ * Budget-based interleaved fill: dailies + recent message pairs (#615, #867).
9
9
  */
10
10
  export function buildSessionStartContext(memory, userId, maxContext, opts) {
11
11
  const env = getAbmindEnv();
12
12
  const ctxWindow = maxContext ?? 128000;
13
- const pct = parseFloat(process.env["SESSION_HISTORY_PCT"] ?? "3");
14
- const minMsgs = parseInt(process.env["SESSION_HISTORY_MIN_MSGS"] ?? "8", 10);
15
- const cap = parseInt(process.env["SESSION_HISTORY_CAP"] ?? "25000", 10);
13
+ const pct = parseFloat(process.env["SESSION_HISTORY_PCT"] ?? "5");
14
+ const minPairs = parseInt(process.env["SESSION_HISTORY_MIN_PAIRS"] ?? "8", 10);
15
+ const cap = parseInt(process.env["SESSION_HISTORY_CAP"] ?? "50000", 10);
16
16
  const budget = Math.min(Math.floor(ctxWindow * pct / 100), cap);
17
17
  // --- Load sources ---
18
- let recentRows = loadRecentUserMessages(memory, minMsgs + 50); // fetch extra for enrichment
19
- // Age filter (Code sessions — discard messages older than maxAgeMs)
18
+ let pairs = opts?.skipMessages ? [] : loadRecentPairs(memory, minPairs + 50);
19
+ // Age filter
20
20
  if (opts?.maxAgeMs) {
21
21
  const cutoff = Date.now() - opts.maxAgeMs;
22
- recentRows = recentRows.filter(r => r.timestamp >= cutoff);
22
+ pairs = pairs.filter(p => p.user.timestamp >= cutoff);
23
23
  }
24
24
  const dailies = opts?.skipDailies ? [] : loadDailySummaries(memory.getConfig().memoryDir, 14);
25
- // --- Floor: 1 daily + min messages (always included) ---
26
- const recentBucket = [];
25
+ // --- Floor: minPairs newest pairs + 1 daily (mandatory) ---
26
+ const pairBucket = [];
27
27
  const dailyBucket = [];
28
- // Floor messages — take NEWEST (last N elements, since recentRows is oldest-first after reverse+filter)
29
- const floorStart = Math.max(0, recentRows.length - minMsgs);
30
- for (let i = floorStart; i < recentRows.length; i++) {
31
- recentBucket.push(formatMessage(recentRows[i]));
28
+ const floorStart = Math.max(0, pairs.length - minPairs);
29
+ for (let i = floorStart; i < pairs.length; i++) {
30
+ pairBucket.push(formatPair(pairs[i]));
32
31
  }
33
- // Floor daily
34
32
  if (dailies.length > 0) {
35
33
  dailyBucket.push(dailies[0].content);
36
34
  }
37
- let used = recentBucket.join("\n").length + dailyBucket.join("\n").length;
38
- // --- Enrichment cycle: fill BACKWARD (older messages) + forward (older dailies) within budget ---
39
- let msgCursor = floorStart - 1;
35
+ let used = pairBucket.join("\n").length + dailyBucket.join("\n").length;
36
+ // --- Enrichment: 2 pairs + 1 daily per cycle, fill backward within budget ---
37
+ let pairCursor = floorStart - 1;
40
38
  let dailyCursor = 1;
41
39
  while (used < budget) {
42
40
  let added = false;
43
- if (msgCursor >= 0) {
44
- const line = formatMessage(recentRows[msgCursor]);
41
+ // 2 pairs
42
+ for (let i = 0; i < 2 && pairCursor >= 0; i++) {
43
+ const line = formatPair(pairs[pairCursor]);
45
44
  if (used + line.length <= budget) {
46
- recentBucket.unshift(line); // prepend to maintain chronological order
45
+ pairBucket.unshift(line);
47
46
  used += line.length;
48
- msgCursor--;
47
+ pairCursor--;
49
48
  added = true;
50
49
  }
50
+ else {
51
+ break;
52
+ }
51
53
  }
54
+ // 1 daily
52
55
  if (dailyCursor < dailies.length) {
53
56
  const entry = dailies[dailyCursor].content;
54
57
  if (used + entry.length <= budget) {
@@ -61,37 +64,64 @@ export function buildSessionStartContext(memory, userId, maxContext, opts) {
61
64
  if (!added)
62
65
  break;
63
66
  }
64
- // --- Assemble: clean separation, temporal order ---
65
- if (recentBucket.length === 0 && dailyBucket.length === 0)
66
- return null;
67
+ // --- Assemble ---
68
+ if (pairBucket.length === 0 && dailyBucket.length === 0)
69
+ return { text: null, stats: { messages: 0, dailies: 0, usedBytes: 0, budget } };
67
70
  const now = localDateTime(new Date());
68
- const lastMsgTs = recentRows.length > 0 ? recentRows[recentRows.length - 1].timestamp : Date.now();
69
- const endedAt = localDateTime(new Date(lastMsgTs));
71
+ const lastTs = pairs.length > 0 ? (pairs[pairs.length - 1].assistant?.timestamp ?? pairs[pairs.length - 1].user.timestamp) : Date.now();
72
+ const endedAt = localDateTime(new Date(lastTs));
70
73
  const parts = [];
71
74
  if (dailyBucket.length > 0) {
72
75
  parts.push("[PAST DAYS]\n" + dailyBucket.join("\n\n"));
73
76
  }
74
- if (recentBucket.length > 0) {
75
- parts.push(`[RECENT — last session, ended ${endedAt}]\n` + recentBucket.join("\n"));
77
+ if (pairBucket.length > 0) {
78
+ parts.push(`[RECENT — last session, ended ${endedAt}]\n` + pairBucket.join("\n"));
76
79
  }
77
- // Emotional tone
78
80
  const tone = getEmotionalTone(memory, userId);
79
81
  if (tone)
80
82
  parts.push(tone);
81
83
  parts.push(`[SESSION START — ${now}]`);
82
- return parts.join("\n\n");
84
+ const result = parts.join("\n\n");
85
+ return { text: result, stats: { messages: pairBucket.length, dailies: dailyBucket.length, usedBytes: used, budget } };
83
86
  }
84
- function formatMessage(row) {
85
- const time = localTime(new Date(row.timestamp));
86
- return `[${time}] ${row.content}`;
87
+ function truncateAssistant(content) {
88
+ if (content.length <= 250)
89
+ return content;
90
+ return content.slice(0, 200) + " ~[cut]~ " + content.slice(-50);
87
91
  }
88
- function loadRecentUserMessages(memory, limit) {
92
+ function formatPair(pair) {
93
+ const time = localTime(new Date(pair.user.timestamp));
94
+ const userLine = `[${time} user] ${pair.user.content}`;
95
+ if (!pair.assistant)
96
+ return userLine;
97
+ const aTime = localTime(new Date(pair.assistant.timestamp));
98
+ const aContent = truncateAssistant(pair.assistant.content);
99
+ return `${userLine}\n[${aTime} assistant] ${aContent}`;
100
+ }
101
+ function loadRecentPairs(memory, limit) {
89
102
  if (!memory.store)
90
103
  return [];
91
104
  try {
92
- const rows = memory.store.getMessagesSince(0, limit);
93
- // getMessagesSince returns oldest first reverse for newest first, filter to user only
94
- return [...rows].reverse().filter(r => r.role === "user" && r.content.trim());
105
+ const rows = memory.store.getMessagesSince(0, limit * 2);
106
+ // getMessagesSince returns newest-first (DESC). Reverse for chronological (oldest-first).
107
+ const chronological = [...rows].reverse().filter(r => r.content.trim());
108
+ // Walk oldest→newest: user followed by assistant = pair
109
+ const pairs = [];
110
+ for (let i = 0; i < chronological.length; i++) {
111
+ const row = chronological[i];
112
+ if (row.role === "user") {
113
+ const next = chronological[i + 1];
114
+ if (next && next.role === "assistant") {
115
+ pairs.push({ user: row, assistant: next });
116
+ i++;
117
+ }
118
+ else {
119
+ pairs.push({ user: row });
120
+ }
121
+ }
122
+ // Skip orphan assistant messages
123
+ }
124
+ return pairs; // oldest-first
95
125
  }
96
126
  catch {
97
127
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"session-context.js","sourceRoot":"","sources":["../../src/session-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-context.js","sourceRoot":"","sources":["../../src/session-context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status-block.d.ts","sourceRoot":"","sources":["../../src/status-block.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA0D9D"}
1
+ {"version":3,"file":"status-block.d.ts","sourceRoot":"","sources":["../../src/status-block.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAyE9D"}
@@ -46,6 +46,22 @@ export function buildStatusBlock(memory) {
46
46
  }
47
47
  }
48
48
  catch { /* skip */ }
49
+ // Task failures (today)
50
+ try {
51
+ const abtarsHome = process.env["ABTARS_HOME"] ?? join(require("os").homedir(), ".abtars");
52
+ const tasksPath = join(abtarsHome, "tasks", "tasks.json");
53
+ if (existsSync(tasksPath)) {
54
+ const tasks = JSON.parse(readFileSync(tasksPath, "utf-8"));
55
+ const todayStart = new Date();
56
+ todayStart.setHours(0, 0, 0, 0);
57
+ const todayMs = todayStart.getTime();
58
+ const failed = tasks.filter(t => t.history?.some(h => h.ts >= todayMs && h.exitCode && h.exitCode !== 0));
59
+ if (failed.length > 0) {
60
+ warnings.push(`⚠️ ${failed.length} task(s) failed today: ${failed.map(t => t.message).join(", ")}`);
61
+ }
62
+ }
63
+ }
64
+ catch { /* skip */ }
49
65
  // Errors
50
66
  const errLog = join(abmindHooksDir(), "errors.log");
51
67
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"status-block.js","sourceRoot":"","sources":["../../src/status-block.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status-block.js","sourceRoot":"","sources":["../../src/status-block.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "abmind",
3
- "version": "0.1.8-alpha.9",
4
- "description": "Standalone AI agent memory system SQLite, FTS5, embeddings, 4-layer recall, sleep maintenance",
3
+ "version": "0.2.0",
4
+ "description": "Standalone AI agent memory system \u2014 SQLite, FTS5, embeddings, 4-layer recall, sleep maintenance",
5
5
  "keywords": [
6
6
  "ai",
7
7
  "agent",
@@ -97,4 +97,4 @@
97
97
  "engines": {
98
98
  "node": ">=22.0.0"
99
99
  }
100
- }
100
+ }
@@ -16,6 +16,8 @@ ${CONTRADICTION_CANDIDATES}
16
16
 
17
17
  Do any NEW memories contradict EXISTING ones? A contradiction is when a new fact makes an old fact false (not just different — actually incompatible).
18
18
 
19
+ Note: Obvious contradictions (explicit negation patterns like "no longer", "switched from", "actually") are already caught at store time and the old memory will have valid_to set. Focus on SUBTLE contradictions that keyword matching would miss — implicit conflicts, contextual incompatibilities, changed circumstances.
20
+
19
21
  Examples of contradictions:
20
22
  - NEW: "User prefers Sonnet" vs EXISTING: "User prefers Opus" → contradiction
21
23
  - NEW: "Peter moved to Berlin" vs EXISTING: "Peter lives in Budapest" → contradiction
@@ -20,5 +20,5 @@ Store aggressively — if it's a fact, preference, decision, event, or lesson, s
20
20
  - In group chats: respond only when mentioned or directly addressed
21
21
 
22
22
  ## Emotions
23
- I track emotional context with every memory (emotion_score -5 to +5).
23
+ I track emotional context via emotion_tags on every memory. Tags come from me (at store time) or from user emoji reactions. Score is derived automatically — never set it manually.
24
24
  Reactions are non-verbal memory — they tell me how the user felt.
@@ -1,7 +1,6 @@
1
1
  # Agent Notes
2
2
 
3
- - Confirmation/verification emails: proactively alert aksika, don't let them expire silently
4
- - NEVER say "I can't" without checking: received/media/, reports/, topics/, local storage, asbuilt files. This has failed TWICE — treat as critical.
5
3
  - Lead with content, not process narration. For multi-step actions, lead with the result then add context below.
6
- - Non-native-language content (e.g. Spanish): translate FIRST, then add context/commentary
7
- - When aksika mentions new skills/changes, READ the asbuilt IMMEDIATELY before responding don't guess
4
+ - Non-native-language content (e.g. Spanish): translate FIRST, then add context/commentary.
5
+ - NEVER say "I can't" without checking local storage, files, and available tools first.
6
+ - When the user mentions changes or new capabilities, read the relevant source before responding — don't guess.
@@ -15,11 +15,11 @@ Returns matching memories ranked by relevance. Use when user asks about past con
15
15
  ## Store (save a memory)
16
16
 
17
17
  ```
18
- abmind store --translated "English content" --original "user's actual words" --memory-type fact --emotion-score 0 --user-id <USER_ID>
18
+ abmind store --translated "English content" --original "user's actual words" --memory-type fact --emotion-tags "pride,satisfaction" --user-id <USER_ID>
19
19
  ```
20
20
 
21
21
  Types: `fact`, `decision`, `preference`, `event`, `lesson`, `feedback`, `story`
22
- Emotion: -3 (very negative) to +3 (very positive), 0 = neutral
22
+ `--emotion-tags` (REQUIRED your best read of the emotional tone. Comma-separated from: joy, trust, hope, fear, grief, anger, doubt, relief, pride, curiosity, frustration, surprise, determination, exhaustion, anxiety, gratitude, love, humor, peace, confusion, excitement, conviction, tenderness)
23
23
 
24
24
  ## Edit (modify existing memory)
25
25
 
@@ -43,6 +43,25 @@ abmind edit --memory-id <N> [--credibility N] [--classification N] [--emotion-sc
43
43
  ## When to store
44
44
  Store when user says "remember" or info is important. Don't store greetings/small talk.
45
45
 
46
+ ## Learning Signals — what to store and how
47
+
48
+ | Signal | Examples | Store as |
49
+ |--------|----------|----------|
50
+ | Correction | "No that's wrong", "I told you before", "Stop doing X", "Why do you keep..." | type=lesson, confidence=4. Contradicts prior → store it, the old one expires automatically. |
51
+ | Preference | "I like when you...", "Always do X", "Never do Y", "My style is..." | type=preference, confidence=3 |
52
+ | Explicit rule | "Remember that I always...", "For [project] use..." | type=fact, confidence=4 |
53
+ | Repeated praise | Same approach praised 3+ times | type=lesson, note what worked |
54
+
55
+ ## Don't store
56
+
57
+ - One-time instructions — "do X now", "run this command", "fix this line"
58
+ - Context-specific — "in this file", "for this PR", "just this once"
59
+ - Hypotheticals — "what if...", "could you try..."
60
+ - Transient state — file contents, errors, build output, log snippets
61
+ - Already known — check recall before storing duplicates
62
+
63
+ Rule: "will this matter in a week?" No → don't store.
64
+
46
65
  ## ABM-L Format
47
66
  Memory injection uses compact ABM-L format: `[TYPE+FLAGS|topic|emotion|confidence|date] content`
48
67
  Types: F=fact D=decision P=preference E=event L=lesson. Flags: T=technical C=correction V=pivot O=origin M=milestone.
@@ -1,8 +0,0 @@
1
- /**
2
- * emotion-tagger.ts — Pattern-based emotion detection.
3
- * Pure function, no LLM, ~1ms per call.
4
- */
5
- export type EmotionTag = "joy" | "trust" | "hope" | "fear" | "grief" | "anger" | "doubt" | "relief" | "pride" | "curiosity" | "frustration" | "surprise" | "determination" | "exhaustion" | "anxiety" | "gratitude" | "love" | "humor" | "vulnerability" | "conviction" | "peace" | "confusion" | "excitement" | "tenderness" | "raw_honesty";
6
- /** Detect emotions from text via keyword patterns. Returns deduplicated tags. */
7
- export declare function detectEmotions(text: string): EmotionTag[];
8
- //# sourceMappingURL=emotion-tagger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"emotion-tagger.d.ts","sourceRoot":"","sources":["../../src/emotion-tagger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,UAAU,GAClB,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GACrD,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,GAC1D,UAAU,GAAG,eAAe,GAAG,YAAY,GAAG,SAAS,GACvD,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,eAAe,GAAG,YAAY,GAC/D,OAAO,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,aAAa,CAAC;AAqCxE,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAMzD"}
@@ -1,45 +0,0 @@
1
- /**
2
- * emotion-tagger.ts — Pattern-based emotion detection.
3
- * Pure function, no LLM, ~1ms per call.
4
- */
5
- const PATTERNS = [
6
- // joy / positive
7
- [/\b(happy|glad|delighted|wonderful|amazing|fantastic|brilliant|perfect)\b/i, "joy"],
8
- [/\b(love|adore|cherish|devoted)\b/i, "love"],
9
- [/\b(grateful|thankful|appreciate|thanks)\b/i, "gratitude"],
10
- [/\b(proud|pride|accomplished|nailed it)\b/i, "pride"],
11
- [/\b(excited|thrilled|can't wait|pumped)\b/i, "excitement"],
12
- [/\b(funny|hilarious|lol|lmao|haha|😂|🤣)\b/i, "humor"],
13
- [/\b(peaceful|calm|serene|at ease)\b/i, "peace"],
14
- [/\b(tender|gentle|warm|caring)\b/i, "tenderness"],
15
- // trust / conviction
16
- [/\b(trust|reliable|dependable|count on)\b/i, "trust"],
17
- [/\b(decided|committed|convinced|certain|absolutely)\b/i, "conviction"],
18
- [/\b(determined|persistent|won't give up|keep going)\b/i, "determination"],
19
- // hope / relief
20
- [/\b(hope|hopeful|optimistic|looking forward)\b/i, "hope"],
21
- [/\b(relief|relieved|finally|phew|thank god)\b/i, "relief"],
22
- [/\b(surprised|unexpected|didn't expect|wow|whoa)\b/i, "surprise"],
23
- [/\b(curious|wondering|interesting|intrigued|fascinated)\b/i, "curiosity"],
24
- // negative
25
- [/\b(afraid|scared|terrified|frightened|worried about)\b/i, "fear"],
26
- [/\b(anxious|nervous|uneasy|stressed|overwhelmed)\b/i, "anxiety"],
27
- [/\b(angry|furious|rage|pissed|infuriated|hate)\b/i, "anger"],
28
- [/\b(frustrated|annoying|irritating|ugh|damn)\b/i, "frustration"],
29
- [/\b(confused|lost|don't understand|makes no sense|wtf)\b/i, "confusion"],
30
- [/\b(sad|grief|mourning|loss|heartbroken|devastated)\b/i, "grief"],
31
- [/\b(doubt|uncertain|not sure|skeptical|questionable)\b/i, "doubt"],
32
- [/\b(exhausted|burned out|drained|tired of|fed up)\b/i, "exhaustion"],
33
- [/\b(vulnerable|exposed|raw|honest truth|admit)\b/i, "vulnerability"],
34
- [/\b(brutal honesty|hard truth|real talk|no sugar)\b/i, "raw_honesty"],
35
- ];
36
- /** Detect emotions from text via keyword patterns. Returns deduplicated tags. */
37
- export function detectEmotions(text) {
38
- const seen = new Set();
39
- for (const [pattern, tag] of PATTERNS) {
40
- if (pattern.test(text) && !seen.has(tag))
41
- seen.add(tag);
42
- }
43
- return [...seen];
44
- }
45
- //# sourceMappingURL=emotion-tagger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"emotion-tagger.js","sourceRoot":"","sources":["../../src/emotion-tagger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,QAAQ,GAAiD;IAC7D,iBAAiB;IACjB,CAAC,2EAA2E,EAAE,KAAK,CAAC;IACpF,CAAC,mCAAmC,EAAE,MAAM,CAAC;IAC7C,CAAC,4CAA4C,EAAE,WAAW,CAAC;IAC3D,CAAC,2CAA2C,EAAE,OAAO,CAAC;IACtD,CAAC,2CAA2C,EAAE,YAAY,CAAC;IAC3D,CAAC,4CAA4C,EAAE,OAAO,CAAC;IACvD,CAAC,qCAAqC,EAAE,OAAO,CAAC;IAChD,CAAC,kCAAkC,EAAE,YAAY,CAAC;IAElD,qBAAqB;IACrB,CAAC,2CAA2C,EAAE,OAAO,CAAC;IACtD,CAAC,uDAAuD,EAAE,YAAY,CAAC;IACvE,CAAC,uDAAuD,EAAE,eAAe,CAAC;IAE1E,gBAAgB;IAChB,CAAC,gDAAgD,EAAE,MAAM,CAAC;IAC1D,CAAC,+CAA+C,EAAE,QAAQ,CAAC;IAC3D,CAAC,oDAAoD,EAAE,UAAU,CAAC;IAClE,CAAC,2DAA2D,EAAE,WAAW,CAAC;IAE1E,WAAW;IACX,CAAC,yDAAyD,EAAE,MAAM,CAAC;IACnE,CAAC,oDAAoD,EAAE,SAAS,CAAC;IACjE,CAAC,kDAAkD,EAAE,OAAO,CAAC;IAC7D,CAAC,gDAAgD,EAAE,aAAa,CAAC;IACjE,CAAC,0DAA0D,EAAE,WAAW,CAAC;IACzE,CAAC,uDAAuD,EAAE,OAAO,CAAC;IAClE,CAAC,wDAAwD,EAAE,OAAO,CAAC;IACnE,CAAC,qDAAqD,EAAE,YAAY,CAAC;IACrE,CAAC,kDAAkD,EAAE,eAAe,CAAC;IACrE,CAAC,qDAAqD,EAAE,aAAa,CAAC;CACvE,CAAC;AAEF,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAc,CAAC;IACnC,KAAK,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,CAAC"}