agent-recall-core 3.3.10 → 3.3.11
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 +2 -2
- package/dist/helpers/alignment-patterns.d.ts +19 -0
- package/dist/helpers/alignment-patterns.d.ts.map +1 -0
- package/dist/helpers/alignment-patterns.js +47 -0
- package/dist/helpers/alignment-patterns.js.map +1 -0
- package/dist/helpers/auto-name.d.ts +42 -0
- package/dist/helpers/auto-name.d.ts.map +1 -0
- package/dist/helpers/auto-name.js +210 -0
- package/dist/helpers/auto-name.js.map +1 -0
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/palace/awareness.d.ts +4 -0
- package/dist/palace/awareness.d.ts.map +1 -1
- package/dist/palace/awareness.js +102 -17
- package/dist/palace/awareness.js.map +1 -1
- package/dist/palace/fan-out.d.ts.map +1 -1
- package/dist/palace/fan-out.js +30 -1
- package/dist/palace/fan-out.js.map +1 -1
- package/dist/tools-logic/check.d.ts +33 -0
- package/dist/tools-logic/check.d.ts.map +1 -0
- package/dist/tools-logic/check.js +85 -0
- package/dist/tools-logic/check.js.map +1 -0
- package/dist/tools-logic/journal-capture.d.ts +1 -0
- package/dist/tools-logic/journal-capture.d.ts.map +1 -1
- package/dist/tools-logic/journal-capture.js +11 -1
- package/dist/tools-logic/journal-capture.js.map +1 -1
- package/dist/tools-logic/knowledge-write.d.ts.map +1 -1
- package/dist/tools-logic/knowledge-write.js +7 -1
- package/dist/tools-logic/knowledge-write.js.map +1 -1
- package/dist/tools-logic/palace-write.d.ts +2 -0
- package/dist/tools-logic/palace-write.d.ts.map +1 -1
- package/dist/tools-logic/palace-write.js +13 -1
- package/dist/tools-logic/palace-write.js.map +1 -1
- package/dist/tools-logic/session-end.d.ts +26 -0
- package/dist/tools-logic/session-end.d.ts.map +1 -0
- package/dist/tools-logic/session-end.js +68 -0
- package/dist/tools-logic/session-end.js.map +1 -0
- package/dist/tools-logic/session-start.d.ts +38 -0
- package/dist/tools-logic/session-start.d.ts.map +1 -0
- package/dist/tools-logic/session-start.js +91 -0
- package/dist/tools-logic/session-start.js.map +1 -0
- package/dist/tools-logic/smart-recall.d.ts +35 -0
- package/dist/tools-logic/smart-recall.d.ts.map +1 -0
- package/dist/tools-logic/smart-recall.js +199 -0
- package/dist/tools-logic/smart-recall.js.map +1 -0
- package/dist/tools-logic/smart-remember.d.ts +20 -0
- package/dist/tools-logic/smart-remember.d.ts.map +1 -0
- package/dist/tools-logic/smart-remember.js +136 -0
- package/dist/tools-logic/smart-remember.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* smart_remember — classify content and route to the right memory store.
|
|
3
|
+
*
|
|
4
|
+
* Agents call one tool; the system figures out where it belongs.
|
|
5
|
+
* Pure keyword scoring, no LLM calls.
|
|
6
|
+
*/
|
|
7
|
+
import { generateSlug, detectContentType } from "../helpers/auto-name.js";
|
|
8
|
+
import { journalCapture } from "./journal-capture.js";
|
|
9
|
+
import { palaceWrite } from "./palace-write.js";
|
|
10
|
+
import { knowledgeWrite } from "./knowledge-write.js";
|
|
11
|
+
import { awarenessUpdate } from "./awareness-update.js";
|
|
12
|
+
const ROUTE_SIGNALS = {
|
|
13
|
+
knowledge_write: [
|
|
14
|
+
/\bbug\b/i, /\bfix\b/i, /\berror\b/i, /\broot cause\b/i, /\blesson\b/i,
|
|
15
|
+
/\bregression\b/i, /\bcrash\b/i, /\bworkaround\b/i, /\bwhat happened\b/i,
|
|
16
|
+
/\bbroke\b/i,
|
|
17
|
+
],
|
|
18
|
+
awareness_update: [
|
|
19
|
+
/\balways\b/i, /\bnever\b/i, /\bpattern\b/i, /\bacross projects\b/i,
|
|
20
|
+
/\binsight\b/i, /\bgeneral rule\b/i, /\bapplies when\b/i, /\brealized\b/i,
|
|
21
|
+
/\bcross-project\b/i, /\bobserved that\b/i,
|
|
22
|
+
],
|
|
23
|
+
palace_write: [
|
|
24
|
+
/\barchitecture\b/i, /\bdecision\b/i, /\bdesign\b/i, /\bschema\b/i,
|
|
25
|
+
/\bapproach\b/i, /\bchose\b/i, /\bdecided\b/i, /\bwill use\b/i,
|
|
26
|
+
/\bstructure\b/i, /\bapi\b/i,
|
|
27
|
+
],
|
|
28
|
+
journal_capture: [
|
|
29
|
+
/\btoday\b/i, /\bsession\b/i, /\bcompleted\b/i, /\bworked on\b/i,
|
|
30
|
+
/\btried\b/i, /\bstatus\b/i, /\bprogress\b/i, /\bblocked\b/i,
|
|
31
|
+
/\bnext\b/i, /\bdid\b/i,
|
|
32
|
+
],
|
|
33
|
+
};
|
|
34
|
+
// Higher boost = more specific store. knowledge and awareness get slight boosts
|
|
35
|
+
// because they're more valuable when correctly classified.
|
|
36
|
+
const ROUTE_BOOSTS = {
|
|
37
|
+
knowledge_write: 1.2,
|
|
38
|
+
awareness_update: 1.3,
|
|
39
|
+
palace_write: 1.0,
|
|
40
|
+
journal_capture: 1.0,
|
|
41
|
+
};
|
|
42
|
+
function classifyRoute(content, context) {
|
|
43
|
+
const text = context ? `${context} ${content}` : content;
|
|
44
|
+
// Check context hint first (strong signal)
|
|
45
|
+
if (context) {
|
|
46
|
+
const lower = context.toLowerCase();
|
|
47
|
+
if (/bug|fix|error|regression|crash/i.test(lower))
|
|
48
|
+
return "knowledge_write";
|
|
49
|
+
if (/architecture|design|decision|schema/i.test(lower))
|
|
50
|
+
return "palace_write";
|
|
51
|
+
if (/insight|lesson|pattern|across/i.test(lower))
|
|
52
|
+
return "awareness_update";
|
|
53
|
+
if (/session|log|today|progress/i.test(lower))
|
|
54
|
+
return "journal_capture";
|
|
55
|
+
}
|
|
56
|
+
// Score each route
|
|
57
|
+
const scores = [];
|
|
58
|
+
for (const [route, patterns] of Object.entries(ROUTE_SIGNALS)) {
|
|
59
|
+
let count = 0;
|
|
60
|
+
for (const pattern of patterns) {
|
|
61
|
+
if (pattern.test(text))
|
|
62
|
+
count++;
|
|
63
|
+
}
|
|
64
|
+
scores.push({ route, score: count * ROUTE_BOOSTS[route] });
|
|
65
|
+
}
|
|
66
|
+
scores.sort((a, b) => b.score - a.score);
|
|
67
|
+
// Default to journal_capture if no clear signal
|
|
68
|
+
return scores[0].score > 0 ? scores[0].route : "journal_capture";
|
|
69
|
+
}
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
// Dispatch
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
73
|
+
export async function smartRemember(input) {
|
|
74
|
+
const route = classifyRoute(input.content, input.context);
|
|
75
|
+
const slugResult = generateSlug(input.content);
|
|
76
|
+
const autoName = slugResult.slug;
|
|
77
|
+
let result;
|
|
78
|
+
switch (route) {
|
|
79
|
+
case "journal_capture": {
|
|
80
|
+
result = await journalCapture({
|
|
81
|
+
question: "Auto-captured",
|
|
82
|
+
answer: input.content,
|
|
83
|
+
project: input.project,
|
|
84
|
+
});
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
case "palace_write": {
|
|
88
|
+
// Use content type as room, auto-name generates the topic
|
|
89
|
+
const contentType = detectContentType(input.content);
|
|
90
|
+
const room = contentType === "general" ? "knowledge" : contentType;
|
|
91
|
+
result = await palaceWrite({
|
|
92
|
+
room,
|
|
93
|
+
content: input.content,
|
|
94
|
+
project: input.project,
|
|
95
|
+
auto_name: true,
|
|
96
|
+
});
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
case "knowledge_write": {
|
|
100
|
+
// Extract title from first sentence or first line
|
|
101
|
+
const firstLine = input.content.split(/[.\n]/)[0]?.trim() ?? "Auto-captured lesson";
|
|
102
|
+
result = await knowledgeWrite({
|
|
103
|
+
category: slugResult.contentType,
|
|
104
|
+
title: firstLine.slice(0, 80),
|
|
105
|
+
what_happened: input.content,
|
|
106
|
+
root_cause: "See content",
|
|
107
|
+
fix: "See content",
|
|
108
|
+
project: input.project,
|
|
109
|
+
});
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
case "awareness_update": {
|
|
113
|
+
// Extract title from first sentence
|
|
114
|
+
const title = input.content.split(/[.\n]/)[0]?.trim().slice(0, 80) ?? "Auto-captured insight";
|
|
115
|
+
result = await awarenessUpdate({
|
|
116
|
+
insights: [
|
|
117
|
+
{
|
|
118
|
+
title,
|
|
119
|
+
evidence: input.content,
|
|
120
|
+
applies_when: slugResult.keywords,
|
|
121
|
+
source: `smart_remember ${new Date().toISOString().slice(0, 10)}`,
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
});
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
success: true,
|
|
130
|
+
routed_to: route,
|
|
131
|
+
classification: slugResult.contentType,
|
|
132
|
+
auto_name: autoName,
|
|
133
|
+
result,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=smart-remember.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-remember.js","sourceRoot":"","sources":["../../src/tools-logic/smart-remember.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AA0BxD,MAAM,aAAa,GAA4B;IAC7C,eAAe,EAAE;QACf,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa;QACtE,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB;QACxE,YAAY;KACb;IACD,gBAAgB,EAAE;QAChB,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,sBAAsB;QACnE,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,eAAe;QACzE,oBAAoB,EAAE,oBAAoB;KAC3C;IACD,YAAY,EAAE;QACZ,mBAAmB,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa;QAClE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe;QAC9D,gBAAgB,EAAE,UAAU;KAC7B;IACD,eAAe,EAAE;QACf,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB;QAChE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc;QAC5D,WAAW,EAAE,UAAU;KACxB;CACF,CAAC;AAEF,gFAAgF;AAChF,2DAA2D;AAC3D,MAAM,YAAY,GAA0B;IAC1C,eAAe,EAAE,GAAG;IACpB,gBAAgB,EAAE,GAAG;IACrB,YAAY,EAAE,GAAG;IACjB,eAAe,EAAE,GAAG;CACrB,CAAC;AAEF,SAAS,aAAa,CAAC,OAAe,EAAE,OAAgB;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAEzD,2CAA2C;IAC3C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,iBAAiB,CAAC;QAC5E,IAAI,sCAAsC,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,cAAc,CAAC;QAC9E,IAAI,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,kBAAkB,CAAC;QAC5E,IAAI,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,iBAAiB,CAAC;IAC1E,CAAC;IAED,mBAAmB;IACnB,MAAM,MAAM,GAA2C,EAAE,CAAC;IAC1D,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAA6B,EAAE,CAAC;QAC1F,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,KAAK,EAAE,CAAC;QAClC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAEzC,gDAAgD;IAChD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACnE,CAAC;AAED,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAyB;IAC3D,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;IAEjC,IAAI,MAAe,CAAC;IAEpB,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,GAAG,MAAM,cAAc,CAAC;gBAC5B,QAAQ,EAAE,eAAe;gBACzB,MAAM,EAAE,KAAK,CAAC,OAAO;gBACrB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,0DAA0D;YAC1D,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;YACnE,MAAM,GAAG,MAAM,WAAW,CAAC;gBACzB,IAAI;gBACJ,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,kDAAkD;YAClD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,sBAAsB,CAAC;YACpF,MAAM,GAAG,MAAM,cAAc,CAAC;gBAC5B,QAAQ,EAAE,UAAU,CAAC,WAAW;gBAChC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC7B,aAAa,EAAE,KAAK,CAAC,OAAO;gBAC5B,UAAU,EAAE,aAAa;gBACzB,GAAG,EAAE,aAAa;gBAClB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,oCAAoC;YACpC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,uBAAuB,CAAC;YAC9F,MAAM,GAAG,MAAM,eAAe,CAAC;gBAC7B,QAAQ,EAAE;oBACR;wBACE,KAAK;wBACL,QAAQ,EAAE,KAAK,CAAC,OAAO;wBACvB,YAAY,EAAE,UAAU,CAAC,QAAQ;wBACjC,MAAM,EAAE,kBAAkB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;qBAClE;iBACF;aACF,CAAC,CAAC;YACH,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,UAAU,CAAC,WAAW;QACtC,SAAS,EAAE,QAAQ;QACnB,MAAM;KACP,CAAC;AACJ,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared types, interfaces, and constants for agent-recall-mcp.
|
|
3
3
|
*/
|
|
4
|
-
export declare const VERSION = "3.3.
|
|
4
|
+
export declare const VERSION = "3.3.11";
|
|
5
5
|
/**
|
|
6
6
|
* Set the storage root directory. This is process-global state —
|
|
7
7
|
* only one root is active at a time. Call before any other operations.
|
package/dist/types.js
CHANGED
|
@@ -6,7 +6,7 @@ import * as os from "node:os";
|
|
|
6
6
|
// ---------------------------------------------------------------------------
|
|
7
7
|
// Constants
|
|
8
8
|
// ---------------------------------------------------------------------------
|
|
9
|
-
export const VERSION = "3.3.
|
|
9
|
+
export const VERSION = "3.3.11";
|
|
10
10
|
// ---------------------------------------------------------------------------
|
|
11
11
|
// Root directory (configurable at runtime for SDK usage)
|
|
12
12
|
// ---------------------------------------------------------------------------
|