Skip to content

Commit 0d5c6ea

Browse files
committed
chore: resolve merge conflicts with develop
2 parents bea469d + 0573124 commit 0d5c6ea

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+7625
-49
lines changed

.github/workflows/greetings.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ jobs:
1212
- uses: actions/first-interaction@v1
1313
with:
1414
repo-token: ${{ secrets.GITHUB_TOKEN }}
15-
issue-message: "Hello @${{ github.actor }}! Welcome to the ai16z community. Thank you for opening your first issue; we appreciate your contribution. You are now a ai16z contributor!"
16-
pr-message: "Hi @${{ github.actor }}! Welcome to the ai16z community. Thanks for submitting your first pull request; your efforts are helping us accelerate towards AGI. We'll review it shortly. You are now a ai16z contributor!"
15+
issue-message: "Hello @${{ github.actor }}! Welcome to the elizaOS community. Thank you for opening your first issue; we appreciate your contribution. You are now an elizaOS contributor!"
16+
pr-message: "Hi @${{ github.actor }}! Welcome to the elizaOS community. Thanks for submitting your first pull request; your efforts are helping us accelerate towards AGI. We'll review it shortly. You are now an elizaOS contributor!"

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,4 @@ agent/content
6060

6161
eliza.manifest
6262
eliza.manifest.sgx
63-
eliza.sig
63+
eliza.sig

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
## 🌍 README Translations
1414

15-
[中文说明](./README_CN.md) | [日本語の説明](./README_JA.md) | [한국어 설명](./README_KOR.md) | [Persian](./README_FA.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) | [Arabic](./README_AR.md) | [Hungarian](./README_HU.md) | [Srpski](./README_RS.md) | [Română](./README_RO.md) | [Nederlands](./README_NL.md)
15+
[中文说明](./README_CN.md) | [日本語の説明](./README_JA.md) | [한국어 설명](./README_KOR.md) | [Persian](./README_FA.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) | [Arabic](./README_AR.md) | [Hungarian](./README_HU.md) | [Srpski](./README_RS.md) | [Română](./README_RO.md) | [Nederlands](./README_NL.md) | [Ελληνικά](./README_GR.md)
1616

1717
## 🚩 Overview
1818

README_GR.md

+148
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
# Eliza 🤖
2+
3+
<div align="center">
4+
<img src="./docs/static/img/eliza_banner.jpg" alt="Eliza Banner" width="100%" />
5+
</div>
6+
7+
<div align="center">
8+
9+
📖 [Τεκμηρίωση](https://elizaos.github.io/eliza/) | 🎯 [Παραδείγματα](https://github.com/thejoven/awesome-eliza)
10+
11+
</div>
12+
13+
## 🌍 Μεταφράσεις README
14+
[中文说明](./README_CN.md) | [日本語の説明](./README_JA.md) | [한국어 설명](./README_KOR.md) | [Persian](./README_FA.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) | [Arabic](./README_AR.md) | [Hungarian](./README_HU.md) | [Srpski](./README_RS.md) | [Română](./README_RO.md) | [Nederlands](./README_NL.md) | [Ελληνικά](./README_GR.md)
15+
16+
## 🚩 Επισκόπηση
17+
<div align="center">
18+
<img src="./docs/static/img/eliza_diagram.png" alt="Eliza Diagram" width="100%" />
19+
</div>
20+
21+
## ✨ Χαρακτηριστικά
22+
23+
- 🛠️ Πλήρεις συνδέσεις για Discord, Twitter και Telegram
24+
- 🔗 Υποστήριξη για κάθε μοντέλο (Llama, Grok, OpenAI, Anthropic, κ.λπ.)
25+
- 👥 Υποστήριξη πολλών πρακτόρων και δωματίων
26+
- 📚 Εύκολη ενσωμάτωση και αλληλεπίδραση με τα έγγραφά σας
27+
- 💾 Ανακτήσιμη μνήμη και αποθήκευση εγγράφων
28+
- 🚀 Εξαιρετικά επεκτάσιμο - δημιουργήστε τις δικές σας δράσεις και πελάτες
29+
- ☁️ Υποστήριξη για πολλά μοντέλα (τοπικά Llama, OpenAI, Anthropic, Groq, κ.λπ.)
30+
- 📦 Έτοιμο για χρήση!
31+
32+
[Σχολείο για προγραμματιστές για Πράκτορες Τεχνητής Νοημοσύνης (ΑΙ)](https://www.youtube.com/watch?v=ArptLpQiKfI&list=PLx5pnFXdPTRzWla0RaOxALTSTnVq53fKL)
33+
34+
## 🎯 Περιτπώσεις για χρήση
35+
36+
- 🤖 Chatbots
37+
- 🕵️ Αυτόνομοι πράκτορες
38+
- 📈 Διαχείριση επιχειρηματικών διαδικασιών
39+
- 🎮 NPC σε βιντεοπαιχνίδια
40+
- 🧠 Trading
41+
- 🚀 Γρήγορη Εκκίνηση
42+
43+
44+
## 🚀 Γρήγορη Εκκίνηση
45+
46+
## Προαπαιτούμενα
47+
48+
- [Python 2.7+](https://www.python.org/downloads/)
49+
- [Node.js 23+](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
50+
- [pnpm](https://pnpm.io/installation)
51+
52+
> **Σημείωση για χρήστες Windows:** Απαιτείται [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/install-manual).
53+
54+
### Πως να ξεκινήσετε (Συνιστάται)
55+
56+
```bash
57+
git clone https://github.com/elizaos/eliza-starter.git
58+
cd eliza-starter
59+
cp .env.example .env
60+
pnpm i && pnpm build && pnpm start
61+
```
62+
63+
Μόλις ο πράκτορας ξεκινήσει, θα δείτε ένα μήνυμα να εκτελέσετε ```pnpm start:client```.
64+
Ανοίξτε ένα νέο τερματικό, μεταβείτε στον ίδιο κατάλογο και εκτελέστε την παρακάτω εντολή:
65+
66+
```bash
67+
pnpm start:client
68+
```
69+
70+
Έπειτα διαβάστε την [Τεκμηρίωση]((https://elizaos.github.io/eliza/)) για να μάθετε πώς να προσαρμόσετε το Eliza.
71+
72+
### Χειροκίνητη Εκκίνηση του Eliza (Μόνο για προχωρημένους χρήστες)
73+
74+
```bash
75+
# Κλωνοποίηση του αποθετηρίου
76+
git clone https://github.com/elizaos/eliza.git
77+
78+
# Έλεγχος της τελευταίας έκδοσης
79+
# Αυτό το έργο εξελίσσεται γρήγορα, οπότε συνιστούμε να ελέγξετε την τελευταία έκδοση
80+
git checkout $(git describe --tags --abbrev=0)
81+
# Αν το παραπάνω δεν ελέγξει την τελευταία έκδοση, αυτό θα πρέπει να λειτουργήσει:
82+
# git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
83+
```
84+
85+
### Εκκίνηση του Eliza με το Gitpod
86+
87+
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/elizaos/eliza/tree/main)
88+
### Τροποποιήστε το .env αρχείο
89+
90+
Αντιγράψτε το αρχείο .env.example σε ένα νέο αρχείο .env και συμπληρώστε τις παραμέτρους που χρειάζεστε.
91+
92+
```
93+
cp .env.example .env
94+
```
95+
96+
Σημείωση: Το .env είναι προαιρετικό. Αν σχεδιάζετε να τρέξετε πολλούς διαφορετικούς πράκτορες, μπορείτε να περάσετε τα secrets μέσω του JSON της χαρακτήρα.
97+
98+
### Αυτόματη Εκκίνηση του Eliza
99+
100+
Αυτό θα εκτελέσει όλα τα απαραίτητα βήματα για να ρυθμίσετε το έργο και να ξεκινήσετε το bot με τον προεπιλεγμένο χαρακτήρα.
101+
102+
```bash
103+
sh scripts/start.sh
104+
```
105+
106+
### Τροποποίηση του αρχείου σχετικού με τον χαρακτήρα
107+
108+
1. Ανοίξτε το `packages/core/src/defaultCharacter.ts` για να τροποποιήσετε τον προεπιλεγμένο χαρακτήρα. Αποσχολιάστε και επεξεργαστείτε.
109+
110+
2. Για να φορτώσετε προσαρμοσμένους χαρακτήρες:
111+
- Χρησιμοποιήστε `pnpm start --characters="path/to/your/character.json"`
112+
- Πολλά αρχεία χαρακτήρων μπορούν να φορτωθούν ταυτόχρονα
113+
114+
3. Σύνδεση με το X (Twitter)
115+
αλλάξτε `"clients": []` σε `"clients": ["twitter"]` στο αρχείο χαρακτήρα για να συνδεθείτε με το X
116+
117+
### Χειροκίνητη Εκκίνηση του Eliza
118+
119+
```bash
120+
pnpm i
121+
pnpm build
122+
pnpm start
123+
124+
# Το έργο εξελίσσεται γρήγορα, μερικές φορές πρέπει να καθαρίσετε το έργο, εαν επιστρέφετε στο έργο
125+
```
126+
127+
#### Επιπλέον Πληροφορίες
128+
129+
Μπορεί να χρειαστεί να εγκαταστήσετε το Sharp. Αν αντιμετωπίζετε προβλήματα, προσπαθήστε να το εγκαταστήσετε, εκτελώντας την παρακάτω εντολή:
130+
131+
```
132+
pnpm install --include=optional sharp
133+
```
134+
135+
### Κοινότητα & Επικοινωνία
136+
137+
- [Προβλήματα στο GitHub](https://github.com/elizaos/eliza/issues). Καλύτερο για: Προβλήματα που αντιμετωπίζετε με το Eliza, και για προτάσεις βελτίωσης.
138+
- [Discord](https://discord.gg/ai16z). Καλύτερο για: Κοινοποίηση των εφαρμογών σας και συνομιλία με την κοινότητα.
139+
140+
## Συνεισφορές
141+
142+
<a href="https://github.com/elizaos/eliza/graphs/contributors">
143+
<img src="https://contrib.rocks/image?repo=elizaos/eliza" />
144+
</a>
145+
146+
## Ιστορικό Αστεριών
147+
148+
[![Star History Chart](https://api.star-history.com/svg?repos=elizaos/eliza&type=Date)](https://star-history.com/#elizaos/eliza&Date)

agent/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
"@elizaos/plugin-hyperliquid": "workspace:*",
9494
"@elizaos/plugin-akash": "workspace:*",
9595
"@elizaos/plugin-quai": "workspace:*",
96+
"@elizaos/plugin-nft-collections": "workspace:*",
9697
"readline": "1.3.0",
9798
"ws": "8.18.0",
9899
"yargs": "17.7.2"

agent/src/index.ts

+65-37
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import { SlackClientInterface } from "@elizaos/client-slack";
1212
import { TelegramClientInterface } from "@elizaos/client-telegram";
1313
import { TwitterClientInterface } from "@elizaos/client-twitter";
1414
// import { ReclaimAdapter } from "@elizaos/plugin-reclaim";
15-
import { DirectClient } from "@elizaos/client-direct";
1615
import { PrimusAdapter } from "@elizaos/plugin-primus";
1716

1817
import {
@@ -92,6 +91,7 @@ import { thirdwebPlugin } from "@elizaos/plugin-thirdweb";
9291
import { zksyncEraPlugin } from "@elizaos/plugin-zksync-era";
9392

9493
import { akashPlugin } from "@elizaos/plugin-akash";
94+
import createNFTCollectionsPlugin from "@elizaos/plugin-nft-collections";
9595
import { OpacityAdapter } from "@elizaos/plugin-opacity";
9696
import { openWeatherPlugin } from "@elizaos/plugin-open-weather";
9797
import { quaiPlugin } from "@elizaos/plugin-quai";
@@ -151,14 +151,29 @@ function tryLoadFile(filePath: string): string | null {
151151
function mergeCharacters(base: Character, child: Character): Character {
152152
const mergeObjects = (baseObj: any, childObj: any) => {
153153
const result: any = {};
154-
const keys = new Set([...Object.keys(baseObj || {}), ...Object.keys(childObj || {})]);
155-
keys.forEach(key => {
156-
if (typeof baseObj[key] === 'object' && typeof childObj[key] === 'object' && !Array.isArray(baseObj[key]) && !Array.isArray(childObj[key])) {
154+
const keys = new Set([
155+
...Object.keys(baseObj || {}),
156+
...Object.keys(childObj || {}),
157+
]);
158+
keys.forEach((key) => {
159+
if (
160+
typeof baseObj[key] === "object" &&
161+
typeof childObj[key] === "object" &&
162+
!Array.isArray(baseObj[key]) &&
163+
!Array.isArray(childObj[key])
164+
) {
157165
result[key] = mergeObjects(baseObj[key], childObj[key]);
158-
} else if (Array.isArray(baseObj[key]) || Array.isArray(childObj[key])) {
159-
result[key] = [...(baseObj[key] || []), ...(childObj[key] || [])];
166+
} else if (
167+
Array.isArray(baseObj[key]) ||
168+
Array.isArray(childObj[key])
169+
) {
170+
result[key] = [
171+
...(baseObj[key] || []),
172+
...(childObj[key] || []),
173+
];
160174
} else {
161-
result[key] = childObj[key] !== undefined ? childObj[key] : baseObj[key];
175+
result[key] =
176+
childObj[key] !== undefined ? childObj[key] : baseObj[key];
162177
}
163178
});
164179
return result;
@@ -173,32 +188,36 @@ async function loadCharacter(filePath: string): Promise<Character> {
173188
let character = JSON.parse(content);
174189
validateCharacterConfig(character);
175190

176-
// .id isn't really valid
177-
const characterId = character.id || character.name;
178-
const characterPrefix = `CHARACTER.${characterId.toUpperCase().replace(/ /g, "_")}.`;
179-
const characterSettings = Object.entries(process.env)
180-
.filter(([key]) => key.startsWith(characterPrefix))
181-
.reduce((settings, [key, value]) => {
182-
const settingKey = key.slice(characterPrefix.length);
183-
return { ...settings, [settingKey]: value };
184-
}, {});
185-
if (Object.keys(characterSettings).length > 0) {
186-
character.settings = character.settings || {};
187-
character.settings.secrets = {
188-
...characterSettings,
189-
...character.settings.secrets,
190-
};
191-
}
192-
// Handle plugins
193-
character.plugins = await handlePluginImporting(
194-
character.plugins
195-
);
191+
// .id isn't really valid
192+
const characterId = character.id || character.name;
193+
const characterPrefix = `CHARACTER.${characterId.toUpperCase().replace(/ /g, "_")}.`;
194+
const characterSettings = Object.entries(process.env)
195+
.filter(([key]) => key.startsWith(characterPrefix))
196+
.reduce((settings, [key, value]) => {
197+
const settingKey = key.slice(characterPrefix.length);
198+
return { ...settings, [settingKey]: value };
199+
}, {});
200+
if (Object.keys(characterSettings).length > 0) {
201+
character.settings = character.settings || {};
202+
character.settings.secrets = {
203+
...characterSettings,
204+
...character.settings.secrets,
205+
};
206+
}
207+
// Handle plugins
208+
character.plugins = await handlePluginImporting(character.plugins);
196209
if (character.extends) {
197-
elizaLogger.info(`Merging ${character.name} character with parent characters`);
210+
elizaLogger.info(
211+
`Merging ${character.name} character with parent characters`
212+
);
198213
for (const extendPath of character.extends) {
199-
const baseCharacter = await loadCharacter(path.resolve(path.dirname(filePath), extendPath));
214+
const baseCharacter = await loadCharacter(
215+
path.resolve(path.dirname(filePath), extendPath)
216+
);
200217
character = mergeCharacters(baseCharacter, character);
201-
elizaLogger.info(`Merged ${character.name} with ${baseCharacter.name}`);
218+
elizaLogger.info(
219+
`Merged ${character.name} with ${baseCharacter.name}`
220+
);
202221
}
203222
}
204223
return character;
@@ -471,7 +490,9 @@ function initializeDatabase(dataDir: string) {
471490
// Test the connection
472491
db.init()
473492
.then(() => {
474-
elizaLogger.success("Successfully connected to Supabase database");
493+
elizaLogger.success(
494+
"Successfully connected to Supabase database"
495+
);
475496
})
476497
.catch((error) => {
477498
elizaLogger.error("Failed to connect to Supabase:", error);
@@ -488,7 +509,9 @@ function initializeDatabase(dataDir: string) {
488509
// Test the connection
489510
db.init()
490511
.then(() => {
491-
elizaLogger.success("Successfully connected to PostgreSQL database");
512+
elizaLogger.success(
513+
"Successfully connected to PostgreSQL database"
514+
);
492515
})
493516
.catch((error) => {
494517
elizaLogger.error("Failed to connect to PostgreSQL:", error);
@@ -503,14 +526,17 @@ function initializeDatabase(dataDir: string) {
503526
});
504527
return db;
505528
} else {
506-
const filePath = process.env.SQLITE_FILE ?? path.resolve(dataDir, "db.sqlite");
529+
const filePath =
530+
process.env.SQLITE_FILE ?? path.resolve(dataDir, "db.sqlite");
507531
elizaLogger.info(`Initializing SQLite database at ${filePath}...`);
508532
const db = new SqliteDatabaseAdapter(new Database(filePath));
509533

510534
// Test the connection
511535
db.init()
512536
.then(() => {
513-
elizaLogger.success("Successfully connected to SQLite database");
537+
elizaLogger.success(
538+
"Successfully connected to SQLite database"
539+
);
514540
})
515541
.catch((error) => {
516542
elizaLogger.error("Failed to connect to SQLite:", error);
@@ -695,7 +721,8 @@ export async function createAgent(
695721
if (
696722
process.env.PRIMUS_APP_ID &&
697723
process.env.PRIMUS_APP_SECRET &&
698-
process.env.VERIFIABLE_INFERENCE_ENABLED === "true"){
724+
process.env.VERIFIABLE_INFERENCE_ENABLED === "true"
725+
) {
699726
verifiableInferenceAdapter = new PrimusAdapter({
700727
appId: process.env.PRIMUS_APP_ID,
701728
appSecret: process.env.PRIMUS_APP_SECRET,
@@ -857,8 +884,9 @@ export async function createAgent(
857884
getSecret(character, "AKASH_WALLET_ADDRESS")
858885
? akashPlugin
859886
: null,
860-
getSecret(character, "QUAI_PRIVATE_KEY")
861-
? quaiPlugin
887+
getSecret(character, "QUAI_PRIVATE_KEY") ? quaiPlugin : null,
888+
getSecret(character, "RESERVOIR_API_KEY")
889+
? createNFTCollectionsPlugin()
862890
: null,
863891
].filter(Boolean),
864892
providers: [],

0 commit comments

Comments
 (0)