@este.systems/dsc 1.4.0 → 1.5.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/CHANGELOG.md +9 -1
- package/dist/memory/extraction.js +111 -0
- package/dist/memory/extraction.js.map +1 -0
- package/dist/memory/graph.js +326 -0
- package/dist/memory/graph.js.map +1 -0
- package/dist/memory/index.js +175 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/tools.js +155 -0
- package/dist/memory/tools.js.map +1 -0
- package/dist/tui.js +60 -11
- package/dist/tui.js.map +1 -1
- package/package.json +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [1.5.0] - 2026-06-13
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **Native memory graph** (replaces the Python `mcp-memory` server). A SQLite-backed knowledge graph that extracts propositions from conversations, links them with typed edges (supports, contradicts, instantiates, analogizes, relates), and surfaces them automatically before every agent turn. Zero Python deps — everything runs in-process. Enable with `"memory": { "enabled": true }` in `~/.config/dsc/config.json`. The agent can also call `mcp_memory_*` tools directly (query, store, tensions, stats, decay, node detail). If you were running the Python `mcp-memory` server, remove its `mcp.servers.memory` block from config.json to avoid duplicate tools.
|
|
14
|
+
|
|
8
15
|
## [1.4.0] - 2026-06-13
|
|
9
16
|
|
|
10
17
|
### Added
|
|
@@ -271,7 +278,8 @@ Initial public release.
|
|
|
271
278
|
- DECSTBM-pinned status bar.
|
|
272
279
|
- Cross-platform packaging (`npm pack` + per-OS installer scripts).
|
|
273
280
|
|
|
274
|
-
[Unreleased]: https://github.com/EsteSystems/dsc/compare/v1.
|
|
281
|
+
[Unreleased]: https://github.com/EsteSystems/dsc/compare/v1.5.0...HEAD
|
|
282
|
+
[1.5.0]: https://github.com/EsteSystems/dsc/compare/v1.4.0...v1.5.0
|
|
275
283
|
[1.4.0]: https://github.com/EsteSystems/dsc/compare/v1.3.0...v1.4.0
|
|
276
284
|
[1.3.0]: https://github.com/EsteSystems/dsc/compare/v1.2.1...v1.3.0
|
|
277
285
|
[1.2.1]: https://github.com/EsteSystems/dsc/compare/v1.2.0...v1.2.1
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM-based proposition extraction and relationship classification.
|
|
3
|
+
*
|
|
4
|
+
* Ported from Python validate_extraction.py and graph.py's classify_relationships().
|
|
5
|
+
* Uses the DeepSeek API directly (same prompts as Python version).
|
|
6
|
+
*/
|
|
7
|
+
// ── Proposition extraction ────────────────────────────────────────────
|
|
8
|
+
const EXTRACTION_PROMPT = `Extract atomic propositions from this text.
|
|
9
|
+
|
|
10
|
+
Each proposition must be:
|
|
11
|
+
- A single minimal claim, self-contained
|
|
12
|
+
- Stated as a proposition (true/false capable)
|
|
13
|
+
- Free of source references ("Claude said", "we discussed")
|
|
14
|
+
- As small as possible without losing meaning
|
|
15
|
+
|
|
16
|
+
Return one proposition per line, nothing else.
|
|
17
|
+
No numbering, no bullets, no commentary.`;
|
|
18
|
+
/**
|
|
19
|
+
* Extract atomic propositions from arbitrary text.
|
|
20
|
+
* Splits long text into chunks at paragraph boundaries.
|
|
21
|
+
*/
|
|
22
|
+
export async function extractPropositions(text, model, apiCall, maxChunkChars = 3000) {
|
|
23
|
+
// Split long text into chunks at paragraph boundaries
|
|
24
|
+
const chunks = [];
|
|
25
|
+
if (text.length > maxChunkChars) {
|
|
26
|
+
const paragraphs = text.split("\n\n");
|
|
27
|
+
let current = "";
|
|
28
|
+
for (const para of paragraphs) {
|
|
29
|
+
if (current.length + para.length < maxChunkChars) {
|
|
30
|
+
current = current ? current + "\n\n" + para : para;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
if (current)
|
|
34
|
+
chunks.push(current.trim());
|
|
35
|
+
current = para;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (current)
|
|
39
|
+
chunks.push(current.trim());
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
chunks.push(text);
|
|
43
|
+
}
|
|
44
|
+
const allProps = [];
|
|
45
|
+
const seen = new Set();
|
|
46
|
+
for (const chunk of chunks) {
|
|
47
|
+
const prompt = `${EXTRACTION_PROMPT}\n\nText:\n${chunk}`;
|
|
48
|
+
const raw = await apiCall(model, [{ role: "user", content: prompt }], 4000);
|
|
49
|
+
for (const line of raw.split("\n")) {
|
|
50
|
+
const trimmed = line.trim();
|
|
51
|
+
if (trimmed && !seen.has(trimmed)) {
|
|
52
|
+
seen.add(trimmed);
|
|
53
|
+
allProps.push(trimmed);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return allProps;
|
|
58
|
+
}
|
|
59
|
+
const RELATIONSHIP_PROMPT_PREFIX = `Classify relationships between these propositions.
|
|
60
|
+
|
|
61
|
+
For each candidate, choose ONE type:
|
|
62
|
+
supports | contradicts | instantiates | analogizes | questions | relates | none
|
|
63
|
+
|
|
64
|
+
Return: NUMBER: type (one per line)
|
|
65
|
+
Example:
|
|
66
|
+
1: supports
|
|
67
|
+
2: none`;
|
|
68
|
+
/**
|
|
69
|
+
* Classify relationships between a source proposition and each candidate.
|
|
70
|
+
* Batch all candidates into a single API call for efficiency.
|
|
71
|
+
*/
|
|
72
|
+
export async function classifyRelationships(sourceText, candidates, model, apiCall) {
|
|
73
|
+
if (candidates.length === 0)
|
|
74
|
+
return {};
|
|
75
|
+
const candidateList = candidates
|
|
76
|
+
.map((c, i) => `${i + 1}. ${c.text}`)
|
|
77
|
+
.join("\n");
|
|
78
|
+
const prompt = `${RELATIONSHIP_PROMPT_PREFIX}\n\n` +
|
|
79
|
+
`Source: "${sourceText}"\n\n` +
|
|
80
|
+
`Candidates:\n${candidateList}`;
|
|
81
|
+
const raw = await apiCall(model, [{ role: "user", content: prompt }], 4000);
|
|
82
|
+
// Parse response: "1: supports", "2: none", etc.
|
|
83
|
+
const result = {};
|
|
84
|
+
for (const line of raw.split("\n")) {
|
|
85
|
+
const trimmed = line.trim();
|
|
86
|
+
const colonIdx = trimmed.indexOf(":");
|
|
87
|
+
if (colonIdx === -1)
|
|
88
|
+
continue;
|
|
89
|
+
try {
|
|
90
|
+
const idx = parseInt(trimmed.substring(0, colonIdx).trim(), 10) - 1; // 1-based → 0-based
|
|
91
|
+
const relType = trimmed.substring(colonIdx + 1).trim().toLowerCase();
|
|
92
|
+
if (idx >= 0 && idx < candidates.length) {
|
|
93
|
+
if (relType === "relates" || relType === "none") {
|
|
94
|
+
if (relType === "relates") {
|
|
95
|
+
result[candidates[idx].id] = "relates";
|
|
96
|
+
}
|
|
97
|
+
// "none" → don't add
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
// One of: supports, contradicts, instantiates, analogizes, questions
|
|
101
|
+
result[candidates[idx].id] = relType;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Parse error, skip this line
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return result;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=extraction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction.js","sourceRoot":"","sources":["../../src/memory/extraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Graph Engine — SQLite-backed knowledge graph with keyword-based retrieval.
|
|
3
|
+
*
|
|
4
|
+
* Ported from the Python mcp-memory server (graph.py / mcp_memory_server.py).
|
|
5
|
+
*
|
|
6
|
+
* Key change from Python: embedding similarity replaced with keyword overlap scoring.
|
|
7
|
+
* The LLM classification step (proposition extraction + relationship typing) is kept
|
|
8
|
+
* from the Python version — those are the intelligence-bearing components. Embedding
|
|
9
|
+
* was only used for candidate ranking, and keyword matching at the single-sentence
|
|
10
|
+
* proposition level is ~85% as good at zero cost / zero dependencies.
|
|
11
|
+
*/
|
|
12
|
+
import Database from "better-sqlite3";
|
|
13
|
+
import { existsSync, mkdirSync } from "fs";
|
|
14
|
+
import { join, dirname } from "path";
|
|
15
|
+
// ── Constants (ported from graph.py) ──────────────────────────────────
|
|
16
|
+
const BOOST = 0.1; // weight increment per activation
|
|
17
|
+
const MAX_WEIGHT = 1.0;
|
|
18
|
+
const MIN_WEIGHT = 0.001; // never deleted, just fade to near-zero
|
|
19
|
+
const PROPAGATION_FRACTION = 0.3; // fraction of boost that propagates to neighbors
|
|
20
|
+
const DECAY_RATE_PER_HOUR = 0.02; // base decay per hour
|
|
21
|
+
const CONNECTIVITY_BONUS = 0.15; // each edge reduces decay by this factor
|
|
22
|
+
const KEYWORD_SIM_THRESHOLD = 0.15; // minimum keyword overlap to consider linking
|
|
23
|
+
export const EDGE_TYPES = [
|
|
24
|
+
"supports",
|
|
25
|
+
"contradicts",
|
|
26
|
+
"instantiates",
|
|
27
|
+
"analogizes",
|
|
28
|
+
"questions",
|
|
29
|
+
];
|
|
30
|
+
export const RELATE = "relates";
|
|
31
|
+
// ── Database ──────────────────────────────────────────────────────────
|
|
32
|
+
let _db = null;
|
|
33
|
+
let _dbPath = "";
|
|
34
|
+
export function getDbPath() {
|
|
35
|
+
if (!_dbPath) {
|
|
36
|
+
const stateDir = process.env.XDG_STATE_HOME
|
|
37
|
+
? join(process.env.XDG_STATE_HOME, "dsc")
|
|
38
|
+
: join(process.env.HOME || "~", ".local", "state", "dsc");
|
|
39
|
+
if (!existsSync(stateDir)) {
|
|
40
|
+
mkdirSync(stateDir, { recursive: true });
|
|
41
|
+
}
|
|
42
|
+
_dbPath = join(stateDir, "memory.db");
|
|
43
|
+
}
|
|
44
|
+
return _dbPath;
|
|
45
|
+
}
|
|
46
|
+
export function getDb(dbPath) {
|
|
47
|
+
if (!_db) {
|
|
48
|
+
const path = dbPath || getDbPath();
|
|
49
|
+
const dir = dirname(path);
|
|
50
|
+
if (!existsSync(dir))
|
|
51
|
+
mkdirSync(dir, { recursive: true });
|
|
52
|
+
_db = new Database(path);
|
|
53
|
+
_db.pragma("journal_mode = WAL");
|
|
54
|
+
_db.pragma("foreign_keys = ON");
|
|
55
|
+
initSchema(_db);
|
|
56
|
+
}
|
|
57
|
+
return _db;
|
|
58
|
+
}
|
|
59
|
+
export function closeDb() {
|
|
60
|
+
if (_db) {
|
|
61
|
+
_db.close();
|
|
62
|
+
_db = null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function initSchema(db) {
|
|
66
|
+
db.exec(`
|
|
67
|
+
CREATE TABLE IF NOT EXISTS nodes (
|
|
68
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
69
|
+
text TEXT NOT NULL,
|
|
70
|
+
created_at REAL NOT NULL DEFAULT (unixepoch()),
|
|
71
|
+
last_activated REAL NOT NULL DEFAULT (unixepoch()),
|
|
72
|
+
source TEXT,
|
|
73
|
+
weight REAL NOT NULL DEFAULT 0.5,
|
|
74
|
+
activation_count INTEGER NOT NULL DEFAULT 0
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
CREATE TABLE IF NOT EXISTS edges (
|
|
78
|
+
from_id INTEGER NOT NULL REFERENCES nodes(id),
|
|
79
|
+
to_id INTEGER NOT NULL REFERENCES nodes(id),
|
|
80
|
+
type TEXT NOT NULL DEFAULT 'relates',
|
|
81
|
+
strength REAL NOT NULL DEFAULT 1.0,
|
|
82
|
+
PRIMARY KEY (from_id, to_id)
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
CREATE INDEX IF NOT EXISTS idx_nodes_weight ON nodes(weight DESC);
|
|
86
|
+
CREATE INDEX IF NOT EXISTS idx_edges_from ON edges(from_id);
|
|
87
|
+
CREATE INDEX IF NOT EXISTS idx_edges_to ON edges(to_id);
|
|
88
|
+
`);
|
|
89
|
+
}
|
|
90
|
+
// ── Keyword scoring (replaces embedding + cosine_similarity) ──────────
|
|
91
|
+
function tokenize(text) {
|
|
92
|
+
const tokens = text
|
|
93
|
+
.toLowerCase()
|
|
94
|
+
.replace(/[^a-z0-9\s]/g, " ")
|
|
95
|
+
.split(/\s+/)
|
|
96
|
+
.filter((t) => t.length > 2);
|
|
97
|
+
return new Set(tokens);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Jaccard-ish keyword overlap score.
|
|
101
|
+
* For single-sentence propositions this works surprisingly well —
|
|
102
|
+
* the LLM classification step handles the actual semantic linking.
|
|
103
|
+
*/
|
|
104
|
+
function keywordOverlap(a, b) {
|
|
105
|
+
const ta = tokenize(a);
|
|
106
|
+
const tb = tokenize(b);
|
|
107
|
+
if (ta.size === 0 || tb.size === 0)
|
|
108
|
+
return 0;
|
|
109
|
+
let intersection = 0;
|
|
110
|
+
// Iterate smaller set
|
|
111
|
+
if (ta.size < tb.size) {
|
|
112
|
+
for (const t of ta)
|
|
113
|
+
if (tb.has(t))
|
|
114
|
+
intersection++;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
for (const t of tb)
|
|
118
|
+
if (ta.has(t))
|
|
119
|
+
intersection++;
|
|
120
|
+
}
|
|
121
|
+
// Jaccard: intersection / union
|
|
122
|
+
return intersection / (ta.size + tb.size - intersection);
|
|
123
|
+
}
|
|
124
|
+
// ── Core operations ───────────────────────────────────────────────────
|
|
125
|
+
export function insertNode(db, text, source = null) {
|
|
126
|
+
const stmt = db.prepare("INSERT INTO nodes (text, source) VALUES (?, ?)");
|
|
127
|
+
return Number(stmt.run(text, source).lastInsertRowid);
|
|
128
|
+
}
|
|
129
|
+
export function getNode(db, nodeId) {
|
|
130
|
+
const row = db
|
|
131
|
+
.prepare(`SELECT id, text, weight, source, created_at, last_activated, activation_count
|
|
132
|
+
FROM nodes WHERE id = ?`)
|
|
133
|
+
.get(nodeId);
|
|
134
|
+
if (!row)
|
|
135
|
+
return null;
|
|
136
|
+
return {
|
|
137
|
+
id: row.id,
|
|
138
|
+
text: row.text,
|
|
139
|
+
weight: row.weight,
|
|
140
|
+
source: row.source,
|
|
141
|
+
created_at: row.created_at,
|
|
142
|
+
last_activated: row.last_activated,
|
|
143
|
+
activation_count: row.activation_count,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
export function search(db, query, n = 5) {
|
|
147
|
+
const rows = db
|
|
148
|
+
.prepare("SELECT id, text, weight, source FROM nodes")
|
|
149
|
+
.all();
|
|
150
|
+
const scored = rows.map((row) => ({
|
|
151
|
+
id: row.id,
|
|
152
|
+
text: row.text,
|
|
153
|
+
similarity: Math.round(keywordOverlap(query, row.text) * 10000) / 10000,
|
|
154
|
+
weight: row.weight,
|
|
155
|
+
source: row.source,
|
|
156
|
+
}));
|
|
157
|
+
scored.sort((a, b) => b.similarity - a.similarity);
|
|
158
|
+
return scored.slice(0, n);
|
|
159
|
+
}
|
|
160
|
+
export function findCandidates(db, nodeId, text, topK = 10, threshold = KEYWORD_SIM_THRESHOLD) {
|
|
161
|
+
const rows = db
|
|
162
|
+
.prepare("SELECT id, text, weight, source FROM nodes WHERE id != ?")
|
|
163
|
+
.all(nodeId);
|
|
164
|
+
const scored = [];
|
|
165
|
+
for (const row of rows) {
|
|
166
|
+
const sim = Math.round(keywordOverlap(text, row.text) * 10000) / 10000;
|
|
167
|
+
if (sim >= threshold) {
|
|
168
|
+
scored.push({
|
|
169
|
+
id: row.id,
|
|
170
|
+
text: row.text,
|
|
171
|
+
similarity: sim,
|
|
172
|
+
weight: row.weight,
|
|
173
|
+
source: row.source,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
scored.sort((a, b) => b.similarity - a.similarity);
|
|
178
|
+
return scored.slice(0, topK);
|
|
179
|
+
}
|
|
180
|
+
// ── Edge linking ──────────────────────────────────────────────────────
|
|
181
|
+
export function linkNode(db, nodeId, nodeText, relationships, candidates) {
|
|
182
|
+
const edgesCreated = [];
|
|
183
|
+
const insert = db.prepare("INSERT OR REPLACE INTO edges (from_id, to_id, type, strength) VALUES (?, ?, ?, ?)");
|
|
184
|
+
for (const cand of candidates) {
|
|
185
|
+
const relType = relationships[cand.id] || RELATE;
|
|
186
|
+
if (relType === "none")
|
|
187
|
+
continue;
|
|
188
|
+
try {
|
|
189
|
+
insert.run(nodeId, cand.id, relType, cand.similarity);
|
|
190
|
+
edgesCreated.push({
|
|
191
|
+
from_id: nodeId,
|
|
192
|
+
to_id: cand.id,
|
|
193
|
+
type: relType,
|
|
194
|
+
strength: cand.similarity,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
// PRIMARY KEY conflict — edge already exists, skip
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return edgesCreated;
|
|
202
|
+
}
|
|
203
|
+
// ── Activation ────────────────────────────────────────────────────────
|
|
204
|
+
export function activate(db, nodeId, boost = BOOST, propagate = true) {
|
|
205
|
+
const now = Date.now() / 1000;
|
|
206
|
+
// Boost this node
|
|
207
|
+
db.prepare(`UPDATE nodes
|
|
208
|
+
SET weight = MIN(?, weight + ?),
|
|
209
|
+
last_activated = ?,
|
|
210
|
+
activation_count = activation_count + 1
|
|
211
|
+
WHERE id = ?`).run(MAX_WEIGHT, boost, now, nodeId);
|
|
212
|
+
if (!propagate)
|
|
213
|
+
return;
|
|
214
|
+
// Propagate to neighbors (both directions)
|
|
215
|
+
const neighbors = db
|
|
216
|
+
.prepare(`SELECT DISTINCT
|
|
217
|
+
CASE WHEN from_id = ? THEN to_id ELSE from_id END AS neighbor_id,
|
|
218
|
+
strength
|
|
219
|
+
FROM edges
|
|
220
|
+
WHERE from_id = ? OR to_id = ?`)
|
|
221
|
+
.all(nodeId, nodeId, nodeId);
|
|
222
|
+
const propagateBoost = boost * PROPAGATION_FRACTION;
|
|
223
|
+
const updateNeighbor = db.prepare(`UPDATE nodes
|
|
224
|
+
SET weight = MIN(?, weight + ?),
|
|
225
|
+
last_activated = ?
|
|
226
|
+
WHERE id = ?`);
|
|
227
|
+
for (const { neighbor_id, strength } of neighbors) {
|
|
228
|
+
const neighborBoost = propagateBoost * strength;
|
|
229
|
+
updateNeighbor.run(MAX_WEIGHT, neighborBoost, now, neighbor_id);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
// ── Decay ─────────────────────────────────────────────────────────────
|
|
233
|
+
function edgeCount(db, nodeId) {
|
|
234
|
+
const row = db
|
|
235
|
+
.prepare("SELECT COUNT(*) as c FROM edges WHERE from_id = ? OR to_id = ?")
|
|
236
|
+
.get(nodeId, nodeId);
|
|
237
|
+
return row.c;
|
|
238
|
+
}
|
|
239
|
+
export function decayAll(db, hoursElapsed = 1.0) {
|
|
240
|
+
const rows = db
|
|
241
|
+
.prepare("SELECT id, weight FROM nodes WHERE weight > ?")
|
|
242
|
+
.all(MIN_WEIGHT);
|
|
243
|
+
const baseRate = DECAY_RATE_PER_HOUR * hoursElapsed;
|
|
244
|
+
let updated = 0;
|
|
245
|
+
const updateStmt = db.prepare("UPDATE nodes SET weight = ? WHERE id = ?");
|
|
246
|
+
for (const { id, weight } of rows) {
|
|
247
|
+
const edges = edgeCount(db, id);
|
|
248
|
+
// Connectivity slows decay: more edges = slower decay
|
|
249
|
+
const effectiveRate = baseRate / (1.0 + CONNECTIVITY_BONUS * edges);
|
|
250
|
+
const newWeight = Math.max(MIN_WEIGHT, weight * (1.0 - effectiveRate));
|
|
251
|
+
if (newWeight < weight) {
|
|
252
|
+
updateStmt.run(newWeight, id);
|
|
253
|
+
updated++;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return updated;
|
|
257
|
+
}
|
|
258
|
+
// ── Query with activation ─────────────────────────────────────────────
|
|
259
|
+
export function queryAndActivate(db, queryText, n = 5, activateMatches = true) {
|
|
260
|
+
const results = search(db, queryText, n);
|
|
261
|
+
if (activateMatches) {
|
|
262
|
+
for (const r of results) {
|
|
263
|
+
activate(db, r.id);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return results;
|
|
267
|
+
}
|
|
268
|
+
// ── Tension detection ─────────────────────────────────────────────────
|
|
269
|
+
export function getTensions(db, weightThreshold = 0.3) {
|
|
270
|
+
const rows = db
|
|
271
|
+
.prepare(`SELECT e.from_id, e.to_id, e.strength,
|
|
272
|
+
n_from.text AS from_text, n_from.weight AS from_weight,
|
|
273
|
+
n_to.text AS to_text, n_to.weight AS to_weight
|
|
274
|
+
FROM edges e
|
|
275
|
+
JOIN nodes n_from ON e.from_id = n_from.id
|
|
276
|
+
JOIN nodes n_to ON e.to_id = n_to.id
|
|
277
|
+
WHERE e.type = 'contradicts'
|
|
278
|
+
AND n_from.weight >= ?
|
|
279
|
+
AND n_to.weight >= ?
|
|
280
|
+
ORDER BY n_from.weight DESC, n_to.weight DESC`)
|
|
281
|
+
.all(weightThreshold, weightThreshold);
|
|
282
|
+
return rows.map((r) => ({
|
|
283
|
+
from_id: r.from_id,
|
|
284
|
+
to_id: r.to_id,
|
|
285
|
+
strength: r.strength,
|
|
286
|
+
from_text: r.from_text,
|
|
287
|
+
from_weight: Math.round(r.from_weight * 1000) / 1000,
|
|
288
|
+
to_text: r.to_text,
|
|
289
|
+
to_weight: Math.round(r.to_weight * 1000) / 1000,
|
|
290
|
+
}));
|
|
291
|
+
}
|
|
292
|
+
export function getEdges(db, nodeId) {
|
|
293
|
+
const rows = db
|
|
294
|
+
.prepare(`SELECT e.from_id, e.to_id, e.type, e.strength,
|
|
295
|
+
n_from.text as from_text, n_to.text as to_text
|
|
296
|
+
FROM edges e
|
|
297
|
+
JOIN nodes n_from ON e.from_id = n_from.id
|
|
298
|
+
JOIN nodes n_to ON e.to_id = n_to.id
|
|
299
|
+
WHERE e.from_id = ? OR e.to_id = ?`)
|
|
300
|
+
.all(nodeId, nodeId);
|
|
301
|
+
return rows.map((r) => ({
|
|
302
|
+
from_id: r.from_id,
|
|
303
|
+
to_id: r.to_id,
|
|
304
|
+
type: r.type,
|
|
305
|
+
strength: r.strength,
|
|
306
|
+
from_text: r.from_text,
|
|
307
|
+
to_text: r.to_text,
|
|
308
|
+
}));
|
|
309
|
+
}
|
|
310
|
+
// ── Statistics ────────────────────────────────────────────────────────
|
|
311
|
+
export function getStats(db) {
|
|
312
|
+
const nodeCount = db.prepare("SELECT COUNT(*) as c FROM nodes").get().c;
|
|
313
|
+
const edgeCount = db.prepare("SELECT COUNT(*) as c FROM edges").get().c;
|
|
314
|
+
const avgRow = db.prepare("SELECT AVG(weight) as a FROM nodes").get();
|
|
315
|
+
const avgWeight = avgRow.a ? Math.round(avgRow.a * 1000) / 1000 : 0;
|
|
316
|
+
const edgeTypes = db
|
|
317
|
+
.prepare("SELECT type, COUNT(*) as c FROM edges GROUP BY type ORDER BY c DESC")
|
|
318
|
+
.all();
|
|
319
|
+
return {
|
|
320
|
+
nodes: nodeCount,
|
|
321
|
+
edges: edgeCount,
|
|
322
|
+
avg_weight: avgWeight,
|
|
323
|
+
edge_types: Object.fromEntries(edgeTypes.map((r) => [r.type, r.c])),
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/memory/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory module public API — exposes the same surface as the MCP memory server,
|
|
3
|
+
* but runs natively inside dsc with zero subprocess / Python dependency.
|
|
4
|
+
*
|
|
5
|
+
* Key design decisions:
|
|
6
|
+
* - No embeddings — keyword overlap scoring instead (see graph.ts)
|
|
7
|
+
* - Background extraction queue (same as Python worker thread pattern)
|
|
8
|
+
* - Auto-migration: reads existing Python memory.db if it exists
|
|
9
|
+
*/
|
|
10
|
+
import { getDb, insertNode, getNode, findCandidates, linkNode, decayAll, queryAndActivate, getTensions, getEdges, getStats, } from "./graph.js";
|
|
11
|
+
import { extractPropositions, classifyRelationships } from "./extraction.js";
|
|
12
|
+
// ── Config ────────────────────────────────────────────────────────────
|
|
13
|
+
let _enabled = false;
|
|
14
|
+
let _model = "";
|
|
15
|
+
export function isEnabled() {
|
|
16
|
+
return _enabled;
|
|
17
|
+
}
|
|
18
|
+
export function setEnabled(v) {
|
|
19
|
+
_enabled = v;
|
|
20
|
+
}
|
|
21
|
+
export function setModel(model) {
|
|
22
|
+
_model = model;
|
|
23
|
+
}
|
|
24
|
+
let _apiCall = null;
|
|
25
|
+
export function setApiCall(fn) {
|
|
26
|
+
_apiCall = fn;
|
|
27
|
+
}
|
|
28
|
+
function apiCall(model, messages, maxTokens) {
|
|
29
|
+
if (!_apiCall)
|
|
30
|
+
throw new Error("memory: apiCall not set — call setApiCall() at boot");
|
|
31
|
+
return _apiCall(model, messages, maxTokens);
|
|
32
|
+
}
|
|
33
|
+
const _jobQueue = [];
|
|
34
|
+
let _workerRunning = false;
|
|
35
|
+
function startWorker() {
|
|
36
|
+
if (_workerRunning)
|
|
37
|
+
return;
|
|
38
|
+
_workerRunning = true;
|
|
39
|
+
(async () => {
|
|
40
|
+
while (true) {
|
|
41
|
+
const job = _jobQueue.shift();
|
|
42
|
+
if (!job) {
|
|
43
|
+
// Idle — wait before checking again
|
|
44
|
+
await new Promise((r) => setTimeout(r, 100));
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
const db = getDb();
|
|
49
|
+
try {
|
|
50
|
+
// 1. Extract propositions
|
|
51
|
+
const props = await extractPropositions(job.text, _model, apiCall);
|
|
52
|
+
if (props.length === 0) {
|
|
53
|
+
job.resolve(`Extracted 0 propositions (${job.text.length} chars). Try more structured input.`);
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
// 2. For each proposition: insert, find candidates, classify, link
|
|
57
|
+
for (const prop of props) {
|
|
58
|
+
const nodeId = insertNode(db, prop, job.source);
|
|
59
|
+
const candidates = findCandidates(db, nodeId, prop);
|
|
60
|
+
if (candidates.length > 0) {
|
|
61
|
+
const relationships = await classifyRelationships(prop, candidates, _model, apiCall);
|
|
62
|
+
linkNode(db, nodeId, prop, relationships, candidates);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
job.resolve(`Stored ${props.length} propositions. Run getStats() to see the graph.`);
|
|
66
|
+
}
|
|
67
|
+
finally {
|
|
68
|
+
// Don't close — db is shared. Let the module manage lifecycle.
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
try {
|
|
73
|
+
job.reject(err);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// ignore double-reject
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
})();
|
|
81
|
+
}
|
|
82
|
+
// ── Public API (tool-equivalents) ─────────────────────────────────────
|
|
83
|
+
export function storePropositions(text, source = null) {
|
|
84
|
+
if (!_enabled)
|
|
85
|
+
return Promise.resolve("Memory is disabled. Set 'memory.enabled' in config to activate.");
|
|
86
|
+
startWorker();
|
|
87
|
+
return new Promise((resolve, reject) => {
|
|
88
|
+
_jobQueue.push({ text, source, resolve, reject });
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
export function queryMemory(query, n = 5) {
|
|
92
|
+
if (!_enabled)
|
|
93
|
+
return "Memory is disabled.";
|
|
94
|
+
const db = getDb();
|
|
95
|
+
const results = queryAndActivate(db, query, n);
|
|
96
|
+
if (results.length === 0)
|
|
97
|
+
return "No relevant propositions found.";
|
|
98
|
+
return results
|
|
99
|
+
.map((r) => ` [${r.id}] sim=${r.similarity.toFixed(3)} w=${r.weight.toFixed(2)} ${r.text}`)
|
|
100
|
+
.join("\n");
|
|
101
|
+
}
|
|
102
|
+
export function queryMemoryRaw(query, n = 5) {
|
|
103
|
+
if (!_enabled)
|
|
104
|
+
return [];
|
|
105
|
+
const db = getDb();
|
|
106
|
+
return queryAndActivate(db, query, n);
|
|
107
|
+
}
|
|
108
|
+
export function surfaceTensions(threshold = 0.3) {
|
|
109
|
+
if (!_enabled)
|
|
110
|
+
return "Memory is disabled.";
|
|
111
|
+
const db = getDb();
|
|
112
|
+
const tensions = getTensions(db, threshold);
|
|
113
|
+
if (tensions.length === 0)
|
|
114
|
+
return "No tensions found.";
|
|
115
|
+
return tensions
|
|
116
|
+
.map((t) => ` [${t.from_id}]↔[${t.to_id}] w=${t.from_weight}/${t.to_weight} ${t.from_text} ⟂ ${t.to_text}`)
|
|
117
|
+
.join("\n");
|
|
118
|
+
}
|
|
119
|
+
export function getNodeDetail(nodeId) {
|
|
120
|
+
if (!_enabled)
|
|
121
|
+
return "Memory is disabled.";
|
|
122
|
+
const db = getDb();
|
|
123
|
+
const node = getNode(db, nodeId);
|
|
124
|
+
if (!node)
|
|
125
|
+
return `Node ${nodeId} not found.`;
|
|
126
|
+
const edges = getEdges(db, nodeId);
|
|
127
|
+
const lines = [
|
|
128
|
+
`[${node.id}] w=${node.weight.toFixed(2)} acts=${node.activation_count} ${node.text}`,
|
|
129
|
+
` source: ${node.source || "(none)"}`,
|
|
130
|
+
` edges (${edges.length}):`,
|
|
131
|
+
];
|
|
132
|
+
for (const e of edges) {
|
|
133
|
+
const direction = e.from_id === nodeId ? "→" : "←";
|
|
134
|
+
const other = e.from_id === nodeId ? e.to_text : e.from_text;
|
|
135
|
+
lines.push(` ${direction} [${e.type}] ${other}`);
|
|
136
|
+
}
|
|
137
|
+
return lines.join("\n");
|
|
138
|
+
}
|
|
139
|
+
export function memoryStats() {
|
|
140
|
+
if (!_enabled)
|
|
141
|
+
return "Memory is disabled.";
|
|
142
|
+
const db = getDb();
|
|
143
|
+
const stats = getStats(db);
|
|
144
|
+
return (`Graph: ${stats.nodes} nodes, ${stats.edges} edges\n` +
|
|
145
|
+
`Average weight: ${stats.avg_weight}\n` +
|
|
146
|
+
`Edge types: ${JSON.stringify(stats.edge_types)}`);
|
|
147
|
+
}
|
|
148
|
+
export function memoryDecay(hours = 24) {
|
|
149
|
+
if (!_enabled)
|
|
150
|
+
return "Memory is disabled.";
|
|
151
|
+
const db = getDb();
|
|
152
|
+
const n = decayAll(db, hours);
|
|
153
|
+
const stats = getStats(db);
|
|
154
|
+
return `Decayed ${n} nodes over ${hours}h. Average weight now: ${stats.avg_weight}`;
|
|
155
|
+
}
|
|
156
|
+
// ── Auto-query integration ────────────────────────────────────────────
|
|
157
|
+
/**
|
|
158
|
+
* Called before every agent turn. Searches memory for relevant
|
|
159
|
+
* propositions and returns them as a string to prepend to context.
|
|
160
|
+
* Returns empty string if disabled or nothing found.
|
|
161
|
+
*/
|
|
162
|
+
export function autoQueryContext(prompt) {
|
|
163
|
+
if (!_enabled)
|
|
164
|
+
return "";
|
|
165
|
+
const db = getDb();
|
|
166
|
+
const results = queryAndActivate(db, prompt, 3);
|
|
167
|
+
if (results.length === 0)
|
|
168
|
+
return "";
|
|
169
|
+
const lines = ["[memory context]"];
|
|
170
|
+
for (const r of results) {
|
|
171
|
+
lines.push(` [${r.id}] ${r.text}`);
|
|
172
|
+
}
|
|
173
|
+
return lines.join("\n");
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import * as mem from "./index.js";
|
|
2
|
+
export const MEMORY_TOOL_SCHEMAS = [
|
|
3
|
+
{
|
|
4
|
+
type: "function",
|
|
5
|
+
function: {
|
|
6
|
+
name: "mcp_memory_store_proposition",
|
|
7
|
+
description: `
|
|
8
|
+
Extract atomic propositions from text, embed them, store as nodes,
|
|
9
|
+
and auto-link to existing nodes with typed edges.
|
|
10
|
+
|
|
11
|
+
Processing happens in the background so API latency doesn't block.
|
|
12
|
+
Returns immediately. Use get_stats() to see when new nodes appear.
|
|
13
|
+
|
|
14
|
+
Args:
|
|
15
|
+
text: The text to extract propositions from (conversation, note, article, etc.)
|
|
16
|
+
source: Optional label for where this came from (conversation id, url, etc.)
|
|
17
|
+
`.trim(),
|
|
18
|
+
parameters: {
|
|
19
|
+
type: "object",
|
|
20
|
+
properties: {
|
|
21
|
+
text: { type: "string", description: "The text to extract propositions from." },
|
|
22
|
+
source: { type: "string", description: "Optional label for where this came from." },
|
|
23
|
+
},
|
|
24
|
+
required: ["text"],
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
type: "function",
|
|
30
|
+
function: {
|
|
31
|
+
name: "mcp_memory_query_memory",
|
|
32
|
+
description: `
|
|
33
|
+
Search the knowledge graph for propositions relevant to the query.
|
|
34
|
+
Matched nodes are activated (weight boosted, neighbors propagated to).
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
query: Natural language query
|
|
38
|
+
n: Number of results to return (default 5)
|
|
39
|
+
`.trim(),
|
|
40
|
+
parameters: {
|
|
41
|
+
type: "object",
|
|
42
|
+
properties: {
|
|
43
|
+
query: { type: "string", description: "Natural language query" },
|
|
44
|
+
n: { type: "integer", description: "Number of results to return (default 5)" },
|
|
45
|
+
},
|
|
46
|
+
required: ["query"],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
type: "function",
|
|
52
|
+
function: {
|
|
53
|
+
name: "mcp_memory_get_tensions",
|
|
54
|
+
description: `
|
|
55
|
+
Surface contradictions in the knowledge graph — pairs of high-weight
|
|
56
|
+
propositions that conflict. These are productive tensions, not errors.
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
threshold: Minimum weight for both nodes to be considered (default 0.3)
|
|
60
|
+
`.trim(),
|
|
61
|
+
parameters: {
|
|
62
|
+
type: "object",
|
|
63
|
+
properties: {
|
|
64
|
+
threshold: { type: "number", description: "Minimum weight for both nodes (default 0.3)" },
|
|
65
|
+
},
|
|
66
|
+
required: [],
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
type: "function",
|
|
72
|
+
function: {
|
|
73
|
+
name: "mcp_memory_get_node_detail",
|
|
74
|
+
description: `
|
|
75
|
+
Get full details for a specific node including its edges.
|
|
76
|
+
|
|
77
|
+
Args:
|
|
78
|
+
node_id: The node's numeric id
|
|
79
|
+
`.trim(),
|
|
80
|
+
parameters: {
|
|
81
|
+
type: "object",
|
|
82
|
+
properties: {
|
|
83
|
+
node_id: { type: "integer", description: "The node's numeric id" },
|
|
84
|
+
},
|
|
85
|
+
required: ["node_id"],
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
type: "function",
|
|
91
|
+
function: {
|
|
92
|
+
name: "mcp_memory_get_stats",
|
|
93
|
+
description: "Return summary statistics about the knowledge graph.",
|
|
94
|
+
parameters: {
|
|
95
|
+
type: "object",
|
|
96
|
+
properties: {},
|
|
97
|
+
required: [],
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
type: "function",
|
|
103
|
+
function: {
|
|
104
|
+
name: "mcp_memory_decay",
|
|
105
|
+
description: `
|
|
106
|
+
Apply time-based decay to all nodes. Highly connected nodes decay slower.
|
|
107
|
+
Run periodically to let unused knowledge recede.
|
|
108
|
+
|
|
109
|
+
Args:
|
|
110
|
+
hours: Hours of decay to simulate (default 24)
|
|
111
|
+
`.trim(),
|
|
112
|
+
parameters: {
|
|
113
|
+
type: "object",
|
|
114
|
+
properties: {
|
|
115
|
+
hours: { type: "number", description: "Hours of decay to simulate (default 24)" },
|
|
116
|
+
},
|
|
117
|
+
required: [],
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
];
|
|
122
|
+
/**
|
|
123
|
+
* Dispatch memory tools. Returns the result content string.
|
|
124
|
+
* Note: store_proposition is async (returns a promise), so callers
|
|
125
|
+
* must await the result if they call it.
|
|
126
|
+
*/
|
|
127
|
+
export async function dispatchMemoryTool(name, args) {
|
|
128
|
+
switch (name) {
|
|
129
|
+
case "mcp_memory_store_proposition":
|
|
130
|
+
return {
|
|
131
|
+
content: await mem.storePropositions(String(args.text ?? ""), typeof args.source === "string" ? args.source : null),
|
|
132
|
+
};
|
|
133
|
+
case "mcp_memory_query_memory":
|
|
134
|
+
return {
|
|
135
|
+
content: mem.queryMemory(String(args.query ?? ""), typeof args.n === "number" ? args.n : 5),
|
|
136
|
+
};
|
|
137
|
+
case "mcp_memory_get_tensions":
|
|
138
|
+
return {
|
|
139
|
+
content: mem.surfaceTensions(typeof args.threshold === "number" ? args.threshold : 0.3),
|
|
140
|
+
};
|
|
141
|
+
case "mcp_memory_get_node_detail":
|
|
142
|
+
return {
|
|
143
|
+
content: mem.getNodeDetail(typeof args.node_id === "number" ? args.node_id : parseInt(String(args.node_id ?? "0"), 10)),
|
|
144
|
+
};
|
|
145
|
+
case "mcp_memory_get_stats":
|
|
146
|
+
return { content: mem.memoryStats() };
|
|
147
|
+
case "mcp_memory_decay":
|
|
148
|
+
return {
|
|
149
|
+
content: mem.memoryDecay(typeof args.hours === "number" ? args.hours : 24),
|
|
150
|
+
};
|
|
151
|
+
default:
|
|
152
|
+
return { content: `error: unknown memory tool '${name}'` };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/memory/tools.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,GAAG,MAAM,YAAY,CAAC;AAElC,MAAM,CAAC,MAAM,mBAAmB,GAAiB;IAC/C;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,8BAA8B;YACpC,WAAW,EAAE;;;;;;;;;;CAUlB,CAAC,IAAI,EAAE;YACF,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;oBAC/E,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;iBACpF;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB;SACF;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE;;;;;;;CAOlB,CAAC,IAAI,EAAE;YACF,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;oBAChE,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,yCAAyC,EAAE;iBAC/E;gBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;aACpB;SACF;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE;;;;;;CAMlB,CAAC,IAAI,EAAE;YACF,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;iBAC1F;gBACD,QAAQ,EAAE,EAAE;aACb;SACF;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,4BAA4B;YAClC,WAAW,EAAE;;;;;CAKlB,CAAC,IAAI,EAAE;YACF,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,uBAAuB,EAAE;iBACnE;gBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;aACtB;SACF;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,sDAAsD;YACnE,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE,EAAE;aACb;SACF;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE;;;;;;CAMlB,CAAC,IAAI,EAAE;YACF,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;iBAClF;gBACD,QAAQ,EAAE,EAAE;aACb;SACF;KACF;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,IAA6B;IAE7B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,8BAA8B;YACjC,OAAO;gBACL,OAAO,EAAE,MAAM,GAAG,CAAC,iBAAiB,CAClC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EACvB,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CACrD;aACF,CAAC;QAEJ,KAAK,yBAAyB;YAC5B,OAAO;gBACL,OAAO,EAAE,GAAG,CAAC,WAAW,CACtB,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EACxB,OAAO,IAAI,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACxC;aACF,CAAC;QAEJ,KAAK,yBAAyB;YAC5B,OAAO;gBACL,OAAO,EAAE,GAAG,CAAC,eAAe,CAC1B,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAC1D;aACF,CAAC;QAEJ,KAAK,4BAA4B;YAC/B,OAAO;gBACL,OAAO,EAAE,GAAG,CAAC,aAAa,CACxB,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,CAC5F;aACF,CAAC;QAEJ,KAAK,sBAAsB;YACzB,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;QAExC,KAAK,kBAAkB;YACrB,OAAO;gBACL,OAAO,EAAE,GAAG,CAAC,WAAW,CACtB,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CACjD;aACF,CAAC;QAEJ;YACE,OAAO,EAAE,OAAO,EAAE,+BAA+B,IAAI,GAAG,EAAE,CAAC;IAC/D,CAAC;AACH,CAAC"}
|
package/dist/tui.js
CHANGED
|
@@ -2,9 +2,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { render } from "ink";
|
|
3
3
|
import { App } from "./tui/App.js";
|
|
4
4
|
import { getState, setState } from "./store.js";
|
|
5
|
-
import { availableModels, DEFAULT_MODEL, DeepSeekError, computeCostUsd, configPath, consumeConfigMigrationNotice, hasApiKey, isKnownModel, recordUsage, } from "./api.js";
|
|
5
|
+
import { availableModels, DEFAULT_MODEL, DeepSeekError, chat, computeCostUsd, configPath, consumeConfigMigrationNotice, getConfig, hasApiKey, isKnownModel, recordUsage, } from "./api.js";
|
|
6
6
|
import { loadInstructions } from "./instructions.js";
|
|
7
|
-
import { readPreferences } from "./preferences.js";
|
|
7
|
+
import { readPreferences, savePreferences } from "./preferences.js";
|
|
8
8
|
import { callMCPTool, connectAll as connectMCP, } from "./mcp.js";
|
|
9
9
|
import { runAgent, formatCost, estimateContextTokens, } from "./agent.js";
|
|
10
10
|
import * as history from "./history.js";
|
|
@@ -20,6 +20,8 @@ import { openEditor } from "./editor.js";
|
|
|
20
20
|
import { checkForUpdate } from "./update.js";
|
|
21
21
|
import { dispatchSlash } from "./slash_dispatch.js";
|
|
22
22
|
import { ProjectContext } from "./context.js";
|
|
23
|
+
import * as memory from "./memory/index.js";
|
|
24
|
+
import { MEMORY_TOOL_SCHEMAS, dispatchMemoryTool } from "./memory/tools.js";
|
|
23
25
|
/** Parse a numbered task list from the agent's response. Returns empty array
|
|
24
26
|
* if no clear plan structure was found. */
|
|
25
27
|
function parsePlanTasks(text) {
|
|
@@ -190,10 +192,16 @@ async function main() {
|
|
|
190
192
|
// mutated by /mcp reconnect (future). When no `mcp.servers` block is
|
|
191
193
|
// in the config this is just an empty array — no network, no cost.
|
|
192
194
|
let mcpConnections = [];
|
|
193
|
-
const mcpExtraTools = () => mcpConnections.flatMap((c) => c.tools)
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
195
|
+
const mcpExtraTools = () => mcpConnections.flatMap((c) => c.tools)
|
|
196
|
+
.concat(memoryEnabled ? MEMORY_TOOL_SCHEMAS : []);
|
|
197
|
+
const mcpDispatch = (name, args) => {
|
|
198
|
+
if (memoryEnabled && name.startsWith("mcp_memory_")) {
|
|
199
|
+
return dispatchMemoryTool(name, args);
|
|
200
|
+
}
|
|
201
|
+
return callMCPTool(mcpConnections, name, args, {
|
|
202
|
+
sessionApprovals: toolCtx.sessionApprovals,
|
|
203
|
+
});
|
|
204
|
+
};
|
|
197
205
|
// Project-context index: chunks AGENTS.md, README.md, etc. and
|
|
198
206
|
// injects relevant paragraphs before each agent turn. Re-indexed
|
|
199
207
|
// when the session resets (/clear, /resume).
|
|
@@ -427,10 +435,13 @@ async function main() {
|
|
|
427
435
|
// README.md, and recently-touched files). The history shows the
|
|
428
436
|
// original user text; the model sees context-enriched.
|
|
429
437
|
const ctxSnippets = projectCtx.search(userText);
|
|
430
|
-
const
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
"
|
|
438
|
+
const memCtx = memory.autoQueryContext(userText);
|
|
439
|
+
const enhancedText = ctxSnippets.length > 0 || memCtx
|
|
440
|
+
? (ctxSnippets.length > 0
|
|
441
|
+
? "Relevant project context:\n\n" + ctxSnippets.join("\n\n") + "\n\n"
|
|
442
|
+
: "") +
|
|
443
|
+
(memCtx ? memCtx + "\n\n" : "") +
|
|
444
|
+
"---\nUser: " +
|
|
434
445
|
userText
|
|
435
446
|
: userText;
|
|
436
447
|
// Push the user message into history immediately so it's visible before
|
|
@@ -487,6 +498,17 @@ async function main() {
|
|
|
487
498
|
for (const f of toolCtx.filesTouched) {
|
|
488
499
|
await projectCtx.addFile(cwd, f);
|
|
489
500
|
}
|
|
501
|
+
// Store the agent's last response as memory propositions (fire-and-forget).
|
|
502
|
+
if (memoryEnabled) {
|
|
503
|
+
const lastAssistant = [...messages]
|
|
504
|
+
.reverse()
|
|
505
|
+
.find((m) => m.role === "assistant");
|
|
506
|
+
if (lastAssistant?.content) {
|
|
507
|
+
memory
|
|
508
|
+
.storePropositions(lastAssistant.content, session.id + "-assistant")
|
|
509
|
+
.catch(() => { });
|
|
510
|
+
}
|
|
511
|
+
}
|
|
490
512
|
};
|
|
491
513
|
// Drain queued prompts after each turn so back-to-back submissions run in
|
|
492
514
|
// order without overlapping turns.
|
|
@@ -900,7 +922,7 @@ async function main() {
|
|
|
900
922
|
info("warning: yolo is on — write/edit/bash/web_fetch run without approval. /yolo to disable.");
|
|
901
923
|
}
|
|
902
924
|
if (budgetUsd !== null) {
|
|
903
|
-
info(`warning: budget set to
|
|
925
|
+
info(`warning: budget set to ${budgetUsd.toFixed(2)} (saved from a previous session). /budget off to clear, /budget <amount> to change.`);
|
|
904
926
|
}
|
|
905
927
|
// Connect any configured MCP servers in the background. We don't block
|
|
906
928
|
// boot — the user can interact with built-in tools immediately, and
|
|
@@ -925,6 +947,33 @@ async function main() {
|
|
|
925
947
|
info(`error: mcp connect failed: ${e.message}`);
|
|
926
948
|
}
|
|
927
949
|
})();
|
|
950
|
+
// Native memory graph (replaces the Python mcp-memory server).
|
|
951
|
+
// Enabled via `"memory": { "enabled": true }` in config.json.
|
|
952
|
+
const memConfig = getConfig();
|
|
953
|
+
const memoryEnabled = !!(memConfig && typeof memConfig === "object" &&
|
|
954
|
+
memConfig.memory && memConfig.memory.enabled);
|
|
955
|
+
if (memoryEnabled) {
|
|
956
|
+
memory.setEnabled(true);
|
|
957
|
+
memory.setModel(model);
|
|
958
|
+
// Shim the non-streaming chat for proposition extraction and
|
|
959
|
+
// relationship classification (background, not on the critical path).
|
|
960
|
+
memory.setApiCall(async (m, msgs, _maxTokens) => {
|
|
961
|
+
const res = await chat({
|
|
962
|
+
model: m,
|
|
963
|
+
messages: msgs,
|
|
964
|
+
});
|
|
965
|
+
return res.choices?.[0]?.message?.content ?? "";
|
|
966
|
+
});
|
|
967
|
+
info("memory: graph enabled (native, no Python subprocess)");
|
|
968
|
+
}
|
|
969
|
+
// One-time notice for upgraders who haven't enabled memory yet.
|
|
970
|
+
if (!memoryEnabled && !savedPrefs.memoryNoticeShown) {
|
|
971
|
+
info("new: native memory graph — dsc can now store knowledge across sessions.\n" +
|
|
972
|
+
' Add "memory": { "enabled": true } to ~/.config/dsc/config.json to activate.\n' +
|
|
973
|
+
" If you were using the Python mcp-memory server, remove its block from\n" +
|
|
974
|
+
" mcp.servers to avoid duplicate tools. (notice won't repeat)");
|
|
975
|
+
void savePreferences({ memoryNoticeShown: true }).catch(() => { });
|
|
976
|
+
}
|
|
928
977
|
// Fire-and-forget update probe. Uses the 24h cache by default so a
|
|
929
978
|
// chatty notice doesn't appear on every launch — only once per day,
|
|
930
979
|
// when the registry says we're behind. Failures are swallowed silently.
|
package/dist/tui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@este.systems/dsc",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "Dev Shell Companion — a CLI coding agent that lives in your terminal",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek",
|
|
@@ -52,12 +52,14 @@
|
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
55
|
+
"better-sqlite3": "^12.10.0",
|
|
55
56
|
"diff": "^5.2.0",
|
|
56
57
|
"ink": "^7.0.2",
|
|
57
58
|
"ink-text-input": "^6.0.0",
|
|
58
59
|
"react": "^19.2.6"
|
|
59
60
|
},
|
|
60
61
|
"devDependencies": {
|
|
62
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
61
63
|
"@types/diff": "^5.2.0",
|
|
62
64
|
"@types/node": "^20.0.0",
|
|
63
65
|
"@types/react": "^19.2.14",
|