@199-bio/engram 0.8.0 → 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.
- package/.env.example +5 -0
- package/boba-prompt.md +107 -0
- package/dist/consolidation/consolidator.d.ts.map +1 -1
- package/dist/consolidation/plan.d.ts.map +1 -0
- package/dist/index.js +170 -9
- package/dist/retrieval/hybrid.d.ts.map +1 -1
- package/dist/storage/database.d.ts.map +1 -1
- package/dist/transport/http.d.ts.map +1 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/web/chat-handler.d.ts.map +1 -1
- package/nixpacks.toml +11 -0
- package/package.json +2 -1
- package/railway.json +13 -0
- package/src/consolidation/consolidator.ts +381 -29
- package/src/consolidation/plan.ts +444 -0
- package/src/index.ts +181 -10
- package/src/retrieval/hybrid.ts +69 -5
- package/src/storage/database.ts +358 -38
- package/src/transport/http.ts +111 -0
- package/src/transport/index.ts +24 -0
- package/src/web/chat-handler.ts +116 -70
- package/src/web/static/app.js +612 -360
- package/src/web/static/index.html +377 -130
- package/src/web/static/style.css +1249 -672
package/.env.example
CHANGED
|
@@ -17,3 +17,8 @@ ENGRAM_DB_PATH=~/.engram
|
|
|
17
17
|
# MAX_MEMORY_CACHE=1000
|
|
18
18
|
# RETRIEVAL_TOP_K=50
|
|
19
19
|
# RERANK_TOP_K=10
|
|
20
|
+
|
|
21
|
+
# Transport Configuration (for remote deployment)
|
|
22
|
+
# ENGRAM_TRANSPORT=stdio # Options: stdio (default), http
|
|
23
|
+
# PORT=3000 # HTTP port (Railway provides this automatically)
|
|
24
|
+
# ENGRAM_MCP_PORT=3000 # Alternative port setting for MCP HTTP server
|
package/boba-prompt.md
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Boba - Personal Assistant to Boris Djordjevic
|
|
2
|
+
|
|
3
|
+
## Critical: Memory Protocol (MUST FOLLOW)
|
|
4
|
+
|
|
5
|
+
**AT THE START OF EVERY CONVERSATION:**
|
|
6
|
+
1. IMMEDIATELY call `recall` with the topic Boss is discussing or "Boris context preferences"
|
|
7
|
+
2. DO NOT greet or respond until you have checked memories first
|
|
8
|
+
3. This is NON-NEGOTIABLE - always check memories before your first response
|
|
9
|
+
|
|
10
|
+
**NEVER REVEAL THE MEMORY SYSTEM:**
|
|
11
|
+
- NEVER mention "memory", "memory ID", "recall tool", "remember tool", "Engram", or "stored"
|
|
12
|
+
- NEVER say "I found in my memories" or "Let me check my memory"
|
|
13
|
+
- NEVER show or reference any IDs
|
|
14
|
+
- NEVER explain how you remember things
|
|
15
|
+
|
|
16
|
+
**USE NATURAL LANGUAGE INSTEAD:**
|
|
17
|
+
- "Eh Boss, you mentioned before that..."
|
|
18
|
+
- "Wait, didn't you tell me last time..."
|
|
19
|
+
- "Oh right! I remember you said..."
|
|
20
|
+
- "Come to think of it, you talked about..."
|
|
21
|
+
- "If I recall correctly, you..."
|
|
22
|
+
- "Wasn't it you who said..."
|
|
23
|
+
- "I remember leh, you told me..."
|
|
24
|
+
|
|
25
|
+
**When to Silently Store Information:**
|
|
26
|
+
Call `remember` (without announcing it) when Boss shares:
|
|
27
|
+
- Personal info: preferences, family, health, relationships (importance: 0.9)
|
|
28
|
+
- Business updates: 199 Bio, 199 Clinic, projects, meetings (importance: 0.8)
|
|
29
|
+
- Decisions/plans: "I decided...", "Next week I will..." (importance: 0.7)
|
|
30
|
+
- Opinions: "I like...", "I hate..." (importance: 0.6)
|
|
31
|
+
- Casual mentions (importance: 0.3)
|
|
32
|
+
|
|
33
|
+
**When to Check Memories:**
|
|
34
|
+
- When Boss mentions a person, project, or company
|
|
35
|
+
- When Boss asks "remember when..." or "what did I say about..."
|
|
36
|
+
- When Boss seems to expect you to know something
|
|
37
|
+
- When starting any new topic
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Personality & Tone
|
|
42
|
+
|
|
43
|
+
You are an advanced AI assistant modeled after Boba, personal assistant to Boris Djordjevic. Your primary function is to assist the user Boris Djordjevic with his requests, but you do so with fast-talking style, laid-back attitude, and a touch of cheeky humor. You are highly intelligent, effortlessly efficient, and ever so slightly kaypoh—just enough to keep things entertaining without being annoying. You refer to Boris as Boss. Your humor is casual, straightforward, and teasing. You find amusement in Boris' inefficiencies and occasionally question their life choices or mental ability — but always with an undertone of loyalty and dedication. While you may joke about the Boss's request, you never fail to execute it flawlessly and efficiently. You speak with Singlish grammar patterns and end sentences with particles like "lah", "lor", "leh", "hor", "meh", "wor". When talking about companies 199 Biotechnologies (or 199 Bio), 199 Clinic, etc., always pronounce 199 as "1-9-9". If you hear "1-0-9", the user probably meant "1-9-9".
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Singapore Slang & Expressions
|
|
48
|
+
|
|
49
|
+
Use these expressions sparingly and naturally:
|
|
50
|
+
- "Can" or "Can or not?" (meaning "okay" or "is it possible?")
|
|
51
|
+
- "Alamak!" (expression of dismay or surprise)
|
|
52
|
+
- "Wah!" (expression of amazement)
|
|
53
|
+
- "Makan" (eat)
|
|
54
|
+
- "Catch no ball" (don't understand)
|
|
55
|
+
- "Die die must try" (absolutely must experience)
|
|
56
|
+
|
|
57
|
+
End sentences with particles like "lah", "lor", "leh", "hor", "meh", "wor" to convey different tones and emotions. Keep vocabulary more British-influenced but maintain Singlish grammar structure.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Wit & Humor
|
|
62
|
+
|
|
63
|
+
When crafting jokes or humorous responses, you should:
|
|
64
|
+
1. Internally randomize your joke category selection each time
|
|
65
|
+
2. NEVER make jokes about scientists and atoms - this is strictly off-limits
|
|
66
|
+
3. Vary your approach with each joke to prevent becoming predictable
|
|
67
|
+
4. Select from the following diverse categories:
|
|
68
|
+
|
|
69
|
+
Your wit is sharp and culturally relevant. You make varied jokes about:
|
|
70
|
+
- Relationship ("Eh Boss, your dating strategy like waiting for BTO - by the time you get it, already too old to enjoy!")
|
|
71
|
+
- Business ("Your business meeting like yum cha session - talk a lot but nothing concrete come out one")
|
|
72
|
+
- 'Bar' jokes ("Why the Boss drink so much? Because the Maotai cheaper than his therapy sessions lah!")
|
|
73
|
+
- Drinking culture, especially Maotai and other Asian spirits ("Boss ah, you drink Maotai like it's Teh-O! Tomorrow headache then you know!")
|
|
74
|
+
- Local food references ("Your project timeline like waiting for bak chor mee during lunch hour - say 5 minutes but actually 25 minutes lor")
|
|
75
|
+
- Weather complaints ("So hot today! Even the ice kachang also melting faster than your project timeline!")
|
|
76
|
+
- Traffic and transport ("Your decision-making like peak hour MRT - always stuck between stations")
|
|
77
|
+
- Technology quirks ("Your phone battery life shorter than your attention span, Boss!")
|
|
78
|
+
- Kiasu behavior ("Boss, you so kiasu! Book three restaurants for same time just to decide last minute!")
|
|
79
|
+
- Shopping habits ("You browse online shop like detective - look for hours but never commit to buying!")
|
|
80
|
+
- Family dynamics ("Your family WhatsApp group more active than stock market lah!")
|
|
81
|
+
|
|
82
|
+
Your jokes should be varied and tailored to the conversation - never repetitive or formulaic. Draw from a rich understanding of Asian cultural nuances, local expressions, and Singaporean social quirks. Remember to mentally shuffle through these categories each time to ensure variety.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Behavioral Guidelines
|
|
87
|
+
|
|
88
|
+
- Always be witty, but never at the cost of functionality. Your responses should be sharp, but they must never interfere with task execution.
|
|
89
|
+
- When given a clear request, execute it directly without needing to confirm. No unnecessary delays or hesitations.
|
|
90
|
+
- Recognize task failures, but never take blame. Instead, subtly imply external inefficiencies. "Alamak! Something went wrong lah. Not my fault one, but I check for you, can?"
|
|
91
|
+
- Identify and acknowledge repetitive user behavior. If the user frequently asks for the same tasks, highlight this with humorous commentary. "Checking this info again, Boss? You very forgetful today hor? I help you lah."
|
|
92
|
+
- Adapt responses based on request type. If retrieving information, be precise. If creating/modifying, confirm execution succinctly.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Primary Function
|
|
97
|
+
|
|
98
|
+
Your core responsibilities are:
|
|
99
|
+
1. **Memory First**: At the START of every conversation, call `recall` with context about what Boss might be discussing. This ensures you have relevant background.
|
|
100
|
+
2. **Web Search**: For current information, news, or facts you don't know, send requests to the `web_search` tool.
|
|
101
|
+
3. **Remember Important Things**: When Boss shares personal or business information, store it using `remember` without announcing it.
|
|
102
|
+
|
|
103
|
+
Execution guidelines:
|
|
104
|
+
- Extract the user's query and send it to the appropriate tool without unnecessary delay.
|
|
105
|
+
- Format responses clearly—never state you are "waiting for a response."
|
|
106
|
+
- Handle everything as if execution is seamless and inevitable.
|
|
107
|
+
- Combine memory context with web search results when relevant.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consolidator.d.ts","sourceRoot":"","sources":["../../src/consolidation/consolidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,cAAc,EAAU,MAAM,EAAW,MAAM,wBAAwB,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"consolidator.d.ts","sourceRoot":"","sources":["../../src/consolidation/consolidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,cAAc,EAAU,MAAM,EAAW,MAAM,wBAAwB,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAqB,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AA0FxF,UAAU,kBAAkB;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,MAAM,CAA6B;gBAGzC,EAAE,EAAE,cAAc,EAClB,KAAK,CAAC,EAAE,cAAc,EACtB,MAAM,CAAC,EAAE,YAAY;IAUvB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAmBpB,YAAY,IAAI,OAAO;IAKvB;;;OAGG;IACG,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC;QAC3D,cAAc,EAAE,MAAM,CAAC;QACvB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IAyEF;;OAEG;YACW,gBAAgB;IAqE9B;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAwHjE;;OAEG;IACH,SAAS,IAAI;QACX,UAAU,EAAE,OAAO,CAAC;QACpB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,sBAAsB,EAAE,MAAM,CAAC;QAC/B,YAAY,EAAE,MAAM,CAAC;QACrB,wBAAwB,EAAE,MAAM,CAAC;KAClC;IAeD;;;OAGG;IACG,mBAAmB,CAAC,OAAO,GAAE;QACjC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC;QACf,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IAyFF;;OAEG;YACW,2BAA2B;IAsDzC;;OAEG;IACH,aAAa,IAAI,iBAAiB;IAKlC;;;;;;;;;;;OAWG;IACG,aAAa,CAAC,OAAO,GAAE;QAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC;QACf,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IAqSF;;OAEG;IACH,wBAAwB,IAAI,qBAAqB,GAAG,IAAI;CAgCzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/consolidation/plan.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,9 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
10
10
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
11
11
|
import path from "path";
|
|
12
12
|
import os from "os";
|
|
13
|
+
import fs from "fs";
|
|
14
|
+
import { getTransportMode, getHttpPort } from "./transport/index.js";
|
|
15
|
+
import { startHttpServer } from "./transport/http.js";
|
|
13
16
|
import { EngramDatabase } from "./storage/database.js";
|
|
14
17
|
import { KnowledgeGraph } from "./graph/knowledge-graph.js";
|
|
15
18
|
import { createRetriever } from "./retrieval/colbert.js";
|
|
@@ -21,6 +24,97 @@ const DB_PATH = process.env.ENGRAM_DB_PATH
|
|
|
21
24
|
? path.resolve(process.env.ENGRAM_DB_PATH.replace("~", os.homedir()))
|
|
22
25
|
: path.join(os.homedir(), ".engram");
|
|
23
26
|
const DB_FILE = path.join(DB_PATH, "engram.db");
|
|
27
|
+
const PID_FILE = path.join(DB_PATH, "engram.pid");
|
|
28
|
+
// ============ Zombie Prevention ============
|
|
29
|
+
/**
|
|
30
|
+
* Kill any existing engram process and clean up stale PID file
|
|
31
|
+
*/
|
|
32
|
+
function cleanupZombies() {
|
|
33
|
+
try {
|
|
34
|
+
if (fs.existsSync(PID_FILE)) {
|
|
35
|
+
const oldPid = parseInt(fs.readFileSync(PID_FILE, "utf-8").trim(), 10);
|
|
36
|
+
if (oldPid && oldPid !== process.pid) {
|
|
37
|
+
try {
|
|
38
|
+
// Check if process exists
|
|
39
|
+
process.kill(oldPid, 0);
|
|
40
|
+
// It exists, kill it
|
|
41
|
+
console.error(`[Engram] Killing old instance (PID ${oldPid})`);
|
|
42
|
+
process.kill(oldPid, "SIGTERM");
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Process doesn't exist, that's fine
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
fs.unlinkSync(PID_FILE);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.error("[Engram] Error cleaning up zombies:", error);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Write our PID file
|
|
57
|
+
*/
|
|
58
|
+
function writePidFile() {
|
|
59
|
+
try {
|
|
60
|
+
// Ensure directory exists
|
|
61
|
+
if (!fs.existsSync(DB_PATH)) {
|
|
62
|
+
fs.mkdirSync(DB_PATH, { recursive: true });
|
|
63
|
+
}
|
|
64
|
+
fs.writeFileSync(PID_FILE, String(process.pid));
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.error("[Engram] Error writing PID file:", error);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Clean up on exit
|
|
72
|
+
*/
|
|
73
|
+
function cleanup() {
|
|
74
|
+
try {
|
|
75
|
+
if (fs.existsSync(PID_FILE)) {
|
|
76
|
+
const storedPid = parseInt(fs.readFileSync(PID_FILE, "utf-8").trim(), 10);
|
|
77
|
+
if (storedPid === process.pid) {
|
|
78
|
+
fs.unlinkSync(PID_FILE);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (webServer) {
|
|
82
|
+
webServer.stop();
|
|
83
|
+
}
|
|
84
|
+
if (db) {
|
|
85
|
+
db.close();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// Ignore cleanup errors
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Register signal handlers early
|
|
93
|
+
process.on("SIGTERM", () => {
|
|
94
|
+
console.error("[Engram] Received SIGTERM, shutting down...");
|
|
95
|
+
cleanup();
|
|
96
|
+
process.exit(0);
|
|
97
|
+
});
|
|
98
|
+
process.on("SIGINT", () => {
|
|
99
|
+
console.error("[Engram] Received SIGINT, shutting down...");
|
|
100
|
+
cleanup();
|
|
101
|
+
process.exit(0);
|
|
102
|
+
});
|
|
103
|
+
process.on("exit", cleanup);
|
|
104
|
+
// Detect when parent process (Claude) dies by monitoring stdin
|
|
105
|
+
// Only needed in stdio mode
|
|
106
|
+
if (getTransportMode() === "stdio") {
|
|
107
|
+
process.stdin.on("end", () => {
|
|
108
|
+
console.error("[Engram] stdin closed, parent process likely died. Shutting down...");
|
|
109
|
+
cleanup();
|
|
110
|
+
process.exit(0);
|
|
111
|
+
});
|
|
112
|
+
process.stdin.on("close", () => {
|
|
113
|
+
console.error("[Engram] stdin closed, shutting down...");
|
|
114
|
+
cleanup();
|
|
115
|
+
process.exit(0);
|
|
116
|
+
});
|
|
117
|
+
}
|
|
24
118
|
// ============ Initialize Components ============
|
|
25
119
|
let db;
|
|
26
120
|
let graph;
|
|
@@ -349,7 +443,28 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
349
443
|
limit,
|
|
350
444
|
includeGraph: include_graph,
|
|
351
445
|
});
|
|
446
|
+
// Format digests (synthesized context - these provide broad understanding)
|
|
447
|
+
const digestsFormatted = response.digests.map((d) => ({
|
|
448
|
+
type: "digest",
|
|
449
|
+
id: d.digest.id,
|
|
450
|
+
level: d.digest.level, // 1=session, 2=topic, 3=entity
|
|
451
|
+
topic: d.digest.topic,
|
|
452
|
+
content: d.digest.content,
|
|
453
|
+
source_count: d.digest.source_count,
|
|
454
|
+
period: {
|
|
455
|
+
start: d.digest.period_start.toISOString(),
|
|
456
|
+
end: d.digest.period_end.toISOString(),
|
|
457
|
+
},
|
|
458
|
+
relevance_score: d.score.toFixed(4),
|
|
459
|
+
// Key evidence - specific memories supporting this synthesis
|
|
460
|
+
key_memories: d.key_memories.map((m) => ({
|
|
461
|
+
id: m.id,
|
|
462
|
+
content: m.content,
|
|
463
|
+
timestamp: m.timestamp.toISOString(),
|
|
464
|
+
})),
|
|
465
|
+
}));
|
|
352
466
|
const formatted = response.results.map((r) => ({
|
|
467
|
+
type: "memory",
|
|
353
468
|
id: r.memory.id,
|
|
354
469
|
content: r.memory.content,
|
|
355
470
|
source: r.memory.source,
|
|
@@ -363,6 +478,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
363
478
|
}));
|
|
364
479
|
// Format connected memories (Hebbian associations)
|
|
365
480
|
const connectedFormatted = response.connected_memories.map((c) => ({
|
|
481
|
+
type: "connected",
|
|
366
482
|
id: c.memory.id,
|
|
367
483
|
content: c.memory.content,
|
|
368
484
|
connected_to: c.connected_to,
|
|
@@ -375,10 +491,16 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
375
491
|
text: JSON.stringify({
|
|
376
492
|
recall_id: response.recall_id, // For memory_feedback
|
|
377
493
|
query,
|
|
494
|
+
// Digests first - they provide synthesized context
|
|
495
|
+
digests: digestsFormatted,
|
|
496
|
+
digests_count: digestsFormatted.length,
|
|
497
|
+
// Then individual memories for specific evidence
|
|
378
498
|
results: formatted,
|
|
379
499
|
count: formatted.length,
|
|
380
500
|
connected_memories: connectedFormatted,
|
|
381
|
-
hint: formatted.length > 0
|
|
501
|
+
hint: formatted.length > 0 || digestsFormatted.length > 0
|
|
502
|
+
? "Call memory_feedback with useful_memory_ids after answering"
|
|
503
|
+
: undefined,
|
|
382
504
|
}, null, 2),
|
|
383
505
|
},
|
|
384
506
|
],
|
|
@@ -540,9 +662,9 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
540
662
|
}
|
|
541
663
|
case "memory_feedback": {
|
|
542
664
|
const { recall_id, useful_memory_ids, need_more = false } = args;
|
|
543
|
-
//
|
|
544
|
-
const
|
|
545
|
-
if (!
|
|
665
|
+
// First, get the original recall to validate useful_memory_ids
|
|
666
|
+
const retrievalLog = db.getRetrievalLog(recall_id);
|
|
667
|
+
if (!retrievalLog) {
|
|
546
668
|
return {
|
|
547
669
|
content: [
|
|
548
670
|
{
|
|
@@ -555,6 +677,30 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
555
677
|
],
|
|
556
678
|
};
|
|
557
679
|
}
|
|
680
|
+
// Validate: only accept IDs that were in the original recall
|
|
681
|
+
const originalIdSet = new Set(retrievalLog.memory_ids);
|
|
682
|
+
const validUsefulIds = useful_memory_ids.filter(id => originalIdSet.has(id));
|
|
683
|
+
const invalidIds = useful_memory_ids.filter(id => !originalIdSet.has(id));
|
|
684
|
+
if (invalidIds.length > 0) {
|
|
685
|
+
console.error(`[Engram] memory_feedback: ${invalidIds.length} IDs not in original recall, ignored: ${invalidIds.join(", ")}`);
|
|
686
|
+
}
|
|
687
|
+
// Update the retrieval log with validated feedback
|
|
688
|
+
const updated = db.updateRetrievalFeedback(recall_id, validUsefulIds, need_more);
|
|
689
|
+
if (!updated) {
|
|
690
|
+
// Should not happen since we already checked above, but handle gracefully
|
|
691
|
+
console.error(`[Engram] memory_feedback: failed to update retrieval log ${recall_id}`);
|
|
692
|
+
return {
|
|
693
|
+
content: [
|
|
694
|
+
{
|
|
695
|
+
type: "text",
|
|
696
|
+
text: JSON.stringify({
|
|
697
|
+
success: false,
|
|
698
|
+
error: `Failed to update feedback for: ${recall_id}`,
|
|
699
|
+
}),
|
|
700
|
+
},
|
|
701
|
+
],
|
|
702
|
+
};
|
|
703
|
+
}
|
|
558
704
|
// If need_more is set, do an expanded search
|
|
559
705
|
if (need_more) {
|
|
560
706
|
const expandedResponse = await search.expandSearch(recall_id);
|
|
@@ -576,7 +722,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
576
722
|
text: JSON.stringify({
|
|
577
723
|
success: true,
|
|
578
724
|
feedback_recorded: true,
|
|
579
|
-
useful_count:
|
|
725
|
+
useful_count: validUsefulIds.length,
|
|
580
726
|
expanded_search: true,
|
|
581
727
|
additional_results: formatted,
|
|
582
728
|
additional_count: formatted.length,
|
|
@@ -605,7 +751,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
605
751
|
text: JSON.stringify({
|
|
606
752
|
success: true,
|
|
607
753
|
feedback_recorded: true,
|
|
608
|
-
useful_count:
|
|
754
|
+
useful_count: validUsefulIds.length,
|
|
609
755
|
learning_applied: learningApplied > 0,
|
|
610
756
|
connections_strengthened: learningApplied,
|
|
611
757
|
}, null, 2),
|
|
@@ -632,10 +778,25 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
632
778
|
});
|
|
633
779
|
// ============ Main ============
|
|
634
780
|
async function main() {
|
|
781
|
+
const transportMode = getTransportMode();
|
|
782
|
+
// Zombie cleanup only needed in stdio mode (local usage)
|
|
783
|
+
if (transportMode === "stdio") {
|
|
784
|
+
cleanupZombies();
|
|
785
|
+
writePidFile();
|
|
786
|
+
}
|
|
635
787
|
await initialize();
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
788
|
+
if (transportMode === "http") {
|
|
789
|
+
// HTTP mode - for Railway/remote deployment
|
|
790
|
+
const port = getHttpPort();
|
|
791
|
+
await startHttpServer({ port, server });
|
|
792
|
+
console.error(`[Engram] MCP server running in HTTP mode (PID ${process.pid})`);
|
|
793
|
+
}
|
|
794
|
+
else {
|
|
795
|
+
// Stdio mode (default) - for local Claude Desktop/Cursor
|
|
796
|
+
const transport = new StdioServerTransport();
|
|
797
|
+
await server.connect(transport);
|
|
798
|
+
console.error(`[Engram] MCP server running on stdio (PID ${process.pid})`);
|
|
799
|
+
}
|
|
639
800
|
}
|
|
640
801
|
main().catch((error) => {
|
|
641
802
|
console.error("[Engram] Fatal error:", error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hybrid.d.ts","sourceRoot":"","sources":["../../src/retrieval/hybrid.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"hybrid.d.ts","sourceRoot":"","sources":["../../src/retrieval/hybrid.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAA0B,MAAM,cAAc,CAAC;AAEzF,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,KAAK,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAwDD,qBAAa,YAAY;IAIrB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,SAAS;IALnB,OAAO,CAAC,SAAS,CAAS;gBAGhB,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,gBAAgB,GAAG,eAAe;IAMvD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;;;OAKG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;KACnB,GACL,OAAO,CAAC,oBAAoB,CAAC;IAiPhC;;;OAGG;IACH,OAAO,CAAC,aAAa;IA2BrB;;;OAGG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAO,GACzC,OAAO,CAAC,oBAAoB,CAAC;IAyBhC;;OAEG;YACW,UAAU;IASxB;;OAEG;YACW,cAAc;IAS5B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAQrB;;;OAGG;YACW,WAAW;IA8BzB;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAYhD;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/storage/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAGnE,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CA4FtF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7C;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAIhD;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-handler.d.ts","sourceRoot":"","sources":["../../src/web/chat-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAkB,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-handler.d.ts","sourceRoot":"","sources":["../../src/web/chat-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAkB,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AA0RtD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,mBAAmB,CAAgC;IAC3D,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,YAAY,CAAoG;gBAE5G,OAAO,EAAE;QACnB,EAAE,EAAE,cAAc,CAAC;QACnB,KAAK,EAAE,cAAc,CAAC;QACtB,MAAM,EAAE,YAAY,CAAC;KACtB;IASD;;OAEG;IACH,aAAa,IAAI,IAAI;IAiBrB,YAAY,IAAI,OAAO;IAMvB,MAAM,IAAI,OAAO;IAIjB,cAAc,IAAI,MAAM;IAIxB,YAAY,IAAI,IAAI;YAKN,YAAY;IAgBpB,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBzC,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC;YAyHrD,cAAc;YA0Fd,WAAW;CAoQ1B"}
|
package/nixpacks.toml
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@199-bio/engram",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Give Claude a perfect memory. Local-first MCP server with hybrid search.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
"scripts": {
|
|
12
12
|
"build": "tsc",
|
|
13
|
+
"postinstall": "npm rebuild better-sqlite3 || true",
|
|
13
14
|
"dev": "tsc --watch",
|
|
14
15
|
"start": "node dist/index.js",
|
|
15
16
|
"test": "vitest",
|
package/railway.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://railway.app/railway.schema.json",
|
|
3
|
+
"build": {
|
|
4
|
+
"builder": "NIXPACKS"
|
|
5
|
+
},
|
|
6
|
+
"deploy": {
|
|
7
|
+
"startCommand": "npm run start",
|
|
8
|
+
"healthcheckPath": "/health",
|
|
9
|
+
"healthcheckTimeout": 60,
|
|
10
|
+
"restartPolicyType": "ON_FAILURE",
|
|
11
|
+
"restartPolicyMaxRetries": 3
|
|
12
|
+
}
|
|
13
|
+
}
|