diff --git a/README.md b/README.md
index b5a14f90d0a..6b3df0b421b 100644
--- a/README.md
+++ b/README.md
@@ -14,6 +14,12 @@
[中文说明](./README_CN.md) | [日本語の説明](./README_JA.md) | [한국어 설명](./README_KOR.md) | [Français](./README_FR.md) | [Português](./README_PTBR.md) | [Türkçe](./README_TR.md) | [Русский](./README_RU.md) | [Español](./README_ES.md) | [Italiano](./README_IT.md) | [ไทย](./README_TH.md) | [Deutsch](./README_DE.md) | [Tiếng Việt](./README_VI.md) | [עִברִית](https://github.com/elizaos/Elisa/blob/main/README_HE.md) | [Tagalog](./README_TG.md) | [Polski](./README_PL.md)
+## 🚩 Overview
+
+
+
![Eliza Diagram](./docs/static/img/eliza_diagram.jpg)
+
+
## ✨ Features
- 🛠️ Full-featured Discord, Twitter and Telegram connectors
diff --git a/docs/static/img/eliza_diagram.jpg b/docs/static/img/eliza_diagram.jpg
new file mode 100644
index 00000000000..bb315562a80
Binary files /dev/null and b/docs/static/img/eliza_diagram.jpg differ
diff --git a/packages/adapter-postgres/schema.sql b/packages/adapter-postgres/schema.sql
index 68f01951515..4a0f7c6f1dd 100644
--- a/packages/adapter-postgres/schema.sql
+++ b/packages/adapter-postgres/schema.sql
@@ -24,6 +24,9 @@ BEGIN
-- Then check for Ollama
ELSIF current_setting('app.use_ollama_embedding', TRUE) = 'true' THEN
RETURN 1024; -- Ollama mxbai-embed-large dimension
+ -- Then check for GAIANET
+ ELSIF current_setting('app.use_gaianet_embedding', TRUE) = 'true' THEN
+ RETURN 768; -- Gaianet nomic-embed dimension
ELSE
RETURN 384; -- BGE/Other embedding dimension
END IF;
diff --git a/packages/adapter-postgres/src/index.ts b/packages/adapter-postgres/src/index.ts
index f1942b9fef9..8a3eb14f2d2 100644
--- a/packages/adapter-postgres/src/index.ts
+++ b/packages/adapter-postgres/src/index.ts
@@ -195,12 +195,19 @@ export class PostgresDatabaseAdapter
if (embeddingConfig.provider === EmbeddingProvider.OpenAI) {
await client.query("SET app.use_openai_embedding = 'true'");
await client.query("SET app.use_ollama_embedding = 'false'");
+ await client.query("SET app.use_gaianet_embedding = 'false'");
} else if (embeddingConfig.provider === EmbeddingProvider.Ollama) {
await client.query("SET app.use_openai_embedding = 'false'");
await client.query("SET app.use_ollama_embedding = 'true'");
+ await client.query("SET app.use_gaianet_embedding = 'false'");
+ } else if (embeddingConfig.provider === EmbeddingProvider.GaiaNet){
+ await client.query("SET app.use_openai_embedding = 'false'");
+ await client.query("SET app.use_ollama_embedding = 'false'");
+ await client.query("SET app.use_gaianet_embedding = 'true'");
} else {
await client.query("SET app.use_openai_embedding = 'false'");
await client.query("SET app.use_ollama_embedding = 'false'");
+ await client.query("SET app.use_gaianet_embedding = 'false'");
}
// Check if schema already exists (check for a core table)
diff --git a/packages/adapter-supabase/schema.sql b/packages/adapter-supabase/schema.sql
index 69771f5793c..fd7ec2287d5 100644
--- a/packages/adapter-supabase/schema.sql
+++ b/packages/adapter-supabase/schema.sql
@@ -61,6 +61,21 @@ CREATE TABLE memories_1024 (
CONSTRAINT fk_agent FOREIGN KEY ("agentId") REFERENCES accounts("id") ON DELETE CASCADE
);
+CREATE TABLE memories_768 (
+ "id" UUID PRIMARY KEY,
+ "type" TEXT NOT NULL,
+ "createdAt" TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
+ "content" JSONB NOT NULL,
+ "embedding" vector(768), -- Gaianet nomic-embed
+ "userId" UUID REFERENCES accounts("id"),
+ "agentId" UUID REFERENCES accounts("id"),
+ "roomId" UUID REFERENCES rooms("id"),
+ "unique" BOOLEAN DEFAULT true NOT NULL,
+ CONSTRAINT fk_room FOREIGN KEY ("roomId") REFERENCES rooms("id") ON DELETE CASCADE,
+ CONSTRAINT fk_user FOREIGN KEY ("userId") REFERENCES accounts("id") ON DELETE CASCADE,
+ CONSTRAINT fk_agent FOREIGN KEY ("agentId") REFERENCES accounts("id") ON DELETE CASCADE
+);
+
CREATE TABLE memories_384 (
"id" UUID PRIMARY KEY,
"type" TEXT NOT NULL,
@@ -82,6 +97,8 @@ CREATE VIEW memories AS
UNION ALL
SELECT * FROM memories_1024
UNION ALL
+ SELECT * FROM memories_768;
+ UNION ALL
SELECT * FROM memories_384;
@@ -136,6 +153,8 @@ CREATE TABLE relationships (
-- Add index for Ollama table
CREATE INDEX idx_memories_1024_embedding ON memories_1024 USING hnsw ("embedding" vector_cosine_ops);
CREATE INDEX idx_memories_1024_type_room ON memories_1024("type", "roomId");
+CREATE INDEX idx_memories_768_embedding ON memories_768 USING hnsw ("embedding" vector_cosine_ops);
+CREATE INDEX idx_memories_768_type_room ON memories_768("type", "roomId");
CREATE INDEX idx_memories_1536_embedding ON memories_1536 USING hnsw ("embedding" vector_cosine_ops);
CREATE INDEX idx_memories_384_embedding ON memories_384 USING hnsw ("embedding" vector_cosine_ops);
CREATE INDEX idx_memories_1536_type_room ON memories_1536("type", "roomId");
diff --git a/packages/core/src/embedding.ts b/packages/core/src/embedding.ts
index dc51432387f..659001b0c29 100644
--- a/packages/core/src/embedding.ts
+++ b/packages/core/src/embedding.ts
@@ -137,6 +137,8 @@ export function getEmbeddingZeroVector(): number[] {
embeddingDimension = 1536; // OpenAI dimension
} else if (settings.USE_OLLAMA_EMBEDDING?.toLowerCase() === "true") {
embeddingDimension = 1024; // Ollama mxbai-embed-large dimension
+ } else if (settings.USE_GAIANET_EMBEDDING?.toLowerCase() === "true") {
+ embeddingDimension = 768; // GaiaNet dimension
}
return Array(embeddingDimension).fill(0);
diff --git a/scripts/update-versions.js b/scripts/update-versions.js
index 75cdbbda6b6..3669fa2ad49 100644
--- a/scripts/update-versions.js
+++ b/scripts/update-versions.js
@@ -1,11 +1,24 @@
const fs = require('fs');
const path = require('path');
const readline = require('readline');
+const { execSync } = require('child_process');
const packagesDir = path.join(__dirname, '../packages');
const externalDirs = ['../agent', '../client', '../docs'];
const lernaPath = path.join(__dirname, '../lerna.json');
+// Simple Logger
+function log(level, message) {
+ const timestamp = new Date().toISOString().split('T').join(' ').slice(0, 19);
+ console.log(`${timestamp} [${level.toUpperCase()}]: ${message}`);
+}
+
+// Helper to simplify file path for logs
+function simplifyPath(filePath) {
+ const relativePath = path.relative(path.join(__dirname, '..'), filePath);
+ return `/${relativePath.replace(/\\/g, '/')}`;
+}
+
// Prompt for version input
const rl = readline.createInterface({
input: process.stdin,
@@ -21,9 +34,21 @@ function askVersion() {
});
}
+function runPrettier(filePaths) {
+ try {
+ execSync(`npx prettier --write ${filePaths.join(' ')}`, { stdio: 'ignore' });
+ log('info', `Formatted ${filePaths.length} files with Prettier.`);
+ } catch (error) {
+ log('error', `Failed to format files with Prettier: ${error.message}`);
+ }
+}
+
// Update versions in all package.json files
async function updateVersions() {
const NEW_VERSION = await askVersion();
+ log('info', `Starting version update process to ${NEW_VERSION}.`);
+
+ const updatedFiles = [];
const updateDirectory = (dirPath) => {
const packagePath = path.join(dirPath, 'package.json');
@@ -35,12 +60,13 @@ async function updateVersions() {
if (oldVersion) {
packageJson.version = NEW_VERSION;
fs.writeFileSync(packagePath, JSON.stringify(packageJson, null, 2) + '\n');
- console.log(`Updated ${dirPath}: ${oldVersion} -> ${packageJson.version}`);
+ log('info', `Updated ${simplifyPath(packagePath)}: ${oldVersion} -> ${packageJson.version}`);
+ updatedFiles.push(packagePath);
} else {
- console.warn(`Version not found in ${dirPath}/package.json`);
+ log('warn', `Version not found in ${simplifyPath(packagePath)}`);
}
} else {
- console.warn(`No package.json found in ${dirPath}`);
+ log('warn', `No package.json found in ${simplifyPath(packagePath)}`);
}
};
@@ -49,7 +75,7 @@ async function updateVersions() {
const packageDirs = fs.readdirSync(packagesDir);
packageDirs.forEach((dir) => updateDirectory(path.join(packagesDir, dir)));
} else {
- console.warn(`Packages directory not found at ${packagesDir}`);
+ log('warn', `Packages directory not found at ${packagesDir}`);
}
// Update external folders
@@ -58,7 +84,7 @@ async function updateVersions() {
if (fs.existsSync(fullPath)) {
updateDirectory(fullPath);
} else {
- console.warn(`External directory not found: ${fullPath}`);
+ log('warn', `External directory not found: ${simplifyPath(fullPath)}`);
}
});
@@ -70,13 +96,22 @@ async function updateVersions() {
if (oldVersion) {
lernaJson.version = NEW_VERSION;
fs.writeFileSync(lernaPath, JSON.stringify(lernaJson, null, 2) + '\n');
- console.log(`Updated lerna.json: ${oldVersion} -> ${lernaJson.version}`);
+ log('info', `Updated ${simplifyPath(lernaPath)}: ${oldVersion} -> ${lernaJson.version}`);
+ updatedFiles.push(lernaPath);
} else {
- console.warn(`Version not found in lerna.json`);
+ log('warn', `Version not found in ${simplifyPath(lernaPath)}`);
}
} else {
- console.warn(`lerna.json not found at ${lernaPath}`);
+ log('warn', `lerna.json not found at ${lernaPath}`);
+ }
+
+ if (updatedFiles.length > 0) {
+ runPrettier(updatedFiles);
+ } else {
+ log('info', 'No files updated, skipping Prettier formatting.');
}
+
+ log('info', 'Version update process completed.');
}
updateVersions();