@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 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.4.0...HEAD
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":"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"}
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
- const mcpDispatch = (name, args) => callMCPTool(mcpConnections, name, args, {
195
- sessionApprovals: toolCtx.sessionApprovals,
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 enhancedText = ctxSnippets.length > 0
431
- ? "Relevant project context:\n\n" +
432
- ctxSnippets.join("\n\n") +
433
- "\n\n---\nUser: " +
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 $${budgetUsd.toFixed(2)} (saved from a previous session). /budget off to clear, /budget <amount> to change.`);
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.4.0",
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",