overmind-mcp 0.0.2-alpha
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/LICENSE +21 -0
- package/README.md +137 -0
- package/assets/overmind_core_closeup.png +0 -0
- package/assets/overmind_mcp_banner.png +0 -0
- package/assets/overmind_mcp_banner_slim.png +0 -0
- package/assets/overmind_mcp_final_banner.png +0 -0
- package/assets/overmind_mcp_pro_banner.png +0 -0
- package/assets/overmind_mcp_pro_banner_v2.png +0 -0
- package/assets/overmind_mcp_pro_banner_v3.png +0 -0
- package/assets/terminal_preview.png +0 -0
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +481 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/InstallHelper.d.ts +14 -0
- package/dist/lib/InstallHelper.d.ts.map +1 -0
- package/dist/lib/InstallHelper.js +113 -0
- package/dist/lib/InstallHelper.js.map +1 -0
- package/dist/lib/config.d.ts +58 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +110 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/envUtils.d.ts +10 -0
- package/dist/lib/envUtils.d.ts.map +1 -0
- package/dist/lib/envUtils.js +24 -0
- package/dist/lib/envUtils.js.map +1 -0
- package/dist/lib/loadEnv.d.ts +2 -0
- package/dist/lib/loadEnv.d.ts.map +1 -0
- package/dist/lib/loadEnv.js +26 -0
- package/dist/lib/loadEnv.js.map +1 -0
- package/dist/lib/logger.d.ts +8 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +81 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/modelMapping.d.ts +18 -0
- package/dist/lib/modelMapping.d.ts.map +1 -0
- package/dist/lib/modelMapping.js +88 -0
- package/dist/lib/modelMapping.js.map +1 -0
- package/dist/lib/sessions.d.ts +4 -0
- package/dist/lib/sessions.d.ts.map +1 -0
- package/dist/lib/sessions.js +108 -0
- package/dist/lib/sessions.js.map +1 -0
- package/dist/memory/MemoryFactory.d.ts +11 -0
- package/dist/memory/MemoryFactory.d.ts.map +1 -0
- package/dist/memory/MemoryFactory.js +19 -0
- package/dist/memory/MemoryFactory.js.map +1 -0
- package/dist/memory/PostgresMemoryProvider.d.ts +29 -0
- package/dist/memory/PostgresMemoryProvider.d.ts.map +1 -0
- package/dist/memory/PostgresMemoryProvider.js +372 -0
- package/dist/memory/PostgresMemoryProvider.js.map +1 -0
- package/dist/memory/types.d.ts +70 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +2 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/prompts/agent_prompts.d.ts +2 -0
- package/dist/prompts/agent_prompts.d.ts.map +1 -0
- package/dist/prompts/agent_prompts.js +21 -0
- package/dist/prompts/agent_prompts.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +174 -0
- package/dist/server.js.map +1 -0
- package/dist/services/AgentManager.d.ts +28 -0
- package/dist/services/AgentManager.d.ts.map +1 -0
- package/dist/services/AgentManager.js +393 -0
- package/dist/services/AgentManager.js.map +1 -0
- package/dist/services/ClaudeRunner.d.ts +27 -0
- package/dist/services/ClaudeRunner.d.ts.map +1 -0
- package/dist/services/ClaudeRunner.js +426 -0
- package/dist/services/ClaudeRunner.js.map +1 -0
- package/dist/services/ClineRunner.d.ts +23 -0
- package/dist/services/ClineRunner.d.ts.map +1 -0
- package/dist/services/ClineRunner.js +95 -0
- package/dist/services/ClineRunner.js.map +1 -0
- package/dist/services/GeminiRunner.d.ts +23 -0
- package/dist/services/GeminiRunner.d.ts.map +1 -0
- package/dist/services/GeminiRunner.js +236 -0
- package/dist/services/GeminiRunner.js.map +1 -0
- package/dist/services/KiloRunner.d.ts +32 -0
- package/dist/services/KiloRunner.d.ts.map +1 -0
- package/dist/services/KiloRunner.js +413 -0
- package/dist/services/KiloRunner.js.map +1 -0
- package/dist/services/NousHermesRunner.d.ts +24 -0
- package/dist/services/NousHermesRunner.d.ts.map +1 -0
- package/dist/services/NousHermesRunner.js +318 -0
- package/dist/services/NousHermesRunner.js.map +1 -0
- package/dist/services/OpenClawRunner.d.ts +22 -0
- package/dist/services/OpenClawRunner.d.ts.map +1 -0
- package/dist/services/OpenClawRunner.js +89 -0
- package/dist/services/OpenClawRunner.js.map +1 -0
- package/dist/services/OpenCodeRunner.d.ts +22 -0
- package/dist/services/OpenCodeRunner.d.ts.map +1 -0
- package/dist/services/OpenCodeRunner.js +91 -0
- package/dist/services/OpenCodeRunner.js.map +1 -0
- package/dist/services/PromptManager.d.ts +16 -0
- package/dist/services/PromptManager.d.ts.map +1 -0
- package/dist/services/PromptManager.js +54 -0
- package/dist/services/PromptManager.js.map +1 -0
- package/dist/services/QwenCliRunner.d.ts +22 -0
- package/dist/services/QwenCliRunner.d.ts.map +1 -0
- package/dist/services/QwenCliRunner.js +90 -0
- package/dist/services/QwenCliRunner.js.map +1 -0
- package/dist/tools/config_example.d.ts +18 -0
- package/dist/tools/config_example.d.ts.map +1 -0
- package/dist/tools/config_example.js +253 -0
- package/dist/tools/config_example.js.map +1 -0
- package/dist/tools/create_agent.d.ts +41 -0
- package/dist/tools/create_agent.d.ts.map +1 -0
- package/dist/tools/create_agent.js +75 -0
- package/dist/tools/create_agent.js.map +1 -0
- package/dist/tools/get_agent_configs.d.ts +18 -0
- package/dist/tools/get_agent_configs.d.ts.map +1 -0
- package/dist/tools/get_agent_configs.js +43 -0
- package/dist/tools/get_agent_configs.js.map +1 -0
- package/dist/tools/initialization_check.d.ts +2 -0
- package/dist/tools/initialization_check.d.ts.map +1 -0
- package/dist/tools/initialization_check.js +23 -0
- package/dist/tools/initialization_check.js.map +1 -0
- package/dist/tools/manage_agents.d.ts +80 -0
- package/dist/tools/manage_agents.d.ts.map +1 -0
- package/dist/tools/manage_agents.js +161 -0
- package/dist/tools/manage_agents.js.map +1 -0
- package/dist/tools/manage_prompts.d.ts +30 -0
- package/dist/tools/manage_prompts.d.ts.map +1 -0
- package/dist/tools/manage_prompts.js +64 -0
- package/dist/tools/manage_prompts.js.map +1 -0
- package/dist/tools/memory_runs.d.ts +14 -0
- package/dist/tools/memory_runs.d.ts.map +1 -0
- package/dist/tools/memory_runs.js +77 -0
- package/dist/tools/memory_runs.js.map +1 -0
- package/dist/tools/memory_search.d.ts +14 -0
- package/dist/tools/memory_search.d.ts.map +1 -0
- package/dist/tools/memory_search.js +46 -0
- package/dist/tools/memory_search.js.map +1 -0
- package/dist/tools/memory_store.d.ts +26 -0
- package/dist/tools/memory_store.d.ts.map +1 -0
- package/dist/tools/memory_store.js +46 -0
- package/dist/tools/memory_store.js.map +1 -0
- package/dist/tools/metadata.d.ts +20 -0
- package/dist/tools/metadata.d.ts.map +1 -0
- package/dist/tools/metadata.js +240 -0
- package/dist/tools/metadata.js.map +1 -0
- package/dist/tools/run_agent.d.ts +30 -0
- package/dist/tools/run_agent.d.ts.map +1 -0
- package/dist/tools/run_agent.js +80 -0
- package/dist/tools/run_agent.js.map +1 -0
- package/dist/tools/run_agent_cli.d.ts +21 -0
- package/dist/tools/run_agent_cli.d.ts.map +1 -0
- package/dist/tools/run_agent_cli.js +129 -0
- package/dist/tools/run_agent_cli.js.map +1 -0
- package/dist/tools/run_agents_parallel.d.ts +34 -0
- package/dist/tools/run_agents_parallel.d.ts.map +1 -0
- package/dist/tools/run_agents_parallel.js +104 -0
- package/dist/tools/run_agents_parallel.js.map +1 -0
- package/dist/tools/run_claude.d.ts +19 -0
- package/dist/tools/run_claude.d.ts.map +1 -0
- package/dist/tools/run_claude.js +99 -0
- package/dist/tools/run_claude.js.map +1 -0
- package/dist/tools/run_cline.d.ts +28 -0
- package/dist/tools/run_cline.d.ts.map +1 -0
- package/dist/tools/run_cline.js +77 -0
- package/dist/tools/run_cline.js.map +1 -0
- package/dist/tools/run_gemini.d.ts +24 -0
- package/dist/tools/run_gemini.d.ts.map +1 -0
- package/dist/tools/run_gemini.js +81 -0
- package/dist/tools/run_gemini.js.map +1 -0
- package/dist/tools/run_hermes.d.ts +25 -0
- package/dist/tools/run_hermes.d.ts.map +1 -0
- package/dist/tools/run_hermes.js +93 -0
- package/dist/tools/run_hermes.js.map +1 -0
- package/dist/tools/run_kilo.d.ts +32 -0
- package/dist/tools/run_kilo.d.ts.map +1 -0
- package/dist/tools/run_kilo.js +92 -0
- package/dist/tools/run_kilo.js.map +1 -0
- package/dist/tools/run_openclaw.d.ts +24 -0
- package/dist/tools/run_openclaw.d.ts.map +1 -0
- package/dist/tools/run_openclaw.js +74 -0
- package/dist/tools/run_openclaw.js.map +1 -0
- package/dist/tools/run_opencode.d.ts +24 -0
- package/dist/tools/run_opencode.d.ts.map +1 -0
- package/dist/tools/run_opencode.js +74 -0
- package/dist/tools/run_opencode.js.map +1 -0
- package/dist/tools/run_qwencli.d.ts +24 -0
- package/dist/tools/run_qwencli.d.ts.map +1 -0
- package/dist/tools/run_qwencli.js +59 -0
- package/dist/tools/run_qwencli.js.map +1 -0
- package/package.json +86 -0
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
import { Pool, Client } from 'pg';
|
|
2
|
+
import { getPool } from 'overmind-postgres-mcp';
|
|
3
|
+
import crypto from 'crypto';
|
|
4
|
+
import { embedText } from 'overmind-postgres-mcp/services/embeddings';
|
|
5
|
+
// ── Internal helpers ─────────────────────────────────────────────────────────
|
|
6
|
+
function randomId() {
|
|
7
|
+
return crypto.randomBytes(8).toString('hex');
|
|
8
|
+
}
|
|
9
|
+
function sha256(text) {
|
|
10
|
+
return crypto.createHash('sha256').update(text).digest('hex').slice(0, 16);
|
|
11
|
+
}
|
|
12
|
+
// ── Provider Implementation ──────────────────────────────────────────────────
|
|
13
|
+
export class PostgresMemoryProvider {
|
|
14
|
+
pools = new Map();
|
|
15
|
+
initializedDbs = new Set();
|
|
16
|
+
maintenancePool;
|
|
17
|
+
coreDbName = 'overmind_core';
|
|
18
|
+
dbVectorSupport = new Map();
|
|
19
|
+
dbCreationInProgress = new Set(); // Track DB creation to avoid race conditions
|
|
20
|
+
constructor() {
|
|
21
|
+
// We use the default pool for maintenance operations (creating other DBs)
|
|
22
|
+
this.maintenancePool = getPool();
|
|
23
|
+
}
|
|
24
|
+
sanitizeIdentifier(name) {
|
|
25
|
+
return name.replace(/[^a-z0-9_]/gi, '_').toLowerCase();
|
|
26
|
+
}
|
|
27
|
+
getDbName(agentName) {
|
|
28
|
+
if (!agentName)
|
|
29
|
+
return this.coreDbName;
|
|
30
|
+
return `agent_${this.sanitizeIdentifier(agentName)}`;
|
|
31
|
+
}
|
|
32
|
+
async getPoolFor(dbName) {
|
|
33
|
+
if (this.pools.has(dbName))
|
|
34
|
+
return this.pools.get(dbName);
|
|
35
|
+
await this.ensureDatabaseExists(dbName);
|
|
36
|
+
// Create a new pool for this specific database
|
|
37
|
+
const poolOptions = this.maintenancePool.options || {};
|
|
38
|
+
// Defensive password retrieval
|
|
39
|
+
let password = process.env.POSTGRES_PASSWORD || '';
|
|
40
|
+
if (typeof poolOptions.password === 'string') {
|
|
41
|
+
password = poolOptions.password;
|
|
42
|
+
}
|
|
43
|
+
else if (typeof poolOptions.password === 'number') {
|
|
44
|
+
password = String(poolOptions.password);
|
|
45
|
+
}
|
|
46
|
+
const host = poolOptions.host || process.env.POSTGRES_HOST || '127.0.0.1';
|
|
47
|
+
const port = poolOptions.port || parseInt(process.env.POSTGRES_PORT || '5432', 10);
|
|
48
|
+
const user = poolOptions.user || process.env.POSTGRES_USER || 'postgres';
|
|
49
|
+
const max = poolOptions.max || 10;
|
|
50
|
+
const idleTimeoutMillis = poolOptions.idleTimeoutMillis || 30000;
|
|
51
|
+
console.error(`[PostgresMemory] 📥 Creating connection pool for physical vault: ${dbName}`);
|
|
52
|
+
console.error(` Host: ${host}`);
|
|
53
|
+
console.error(` User: ${user}`);
|
|
54
|
+
const newPool = new Pool({
|
|
55
|
+
host,
|
|
56
|
+
port,
|
|
57
|
+
user,
|
|
58
|
+
password,
|
|
59
|
+
database: dbName,
|
|
60
|
+
ssl: poolOptions.ssl,
|
|
61
|
+
max,
|
|
62
|
+
idleTimeoutMillis,
|
|
63
|
+
});
|
|
64
|
+
this.pools.set(dbName, newPool);
|
|
65
|
+
return newPool;
|
|
66
|
+
}
|
|
67
|
+
async ensureDatabaseExists(dbName) {
|
|
68
|
+
// Prevent race conditions: if this DB is already being created, wait a bit and check again
|
|
69
|
+
if (this.dbCreationInProgress.has(dbName)) {
|
|
70
|
+
console.error(`[PostgresMemory] ⏳ Database ${dbName} creation already in progress, waiting...`);
|
|
71
|
+
// Wait up to 5 seconds for the other process to finish
|
|
72
|
+
for (let i = 0; i < 10; i++) {
|
|
73
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
74
|
+
try {
|
|
75
|
+
const testClient = new Client({
|
|
76
|
+
host: process.env.POSTGRES_HOST || '127.0.0.1',
|
|
77
|
+
port: parseInt(process.env.POSTGRES_PORT || '5432', 10),
|
|
78
|
+
user: process.env.POSTGRES_USER || 'postgres',
|
|
79
|
+
password: process.env.POSTGRES_PASSWORD || '',
|
|
80
|
+
database: dbName,
|
|
81
|
+
});
|
|
82
|
+
await testClient.connect();
|
|
83
|
+
await testClient.end();
|
|
84
|
+
console.error(`[PostgresMemory] ✅ Database ${dbName} is now ready (was being created by another process).`);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// DB not ready yet, continue waiting
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
console.error(`[PostgresMemory] ⚠️ Waited too long for ${dbName}, proceeding anyway...`);
|
|
92
|
+
}
|
|
93
|
+
// Mark this DB as being created
|
|
94
|
+
this.dbCreationInProgress.add(dbName);
|
|
95
|
+
// We create a one-off connection to 'postgres' to create the new database
|
|
96
|
+
const poolOptions = this.maintenancePool.options || {};
|
|
97
|
+
// Defensive password retrieval
|
|
98
|
+
let password = process.env.POSTGRES_PASSWORD || '';
|
|
99
|
+
if (typeof poolOptions.password === 'string') {
|
|
100
|
+
password = poolOptions.password;
|
|
101
|
+
}
|
|
102
|
+
else if (typeof poolOptions.password === 'number') {
|
|
103
|
+
password = String(poolOptions.password);
|
|
104
|
+
}
|
|
105
|
+
const maintenanceClientConfig = {
|
|
106
|
+
host: poolOptions.host || process.env.POSTGRES_HOST || '127.0.0.1',
|
|
107
|
+
port: poolOptions.port ||
|
|
108
|
+
parseInt(process.env.POSTGRES_PORT || '5432', 10),
|
|
109
|
+
user: poolOptions.user || process.env.POSTGRES_USER || 'postgres',
|
|
110
|
+
password: password,
|
|
111
|
+
database: 'postgres', // ALWAYS connect to postgres for DDL
|
|
112
|
+
ssl: poolOptions.ssl,
|
|
113
|
+
};
|
|
114
|
+
console.error(`[PostgresMemory] Attempting to ensure DB ${dbName} exists via postgres maintenance DB...`);
|
|
115
|
+
const client = new Client(maintenanceClientConfig);
|
|
116
|
+
try {
|
|
117
|
+
await client.connect();
|
|
118
|
+
const res = await client.query('SELECT 1 FROM pg_database WHERE datname = $1', [dbName]);
|
|
119
|
+
if (res.rows.length === 0) {
|
|
120
|
+
console.error(`[PostgresMemory] 🏗️ Creating new physical database: ${dbName}`);
|
|
121
|
+
// Double quote database name to handle special characters or names
|
|
122
|
+
await client.query(`CREATE DATABASE "${dbName}"`);
|
|
123
|
+
console.error(`[PostgresMemory] ✅ Database ${dbName} created.`);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
console.error(`[PostgresMemory] ℹ️ Database ${dbName} already exists.`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
// Handle duplicate database error (code 42P04)
|
|
131
|
+
if (err instanceof Error && err.code === '42P04') {
|
|
132
|
+
console.error(`[PostgresMemory] ℹ️ Database ${dbName} already exists (duplicate creation attempted).`);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
// Handle authentication errors more gracefully
|
|
136
|
+
if (err instanceof Error && err.message.includes('password authentication failed')) {
|
|
137
|
+
console.error(`[PostgresMemory] ⚠️ Authentication failed for ${dbName}, but database may already exist. Continuing...`);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
console.error(`[PostgresMemory] ❌ Critical: Failed to create database ${dbName}:`, err);
|
|
141
|
+
throw err;
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
await client.end().catch(() => { });
|
|
145
|
+
// Remove from in-progress set regardless of success/failure
|
|
146
|
+
this.dbCreationInProgress.delete(dbName);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
async initializeDb(dbName, pool) {
|
|
150
|
+
if (this.initializedDbs.has(dbName))
|
|
151
|
+
return;
|
|
152
|
+
const client = await pool.connect();
|
|
153
|
+
try {
|
|
154
|
+
// Extensions (Try to enable outside transaction to avoid aborting the whole thing)
|
|
155
|
+
try {
|
|
156
|
+
await client.query('CREATE EXTENSION IF NOT EXISTS vector');
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
160
|
+
throw new Error(`[PostgresMemory] CRITICAL: pgvector extension is REQUIRED but could not be enabled in ${dbName}. Error: ${msg}`);
|
|
161
|
+
}
|
|
162
|
+
this.dbVectorSupport.set(dbName, true);
|
|
163
|
+
await client.query('BEGIN');
|
|
164
|
+
// 1. Agent Runs Table
|
|
165
|
+
await client.query(`
|
|
166
|
+
CREATE TABLE IF NOT EXISTS agent_runs (
|
|
167
|
+
id TEXT PRIMARY KEY,
|
|
168
|
+
runner TEXT NOT NULL,
|
|
169
|
+
agent_name TEXT,
|
|
170
|
+
prompt TEXT NOT NULL,
|
|
171
|
+
result TEXT,
|
|
172
|
+
error TEXT,
|
|
173
|
+
duration_ms INTEGER,
|
|
174
|
+
success INTEGER DEFAULT 0,
|
|
175
|
+
session_id TEXT,
|
|
176
|
+
created_at BIGINT DEFAULT extract(epoch from now()) * 1000
|
|
177
|
+
)
|
|
178
|
+
`);
|
|
179
|
+
// 2. Knowledge Chunks Table (VECTOR ONLY ENFORCED)
|
|
180
|
+
const dimensions = parseInt(process.env.OVERMIND_EMBEDDING_DIMENSIONS || '4096', 10);
|
|
181
|
+
const embeddingType = `vector(${dimensions})`;
|
|
182
|
+
await client.query(`
|
|
183
|
+
CREATE TABLE IF NOT EXISTS knowledge_chunks (
|
|
184
|
+
id TEXT PRIMARY KEY,
|
|
185
|
+
source TEXT NOT NULL,
|
|
186
|
+
text TEXT NOT NULL,
|
|
187
|
+
embedding ${embeddingType},
|
|
188
|
+
model TEXT,
|
|
189
|
+
created_at BIGINT DEFAULT extract(epoch from now()) * 1000,
|
|
190
|
+
updated_at BIGINT DEFAULT extract(epoch from now()) * 1000
|
|
191
|
+
)
|
|
192
|
+
`);
|
|
193
|
+
// 3. Indexes
|
|
194
|
+
await client.query('CREATE INDEX IF NOT EXISTS idx_agent_runs_runner ON agent_runs(runner)');
|
|
195
|
+
await client.query('CREATE INDEX IF NOT EXISTS idx_agent_runs_session ON agent_runs(session_id)');
|
|
196
|
+
await client.query('COMMIT');
|
|
197
|
+
// 4. Vector Optimizations & Indexing
|
|
198
|
+
if (dimensions > 0) {
|
|
199
|
+
if (dimensions <= 2000) {
|
|
200
|
+
// Standard pgvector limit for HNSW is 2000 dimensions
|
|
201
|
+
try {
|
|
202
|
+
await client.query(`
|
|
203
|
+
CREATE INDEX IF NOT EXISTS idx_knowledge_embedding_hnsw
|
|
204
|
+
ON knowledge_chunks USING hnsw (embedding vector_cosine_ops)
|
|
205
|
+
WITH (m = 16, ef_construction = 64)
|
|
206
|
+
`);
|
|
207
|
+
}
|
|
208
|
+
catch (e) {
|
|
209
|
+
console.warn(`[PostgresMemory] ⚠️ Could not create HNSW index: ${e instanceof Error ? e.message : String(e)}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
// > 2000D Optimization: Fast Exact K-NN Search
|
|
214
|
+
try {
|
|
215
|
+
console.error(`[PostgresMemory] ⚡ Opting for Optimized Exact K-NN Search (High Dimensionality: ${dimensions}D).`);
|
|
216
|
+
// Boost parallelization for SeqScans on heavy high-dimensional vectors
|
|
217
|
+
await client.query('ALTER TABLE knowledge_chunks SET (parallel_workers = 4)');
|
|
218
|
+
}
|
|
219
|
+
catch (_e) {
|
|
220
|
+
// Fails silently if table optimization isn't supported / granted
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
this.initializedDbs.add(dbName);
|
|
225
|
+
console.error(`[PostgresMemory] ✅ Physical vault ${dbName} initialized (Vector: STRICTLY ENFORCED).`);
|
|
226
|
+
}
|
|
227
|
+
catch (e) {
|
|
228
|
+
await client.query('ROLLBACK').catch(() => { });
|
|
229
|
+
console.error(`[PostgresMemory] Failed to initialize tables in ${dbName}:`, e);
|
|
230
|
+
throw e;
|
|
231
|
+
}
|
|
232
|
+
finally {
|
|
233
|
+
client.release();
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
async storeRun(params) {
|
|
237
|
+
const dbName = this.getDbName(params.agentName || undefined);
|
|
238
|
+
const pool = await this.getPoolFor(dbName);
|
|
239
|
+
await this.initializeDb(dbName, pool);
|
|
240
|
+
const id = randomId();
|
|
241
|
+
await pool.query(`INSERT INTO agent_runs
|
|
242
|
+
(id, runner, agent_name, prompt, result, error, duration_ms, success, session_id)
|
|
243
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)`, [
|
|
244
|
+
id,
|
|
245
|
+
params.runner,
|
|
246
|
+
params.agentName || null,
|
|
247
|
+
params.prompt.slice(0, 4096),
|
|
248
|
+
params.result?.slice(0, 8192) || null,
|
|
249
|
+
params.error || null,
|
|
250
|
+
params.durationMs || null,
|
|
251
|
+
params.success ? 1 : 0,
|
|
252
|
+
params.sessionId || null,
|
|
253
|
+
]);
|
|
254
|
+
return id;
|
|
255
|
+
}
|
|
256
|
+
async storeKnowledge(params) {
|
|
257
|
+
const dbName = this.getDbName(params.agentName);
|
|
258
|
+
const pool = await this.getPoolFor(dbName);
|
|
259
|
+
await this.initializeDb(dbName, pool);
|
|
260
|
+
const id = `k_${sha256(params.text)}_${randomId()}`;
|
|
261
|
+
// Format source: type|name (ex: agent|sniper, decision|system)
|
|
262
|
+
let source = params.source || 'user';
|
|
263
|
+
if (params.agentName) {
|
|
264
|
+
source = `agent|${params.agentName}`;
|
|
265
|
+
}
|
|
266
|
+
const { embedding, model } = await embedText(params.text);
|
|
267
|
+
const embStr = embedding.length > 0 ? `[${embedding.join(',')}]` : null;
|
|
268
|
+
await pool.query(`INSERT INTO knowledge_chunks (id, source, text, embedding, model)
|
|
269
|
+
VALUES ($1, $2, $3, $4, $5)
|
|
270
|
+
ON CONFLICT (id) DO UPDATE SET
|
|
271
|
+
text = EXCLUDED.text,
|
|
272
|
+
embedding = EXCLUDED.embedding,
|
|
273
|
+
updated_at = extract(epoch from now()) * 1000`, [id, source, params.text, embStr, model]);
|
|
274
|
+
return id;
|
|
275
|
+
}
|
|
276
|
+
async searchMemory(params) {
|
|
277
|
+
const limit = params.limit || 10;
|
|
278
|
+
const { embedding: queryEmb } = await embedText(params.query);
|
|
279
|
+
const merged = [];
|
|
280
|
+
const seen = new Set();
|
|
281
|
+
// Search in Agent DB AND Core DB
|
|
282
|
+
const dbsToSearch = [this.getDbName(params.agentName)];
|
|
283
|
+
if (params.agentName) {
|
|
284
|
+
dbsToSearch.push(this.coreDbName);
|
|
285
|
+
}
|
|
286
|
+
for (const dbName of dbsToSearch) {
|
|
287
|
+
if (merged.length >= limit)
|
|
288
|
+
break;
|
|
289
|
+
const pool = await this.getPoolFor(dbName);
|
|
290
|
+
await this.initializeDb(dbName, pool);
|
|
291
|
+
// 1. Vector Search
|
|
292
|
+
if (queryEmb.length > 0) {
|
|
293
|
+
const embStr = `[${queryEmb.join(',')}]`;
|
|
294
|
+
try {
|
|
295
|
+
// Improved Query: Semantic search + Time Decay (Freshness boost)
|
|
296
|
+
// We fetch more candidates via HNSW index first, then re-rank with time decay
|
|
297
|
+
const vecRes = await pool.query(`SELECT * FROM (
|
|
298
|
+
SELECT id, text, source, created_at,
|
|
299
|
+
(1 - (embedding <=> $1)) as semantic_score
|
|
300
|
+
FROM knowledge_chunks
|
|
301
|
+
WHERE embedding IS NOT NULL
|
|
302
|
+
ORDER BY embedding <=> $1
|
|
303
|
+
LIMIT $2
|
|
304
|
+
) AS candidates
|
|
305
|
+
ORDER BY (
|
|
306
|
+
(semantic_score * 0.85) +
|
|
307
|
+
(1.0 / (1.0 + ln(1.0 + (extract(epoch from now()) * 1000 - created_at) / 86400000.0))) * 0.15
|
|
308
|
+
) DESC`, [embStr, Math.max(limit * 3, 50)]);
|
|
309
|
+
for (const row of vecRes.rows) {
|
|
310
|
+
if (!seen.has(row.id)) {
|
|
311
|
+
seen.add(row.id);
|
|
312
|
+
const [type] = row.source.split('|');
|
|
313
|
+
merged.push({
|
|
314
|
+
id: row.id,
|
|
315
|
+
text: row.text,
|
|
316
|
+
source: row.source,
|
|
317
|
+
score: parseFloat(row.semantic_score),
|
|
318
|
+
created_at: parseInt(row.created_at, 10),
|
|
319
|
+
match_type: type === 'pattern' || type === 'decision' ? 'structural' : 'vector',
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
catch (e) {
|
|
325
|
+
console.error(`[PostgresMemory] CRITICAL: Native vector search error in ${dbName} (Fail Loudly):`, e);
|
|
326
|
+
throw e; // Fail loudly instead of fallback
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return merged.sort((a, b) => b.score - a.score).slice(0, limit);
|
|
331
|
+
}
|
|
332
|
+
async getRecentRuns(params) {
|
|
333
|
+
const dbName = this.getDbName(params.agentName);
|
|
334
|
+
const pool = await this.getPoolFor(dbName);
|
|
335
|
+
await this.initializeDb(dbName, pool);
|
|
336
|
+
const limit = params.limit || 20;
|
|
337
|
+
let query = 'SELECT * FROM agent_runs ORDER BY created_at DESC LIMIT $1';
|
|
338
|
+
let values = [limit];
|
|
339
|
+
if (params.runner) {
|
|
340
|
+
query = 'SELECT * FROM agent_runs WHERE runner = $1 ORDER BY created_at DESC LIMIT $2';
|
|
341
|
+
values = [params.runner, limit];
|
|
342
|
+
}
|
|
343
|
+
const res = await pool.query(query, values);
|
|
344
|
+
return res.rows.map((r) => ({
|
|
345
|
+
...r,
|
|
346
|
+
created_at: parseInt(r.created_at, 10),
|
|
347
|
+
duration_ms: r.duration_ms ? parseInt(r.duration_ms, 10) : null,
|
|
348
|
+
}));
|
|
349
|
+
}
|
|
350
|
+
async getStats(agentName) {
|
|
351
|
+
const dbName = this.getDbName(agentName);
|
|
352
|
+
const pool = await this.getPoolFor(dbName);
|
|
353
|
+
await this.initializeDb(dbName, pool);
|
|
354
|
+
const totalRunsRes = await pool.query('SELECT COUNT(*) as count FROM agent_runs');
|
|
355
|
+
const totalKnowledgeRes = await pool.query('SELECT COUNT(*) as count FROM knowledge_chunks');
|
|
356
|
+
const byRunnerRes = await pool.query(`
|
|
357
|
+
SELECT runner, COUNT(*) as count, SUM(success) as successes
|
|
358
|
+
FROM agent_runs
|
|
359
|
+
GROUP BY runner
|
|
360
|
+
`);
|
|
361
|
+
return {
|
|
362
|
+
totalRuns: parseInt(totalRunsRes.rows[0].count, 10),
|
|
363
|
+
totalKnowledge: parseInt(totalKnowledgeRes.rows[0].count, 10),
|
|
364
|
+
byRunner: byRunnerRes.rows.map((r) => ({
|
|
365
|
+
runner: r.runner,
|
|
366
|
+
count: parseInt(r.count, 10),
|
|
367
|
+
successes: parseInt(r.successes || '0', 10),
|
|
368
|
+
})),
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
//# sourceMappingURL=PostgresMemoryProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgresMemoryProvider.js","sourceRoot":"","sources":["../../src/memory/PostgresMemoryProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export interface AgentRun {
|
|
2
|
+
id: string;
|
|
3
|
+
runner: string;
|
|
4
|
+
agent_name: string | null;
|
|
5
|
+
prompt: string;
|
|
6
|
+
result: string | null;
|
|
7
|
+
error: string | null;
|
|
8
|
+
duration_ms: number | null;
|
|
9
|
+
success: number;
|
|
10
|
+
session_id: string | null;
|
|
11
|
+
created_at: number;
|
|
12
|
+
}
|
|
13
|
+
export interface KnowledgeChunk {
|
|
14
|
+
id: string;
|
|
15
|
+
source: string;
|
|
16
|
+
text: string;
|
|
17
|
+
embedding: string | null;
|
|
18
|
+
model: string | null;
|
|
19
|
+
created_at: number;
|
|
20
|
+
updated_at: number;
|
|
21
|
+
}
|
|
22
|
+
export interface SearchResult {
|
|
23
|
+
id: string;
|
|
24
|
+
text: string;
|
|
25
|
+
source: string;
|
|
26
|
+
score: number;
|
|
27
|
+
created_at: number;
|
|
28
|
+
match_type: 'vector' | 'fts' | 'combined' | 'structural' | 'pattern' | 'vector-native';
|
|
29
|
+
}
|
|
30
|
+
export interface MemoryStats {
|
|
31
|
+
totalRuns: number;
|
|
32
|
+
totalKnowledge: number;
|
|
33
|
+
byRunner: Array<{
|
|
34
|
+
runner: string;
|
|
35
|
+
count: number;
|
|
36
|
+
successes: number;
|
|
37
|
+
}>;
|
|
38
|
+
}
|
|
39
|
+
export interface StoreRunParams {
|
|
40
|
+
runner: string;
|
|
41
|
+
agentName?: string;
|
|
42
|
+
prompt: string;
|
|
43
|
+
result?: string;
|
|
44
|
+
error?: string;
|
|
45
|
+
durationMs?: number;
|
|
46
|
+
success: boolean;
|
|
47
|
+
sessionId?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface SearchMemoryParams {
|
|
50
|
+
query: string;
|
|
51
|
+
limit?: number;
|
|
52
|
+
includeRuns?: boolean;
|
|
53
|
+
agentName?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface MemoryProvider {
|
|
56
|
+
storeRun(params: StoreRunParams): Promise<string> | string;
|
|
57
|
+
storeKnowledge(params: {
|
|
58
|
+
text: string;
|
|
59
|
+
source?: string;
|
|
60
|
+
agentName?: string;
|
|
61
|
+
}): Promise<string>;
|
|
62
|
+
searchMemory(params: SearchMemoryParams): Promise<SearchResult[]>;
|
|
63
|
+
getRecentRuns(params: {
|
|
64
|
+
runner?: string;
|
|
65
|
+
limit?: number;
|
|
66
|
+
agentName?: string;
|
|
67
|
+
}): Promise<AgentRun[]>;
|
|
68
|
+
getStats(agentName?: string): Promise<MemoryStats> | MemoryStats;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,GAAG,eAAe,CAAC;CACxF;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC3D,cAAc,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/F,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAClE,aAAa,CAAC,MAAM,EAAE;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;CAClE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent_prompts.d.ts","sourceRoot":"","sources":["../../src/prompts/agent_prompts.ts"],"names":[],"mappings":"AAGA,wBAAsB,cAAc,oBAmBnC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import { CONFIG, resolveConfigPath } from '../lib/config.js';
|
|
3
|
+
export async function getAgentPrompt() {
|
|
4
|
+
try {
|
|
5
|
+
// Read settings.json to find the prompt file
|
|
6
|
+
const settingsPath = resolveConfigPath(CONFIG.CLAUDE.PATHS.SETTINGS);
|
|
7
|
+
const settingsContent = await fs.readFile(settingsPath, 'utf-8');
|
|
8
|
+
JSON.parse(settingsContent);
|
|
9
|
+
// Assume settings structure has "commands" or agent prompt definition
|
|
10
|
+
// Just reading the raw content for now or looking for .md files in the same dir
|
|
11
|
+
// List files in agents dir
|
|
12
|
+
// This is a heuristic. Ideally settings.json tells us which prompt is active.
|
|
13
|
+
// But for "Agent News", it's likely agent_news.md
|
|
14
|
+
// Let's try to return the settings.json content + any specialized instructions
|
|
15
|
+
return `Configuration actuelle (${settingsPath}):\n${settingsContent}`;
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
return `Erreur lors de la lecture du prompt: ${error instanceof Error ? error.message : String(error)}`;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=agent_prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent_prompts.js","sourceRoot":"","sources":["../../src/prompts/agent_prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,6CAA6C;QAC7C,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,eAAe,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAE5B,sEAAsE;QACtE,gFAAgF;QAEhF,2BAA2B;QAC3B,8EAA8E;QAC9E,kDAAkD;QAElD,+EAA+E;QAC/E,OAAO,2BAA2B,YAAY,OAAO,eAAe,EAAE,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC1G,CAAC;AACH,CAAC"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAyBlC,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAuB,iDAwLzD"}
|