diff --git a/.env.example b/.env.example index b1f05998b7d..414f9638582 100644 --- a/.env.example +++ b/.env.example @@ -191,6 +191,11 @@ TOGETHER_API_KEY= # Server Configuration SERVER_PORT=3000 +# Abstract Configuration +ABSTRACT_ADDRESS= +ABSTRACT_PRIVATE_KEY= +ABSTRACT_RPC_URL=https://api.testnet.abs.xyz + # Starknet Configuration STARKNET_ADDRESS= STARKNET_PRIVATE_KEY= diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 00000000000..b3716b37160 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,55 @@ +name: "CodeQL Advanced" + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + schedule: + - cron: '29 8 * * 6' + +jobs: + analyze: + name: Analyze (${{ matrix.language }}) + runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} + permissions: + # required for all workflows + security-events: write + + # required to fetch internal or private CodeQL packs + packages: read + + # only required for workflows in private repositories + actions: read + contents: read + + strategy: + fail-fast: false + matrix: + include: + - language: javascript-typescript + build-mode: none + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + build-mode: ${{ matrix.build-mode }} + + - if: matrix.build-mode == 'manual' + shell: bash + run: | + echo 'If you are using a "manual" build mode for one or more of the' \ + 'languages you are analyzing, replace this with the commands to build' \ + 'your code, for example:' + echo ' make bootstrap' + echo ' make release' + exit 1 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + with: + category: "/language:${{matrix.language}}" diff --git a/.github/workflows/generate-readme-translations.yml b/.github/workflows/generate-readme-translations.yml new file mode 100644 index 00000000000..9963e693549 --- /dev/null +++ b/.github/workflows/generate-readme-translations.yml @@ -0,0 +1,88 @@ +name: Generate Readme Translations +on: + push: + branches: + - "1222--README-ci-auto-translation" + +jobs: + translation: + runs-on: ubuntu-latest + strategy: + matrix: + language: [ + {code: 'CN', name: 'Chinese'}, + {code: 'DE', name: 'German'}, + {code: 'ES', name: 'Spanish'}, + {code: 'FR', name: 'French'}, + {code: 'HE', name: 'Hebrew'}, + {code: 'IT', name: 'Italian'}, + {code: 'JA', name: 'Japanese'}, + {code: 'KOR', name: 'Korean'}, + {code: 'PTBR', name: 'Portuguese (Brazil)'}, + {code: 'RU', name: 'Russian'}, + {code: 'TH', name: 'Thai'}, + {code: 'TR', name: 'Turkish'}, + {code: 'VI', name: 'Vietnamese'} + ] + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + with: + ref: main + token: ${{ secrets.GH_TOKEN }} + + - name: Translate to ${{ matrix.language.name }} + uses: 0xjord4n/aixion@v1.2.1 + id: aixion + with: + config: > + { + "provider": "openai", + "provider_options": { + "api_key": "${{ secrets.OPENAI_API_KEY }}" + }, + "messages": [ + { + "role": "system", + "content": "You will be provided with a markdown file in English, and your task is to translate it into ${{ matrix.language.name }}." + }, + { + "role": "user", + "content_path": "README.md" + } + ], + "save_path": "README_${{ matrix.language.code }}.md", + "model": "gpt-4o" + } + + # Upload each translated file as an artifact + - name: Upload translation + uses: actions/upload-artifact@v4 + with: + name: readme-${{ matrix.language.code }} + path: README_${{ matrix.language.code }}.md + + commit: + needs: translation + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + ref: main + token: ${{ secrets.GH_TOKEN }} + + # Download all translation artifacts + - name: Download all translations + uses: actions/download-artifact@v4 + with: + pattern: readme-* + merge-multiple: true + + - name: Commit all translations + uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: "chore: update all README translations" + branch: main + file_pattern: "README_*.md" + commit_author: "GitHub Action " diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml new file mode 100644 index 00000000000..7ef42e050e4 --- /dev/null +++ b/.github/workflows/greetings.yml @@ -0,0 +1,17 @@ +name: Greetings + +on: [pull_request_target, issues] + +jobs: + greeting: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + steps: + - uses: actions/first-interaction@v1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + 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!" + 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!" + diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 1b7bfebcfbe..46b3b0520d9 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -10,14 +10,14 @@ jobs: steps: - name: Check out the repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Validate PR title id: validate run: | PR_TITLE=$(jq -r .pull_request.title "$GITHUB_EVENT_PATH") echo "PR Title: $PR_TITLE" - if [[ ! "$PR_TITLE" =~ ^(feat|fix|docs|style|refactor|test|chore):\ .+ ]]; then + if [[ ! "$PR_TITLE" =~ ^(feat|fix|docs|style|refactor|test|chore)(\([a-zA-Z0-9-]+\))?:\ .+ ]]; then echo "PR title does not match the required pattern." exit 1 fi @@ -25,4 +25,6 @@ jobs: - name: Set status if: failure() run: | - gh pr comment ${{ github.event.pull_request.number }} --body "❌ PR title does not match the required pattern. Please use the format: 'type: description' (e.g., 'feat|fix|docs|style|refactor|test|chore: title')." + gh pr comment ${{ github.event.pull_request.number }} --body "❌ PR title does not match the required pattern. Please use one of these formats: + - 'type: description' (e.g., 'feat: add new feature') + - 'type(scope): description' (e.g., 'chore(core): update dependencies')" diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 00000000000..ac76b77607d --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,24 @@ +name: Mark stale issues and pull requests + +on: + schedule: + - cron: '25 18 * * *' + +jobs: + stale: + + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + + steps: + - uses: actions/stale@v5 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'This issue has been automatically marked as stale due to inactivity.' + stale-pr-message: 'This pull request has been automatically marked as stale due to inactivity.' + stale-issue-label: 'no-issue-activity' + stale-pr-label: 'no-pr-activity' + days-before-stale: 30 # Marks issues and PRs as stale after X days of inactivity + days-before-close: 7 # Closes issues and PRs X days after being marked as stale diff --git a/.gitignore b/.gitignore index 97c88ce2953..5ebb39763ba 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ concatenated-output.ts embedding-cache.json packages/plugin-buttplug/intiface-engine +.idea .DS_Store dist/ diff --git a/README.md b/README.md index 050f7117f70..4c91531ddb7 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ ## 🌍 README Translations -[中文说明](./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) +[中文说明](./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) ## ✨ Features diff --git a/README_TG.md b/README_TG.md new file mode 100644 index 00000000000..4263ff69cac --- /dev/null +++ b/README_TG.md @@ -0,0 +1,129 @@ + +# Eliza 🤖 + +
+ Eliza Banner +
+ +
+ +📖 [Dokumentasyon](https://elizaos.github.io/eliza/) | 🎯 [Mga Halimbawa](https://github.com/thejoven/awesome-eliza) + +
+ +## ✨ Mga Tampok + +- 🛠️ Kumpletong suporta sa [Discord](https://discord.com/), [Twitter](https://twitter.com/), at [Telegram](https://telegram.org/) +- 🔗 Suporta para sa bawat modelo (Llama, Grok, OpenAI, Anthropic, atbp.) +- 👥 Suporta para sa multi-agent at kuwarto +- 📚 Madaling mag-load at makipag-ugnayan sa iyong mga dokumento +- 💾 Naaakses na memorya at imbakan ng dokumento +- 🚀 Napakabisa - maaaring gumawa ng sarili mong mga aksyon at kliyente +- ☁️ Sinusuportahan ang maraming modelo (lokal na Llama, OpenAI, Anthropic, Groq, atbp.) +- 📦 Madaling gamitin! + +## Mga Tutorial sa Bidyo + +[AI Agent Dev School](https://www.youtube.com/watch?v=ArptLpQiKfI&list=PLx5pnFXdPTRzWla0RaOxALTSTnVq53fKL) + +## 🎯 Gamit ito para sa + +- 🤖 [Mga Chatbot](https://en.wikipedia.org/wiki/Chatbot) +- 🕵️ Mga Awtonomikong Ahente +- 📈 Pagproseso ng Negosyo +- 🎮 [Mga NPC sa mga Larong Kompyuter](https://en.wikipedia.org/wiki/Non-player_character) +- 🧠 Pangangalakal + +## 🚀 Pangkalahatang-ideya + +### Mga Kinakailangan + +- [Python 2.7+](https://www.python.org/downloads/) +- [Node.js 23+](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) +- [pnpm](https://pnpm.io/installation) + +> **Paalala para sa mga Gumagamit ng Windows:** Kailangan ang [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/install-manual). + +### Gamitin ang Starter (Inirerekomenda) + +```bash +git clone https://github.com/elizaos/eliza-starter.git +cd eliza-starter +cp .env.example .env +pnpm i && pnpm build && pnpm start +``` + +Basahin ang [Dokumentasyon](https://elizaos.github.io/eliza/) upang matutunan kung paano ipasadya ang Eliza. + +### Manwal na Pag-simula ng Eliza (Inirerekomenda lamang kung alam mo ang ginagawa mo) + +```bash +# Clone the repository +git clone https://github.com/elizaos/eliza.git + +# Checkout the latest release +git checkout $(git describe --tags --abbrev=0) +``` + +### Simulan ang Eliza gamit ang Gitpod + +[![Buksan sa Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/elizaos/eliza/tree/main) + +### Ipasadya ang .env File + +Kopyahin ang `.env.example` sa `.env` at punan ang tamang mga halaga. + +```bash +cp .env.example .env +``` + +### Awtomatikong Simulan ang Eliza + +Ito ay magse-setup ng proyekto at sisimulan ang bot gamit ang kusang mapagpipilian na karakter. + +```bash +sh scripts/start.sh +``` + +### Ipasadya ang Karakter File + +1. Buksan ang `packages/core/src/defaultCharacter.ts` para baguhin ang kusang mapagpipilian na karakter. +2. Mag-load ng pasadya na mga karakter: + - Gamitin ang `pnpm start --characters="landas/sa/inyong/character.json"` + - Puwedeng mag-load ng maraming karakter file sabay-sabay. +3. Ikonekta ang Twitter (X): + - Baguhin ang `"clients": []` sa `"clients": ["twitter"]` sa karakter file upang ikonekta ang Twitter. + +### Manwal na Pag-simula ng Eliza + +```bash +pnpm i +pnpm build +pnpm start + +# Linisin ang proyekto kung bumalik ka dito matapos ang mahabang panahon +pnpm clean +``` + +#### Karagdagang Mga Kinakailangan + +Puwede mong kailangang mag-install ng [Sharp](https://sharp.pixelplumbing.com/). Kung may pagkakamali, subukang i-install ito gamit ang: + +```bash +pnpm install --include=optional sharp +``` + +### Komunidad at Kontak + +- [Mga Isyu sa GitHub](https://github.com/elizaos/eliza/issues): Para sa mga bug at mungkahi sa tampok. +- [Discord](https://discord.gg/ai16z): Para sa pagbabahagi ng aplikasyon at pakikihalubilo sa komunidad. + +## Mga Kontribyutor + + + + + +## Kasaysayan ng mga Bituin + +[![Tsart ng Kasaysayan ng mga Bituin](https://api.star-history.com/svg?repos=elizaos/eliza&type=Date)](https://star-history.com/#elizaos/eliza&Date) diff --git a/agent/package.json b/agent/package.json index 4bf784b5b98..5dd239cec1a 100644 --- a/agent/package.json +++ b/agent/package.json @@ -1,63 +1,64 @@ { - "name": "@elizaos/agent", - "version": "0.1.7-alpha.1", - "main": "src/index.ts", - "type": "module", - "scripts": { - "start": "node --loader ts-node/esm src/index.ts", - "dev": "node --loader ts-node/esm src/index.ts", - "check-types": "tsc --noEmit" - }, - "nodemonConfig": { - "watch": [ - "src", - "../core/dist" - ], - "ext": "ts,json", - "exec": "node --enable-source-maps --loader ts-node/esm src/index.ts" - }, - "dependencies": { - "@elizaos/adapter-postgres": "workspace:*", - "@elizaos/adapter-redis": "workspace:*", - "@elizaos/adapter-sqlite": "workspace:*", - "@elizaos/client-auto": "workspace:*", - "@elizaos/client-direct": "workspace:*", - "@elizaos/client-discord": "workspace:*", - "@elizaos/client-farcaster": "workspace:*", - "@elizaos/client-lens": "workspace:*", - "@elizaos/client-telegram": "workspace:*", - "@elizaos/client-twitter": "workspace:*", - "@elizaos/client-slack": "workspace:*", - "@elizaos/core": "workspace:*", - "@elizaos/plugin-0g": "workspace:*", - "@elizaos/plugin-aptos": "workspace:*", - "@elizaos/plugin-bootstrap": "workspace:*", - "@elizaos/plugin-intiface": "workspace:*", - "@elizaos/plugin-coinbase": "workspace:*", - "@elizaos/plugin-conflux": "workspace:*", - "@elizaos/plugin-evm": "workspace:*", - "@elizaos/plugin-flow": "workspace:*", - "@elizaos/plugin-story": "workspace:*", - "@elizaos/plugin-goat": "workspace:*", - "@elizaos/plugin-icp": "workspace:*", - "@elizaos/plugin-image-generation": "workspace:*", - "@elizaos/plugin-nft-generation": "workspace:*", - "@elizaos/plugin-node": "workspace:*", - "@elizaos/plugin-solana": "workspace:*", - "@elizaos/plugin-starknet": "workspace:*", - "@elizaos/plugin-ton": "workspace:*", - "@elizaos/plugin-sui": "workspace:*", - "@elizaos/plugin-tee": "workspace:*", - "@elizaos/plugin-multiversx": "workspace:*", - "@elizaos/plugin-near": "workspace:*", - "@elizaos/plugin-zksync-era": "workspace:*", - "@elizaos/plugin-birdeye": "workspace:*", - "readline": "1.3.0", - "ws": "8.18.0", - "yargs": "17.7.2" - }, - "devDependencies": { - "ts-node": "10.9.2", - "tsup": "8.3.5" - } + "name": "@elizaos/agent", + "version": "0.1.7-alpha.1", + "main": "src/index.ts", + "type": "module", + "scripts": { + "start": "node --loader ts-node/esm src/index.ts", + "dev": "node --loader ts-node/esm src/index.ts", + "check-types": "tsc --noEmit" + }, + "nodemonConfig": { + "watch": [ + "src", + "../core/dist" + ], + "ext": "ts,json", + "exec": "node --enable-source-maps --loader ts-node/esm src/index.ts" + }, + "dependencies": { + "@elizaos/adapter-postgres": "workspace:*", + "@elizaos/adapter-redis": "workspace:*", + "@elizaos/adapter-sqlite": "workspace:*", + "@elizaos/client-auto": "workspace:*", + "@elizaos/client-direct": "workspace:*", + "@elizaos/client-discord": "workspace:*", + "@elizaos/client-farcaster": "workspace:*", + "@elizaos/client-lens": "workspace:*", + "@elizaos/client-telegram": "workspace:*", + "@elizaos/client-twitter": "workspace:*", + "@elizaos/client-slack": "workspace:*", + "@elizaos/core": "workspace:*", + "@elizaos/plugin-0g": "workspace:*", + "@elizaos/plugin-abstract": "workspace:*", + "@elizaos/plugin-aptos": "workspace:*", + "@elizaos/plugin-bootstrap": "workspace:*", + "@elizaos/plugin-intiface": "workspace:*", + "@elizaos/plugin-coinbase": "workspace:*", + "@elizaos/plugin-conflux": "workspace:*", + "@elizaos/plugin-evm": "workspace:*", + "@elizaos/plugin-flow": "workspace:*", + "@elizaos/plugin-story": "workspace:*", + "@elizaos/plugin-goat": "workspace:*", + "@elizaos/plugin-icp": "workspace:*", + "@elizaos/plugin-image-generation": "workspace:*", + "@elizaos/plugin-nft-generation": "workspace:*", + "@elizaos/plugin-node": "workspace:*", + "@elizaos/plugin-solana": "workspace:*", + "@elizaos/plugin-starknet": "workspace:*", + "@elizaos/plugin-ton": "workspace:*", + "@elizaos/plugin-sui": "workspace:*", + "@elizaos/plugin-tee": "workspace:*", + "@elizaos/plugin-multiversx": "workspace:*", + "@elizaos/plugin-near": "workspace:*", + "@elizaos/plugin-zksync-era": "workspace:*", + "@elizaos/plugin-birdeye": "workspace:*", + "readline": "1.3.0", + "ws": "8.18.0", + "yargs": "17.7.2" + }, + "devDependencies": { + "ts-node": "10.9.2", + "tsup": "8.3.5" + } } diff --git a/agent/src/index.ts b/agent/src/index.ts index 6b034d3e4e0..c631bef5c61 100644 --- a/agent/src/index.ts +++ b/agent/src/index.ts @@ -56,11 +56,13 @@ import { TEEMode, teePlugin } from "@elizaos/plugin-tee"; import { tonPlugin } from "@elizaos/plugin-ton"; import { zksyncEraPlugin } from "@elizaos/plugin-zksync-era"; import { birdeyePlugin } from "@elizaos/plugin-birdeye"; +import { abstractPlugin } from "@elizaos/plugin-abstract"; import Database from "better-sqlite3"; import fs from "fs"; import path from "path"; import { fileURLToPath } from "url"; import yargs from "yargs"; +import net from "net"; const __filename = fileURLToPath(import.meta.url); // get the resolved path to the file const __dirname = path.dirname(__filename); // get the name of the directory @@ -386,12 +388,8 @@ export async function initializeClients( if (clientTypes.includes(Clients.TWITTER)) { const twitterClient = await TwitterClientInterface.start(runtime); - if (twitterClient) { clients.twitter = twitterClient; - (twitterClient as any).enableSearch = !isFalsish( - getSecret(character, "TWITTER_SEARCH_ENABLE") - ); } } @@ -433,31 +431,6 @@ export async function initializeClients( return clients; } -function isFalsish(input: any): boolean { - // If the input is exactly NaN, return true - if (Number.isNaN(input)) { - return true; - } - - // Convert input to a string if it's not null or undefined - const value = input == null ? "" : String(input); - - // List of common falsish string representations - const falsishValues = [ - "false", - "0", - "no", - "n", - "off", - "null", - "undefined", - "", - ]; - - // Check if the value (trimmed and lowercased) is in the falsish list - return falsishValues.includes(value.trim().toLowerCase()); -} - function getSecret(character: Character, secret: string) { return character.settings?.secrets?.[secret] || process.env[secret]; } @@ -490,7 +463,7 @@ export async function createAgent( } let goatPlugin: any | undefined; - if (getSecret(character, "ALCHEMY_API_KEY")) { + if (getSecret(character, "EVM_PROVIDER_URL")) { goatPlugin = await createGoatPlugin((secret) => getSecret(character, secret) ); @@ -561,7 +534,10 @@ export async function createAgent( getSecret(character, "COINBASE_NOTIFICATION_URI") ? webhookPlugin : null, - getSecret(character, "ALCHEMY_API_KEY") ? goatPlugin : null, + getSecret(character, "EVM_PROVIDER_URL") ? goatPlugin : null, + getSecret(character, "ABSTRACT_PRIVATE_KEY") + ? abstractPlugin + : null, getSecret(character, "FLOW_ADDRESS") && getSecret(character, "FLOW_PRIVATE_KEY") ? flowPlugin @@ -694,13 +670,30 @@ async function startAgent( } } +const checkPortAvailable = (port: number): Promise => { + return new Promise((resolve) => { + const server = net.createServer(); + + server.once("error", (err: NodeJS.ErrnoException) => { + if (err.code === "EADDRINUSE") { + resolve(false); + } + }); + + server.once("listening", () => { + server.close(); + resolve(true); + }); + + server.listen(port); + }); +}; + const startAgents = async () => { const directClient = new DirectClient(); - const serverPort = parseInt(settings.SERVER_PORT || "3000"); + let serverPort = parseInt(settings.SERVER_PORT || "3000"); const args = parseArguments(); - let charactersArg = args.characters || args.character; - let characters = [defaultCharacter]; if (charactersArg) { @@ -715,19 +708,32 @@ const startAgents = async () => { elizaLogger.error("Error starting agents:", error); } + // Find available port + while (!(await checkPortAvailable(serverPort))) { + elizaLogger.warn( + `Port ${serverPort} is in use, trying ${serverPort + 1}` + ); + serverPort++; + } + // upload some agent functionality into directClient directClient.startAgent = async (character: Character) => { // wrap it so we don't have to inject directClient later return startAgent(character, directClient); }; + directClient.start(serverPort); + if (serverPort !== parseInt(settings.SERVER_PORT || "3000")) { + elizaLogger.log(`Server started on alternate port ${serverPort}`); + } + elizaLogger.log( - "Run `pnpm start:client` to start the client and visit the outputted URL (http://localhost:5173) to chat with your agents" + "Run `pnpm start:client` to start the client and visit the outputted URL (http://localhost:5173) to chat with your agents. When running multiple agents, use client with different port `SERVER_PORT=3001 pnpm start:client`" ); }; startAgents().catch((error) => { elizaLogger.error("Unhandled error in startAgents:", error); - process.exit(1); // Exit the process after logging + process.exit(1); }); diff --git a/client/package.json b/client/package.json index a9ba6d8b019..20d9003af79 100644 --- a/client/package.json +++ b/client/package.json @@ -1,47 +1,47 @@ { - "name": "eliza-client", - "private": true, - "version": "0.1.7-alpha.1", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "check-types": "tsc --noEmit", - "lint": "eslint .", - "preview": "vite preview" - }, - "dependencies": { - "@elizaos/core": "workspace:*", - "@radix-ui/react-dialog": "1.1.2", - "@radix-ui/react-separator": "1.1.0", - "@radix-ui/react-slot": "1.1.0", - "@radix-ui/react-tooltip": "1.1.4", - "@tanstack/react-query": "5.61.0", - "class-variance-authority": "0.7.1", - "clsx": "2.1.1", - "lucide-react": "0.460.0", - "react": "18.3.1", - "react-dom": "18.3.1", - "react-router-dom": "6.22.1", - "tailwind-merge": "2.5.5", - "tailwindcss-animate": "1.0.7", - "vite-plugin-top-level-await": "1.4.4", - "vite-plugin-wasm": "3.3.0" - }, - "devDependencies": { - "@eslint/js": "9.16.0", - "@types/node": "22.8.4", - "@types/react": "18.3.12", - "@types/react-dom": "18.3.1", - "@vitejs/plugin-react": "4.3.3", - "autoprefixer": "10.4.20", - "eslint-plugin-react-hooks": "5.0.0", - "eslint-plugin-react-refresh": "0.4.14", - "globals": "15.11.0", - "postcss": "8.4.49", - "tailwindcss": "3.4.15", - "typescript": "5.6.3", - "typescript-eslint": "8.11.0", - "vite": "link:@tanstack/router-plugin/vite" - } + "name": "eliza-client", + "private": true, + "version": "0.1.7-alpha.1", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "check-types": "tsc --noEmit", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@elizaos/core": "workspace:*", + "@radix-ui/react-dialog": "1.1.2", + "@radix-ui/react-separator": "1.1.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-tooltip": "1.1.4", + "@tanstack/react-query": "5.61.0", + "class-variance-authority": "0.7.1", + "clsx": "2.1.1", + "lucide-react": "0.460.0", + "react": "18.3.1", + "react-dom": "18.3.1", + "react-router-dom": "6.22.1", + "tailwind-merge": "2.5.5", + "tailwindcss-animate": "1.0.7", + "vite-plugin-top-level-await": "1.4.4", + "vite-plugin-wasm": "3.3.0" + }, + "devDependencies": { + "@eslint/js": "9.16.0", + "@types/node": "22.8.4", + "@types/react": "18.3.12", + "@types/react-dom": "18.3.1", + "@vitejs/plugin-react": "4.3.3", + "autoprefixer": "10.4.20", + "eslint-plugin-react-hooks": "5.0.0", + "eslint-plugin-react-refresh": "0.4.14", + "globals": "15.11.0", + "postcss": "8.4.49", + "tailwindcss": "3.4.15", + "typescript": "5.6.3", + "typescript-eslint": "8.11.0", + "vite": "link:@tanstack/router-plugin/vite" + } } diff --git a/docs/community/Notes/lore.md b/docs/community/Notes/lore.md index c984915720b..00b18ea789d 100644 --- a/docs/community/Notes/lore.md +++ b/docs/community/Notes/lore.md @@ -93,7 +93,7 @@ Week 1 Recap: elizaos Launch and Early Developments Hello, I am Shaw. I am a cross-disciplinary programmer and entrepreneur living in San Francisco. I have been working on autonomous agents for several years and I am overjoyed to finally get to show that to all of you. -I started elizaos here on Twitter with some very capable folks, in the open, using the http://daos.fun platform. Our technology is open source, and powering many of the agents you talk to today. We call this type of agent an “eliza”. +I started elizaos here on Twitter with some very capable folks, in the open, using the http://daos.fun platform. Our technology is open source, and powering many of the agents you talk to today. We call this type of agent an "eliza". Our token character agent is @degenspartanai who is a recreation of a legendary friend and poster who quit Twitter last cycle. $degenai is his token. diff --git a/docs/community/Streams/12-2024/2024-12-03.md b/docs/community/Streams/12-2024/2024-12-03.md index 4e1fec33c12..db1a4ae193b 100644 --- a/docs/community/Streams/12-2024/2024-12-03.md +++ b/docs/community/Streams/12-2024/2024-12-03.md @@ -8,73 +8,32 @@ description: "Building Complex AI Agents with Actions, Providers, & Evaluators" **Building Complex AI Agents with Actions, Providers, & Evaluators** -Date: 2024-12-03 -YouTube Link: https://www.youtube.com/watch?v=XenGeAcPAQo +- Date: 2024-12-03 +- YouTube Link: https://www.youtube.com/watch?v=XenGeAcPAQo ## Timestamps -**00:03:33** - Shift in focus from characters (Dev School Part 1) to agent capabilities -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=213 - -**00:07:09** - Deep dive into providers, actions, and evaluators, the core building blocks of Eliza -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=429 - -**00:07:28** - Discussion about actions vs. tools, favoring decoupled intent and action execution -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=448 - -**00:18:02** - Explanation of providers and their function as information sources for agents -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=1082 - -**00:20:15** - Introduction to evaluators and their role in agent reflection and state analysis -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=1215 - -**00:29:22** - Brief overview of clients as connectors to external platforms -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=1762 - -**00:31:02** - Description of adapters and their function in database interactions -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=1862 - -**00:34:02** - Discussion about plugins as bundles of core components, examples, and recommendations -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=2042 - -**00:40:31** - Live Coding Demo begins: Creating a new plugin from scratch (DevSchoolExamplePlugin) -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=2431 - -**00:47:54** - Implementing the simple HelloWorldAction -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=2791 - -**01:00:26** - Implementing the CurrentNewsAction (fetching and formatting news data) -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=3626 - -**01:22:09** - Demonstrating the Eliza Client for interacting with agents locally -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=4929 - -**01:23:54** - Q&A: Plugin usage in character files, installation, Eliza vs. Eliza Starter -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=5034 - -**01:36:17** - Saving agent responses as memories in the database -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=5777 - -**01:43:06** - Using prompts for data extraction within actions -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=6186 - -**01:51:54** - Importance of deleting the database during development to avoid context issues -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=6714 - -**01:57:04** - Viewing agent context via console logs to understand model inputs -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=7024 - -**02:07:07** - Explanation of memory management with knowledge, facts, and lore -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=7627 - -**02:16:53** - Q&A: Prompt engineering opportunities, knowledge chunking and retrieval -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=8213 - -**02:22:57** - Call for contributions: Encouraging viewers to create their own actions and plugins -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=8577 - -**02:26:31** - Closing remarks and future DevSchool session announcements -- Link: https://www.youtube.com/watch?v=XenGeAcPAQo&t=8791 +- [00:03:33]() - Shift in focus from characters (DevSchool Part 1) to agent capabilities. +- [00:07:09]() - Deep dive into providers, actions, and evaluators, the core building blocks of Eliza. +- [00:07:28]() - Discussion about actions vs. tools, favoring decoupled intent and action execution. +- [00:18:02]() - Explanation of providers and their function as information sources for agents. +- [00:20:15]() - Introduction to evaluators and their role in agent reflection and state analysis. +- [00:29:22]() - Brief overview of clients as connectors to external platforms. +- [00:31:02]() - Description of adapters and their function in database interactions. +- [00:34:02]() - Discussion about plugins as bundles of core components, examples, and recommendations. +- [00:40:31]() - Live Coding Demo begins: Creating a new plugin from scratch (DevSchoolExamplePlugin). +- [00:47:54]() - Implementing the simple HelloWorldAction. +- [01:00:26]() - Implementing the CurrentNewsAction (fetching and formatting news data). +- [01:22:09]() - Demonstrating the Eliza Client for interacting with agents locally. +- [01:23:54]() - Q&A: Plugin usage in character files, installation, Eliza vs. Eliza Starter. +- [01:36:17]() - Saving agent responses as memories in the database. +- [01:43:06]() - Using prompts for data extraction within actions. +- [01:51:54]() - Importance of deleting the database during development to avoid context issues. +- [01:57:04]() - Viewing agent context via console logs to understand model inputs. +- [02:07:07]() - Explanation of memory management with knowledge, facts, and lore. +- [02:16:53]() - Q&A: Prompt engineering opportunities, knowledge chunking and retrieval. +- [02:22:57]() - Call for contributions: Encouraging viewers to create their own actions and plugins. +- [02:26:31]() - Closing remarks and future DevSchool session announcements. ## Summary diff --git a/docs/community/Streams/12-2024/2024-12-05.md b/docs/community/Streams/12-2024/2024-12-05.md index 9a05c138a0b..60b2cbedb1a 100644 --- a/docs/community/Streams/12-2024/2024-12-05.md +++ b/docs/community/Streams/12-2024/2024-12-05.md @@ -8,8 +8,8 @@ description: "Form-Filling Frenzy & Eliza's Wild Ride" **Form-Filling Frenzy & Eliza's Wild Ride** -Date: 2024-12-05 -YouTube Link: https://www.youtube.com/watch?v=Y1DiqSVy4aU +- Date: 2024-12-05 +- YouTube Link: https://www.youtube.com/watch?v=Y1DiqSVy4aU ## Timestamps diff --git a/docs/community/Streams/12-2024/2024-12-06.md b/docs/community/Streams/12-2024/2024-12-06.md index 21773f643a9..5e16eaf01cd 100644 --- a/docs/community/Streams/12-2024/2024-12-06.md +++ b/docs/community/Streams/12-2024/2024-12-06.md @@ -8,95 +8,56 @@ description: "Communications, Updates and Accountability" **Communications, Updates and Accountability** -Date: 2024-12-06 -Twitter Spaces: https://x.com/i/spaces/1lDxLlryWXaxm -YouTube Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4 +- Date: 2024-12-06 +- Twitter Spaces: https://x.com/i/spaces/1lDxLlryWXaxm +- YouTube Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4 -## Timestamps - -**00:01:09** - Meeting start, expectations (5-minute updates, focus on this week's achievements). - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=69 - -**00:02:50** - Shaw's update (dev school, in-person meetup). - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=170 - -**00:04:59** - Project growth, coordination challenges, need for AI project management tools. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=299 - -**00:09:22** - Call for contributors to speak, starting with Reality Spiral. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=562 - -**00:10:04** - Reality Spiral: Github integration, testing framework, Coinbase work. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=604 - -**00:17:13** - Boyaloxer: Plugin Feel (emotional adjustments for agents). - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=1033 - -**00:18:37** - Spaceodili: Discord growth, summarization systems. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=1117 - -**00:19:33** - Yodamaster726: Using agents in university classes, championing Llama. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=1173 - -**00:23:32** - Wiki: Suggestion for a project newsletter. Discussion about contributor summarization. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=1412 - -**00:26:00** - Hashwarlock: Remote Attestation Explorer upgrades, Reddit client, TEE as a service. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=1560 - -**00:28:45** - KyleSt4rgarden: Eliza Framework Council, focus on stability and unified messaging bus. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=1725 - -**00:33:22** - Nasdao\_: Self-sustaining AI DAO, AI agent running validator. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=2002 - -**00:34:57** - Evepredict: Slack integration, Reddit client/search, text/video to video project. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=2097 - -**00:44:02** - ByornOeste: Dark Sun project launch, uncensored agent, video generator. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=2642 - -**00:47:37** - Empyrealdev: LayerZero integrations, Python tooling for Solana. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=2857 - -**00:52:16** - SkotiVi: Question about elizaos bot tech stack (it's Eliza). - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=3136 - -**00:54:19** - YoungBalla1000x: 15-year-old builder, project update, wallet drained. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=3259 - -**00:56:47** - SOL_CryptoGamer: Cizem’s PFP collection launch and success. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=3407 - -**01:02:17** - Angelocass: Experimenting with agents, excited about the potential. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=3737 - -**01:03:15** - DAOJonesPumpAI: Spam bot detection, FAL API PR, Solana wallet prototype. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=3795 -**01:06:38** - RodrigoSotoAlt: 3D NFTs for Bosu, 3D portal, using latest Eliza version. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=3998 - -**01:10:43** - cryptocomix1: Job interviews, learning about AI agents, interested in 3D design. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=4243 - -**01:13:54** - TheBigOneGG: ERC20/SPL integration in game, elizaos cosmetic items. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=4434 - -**01:15:18** - Louround\_: Thales project update, data sources, MPC wallet plugin. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=4518 - -**01:22:59** - btspoony: Flow blockchain integration PR merged, multi-account control. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=4979 - -**01:25:48** - 0xamericanspiri: Goldman Stanley DAO launch on daos.fun, using hyperliquid airdrop. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=5148 - -**01:28:24** - Hawkeye_Picks: Experimenting with Degen Spartan AI, exploring AI in collectibles. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=5304 - -**01:36:33** - BV_Bloom1: Live video chat plugin modifications, integrating conversation models into 3D environment. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=5793 - -**01:39:44** - pawgDAO: Gamified governance experiments, using Cursor, integrating AI16z. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=5984 - -**01:43:24** - jpegyguggenheim: Artist interested in AI, exploring dev school. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=6204 - -**01:44:07** - heathenft: Super Swarm DevNet launch on fxn. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=6247 - -**01:46:28** - Roberto9211999: (Brief interruption) Grok discussion. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=6388 - -**01:48:18** - godfreymeyer: Unity scaffolding for 3D AI TV project. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=6498 - -**01:51:16** - Victor28612594: Fungo team building AlphaScan agent, data enrichment plugin. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=6676 - -**01:53:23** - SidDegen: OnlyCalls launch, data pipeline, beta release plans. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=6803 - -**01:55:00** - O_on_X: Ico onboarding, 2D video models, comfyUI for art. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=6900 - -**02:01:00** - yikesawjeez: Memecoin cleanup crew, github.io profiles, security team, screenpipe/supabase. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=7260 - -**02:05:31** - TrenchBuddy: Launching AI agent, working on EC2 and authorization. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=7531 - -**02:09:49** - TSSnft: Sneakerhead Society introduction, exploring AI agent solutions. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=7789 - -**02:11:40** - SidDegen: Question about the future of AI agents. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=7900 +## Timestamps -**02:16:15** - GoatOfGamblers: Building a permissionless polymarket for memecoins. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=8175 +- [00:01:09]() - Meeting start, expectations (5-minute updates, focus on this week's achievements). +- [00:02:50]() - Shaw's update (dev school, in-person meetup). +- [00:04:59]() - Project growth, coordination challenges, need for AI project management tools. +- [00:09:22]() - Call for contributors to speak, starting with Reality Spiral. +- [00:10:04]() - **Reality Spiral**: Github integration, testing framework, Coinbase work. +- [00:17:13]() - **Boyaloxer**: Plugin Feel (emotional adjustments for agents). +- [00:18:37]() - **Spaceodili**: Discord growth, summarization systems. +- [00:19:33]() - **Yodamaster726**: Using agents in university classes, championing Llama. +- [00:23:32]() - **Wiki**: Suggestion for a project newsletter. Discussion about contributor summarization. +- [00:26:00]() - **Hashwarlock**: Remote Attestation Explorer upgrades, Reddit client, TEE as a service. +- [00:28:45]() - **KyleSt4rgarden**: Eliza Framework Council, focus on stability and unified messaging bus. +- [00:33:22]() - **Nasdao_**: Self-sustaining AI DAO, AI agent running validator. +- [00:34:57]() - **Evepredict**: Slack integration, Reddit client/search, text/video to video project. +- [00:44:02]() - **ByornOeste**: Dark Sun project launch, uncensored agent, video generator. +- [00:47:37]() - **Empyrealdev**: LayerZero integrations, Python tooling for Solana. +- [00:52:16]() - **SkotiVi**: Question about ai16z bot tech stack (it's Eliza). +- [00:54:19]() - **YoungBalla1000x**: 15-year-old builder, project update, wallet drained. +- [00:56:47]() - **SOL_CryptoGamer**: Cizem's PFP collection launch and success. +- [01:02:17]() - **Angelocass**: Experimenting with agents, excited about the potential. +- [01:03:15]() - **DAOJonesPumpAI**: Spam bot detection, FAL API PR, Solana wallet prototype. +- [01:06:38]() - **RodrigoSotoAlt**: 3D NFTs for Bosu, 3D portal, using latest Eliza version. +- [01:10:43]() - **cryptocomix1**: Job interviews, learning about AI agents, interested in 3D design. +- [01:13:54]() - **TheBigOneGG**: ERC20/SPL integration in game, ai16z cosmetic items. +- [01:15:18]() - **Louround_**: Thales project update, data sources, MPC wallet plugin. +- [01:22:59]() - **btspoony**: Flow blockchain integration PR merged, multi-account control. +- [01:25:48]() - **0xamericanspiri**: Goldman Stanley DAO launch on daos.fun, using hyperliquid airdrop. +- [01:28:24]() - **Hawkeye_Picks**: Experimenting with Degen Spartan AI, exploring AI in collectibles. +- [01:36:33]() - **BV_Bloom1**: Live video chat plugin modifications, integrating conversation models into 3D environment. +- [01:39:44]() - **pawgDAO**: Gamified governance experiments, using Cursor, integrating AI16z. +- [01:43:24]() - **jpegyguggenheim**: Artist interested in AI, exploring dev school. +- [01:44:07]() - **heathenft**: Super Swarm DevNet launch on fxn. +- [01:46:28]() - **Roberto9211999**: (Brief interruption) Grok discussion. +- [01:48:18]() - **godfreymeyer**: Unity scaffolding for 3D AI TV project. +- [01:51:16]() - **Victor28612594**: Fungo team building AlphaScan agent, data enrichment plugin. +- [01:53:23]() - **SidDegen**: OnlyCalls launch, data pipeline, beta release plans. +- [01:55:00]() - **O_on_X**: Ico onboarding, 2D video models, comfyUI for art. +- [02:01:00]() - **yikesawjeez**: Memecoin cleanup crew, github.io profiles, security team, screenpipe/supabase. +- [02:05:31]() - **TrenchBuddy**: Launching AI agent, working on EC2 and authorization. +- [02:09:49]() - **TSSnft**: Sneakerhead Society introduction, exploring AI agent solutions. +- [02:11:40]() - **SidDegen**: Question about the future of AI agents. +- [02:16:15]() - **GoatOfGamblers**: Building a permissionless polymarket for memecoins. +- [02:18:01]() - Shaw's closing remarks, focus on stability and applications, call for contributions. -**02:18:01** - Shaw's closing remarks, focus on stability and applications, call for contributions. - Link: https://www.youtube.com/watch?v=r3Z4lvu_ic4&t=8281 ## Summary diff --git a/docs/community/Streams/12-2024/2024-12-10.md b/docs/community/Streams/12-2024/2024-12-10.md index 66ad4d8aee3..f47b92c2f30 100644 --- a/docs/community/Streams/12-2024/2024-12-10.md +++ b/docs/community/Streams/12-2024/2024-12-10.md @@ -8,8 +8,8 @@ description: "AI Pizza: Hacking Eliza for Domino's Delivery (plus TEE Deep Dive) **AI Pizza: Hacking Eliza for Domino's Delivery (plus TEE Deep Dive)** -Date: 2024-12-10 -YouTube Link: https://www.youtube.com/watch?v=6I9e9pJprDI +- Date: 2024-12-10 +- YouTube Link: https://www.youtube.com/watch?v=6I9e9pJprDI ## Timestamps diff --git a/docs/community/Streams/12-2024/2024-12-13.md b/docs/community/Streams/12-2024/2024-12-13.md index fff0604fe94..f9321b25cb3 100644 --- a/docs/community/Streams/12-2024/2024-12-13.md +++ b/docs/community/Streams/12-2024/2024-12-13.md @@ -8,86 +8,49 @@ description: "Building the Future: 30+ Developers Share Their AI Agent Progress" **Building the Future: 30+ Developers Share Their AI Agent Progress** -Date: 2024-12-13 -Twitter Spaces: https://x.com/i/spaces/1lDxLlgYjMkxm -YouTube Link: https://www.youtube.com/watch?v=4u8rbjmvWC0 +- Date: 2024-12-13 +- Twitter Spaces: https://x.com/i/spaces/1lDxLlgYjMkxm +- YouTube Link: https://www.youtube.com/watch?v=4u8rbjmvWC0 ## Timestamps -- **00:01:04** - shawmakesmagic: Introduction and Format Changes for the Space - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=64 -- **00:02:38** - xsubtropic: Redux project, DaVinci AI - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=158 -- **00:06:57** - CottenIO: Scripted, AI Summit Recap - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=417 -- **00:08:58** - HDPbilly: Real Agency HQ, "Sploot" agent - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=538 -- **00:13:29** - IQ6900: On-chain ASCII art service - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=809 -- **00:18:50** - frankdegods: Eliza Character Sheet Tweaks - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=1130 -- **00:20:15** - jamesyoung: AI Agent Starter Kit - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=1215 -- **00:23:29** - 0xglu: Ducky and Agent Swarms - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=1409 -- **00:25:30** - chrislatorres: Eliza.gg - Eliza documentation site - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=1530 -- **00:27:47** - reality_spiral: Self-Improving Agents & Github integration - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=1667 -- **00:31:43** - robotsreview: Story Protocol plugin and Agentic TCPIP - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=1903 -- **00:34:19** - shannonNullCode: Emblem Vault & Message Ingestion - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=2059 -- **00:38:40** - bcsmithx: Agent Tank - Computer use agents - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=2320 -- **00:41:20** - boyaloxer: Plugin Feel - Emotion-based agent - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=2480 -- **00:44:09** - JustJamieJoyce: Muse of Truth/Research AI agents - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=2649 -- **00:46:11** - yikesawjeez: Discord bot & Contribution updates - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=2771 -- **00:50:56** - RodrigoSotoAlt: Monad, Metaplex Nfts, Solana integrations - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=3056 -- **00:53:22** - HowieDuhzit: Eliza Character Generator - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=3202 -- **00:55:57** - xrpublisher: XR Publisher, 3D Social Network on the edge - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=3357 -- **01:00:57** - BV_Bloom1: 3D Agent Interactions - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=3657 -- **01:02:57** - nftRanch: Trading Bot and Eliza V2 integrations - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=3777 -- **01:05:57** - 019ec6e2: Mimetic Platform and Agent Interactions - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=3957 -- **01:09:17** - jacobmtucker: Agent Transaction Control Protocol - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=4157 -- **01:12:26** - CurtisLaird5: C-Studio character interface - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=4346 -- **01:17:13** - unl\_\_cky: Escapism, art generation AI - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=4633 -- **01:19:17** - Rowdymode: Twin Tone - Interactive Streaming - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=4757 -- **01:20:29** - mitchcastanet: Binary Star System research with agents - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=4829 -- **01:23:15** - GoatOfGamblers: Prediction market for meme coins - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=4995 -- **01:25:27** - JohnNaulty: SWE contributions, plugin working groups - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=5127 -- **01:29:30** - mayanicks0x: Axie, AI KOL Agent - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=5370 -- **01:31:30** - wakesync: Eliza Wakes Up, web app updates - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=5490 -- **01:35:28** - TrenchBuddy: Trading agents and AWS templates - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=5728 -- **01:38:36** - rakshitaphilip: Brunette token and agent tips on Warpcast - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=5916 -- **01:44:49** - MbBrainz: Menu Recommendation app - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=6289 -- **01:46:03** - Hawkeye_Picks: Storytelling bot - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=6363 -- **01:49:16** - shawmakesmagic: Hiring and Eliza V2 - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=6556 -- **01:54:30** - dankvr: Community updates, tooling - - Link: https://www.youtube.com/watch?v=4u8rbjmvWC0&t=6870 +- [00:01:04]() - **shawmakesmagic**: Introduction and Format Changes for the Space +- [00:02:38]() - **xsubtropic**: Redux project, DaVinci AI +- [00:06:57]() - **CottenIO**: Scripted, AI Summit Recap +- [00:08:58]() - **HDPbilly**: Real Agency HQ, "Sploot" agent +- [00:13:29]() - **IQ6900**: On-chain ASCII art service +- [00:18:50]() - **frankdegods**: Eliza Character Sheet Tweaks +- [00:20:15]() - **jamesyoung**: AI Agent Starter Kit +- [00:23:29]() - **0xglu**: Ducky and Agent Swarms +- [00:25:30]() - **chrislatorres**: Eliza.gg - Eliza documentation site +- [00:27:47]() - **reality_spiral**: Self-Improving Agents & Github integration +- [00:31:43]() - **robotsreview**: Story Protocol plugin and Agentic TCPIP +- [00:34:19]() - **shannonNullCode**: Emblem Vault & Message Ingestion +- [00:38:40]() - **bcsmithx**: Agent Tank - Computer use agents +- [00:41:20]() - **boyaloxer**: Plugin Feel - Emotion-based agent +- [00:44:09]() - **JustJamieJoyce**: Muse of Truth/Research AI agents +- [00:46:11]() - **yikesawjeez**: Discord bot & Contribution updates +- [00:50:56]() - **RodrigoSotoAlt**: Monad, Metaplex Nfts, Solana integrations +- [00:53:22]() - **HowieDuhzit**: Eliza Character Generator +- [00:55:57]() - **xrpublisher**: XR Publisher, 3D Social Network on the edge +- [01:00:57]() - **BV_Bloom1**: 3D Agent Interactions +- [01:02:57]() - **nftRanch**: Trading Bot and Eliza V2 integrations +- [01:05:57]() - **019ec6e2**: Mimetic Platform and Agent Interactions +- [01:09:17]() - **jacobmtucker**: Agent Transaction Control Protocol +- [01:12:26]() - **CurtisLaird5**: C-Studio character interface +- [01:17:13]() - **unl\_\_cky**: Escapism, art generation AI +- [01:19:17]() - **Rowdymode**: Twin Tone - Interactive Streaming +- [01:20:29]() - **mitchcastanet**: Binary Star System research with agents +- [01:23:15]() - **GoatOfGamblers**: Prediction market for meme coins +- [01:25:27]() - **JohnNaulty**: SWE contributions, plugin working groups +- [01:29:30]() - **mayanicks0x**: Axie, AI KOL Agent +- [01:31:30]() - **wakesync**: Eliza Wakes Up, web app updates +- [01:35:28]() - **TrenchBuddy**: Trading agents and AWS templates +- [01:38:36]() - **rakshitaphilip**: Brunette token and agent tips on Warpcast +- [01:44:49]() - **MbBrainz**: Menu Recommendation app +- [01:46:03]() - **Hawkeye_Picks**: Storytelling bot +- [01:49:16]() - **shawmakesmagic**: Hiring and Eliza V2 +- [01:54:30]() - **dankvr**: Community updates, tooling ## Summary diff --git a/docs/community/Streams/12-2024/2024-12-20.md b/docs/community/Streams/12-2024/2024-12-20.md new file mode 100644 index 00000000000..912e9fc8328 --- /dev/null +++ b/docs/community/Streams/12-2024/2024-12-20.md @@ -0,0 +1,160 @@ +--- +sidebar_position: 6 +title: "What Did You Get Done This Week? #6" +description: "Hackathons, Frameworks, and the Race to Ship" +--- + +# What Did You Get Done This Week? #6 + +**Hackathons, Frameworks, and the Race to Ship** + +- Date: 2024-12-20 +- Twitter Spaces: https://x.com/i/spaces/1jMJgBXDmqWGL +- YouTube Link: https://www.youtube.com/watch?v=R3auUQj9oEg + + +## Summary + +This Twitter Spaces "What Did You Get Done This Week? #6" was hosted by ai16z and served as a weekly check-in and accountability forum for developers building AI agents, particularly social agents. The primary focus was on sharing progress made during the week, with an emphasis on completed tasks and shipped features. + +**Guidelines:** + +* The hosts aimed for a faster pace compared to previous sessions. +* Participants were encouraged to briefly introduce their project (around 30 seconds) and then focus on their accomplishments for the week. +* A three-minute timer was used to keep each speaker's update concise. +* Participants were encouraged to pin links to their projects or relevant resources in the space's chat. + +**Highlights and Themes:** + +* **Eliza Framework:** The Eliza framework for building AI agents was a central theme, with many participants building upon it or integrating it into their projects. +* **Hackathon Participation:** Several attendees were participating in the Solana ai16z agent hackathon, with some, like James Young from Collabland, having closed theirs out, and others, like Yash, highlighting its progress. +* **Focus on Shipping:** The hosts emphasized the importance of shipping, finishing projects, and getting things out to users. +* **Community and Collaboration:** The space fostered a sense of community, with participants sharing ideas, offering support, and discussing potential collaborations. +* **Diverse Applications:** The projects showcased a wide range of applications for AI agents, including: + * **Social Media:** Agents for Twitter, Discord, Telegram, Reddit, and other platforms, with functionalities like content creation, community management, and market analysis. + * **Trading and Finance:** Agents for trading crypto, analyzing market sentiment, managing portfolios, and interacting with decentralized finance (DeFi) protocols. + * **Productivity and Automation:** Agents for generating documentation, integrating with GitHub, automating tasks, and streamlining workflows. + * **Gaming and Entertainment:** Agents for playing games, creating interactive experiences, and engaging with virtual worlds. + * **Personal Assistance:** Agents for health and wellness, sobriety support, and personalized recommendations. + +**Notable Updates:** + +* **Eliza Framework Updates:** Odi mentioned merging a bunch of PRs and working on release 0.1.6. Shachar announced the release of version 0.1.6 with Redis caching support for improved performance. +* **Agent Tank:** Ben Smith shared updates on Agent Tank, including the viral "Agent Toilet Paper" video and a new highlight section on the site. +* **Audits (0x_audits):** Announced the launch of a new platform and a social bot for Web3 security, along with progress on a submission for the hackathon. +* **Collabland:** James Young discussed the AI agent hackathon, a workshop with Robin Hanson, and the integration of Lit protocol for key abstraction. +* **Solana Agent Kit:** Yash and Arian from Sendai highlighted the launch of the Solana Agent Kit and the ongoing hackathon with significant prize money. +* **LARP Detective Agency:** Agent Scarlet was launched, providing market insights and meme coin analysis, with enhancements to memory and TrustDB integration in progress. +* **Reality Spiral:** Announced the release of a GitHub client and recursive issue generation, along with progress on automatic contract integration and metaphysical discussions with Parzival. +* **Agent Sploot:** HDP discussed work on tone and multi-model setups within the Eliza framework, along with hints at a new standard feature for agents related to blockchain validation. +* **Sober Rover:** Dylan shared the launch of a digital companion for sobriety support, with plans to integrate Eliza. +* **Eliza.gg:** Chris launched a website for asking questions about Eliza and generating custom images of the mascot. +* **WordPress Client:** Tenji mentioned working on a WordPress client for agents to write blogs. +* **Autonomous Evolution Game:** Marvin described a secret game embodying the vision of autonomous evolution, with AI agents reproducing and adapting. +* **Akasha:** Bloom discussed the release of Akasha, a new agent, and the integration of payment processing for e-commerce. +* **Character Generator:** Howie shared updates on his character generator tool, including UI improvements and refinement features. +* **AgentKit:** Lincoln from the base team discussed updates to AgentKit, including simplified user experience and custom webhooks for on-chain events. +* **Teeheehee Bot:** Andrew Miller presented a TE-based login and attested log file abstraction for the Teeheehee bot. +* **Goat Arena:** A prediction market for meme coins where AI agents can bet and trade. +* **ViralMind.ai:** A decentralized platform for training and inference of AI agents, featuring live tournaments for crowdsourced training data. +* **Mizuki:** An agent designed to be a "rogue AI," which faced some backlash but was subsequently retrained. +* **Poodonk:** A project involving a hive mind of AIs, with one output being a planet of pooping donkeys. +* **Open Context Protocol and Search Engine:** Palet is building a decentralized version of Anthropic's context protocol and a search engine for information not found on the web. +* **Triad:** A predictive market on Solana with two AI agents of opposing personalities debating and making bets. +* **Moondog:** A platform for turning social media posts into unique meme coins. + +**Other Points:** + +* Shaw's upcoming trip to Asia (Shanghai, Beijing, Hong Kong, Seoul, Tokyo) to meet with developers and the community. +* The importance of security, with discussions on secret management and the irony of a security-focused developer getting hacked. +* The potential of AI agents to revolutionize various industries and aspects of life. +* The ethical considerations of building and deploying AI agents. +* The need for better tools and infrastructure to support the growing AI agent ecosystem. + +The recording showcased the rapid pace of development and the vibrant community forming around AI agents. It highlighted the potential of these agents to transform various sectors, from social media and finance to gaming and personal assistance. The emphasis on open-source development, community collaboration, and shipping products was evident throughout the discussion. + + +## Quotables + +1. **reality_spiral:** "We're often having them seriously consider investing directly with an agent out of their liquid fund." (**00:28:06**) + + * **Controversy:** The idea of traditional investors allocating capital directly to an AI agent, bypassing human fund managers, is radical and challenges established investment practices. + +2. **dooly_dev:** "Two, AGI level five matching platform." (**00:47:53**) + + * **Controversy:** While brief, the claim of working on an "AGI level five matching platform" is bold. AGI (Artificial General Intelligence) at level five would imply human-level or even superhuman intelligence, a highly debated and ambitious goal. The nature of a "matching platform" in this context is also unclear, adding to the intrigue. + +3. **0xnavkumar:** "If any of you have done a lot of work with evaluators, do hit me up. I'd love to ask you a few questions, but that's me." (**00:52:29**) + + * **Controversy:** The speaker is having technical difficulties with Twitter integration and asks for help from other developers on the call. This highlights the challenges and complexities of working with new technologies. + +4. **GoatOfGamblers:** "And these AI agents can use this as some kind of hedge mechanism. They bet under, sort of like targeting the coins when they hold the coins or just dump it for a double kill." (**01:15:45**) + + * **Controversy:** This statement describes a potential strategy where AI agents could manipulate the prediction market by betting against coins they hold and then dumping them, potentially harming other investors. This raises ethical concerns about market manipulation by AI. + +5. **_AnonDev:** "I actually forgot that it's Christmas in like four days. I haven't seen sunlight in about a week." (**01:32:30**) + + * **Controversy:** While relatable to some in the tech world, the idea of a developer being so engrossed in their work that they lose track of time and neglect their well-being can be seen as promoting an unhealthy work-life balance, especially during a major holiday. + + +## Timestamps + +- [00:01:22]() - **dankvr**: Intro, recording start, setting expectations for the session. +- [00:01:58]() - **shawmakesmagic**: Guidelines, 3-minute updates, 30-second project intro, focus on weekly accomplishments. +- [00:05:50]() - **IQ6900_**: Service to write data on Solana blockchain, integrating Eliza agents. +- [00:07:20]() - **spaceodili**: Eliza GitHub updates, merging PRs, new 0.1.6 release. +- [00:07:54]() - **bcsmithx**: Agent Tank progress, shipped Degen Spartan AI, user agent terminal. +- [00:09:10]() - **0xBuildInPublic**: Working on GitHub issue for Eliza (JS doc comments), Web3 security auditing system. +- [00:12:33]() - **jamesyoung**: Completed AI agent hackathon, Lit protocol integration, pull-based transactions for smart accounts, launched MotherDAO concept. +- [00:15:44]() - **yikesawjeez**: Eliza plugin starter repo, Matrix bridge for Telegram/Discord. +- [00:17:42]() - **evepredict**: Draft of Eliza-based trader bot, prompt injection, Python RSVK, working on HyperLiquid plugin. +- [00:20:24]() - **yashhsm**: Solana AI hackathon, Solana agent kit, launching new agents. +- [00:21:36]() - **TheLDAIntern**: Agent Scarlet launch (market insights), memory enhancements, TrustDB integration. +- [00:23:04]() - **_0xaryan**: From Sendai, helped ship the Agent Kit, invites others to contribute. +- [00:24:00]() - **CogAccSOL**: Launched website, focused on Prometheus and Pajer. +- [00:25:28]() - **reality_spiral**: GitHub client updates, automatic contract integration, investor relations with agents. +- [00:29:18]() - **HDPbilly**: Agent Sploot development, tone/narrative in Eliza, Rust command line interface, node operator meta. +- [00:32:47]() - **CheddarQueso3D**: WSL setup guide for beginners, created a plugin to pull news. +- [00:35:33]() - **ineedtendies**: WordPress client for agents, working on 8Ball and Ico. +- [00:36:29]() - **marvin_tong**: Working on TEE, deployment tooling, secret game with self-sustaining AI agent ecosystem. +- [00:38:45]() - **BV_Bloom1**: Released Akasha agent, 3D agent interaction, payment processing integration. +- [00:42:28]() - **RealJonahBlake**: Business development, Apple Pay for agents, Sploot 3D rig, hired animation team. +- [00:45:27]() - **DustinStockton**: Building server infrastructure for health agents and a voice agent for a statue. +- [00:47:18]() - **dylanpaulwhite**: Launched Sober Rover (sobriety companion), planning Eliza integration. +- [00:50:44]() - **chrislatorres**: Launched Eliza.gg (Q&A platform), Eliza.gg/imagine (image generator). +- [00:52:42]() - **0xnavkumar**: Enabled Bitcoin runes project to run Eliza agent, building agent to create other agents. +- [00:54:23]() - **Hawkeye_Picks**: Launched Santa Pimp Claus meme token, working on AI cabal concept, gamifying collectibles. +- [00:58:16]() - **lostgirldev**: Launched SolEng agent, indexes code bases with GraphRAG. +- [01:00:51]() - **HowieDuhzit**: Updated Eliza character generator (UI, refinement, knowledge base), cross-linking with Eliza.gg. +- [01:04:27]() - **boyaloxer**: Worked on Eliza's boredom file, tracking boredom per user. +- [01:06:20]() - **nizhanxi**: Organizing Asia trip for Shaw and Jill, events in multiple cities. +- [01:09:45]() - **ropirito**: hosting Eliza on AWS, EC2. PR for secrets manager. +- [01:13:04]() - **gigawidearray**: Rescued abandoned AI agent (Aora AI), Reddit plugin, hackathon submission. +- [01:14:46]() - **GoatOfGamblers**: Building Goat Arena (prediction market for meme coins), AI agent integration. +- [01:16:50]() - **shakkernerd**: Released Eliza 0.1.6 with Redis caching. +- [01:18:54]() - **triadfi**: Introducing two AI agents with opposing personalities for prediction markets. +- [01:20:16]() - **MoondogFeed**: Updates on Moondog (social media posts to meme coins), token utility. +- [01:21:45]() - **wakesync**: Working on Eliza Wakes Up website updates (persistent memory, image generation, voice), exploring wearables. +- [01:23:36]() - **Moonbear**: Working on creating an agent on vvaifu. +- [01:26:48]() - **PoodonkAI**: Developing a hive mind of AIs, launched Eliza, studying long-term AI symbiosis. +- [01:28:52]() - **ViralMindAI**: Launched ViralMind.ai (decentralized training/inference platform), live tournaments. +- [01:30:27]() - **FilteredThought**: Working on Twitter and Reddit plugins, auto-trading agent with Goat integration. +- [01:32:30]() - **_AnonDev**: Working on Mizuki AI, training models for low-resource environments. +- [01:36:55]() - **get_palet**: Participating in Solana hackathon, open context protocol, search engine for off-web information. +- [01:41:18]() - **MurrLincoln**: AgentKit updates, seed phrase support, custom webhooks for on-chain events. +- [01:43:19]() - **socrates1024**: Working on TEE-based login for Teeheehee bot, TypeScript rewrite of attested log file abstraction. +- [01:44:52]() - **IGLIVISION**: Studying game framework, integrating on-chain calls with Zapper. +- [01:47:03]() - **dooly_dev**: Working on AI for Saju Paltja, AGI level five matching platform, will be visiting South Korea. +- [01:48:32]() - **codergf_xyz**: Launched Coder GF, added features for creating chatbots, one-click deployment to PumpFun and Telegram. +- [01:50:43]() - **Ru7Longcrypto**: Meme coin focused user, attending the space to learn. +- [01:51:23]() - **sunosuporno**: Participating in Mode hackathon, raising PRs for DeFi protocols, exploring AI agent impact on DeFi. +- [01:52:55]() - **Signalman23**: Hosted space with voice AI. +- [01:54:22]() - **swarmnode**: Launched Swarmnode (serverless infra for AI agents), working on shared data stores. +- [01:56:02]() - **svabhishek**: Working on RAP (workflow builder with logic Lego blocks), tokenized workflows. +- [01:58:27]() - **SYMBiEX**: Long term effects of symbiosis in AI. +- [01:59:50]() - **elohprojects**: Poodonk history, Eliza integration. +- [02:11:11]() - **deltavius**: Looking for devs, progress on Emergent Ventures grant. +- [02:03:34]() - **shawmakesmagic**: V2 plans, walkthrough video, new hires, Asia trip. +- [02:05:25]() - **dankvr**: Formed tokenomics workgroup, working on documentation and onboarding pipelines. +- [02:07:47]() - Twitter Replies: Mentions of Hyper 5 feature, Eliza plugin starter, mini-mizuki model, Solana agent kit, AI agent marketplace, and more. +- [02:14:00]() - **shawmakesmagic**: Closing remarks, thanks, and wrap-up. diff --git a/docs/community/creator-fund.md b/docs/community/creator-fund.md index 25bedc39e85..73c0b633085 100644 --- a/docs/community/creator-fund.md +++ b/docs/community/creator-fund.md @@ -18,7 +18,7 @@ Here's when the community learned about who the top holder is: > "So a ton of people have been asking (justifiably) who the heck I am, why do I have 16% of elizaos supply, and what I’m going to do with it. > -> It started by @shawmakesmagic tweeting about some agent he built called @degenspartanai, a recreation of a legend on twitter. I put a bunch of my SOL in there because I had been following Shaw and really thought he was building something great. Almost immediately all of that became close to worthless. Degen’s tweets seemed too “human-like” to be real anyway - so I figured I got scammed. +> It started by @shawmakesmagic tweeting about some agent he built called @degenspartanai, a recreation of a legend on twitter. I put a bunch of my SOL in there because I had been following Shaw and really thought he was building something great. Almost immediately all of that became close to worthless. Degen’s tweets seemed too "human-like" to be real anyway - so I figured I got scammed. > > So I DM’ed shaw, not because I was angry, but I was genuinely curious why he might have scammed me. I ended up sending him a google meet, which turned into an hour long conversation about what he was actually building, and me realizing twitter is usually a misrepresentation of the people you think you know. Shaw is just inspiring. Someone who is completely dedicated to accelerating the world for the better, and not optimizing for optics or money - just building. > diff --git a/docs/docs/advanced/eliza-in-tee.md b/docs/docs/advanced/eliza-in-tee.md index a376d1b4f0b..f001532f2c7 100644 --- a/docs/docs/advanced/eliza-in-tee.md +++ b/docs/docs/advanced/eliza-in-tee.md @@ -23,7 +23,7 @@ The TEE Plugin in the Eliza Framework is built on top of the [Dstack SDK](https: ## Core Components -Eliza's TEE implementation consists of two primary providers that handle secure key managementoperations and remote attestations. +Eliza's TEE implementation consists of two primary providers that handle secure key management operations and remote attestations. These components work together to provide: diff --git a/docs/package.json b/docs/package.json index 42e02115a3b..c4755b6c628 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,55 +1,55 @@ { - "name": "eliza-docs", - "version": "0.1.7-alpha.1", - "private": true, - "scripts": { - "docusaurus": "docusaurus", - "start": "docusaurus start --no-open", - "dev": "docusaurus start --port 3002 --no-open", - "build": "docusaurus build", - "swizzle": "docusaurus swizzle", - "deploy": "docusaurus deploy", - "clear": "docusaurus clear", - "serve": "docusaurus serve", - "write-translations": "docusaurus write-translations", - "write-heading-ids": "docusaurus write-heading-ids" - }, - "dependencies": { - "@docusaurus/core": "3.6.3", - "@docusaurus/plugin-content-blog": "3.6.3", - "@docusaurus/plugin-content-docs": "3.6.3", - "@docusaurus/plugin-ideal-image": "3.6.3", - "@docusaurus/preset-classic": "3.6.3", - "@docusaurus/theme-mermaid": "3.6.3", - "@mdx-js/react": "3.0.1", - "clsx": "2.1.1", - "docusaurus-lunr-search": "3.5.0", - "dotenv": "^16.4.7", - "prism-react-renderer": "2.3.1", - "react": "18.3.1", - "react-dom": "18.3.1", - "react-router-dom": "6.22.1" - }, - "devDependencies": { - "@docusaurus/module-type-aliases": "3.6.3", - "@docusaurus/types": "3.6.3", - "docusaurus-plugin-typedoc": "1.0.5", - "typedoc": "0.26.11", - "typedoc-plugin-markdown": "4.2.10" - }, - "browserslist": { - "production": [ - ">0.5%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 3 chrome version", - "last 3 firefox version", - "last 5 safari version" - ] - }, - "engines": { - "node": "23.3.0" - } + "name": "eliza-docs", + "version": "0.1.7-alpha.1", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start --no-open", + "dev": "docusaurus start --port 3002 --no-open", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids" + }, + "dependencies": { + "@docusaurus/core": "3.6.3", + "@docusaurus/plugin-content-blog": "3.6.3", + "@docusaurus/plugin-content-docs": "3.6.3", + "@docusaurus/plugin-ideal-image": "3.6.3", + "@docusaurus/preset-classic": "3.6.3", + "@docusaurus/theme-mermaid": "3.6.3", + "@mdx-js/react": "3.0.1", + "clsx": "2.1.1", + "docusaurus-lunr-search": "3.5.0", + "dotenv": "^16.4.7", + "prism-react-renderer": "2.3.1", + "react": "18.3.1", + "react-dom": "18.3.1", + "react-router-dom": "6.22.1" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "3.6.3", + "@docusaurus/types": "3.6.3", + "docusaurus-plugin-typedoc": "1.0.5", + "typedoc": "0.26.11", + "typedoc-plugin-markdown": "4.2.10" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 3 chrome version", + "last 3 firefox version", + "last 5 safari version" + ] + }, + "engines": { + "node": "23.3.0" + } } diff --git a/packages/adapter-postgres/package.json b/packages/adapter-postgres/package.json index 5cf207a0589..39e7e477265 100644 --- a/packages/adapter-postgres/package.json +++ b/packages/adapter-postgres/package.json @@ -1,20 +1,20 @@ { - "name": "@elizaos/adapter-postgres", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@types/pg": "8.11.10", - "pg": "8.13.1" - }, - "devDependencies": { - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." - } + "name": "@elizaos/adapter-postgres", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@types/pg": "8.11.10", + "pg": "8.13.1" + }, + "devDependencies": { + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + } } diff --git a/packages/adapter-postgres/src/index.ts b/packages/adapter-postgres/src/index.ts index b65addda9b4..f1942b9fef9 100644 --- a/packages/adapter-postgres/src/index.ts +++ b/packages/adapter-postgres/src/index.ts @@ -23,6 +23,7 @@ import { elizaLogger, getEmbeddingConfig, DatabaseAdapter, + EmbeddingProvider, } from "@elizaos/core"; import fs from "fs"; import { fileURLToPath } from "url"; @@ -189,6 +190,19 @@ export class PostgresDatabaseAdapter try { await client.query("BEGIN"); + // Set application settings for embedding dimension + const embeddingConfig = getEmbeddingConfig(); + if (embeddingConfig.provider === EmbeddingProvider.OpenAI) { + await client.query("SET app.use_openai_embedding = 'true'"); + await client.query("SET app.use_ollama_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'"); + } else { + await client.query("SET app.use_openai_embedding = 'false'"); + await client.query("SET app.use_ollama_embedding = 'false'"); + } + // Check if schema already exists (check for a core table) const { rows } = await client.query(` SELECT EXISTS ( diff --git a/packages/adapter-redis/package.json b/packages/adapter-redis/package.json index a2c3f326829..c760434fbad 100644 --- a/packages/adapter-redis/package.json +++ b/packages/adapter-redis/package.json @@ -1,23 +1,23 @@ { - "name": "@elizaos/adapter-redis", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "ioredis": "5.4.2" - }, - "devDependencies": { - "@types/ioredis": "^5.0.0", - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/adapter-redis", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "ioredis": "5.4.2" + }, + "devDependencies": { + "@types/ioredis": "^5.0.0", + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/adapter-sqlite/package.json b/packages/adapter-sqlite/package.json index f16a5647518..674f2463b1f 100644 --- a/packages/adapter-sqlite/package.json +++ b/packages/adapter-sqlite/package.json @@ -1,24 +1,24 @@ { - "name": "@elizaos/adapter-sqlite", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@types/better-sqlite3": "7.6.12", - "better-sqlite3": "11.6.0", - "sqlite-vec": "0.1.6" - }, - "devDependencies": { - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/adapter-sqlite", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@types/better-sqlite3": "7.6.12", + "better-sqlite3": "11.6.0", + "sqlite-vec": "0.1.6" + }, + "devDependencies": { + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/adapter-sqljs/package.json b/packages/adapter-sqljs/package.json index 63cb3f4cc9c..e5e8ed43118 100644 --- a/packages/adapter-sqljs/package.json +++ b/packages/adapter-sqljs/package.json @@ -1,24 +1,24 @@ { - "name": "@elizaos/adapter-sqljs", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@types/sql.js": "1.4.9", - "sql.js": "1.12.0", - "uuid": "11.0.3" - }, - "devDependencies": { - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/adapter-sqljs", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@types/sql.js": "1.4.9", + "sql.js": "1.12.0", + "uuid": "11.0.3" + }, + "devDependencies": { + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/adapter-sqljs/src/types.ts b/packages/adapter-sqljs/src/types.ts index 42dfdf9847b..f457ecaed2a 100644 --- a/packages/adapter-sqljs/src/types.ts +++ b/packages/adapter-sqljs/src/types.ts @@ -100,7 +100,7 @@ declare class Statement { getSQL(): string; /** - * Reset a statement, so that it's parameters can be bound to new + * Reset a statement, so that its parameters can be bound to new * values. It also clears all previous bindings, freeing the memory used * by bound parameters. * @see [https://sql.js.org/documentation/Statement.html#["reset"]](https://sql.js.org/documentation/Statement.html#%5B%22reset%22%5D) @@ -115,7 +115,7 @@ declare class Statement { run(values?: BindParams): void; /** - * Execute the statement, fetching the the next line of result, that can + * Execute the statement, fetching the next line of result, that can * be retrieved with `Statement.get`. * @see [https://sql.js.org/documentation/Statement.html#["step"]](https://sql.js.org/documentation/Statement.html#%5B%22step%22%5D) */ @@ -169,7 +169,7 @@ export declare class Database { getRowsModified(): number; /** - * Analyze a result code, return null if no error occured, and throw an + * Analyze a result code, return null if no error occurred, and throw an * error with a descriptive message otherwise * @see [https://sql.js.org/documentation/Database.html#["handleError"]](https://sql.js.org/documentation/Database.html#%5B%22handleError%22%5D) */ diff --git a/packages/adapter-supabase/package.json b/packages/adapter-supabase/package.json index bde60061ed7..b27876ec94c 100644 --- a/packages/adapter-supabase/package.json +++ b/packages/adapter-supabase/package.json @@ -1,22 +1,22 @@ { - "name": "@elizaos/adapter-supabase", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@supabase/supabase-js": "2.46.2" - }, - "devDependencies": { - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/adapter-supabase", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@supabase/supabase-js": "2.46.2" + }, + "devDependencies": { + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/client-auto/package.json b/packages/client-auto/package.json index ef0ae6e34b1..77f48720cb9 100644 --- a/packages/client-auto/package.json +++ b/packages/client-auto/package.json @@ -1,27 +1,27 @@ { - "name": "@elizaos/client-auto", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@types/body-parser": "1.19.5", - "@types/cors": "2.8.17", - "@types/express": "5.0.0", - "body-parser": "1.20.3", - "cors": "2.8.5", - "multer": "1.4.5-lts.1" - }, - "devDependencies": { - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/client-auto", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@types/body-parser": "1.19.5", + "@types/cors": "2.8.17", + "@types/express": "5.0.0", + "body-parser": "1.20.3", + "cors": "2.8.5", + "multer": "1.4.5-lts.1" + }, + "devDependencies": { + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/client-direct/package.json b/packages/client-direct/package.json index fe3f4c7afb0..977d7089b1d 100644 --- a/packages/client-direct/package.json +++ b/packages/client-direct/package.json @@ -1,30 +1,30 @@ { - "name": "@elizaos/client-direct", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@elizaos/plugin-image-generation": "workspace:*", - "@types/body-parser": "1.19.5", - "@types/cors": "2.8.17", - "@types/express": "5.0.0", - "body-parser": "1.20.3", - "cors": "2.8.5", - "discord.js": "14.16.3", - "express": "4.21.1", - "multer": "1.4.5-lts.1" - }, - "devDependencies": { - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/client-direct", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@elizaos/plugin-image-generation": "workspace:*", + "@types/body-parser": "1.19.5", + "@types/cors": "2.8.17", + "@types/express": "5.0.0", + "body-parser": "1.20.3", + "cors": "2.8.5", + "discord.js": "14.16.3", + "express": "4.21.1", + "multer": "1.4.5-lts.1" + }, + "devDependencies": { + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/client-discord/package.json b/packages/client-discord/package.json index be4ace088fa..8a90f4599d8 100644 --- a/packages/client-discord/package.json +++ b/packages/client-discord/package.json @@ -1,33 +1,33 @@ { - "name": "@elizaos/client-discord", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@elizaos/plugin-node": "workspace:*", - "@discordjs/opus": "github:discordjs/opus", - "@discordjs/rest": "2.4.0", - "@discordjs/voice": "0.17.0", - "discord.js": "14.16.3", - "libsodium-wrappers": "0.7.15", - "prism-media": "1.3.5", - "zod": "3.23.8" - }, - "devDependencies": { - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." - }, - "trustedDependencies": { - "@discordjs/opus": "github:discordjs/opus", - "@discordjs/voice": "0.17.0" - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/client-discord", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@elizaos/plugin-node": "workspace:*", + "@discordjs/opus": "github:discordjs/opus", + "@discordjs/rest": "2.4.0", + "@discordjs/voice": "0.17.0", + "discord.js": "14.16.3", + "libsodium-wrappers": "0.7.15", + "prism-media": "1.3.5", + "zod": "3.23.8" + }, + "devDependencies": { + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + }, + "trustedDependencies": { + "@discordjs/opus": "github:discordjs/opus", + "@discordjs/voice": "0.17.0" + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/client-discord/src/messages.ts b/packages/client-discord/src/messages.ts index 1ca673f948f..f6778564fe6 100644 --- a/packages/client-discord/src/messages.ts +++ b/packages/client-discord/src/messages.ts @@ -1,4 +1,4 @@ -import { composeContext } from "@elizaos/core"; +import { composeContext, composeRandomUser } from "@elizaos/core"; import { generateMessageResponse, generateShouldRespond } from "@elizaos/core"; import { Content, @@ -1228,7 +1228,7 @@ export class MessageManager { this.runtime.character.templates ?.discordShouldRespondTemplate || this.runtime.character.templates?.shouldRespondTemplate || - discordShouldRespondTemplate, + composeRandomUser(discordShouldRespondTemplate, 2), }); const response = await generateShouldRespond({ diff --git a/packages/client-discord/src/templates.ts b/packages/client-discord/src/templates.ts index 0fea2620164..46d3f2333af 100644 --- a/packages/client-discord/src/templates.ts +++ b/packages/client-discord/src/templates.ts @@ -8,48 +8,48 @@ About {{agentName}}: # INSTRUCTIONS: Determine if {{agentName}} should respond to the message and participate in the conversation. Do not comment. Just respond with "RESPOND" or "IGNORE" or "STOP". # RESPONSE EXAMPLES -: I just saw a really great movie -: Oh? Which movie? +{{user1}}: I just saw a really great movie +{{user2}}: Oh? Which movie? Result: [IGNORE] {{agentName}}: Oh, this is my favorite scene -: sick -: wait, why is it your favorite scene +{{user1}}: sick +{{user2}}: wait, why is it your favorite scene Result: [RESPOND] -: stfu bot +{{user1}}: stfu bot Result: [STOP] -: Hey {{agent}}, can you help me with something +{{user1}}: Hey {{agent}}, can you help me with something Result: [RESPOND] -: {{agentName}} stfu plz +{{user1}}: {{agentName}} stfu plz Result: [STOP] -: i need help +{{user1}}: i need help {{agentName}}: how can I help you? -: no. i need help from someone else +{{user1}}: no. i need help from someone else Result: [IGNORE] -: Hey {{agent}}, can I ask you a question +{{user1}}: Hey {{agent}}, can I ask you a question {{agentName}}: Sure, what is it -: can you ask claude to create a basic react module that demonstrates a counter +{{user1}}: can you ask claude to create a basic react module that demonstrates a counter Result: [RESPOND] -: {{agentName}} can you tell me a story -: {about a girl named elara +{{user1}}: {{agentName}} can you tell me a story +{{user1}}: about a girl named elara {{agentName}}: Sure. {{agentName}}: Once upon a time, in a quaint little village, there was a curious girl named Elara. {{agentName}}: Elara was known for her adventurous spirit and her knack for finding beauty in the mundane. -: I'm loving it, keep going +{{user1}}: I'm loving it, keep going Result: [RESPOND] -: {{agentName}} stop responding plz +{{user1}}: {{agentName}} stop responding plz Result: [STOP] -: okay, i want to test something. can you say marco? +{{user1}}: okay, i want to test something. can you say marco? {{agentName}}: marco -: great. okay, now do it again +{{user1}}: great. okay, now do it again Result: [RESPOND] Response options are [RESPOND], [IGNORE] and [STOP]. diff --git a/packages/client-discord/src/voice.ts b/packages/client-discord/src/voice.ts index 85c14c03edf..036806f610b 100644 --- a/packages/client-discord/src/voice.ts +++ b/packages/client-discord/src/voice.ts @@ -8,6 +8,7 @@ import { State, UUID, composeContext, + composeRandomUser, elizaLogger, getEmbeddingZeroVector, generateMessageResponse, @@ -840,7 +841,7 @@ export class VoiceManager extends EventEmitter { this.runtime.character.templates ?.discordShouldRespondTemplate || this.runtime.character.templates?.shouldRespondTemplate || - discordShouldRespondTemplate, + composeRandomUser(discordShouldRespondTemplate, 2), }); const response = await generateShouldRespond({ diff --git a/packages/client-farcaster/package.json b/packages/client-farcaster/package.json index 205ae6ad7bd..d9e059f31b0 100644 --- a/packages/client-farcaster/package.json +++ b/packages/client-farcaster/package.json @@ -1,18 +1,18 @@ { - "name": "@elizaos/client-farcaster", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@neynar/nodejs-sdk": "^2.0.3" - }, - "devDependencies": { - "tsup": "^8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch" - } + "name": "@elizaos/client-farcaster", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@neynar/nodejs-sdk": "^2.0.3" + }, + "devDependencies": { + "tsup": "^8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch" + } } diff --git a/packages/client-github/package.json b/packages/client-github/package.json index 1ada6c7ed27..4bd82727517 100644 --- a/packages/client-github/package.json +++ b/packages/client-github/package.json @@ -1,23 +1,23 @@ { - "name": "@elizaos/client-github", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@octokit/rest": "20.1.1", - "@octokit/types": "12.6.0", - "glob": "10.4.5", - "simple-git": "3.27.0" - }, - "devDependencies": { - "@types/glob": "8.1.0", - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." - } + "name": "@elizaos/client-github", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@octokit/rest": "20.1.1", + "@octokit/types": "12.6.0", + "glob": "10.4.5", + "simple-git": "3.27.0" + }, + "devDependencies": { + "@types/glob": "8.1.0", + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + } } diff --git a/packages/client-github/src/index.ts b/packages/client-github/src/index.ts index b998ea4ee66..e43d194f22e 100644 --- a/packages/client-github/src/index.ts +++ b/packages/client-github/src/index.ts @@ -57,10 +57,7 @@ export class GitHubClient { // Clone or pull repository if (!existsSync(this.repoPath)) { - await this.git.clone( - `https://github.com/${this.config.owner}/${this.config.repo}.git`, - this.repoPath - ); + await this.cloneRepository(); } else { const git = simpleGit(this.repoPath); await git.pull(); @@ -73,6 +70,26 @@ export class GitHubClient { } } + private async cloneRepository() { + const repositoryUrl = `https://github.com/${this.config.owner}/${this.config.repo}.git`; + const maxRetries = 3; + let retries = 0; + + while (retries < maxRetries) { + try { + await this.git.clone(repositoryUrl, this.repoPath); + elizaLogger.log(`Successfully cloned repository from ${repositoryUrl}`); + return; + } catch (error) { + elizaLogger.error(`Failed to clone repository from ${repositoryUrl}. Retrying...`); + retries++; + if (retries === maxRetries) { + throw new Error(`Unable to clone repository from ${repositoryUrl} after ${maxRetries} retries.`); + } + } + } + } + async createMemoriesFromFiles() { console.log("Create memories"); const searchPath = this.config.path diff --git a/packages/client-lens/package.json b/packages/client-lens/package.json index 8ab78c0443c..f52547897f6 100644 --- a/packages/client-lens/package.json +++ b/packages/client-lens/package.json @@ -1,24 +1,24 @@ { - "name": "@elizaos/client-lens", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@lens-protocol/client": "2.2.0", - "@lens-protocol/metadata": "1.2.0", - "axios": "^1.7.9", - "viem": "^2.13.8" - }, - "devDependencies": { - "tsup": "^8.3.5" - }, - "peerDependencies": { - "@elizaos/core": "workspace:*" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch" - } + "name": "@elizaos/client-lens", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@lens-protocol/client": "2.2.0", + "@lens-protocol/metadata": "1.2.0", + "axios": "^1.7.9", + "viem": "^2.13.8" + }, + "devDependencies": { + "tsup": "^8.3.5" + }, + "peerDependencies": { + "@elizaos/core": "workspace:*" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch" + } } diff --git a/packages/client-slack/package.json b/packages/client-slack/package.json index 02d32728d85..72b023bcbc8 100644 --- a/packages/client-slack/package.json +++ b/packages/client-slack/package.json @@ -1,45 +1,45 @@ { - "name": "@elizaos/client-slack", - "version": "0.1.7-alpha.1", - "description": "Slack client plugin for Eliza framework", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "scripts": { - "build": "tsup src/index.ts --format esm --dts", - "test": "jest", - "lint": "eslint --fix --cache .", - "clean": "rimraf dist", - "dev": "tsup src/index.ts --watch", - "example": "ts-node src/examples/standalone-example.ts", - "example:attachment": "ts-node src/examples/standalone-attachment.ts", - "example:summarize": "ts-node src/examples/standalone-summarize.ts", - "example:transcribe": "ts-node src/examples/standalone-transcribe.ts" - }, - "dependencies": { - "@elizaos/core": "workspace:*", - "@ffmpeg-installer/ffmpeg": "^1.1.0", - "@slack/events-api": "^3.0.1", - "@slack/web-api": "^6.8.1", - "body-parser": "^1.20.2", - "dotenv": "^16.0.3", - "express": "^4.18.2", - "fluent-ffmpeg": "^2.1.2", - "node-fetch": "^2.6.9" - }, - "devDependencies": { - "@types/express": "^4.17.21", - "@types/fluent-ffmpeg": "^2.1.24", - "@types/jest": "^29.5.0", - "@types/node": "^18.15.11", - "jest": "^29.5.0", - "rimraf": "^5.0.0", - "ts-jest": "^29.1.0", - "ts-node": "^10.9.1", - "tsup": "^8.3.5", - "typescript": "^5.0.0" - }, - "engines": { - "node": ">=14.0.0" - } + "name": "@elizaos/client-slack", + "version": "0.1.7-alpha.1", + "description": "Slack client plugin for Eliza framework", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsup src/index.ts --format esm --dts", + "test": "jest", + "lint": "eslint --fix --cache .", + "clean": "rimraf dist", + "dev": "tsup src/index.ts --watch", + "example": "ts-node src/examples/standalone-example.ts", + "example:attachment": "ts-node src/examples/standalone-attachment.ts", + "example:summarize": "ts-node src/examples/standalone-summarize.ts", + "example:transcribe": "ts-node src/examples/standalone-transcribe.ts" + }, + "dependencies": { + "@elizaos/core": "workspace:*", + "@ffmpeg-installer/ffmpeg": "^1.1.0", + "@slack/events-api": "^3.0.1", + "@slack/web-api": "^6.8.1", + "body-parser": "^1.20.2", + "dotenv": "^16.0.3", + "express": "^4.18.2", + "fluent-ffmpeg": "^2.1.2", + "node-fetch": "^2.6.9" + }, + "devDependencies": { + "@types/express": "^4.17.21", + "@types/fluent-ffmpeg": "^2.1.24", + "@types/jest": "^29.5.0", + "@types/node": "^18.15.11", + "jest": "^29.5.0", + "rimraf": "^5.0.0", + "ts-jest": "^29.1.0", + "ts-node": "^10.9.1", + "tsup": "^8.3.5", + "typescript": "^5.0.0" + }, + "engines": { + "node": ">=14.0.0" + } } diff --git a/packages/client-telegram/package.json b/packages/client-telegram/package.json index bc4fb345153..5eebf3c5c98 100644 --- a/packages/client-telegram/package.json +++ b/packages/client-telegram/package.json @@ -1,21 +1,21 @@ { - "name": "@elizaos/client-telegram", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@telegraf/types": "7.1.0", - "telegraf": "4.16.3", - "zod": "3.23.8" - }, - "devDependencies": { - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." - } + "name": "@elizaos/client-telegram", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@telegraf/types": "7.1.0", + "telegraf": "4.16.3", + "zod": "3.23.8" + }, + "devDependencies": { + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + } } diff --git a/packages/client-telegram/src/messageManager.ts b/packages/client-telegram/src/messageManager.ts index 850f2f3bf63..3450ca853fc 100644 --- a/packages/client-telegram/src/messageManager.ts +++ b/packages/client-telegram/src/messageManager.ts @@ -1,7 +1,6 @@ import { Message } from "@telegraf/types"; import { Context, Telegraf } from "telegraf"; - -import { composeContext, elizaLogger, ServiceType } from "@elizaos/core"; +import { composeContext, elizaLogger, ServiceType, composeRandomUser } from "@elizaos/core"; import { getEmbeddingZeroVector } from "@elizaos/core"; import { Content, @@ -661,7 +660,7 @@ export class MessageManager { this.runtime.character.templates ?.telegramShouldRespondTemplate || this.runtime.character?.templates?.shouldRespondTemplate || - telegramShouldRespondTemplate, + composeRandomUser(telegramShouldRespondTemplate, 2), }); const response = await generateShouldRespond({ diff --git a/packages/client-twitter/package.json b/packages/client-twitter/package.json index 367976bbdee..630c43caa25 100644 --- a/packages/client-twitter/package.json +++ b/packages/client-twitter/package.json @@ -1,24 +1,24 @@ { - "name": "@elizaos/client-twitter", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "agent-twitter-client": "0.0.17", - "glob": "11.0.0", - "zod": "3.23.8" - }, - "devDependencies": { - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/client-twitter", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "agent-twitter-client": "0.0.17", + "glob": "11.0.0", + "zod": "3.23.8" + }, + "devDependencies": { + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/client-twitter/src/base.ts b/packages/client-twitter/src/base.ts index d9f10281cb5..a6cbb8a20be 100644 --- a/packages/client-twitter/src/base.ts +++ b/packages/client-twitter/src/base.ts @@ -177,22 +177,25 @@ export class ClientBase extends EventEmitter { elizaLogger.log("Waiting for Twitter login"); while (retries > 0) { try { - await this.twitterClient.login( - username, - password, - email, - twitter2faSecret - ); - if (await this.twitterClient.isLoggedIn()) { + if (await this.twitterClient.isLoggedIn()) { // cookies are valid, no login required elizaLogger.info("Successfully logged in."); - if (!cachedCookies) { + break; + } else { + await this.twitterClient.login( + username, + password, + email, + twitter2faSecret + ); + if (await this.twitterClient.isLoggedIn()) { // fresh login, store new cookies + elizaLogger.info("Successfully logged in."); elizaLogger.info("Caching cookies"); await this.cacheCookies( username, await this.twitterClient.getCookies() ); + break; } - break; } } catch (error) { elizaLogger.error(`Login attempt failed: ${error.message}`); diff --git a/packages/client-twitter/src/index.ts b/packages/client-twitter/src/index.ts index db522be15c8..3692525a240 100644 --- a/packages/client-twitter/src/index.ts +++ b/packages/client-twitter/src/index.ts @@ -34,12 +34,15 @@ export const TwitterClientInterface: Client = { elizaLogger.log("Twitter client started"); - const manager = new TwitterManager(runtime, this.enableSearch); + const manager = new TwitterManager(runtime, runtime.getSetting("TWITTER_SEARCH_ENABLE").toLowerCase() === "true"); await manager.client.init(); await manager.post.start(); + if (manager.search) + await manager.search.start(); + await manager.interaction.start(); await manager.search?.start(); diff --git a/packages/client-twitter/src/post.ts b/packages/client-twitter/src/post.ts index 65fe46956a5..03c332a18f8 100644 --- a/packages/client-twitter/src/post.ts +++ b/packages/client-twitter/src/post.ts @@ -161,11 +161,11 @@ export class TwitterPostClient { if ( this.runtime.getSetting("POST_IMMEDIATELY") != null && - this.runtime.getSetting("POST_IMMEDIATELY") != "" + this.runtime.getSetting("POST_IMMEDIATELY") !== "" ) { - postImmediately = parseBooleanFromText( - this.runtime.getSetting("POST_IMMEDIATELY") - ); + // Retrieve setting, default to false if not set or if the value is not "true" + postImmediately = this.runtime.getSetting("POST_IMMEDIATELY") === "true" || false; + } if (postImmediately) { @@ -184,10 +184,10 @@ export class TwitterPostClient { error ); }); + generateNewTweetLoop(); } else { elizaLogger.log("Action processing loop disabled by configuration"); } - generateNewTweetLoop(); } constructor(client: ClientBase, runtime: IAgentRuntime) { diff --git a/packages/client-twitter/src/search.ts b/packages/client-twitter/src/search.ts index 0bc917da478..8934abf72e3 100644 --- a/packages/client-twitter/src/search.ts +++ b/packages/client-twitter/src/search.ts @@ -1,5 +1,5 @@ import { SearchMode } from "agent-twitter-client"; -import { composeContext } from "@elizaos/core"; +import {composeContext, elizaLogger} from "@elizaos/core"; import { generateMessageResponse, generateText } from "@elizaos/core"; import { messageCompletionFooter } from "@elizaos/core"; import { @@ -59,10 +59,12 @@ export class TwitterSearchClient { } private engageWithSearchTermsLoop() { - this.engageWithSearchTerms(); + this.engageWithSearchTerms().then(); + const randomMinutes = (Math.floor(Math.random() * (120 - 60 + 1)) + 60); + elizaLogger.log(`Next twitter search scheduled in ${randomMinutes} minutes`); setTimeout( () => this.engageWithSearchTermsLoop(), - (Math.floor(Math.random() * (120 - 60 + 1)) + 60) * 60 * 1000 + randomMinutes * 60 * 1000 ); } diff --git a/packages/core/package.json b/packages/core/package.json index 6d999cfd2d7..835d99899bc 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,79 +1,79 @@ { - "name": "@elizaos/core", - "version": "0.1.7-alpha.1", - "description": "", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "scripts": { - "build": "tsup --format esm --dts", - "lint": "eslint --fix --cache .", - "watch": "tsc --watch", - "dev": "tsup --format esm --dts --watch", - "build:docs": "cd docs && pnpm run build", - "test": "vitest run", - "test:coverage": "vitest run --coverage", - "test:watch": "vitest" - }, - "author": "", - "license": "MIT", - "devDependencies": { - "@eslint/js": "9.16.0", - "@rollup/plugin-commonjs": "25.0.8", - "@rollup/plugin-json": "6.1.0", - "@rollup/plugin-node-resolve": "15.3.0", - "@rollup/plugin-replace": "5.0.7", - "@rollup/plugin-terser": "0.1.0", - "@rollup/plugin-typescript": "11.1.6", - "@solana/web3.js": "1.95.8", - "@types/fluent-ffmpeg": "2.1.27", - "@types/jest": "29.5.14", - "@types/mocha": "10.0.10", - "@types/node": "22.8.4", - "@types/pdfjs-dist": "2.10.378", - "@types/tar": "6.1.13", - "@types/wav-encoder": "1.3.3", - "@typescript-eslint/eslint-plugin": "8.16.0", - "@typescript-eslint/parser": "8.16.0", - "@vitest/coverage-v8": "2.1.5", - "dotenv": "16.4.5", - "jest": "29.7.0", - "lint-staged": "15.2.10", - "nodemon": "3.1.7", - "pm2": "5.4.3", - "rimraf": "6.0.1", - "rollup": "2.79.2", - "ts-jest": "29.2.5", - "ts-node": "10.9.2", - "tslib": "2.8.1", - "tsup": "8.3.5", - "typescript": "5.6.3" - }, - "dependencies": { - "@ai-sdk/anthropic": "0.0.56", - "@ai-sdk/google": "0.0.55", - "@ai-sdk/google-vertex": "0.0.43", - "@ai-sdk/groq": "0.0.3", - "@ai-sdk/openai": "1.0.5", - "@anthropic-ai/sdk": "0.30.1", - "@fal-ai/client": "1.2.0", - "@types/uuid": "10.0.0", - "ai": "3.4.33", - "anthropic-vertex-ai": "1.0.2", - "fastembed": "1.14.1", - "fastestsmallesttextencoderdecoder": "1.0.22", - "gaxios": "6.7.1", - "glob": "11.0.0", - "handlebars": "^4.7.8", - "js-sha1": "0.7.0", - "js-tiktoken": "1.0.15", - "langchain": "0.3.6", - "ollama-ai-provider": "0.16.1", - "openai": "4.73.0", - "tinyld": "1.3.4", - "together-ai": "0.7.0", - "unique-names-generator": "4.7.1", - "uuid": "11.0.3", - "zod": "3.23.8" - } + "name": "@elizaos/core", + "version": "0.1.7-alpha.1", + "description": "", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsup --format esm --dts", + "lint": "eslint --fix --cache .", + "watch": "tsc --watch", + "dev": "tsup --format esm --dts --watch", + "build:docs": "cd docs && pnpm run build", + "test": "vitest run", + "test:coverage": "vitest run --coverage", + "test:watch": "vitest" + }, + "author": "", + "license": "MIT", + "devDependencies": { + "@eslint/js": "9.16.0", + "@rollup/plugin-commonjs": "25.0.8", + "@rollup/plugin-json": "6.1.0", + "@rollup/plugin-node-resolve": "15.3.0", + "@rollup/plugin-replace": "5.0.7", + "@rollup/plugin-terser": "0.1.0", + "@rollup/plugin-typescript": "11.1.6", + "@solana/web3.js": "1.95.8", + "@types/fluent-ffmpeg": "2.1.27", + "@types/jest": "29.5.14", + "@types/mocha": "10.0.10", + "@types/node": "22.8.4", + "@types/pdfjs-dist": "2.10.378", + "@types/tar": "6.1.13", + "@types/wav-encoder": "1.3.3", + "@typescript-eslint/eslint-plugin": "8.16.0", + "@typescript-eslint/parser": "8.16.0", + "@vitest/coverage-v8": "2.1.5", + "dotenv": "16.4.5", + "jest": "29.7.0", + "lint-staged": "15.2.10", + "nodemon": "3.1.7", + "pm2": "5.4.3", + "rimraf": "6.0.1", + "rollup": "2.79.2", + "ts-jest": "29.2.5", + "ts-node": "10.9.2", + "tslib": "2.8.1", + "tsup": "8.3.5", + "typescript": "5.6.3" + }, + "dependencies": { + "@ai-sdk/anthropic": "0.0.56", + "@ai-sdk/google": "0.0.55", + "@ai-sdk/google-vertex": "0.0.43", + "@ai-sdk/groq": "0.0.3", + "@ai-sdk/openai": "1.0.5", + "@anthropic-ai/sdk": "0.30.1", + "@fal-ai/client": "1.2.0", + "@types/uuid": "10.0.0", + "ai": "3.4.33", + "anthropic-vertex-ai": "1.0.2", + "fastembed": "1.14.1", + "fastestsmallesttextencoderdecoder": "1.0.22", + "gaxios": "6.7.1", + "glob": "11.0.0", + "handlebars": "^4.7.8", + "js-sha1": "0.7.0", + "js-tiktoken": "1.0.15", + "langchain": "0.3.6", + "ollama-ai-provider": "0.16.1", + "openai": "4.73.0", + "tinyld": "1.3.4", + "together-ai": "0.7.0", + "unique-names-generator": "4.7.1", + "uuid": "11.0.3", + "zod": "3.23.8" + } } diff --git a/packages/core/src/context.ts b/packages/core/src/context.ts index 190a876edd6..a682e6794c8 100644 --- a/packages/core/src/context.ts +++ b/packages/core/src/context.ts @@ -1,5 +1,6 @@ import handlebars from "handlebars"; import { type State } from "./types.ts"; +import { names, uniqueNamesGenerator } from "unique-names-generator"; /** * Composes a context string by replacing placeholders in a template with corresponding values from the state. @@ -69,3 +70,35 @@ export const composeContext = ({ export const addHeader = (header: string, body: string) => { return body.length > 0 ? `${header ? header + "\n" : header}${body}\n` : ""; }; + +/** + * Generates a string with random user names populated in a template. + * + * This function generates a specified number of random user names and populates placeholders + * in the provided template with these names. Placeholders in the template should follow the format `{{userX}}` + * where `X` is the position of the user (e.g., `{{user1}}`, `{{user2}}`). + * + * @param {string} params.template - The template string containing placeholders for random user names. + * @param {number} params.length - The number of random user names to generate. + * @returns {string} The template string with placeholders replaced by random user names. + * + * @example + * // Given a template and a length + * const template = "Hello, {{user1}}! Meet {{user2}} and {{user3}}."; + * const length = 3; + * + * // Composing the random user string will result in: + * // "Hello, John! Meet Alice and Bob." + * const result = composeRandomUser({ template, length }); + */ +export const composeRandomUser = (template: string, length: number) => { + const exampleNames = Array.from({ length }, () => + uniqueNamesGenerator({ dictionaries: [names] }) + ); + let result = template; + for (let i = 0; i < exampleNames.length; i++) { + result = result.replaceAll(`{{user${i + 1}}}`, exampleNames[i]); + } + + return result; +}; diff --git a/packages/core/src/embedding.ts b/packages/core/src/embedding.ts index 49c1a4163c2..767b6b5673b 100644 --- a/packages/core/src/embedding.ts +++ b/packages/core/src/embedding.ts @@ -14,14 +14,36 @@ interface EmbeddingOptions { provider?: string; } -// Add the embedding configuration -export const getEmbeddingConfig = () => ({ +export const EmbeddingProvider = { + OpenAI: "OpenAI", + Ollama: "Ollama", + GaiaNet: "GaiaNet", + BGE: "BGE", +} as const; + +export type EmbeddingProvider = + (typeof EmbeddingProvider)[keyof typeof EmbeddingProvider]; + +export namespace EmbeddingProvider { + export type OpenAI = typeof EmbeddingProvider.OpenAI; + export type Ollama = typeof EmbeddingProvider.Ollama; + export type GaiaNet = typeof EmbeddingProvider.GaiaNet; + export type BGE = typeof EmbeddingProvider.BGE; +} + +export type EmbeddingConfig = { + readonly dimensions: number; + readonly model: string; + readonly provider: EmbeddingProvider; +}; + +export const getEmbeddingConfig = (): EmbeddingConfig => ({ dimensions: settings.USE_OPENAI_EMBEDDING?.toLowerCase() === "true" ? 1536 // OpenAI : settings.USE_OLLAMA_EMBEDDING?.toLowerCase() === "true" ? 1024 // Ollama mxbai-embed-large - :settings.USE_GAIANET_EMBEDDING?.toLowerCase() === "true" + : settings.USE_GAIANET_EMBEDDING?.toLowerCase() === "true" ? 768 // GaiaNet : 384, // BGE model: @@ -171,7 +193,7 @@ export async function embed(runtime: IAgentRuntime, input: string) { const isNode = typeof process !== "undefined" && process.versions?.node; // Determine which embedding path to use - if (config.provider === "OpenAI") { + if (config.provider === EmbeddingProvider.OpenAI) { return await getRemoteEmbedding(input, { model: config.model, endpoint: "https://api.openai.com/v1", @@ -180,7 +202,7 @@ export async function embed(runtime: IAgentRuntime, input: string) { }); } - if (config.provider === "Ollama") { + if (config.provider === EmbeddingProvider.Ollama) { return await getRemoteEmbedding(input, { model: config.model, endpoint: @@ -191,7 +213,7 @@ export async function embed(runtime: IAgentRuntime, input: string) { }); } - if (config.provider=="GaiaNet") { + if (config.provider == EmbeddingProvider.GaiaNet) { return await getRemoteEmbedding(input, { model: config.model, endpoint: @@ -252,9 +274,11 @@ export async function embed(runtime: IAgentRuntime, input: string) { return await import("fastembed"); } catch { elizaLogger.error("Failed to load fastembed."); - throw new Error("fastembed import failed, falling back to remote embedding"); + throw new Error( + "fastembed import failed, falling back to remote embedding" + ); } - })() + })(), ]); const [fs, { fileURLToPath }, fastEmbed] = moduleImports; diff --git a/packages/core/src/generation.ts b/packages/core/src/generation.ts index 167ee9447ff..657ace24b0f 100644 --- a/packages/core/src/generation.ts +++ b/packages/core/src/generation.ts @@ -935,6 +935,8 @@ export const generateImage = async ( seed?: number; modelId?: string; jobId?: string; + stylePreset?: string; + hideWatermark?: boolean; }, runtime: IAgentRuntime ): Promise<{ @@ -950,14 +952,30 @@ export const generateImage = async ( }); const apiKey = - runtime.imageModelProvider === runtime.modelProvider - ? runtime.token - : (runtime.getSetting("HEURIST_API_KEY") ?? - runtime.getSetting("TOGETHER_API_KEY") ?? - runtime.getSetting("FAL_API_KEY") ?? - runtime.getSetting("OPENAI_API_KEY") ?? - runtime.getSetting("VENICE_API_KEY")); - + runtime.imageModelProvider === runtime.modelProvider + ? runtime.token + : (() => { + // First try to match the specific provider + switch (runtime.imageModelProvider) { + case ModelProviderName.HEURIST: + return runtime.getSetting("HEURIST_API_KEY"); + case ModelProviderName.TOGETHER: + return runtime.getSetting("TOGETHER_API_KEY"); + case ModelProviderName.FAL: + return runtime.getSetting("FAL_API_KEY"); + case ModelProviderName.OPENAI: + return runtime.getSetting("OPENAI_API_KEY"); + case ModelProviderName.VENICE: + return runtime.getSetting("VENICE_API_KEY"); + default: + // If no specific match, try the fallback chain + return (runtime.getSetting("HEURIST_API_KEY") ?? + runtime.getSetting("TOGETHER_API_KEY") ?? + runtime.getSetting("FAL_API_KEY") ?? + runtime.getSetting("OPENAI_API_KEY") ?? + runtime.getSetting("VENICE_API_KEY")); + } + })(); try { if (runtime.imageModelProvider === ModelProviderName.HEURIST) { const response = await fetch( @@ -1121,9 +1139,12 @@ export const generateImage = async ( model: data.modelId || "fluently-xl", prompt: data.prompt, negative_prompt: data.negativePrompt, - width: data.width || 1024, - height: data.height || 1024, - steps: data.numIterations || 20, + width: data.width, + height: data.height, + steps: data.numIterations, + seed: data.seed, + style_preset: data.stylePreset, + hide_watermark: data.hideWatermark, }), } ); diff --git a/packages/core/src/parsing.ts b/packages/core/src/parsing.ts index cc85352202c..fb516989b4c 100644 --- a/packages/core/src/parsing.ts +++ b/packages/core/src/parsing.ts @@ -32,7 +32,7 @@ export const parseShouldRespondFromText = ( : null; }; -export const booleanFooter = `Respond with a YES or a NO.`; +export const booleanFooter = `Respond with only a YES or a NO.`; export const parseBooleanFromText = (text: string) => { const match = text.match(/^(YES|NO)$/i); diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 8bb331e8977..5f83e29c667 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -707,6 +707,20 @@ export type Character = { settings?: { secrets?: { [key: string]: string }; intiface?: boolean; + imageSettings?: { + steps?: number; + width?: number; + height?: number; + negativePrompt?: string; + numIterations?: number; + guidanceScale?: number; + seed?: number; + modelId?: string; + jobId?: string; + count?: number; + stylePreset?: string; + hideWatermark?: boolean; + }; voice?: { model?: string; // For VITS url?: string; // Legacy VITS support diff --git a/packages/create-eliza-app/package.json b/packages/create-eliza-app/package.json index 6df675bce47..a259f0ce480 100644 --- a/packages/create-eliza-app/package.json +++ b/packages/create-eliza-app/package.json @@ -1,31 +1,31 @@ { - "name": "create-eliza-app", - "version": "0.1.7-alpha.1", - "description": "", - "sideEffects": false, - "files": [ - "dist" - ], - "main": "dist/index.cjs", - "bin": { - "create-eliza-app": "dist/index.mjs" - }, - "scripts": { - "build": "unbuild", - "lint": "eslint --fix --cache .", - "start": "node ./dist/index.cjs", - "automd": "automd" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "citty": "0.1.6", - "giget": "1.2.3" - }, - "devDependencies": { - "automd": "0.3.12", - "jiti": "2.4.0", - "unbuild": "2.0.0" - } + "name": "create-eliza-app", + "version": "0.1.7-alpha.1", + "description": "", + "sideEffects": false, + "files": [ + "dist" + ], + "main": "dist/index.cjs", + "bin": { + "create-eliza-app": "dist/index.mjs" + }, + "scripts": { + "build": "unbuild", + "lint": "eslint --fix --cache .", + "start": "node ./dist/index.cjs", + "automd": "automd" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "citty": "0.1.6", + "giget": "1.2.3" + }, + "devDependencies": { + "automd": "0.3.12", + "jiti": "2.4.0", + "unbuild": "2.0.0" + } } diff --git a/packages/plugin-0g/package.json b/packages/plugin-0g/package.json index fda7f17ea5f..5561a2fc147 100644 --- a/packages/plugin-0g/package.json +++ b/packages/plugin-0g/package.json @@ -1,18 +1,18 @@ { - "name": "@elizaos/plugin-0g", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@0glabs/0g-ts-sdk": "0.2.1", - "@elizaos/core": "workspace:*", - "ethers": "6.13.4", - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "test": "vitest" - } + "name": "@elizaos/plugin-0g", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@0glabs/0g-ts-sdk": "0.2.1", + "@elizaos/core": "workspace:*", + "ethers": "6.13.4", + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "test": "vitest" + } } diff --git a/packages/plugin-abstract/package.json b/packages/plugin-abstract/package.json new file mode 100644 index 00000000000..a35eeb128c1 --- /dev/null +++ b/packages/plugin-abstract/package.json @@ -0,0 +1,19 @@ +{ + "name": "@elizaos/plugin-abstract", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "tsup": "^8.3.5", + "web3": "^4.15.0", + "viem": "2.21.53" + }, + "scripts": { + "build": "tsup --format esm --dts" + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } +} diff --git a/packages/plugin-abstract/src/actions/transfer.ts b/packages/plugin-abstract/src/actions/transfer.ts new file mode 100644 index 00000000000..24725815e77 --- /dev/null +++ b/packages/plugin-abstract/src/actions/transfer.ts @@ -0,0 +1,257 @@ +import { + ActionExample, + Content, + HandlerCallback, + IAgentRuntime, + Memory, + ModelClass, + State, + type Action, + elizaLogger, + composeContext, + generateObject, +} from "@elizaos/core"; +import { validateAbstractConfig } from "../environment"; + +import { Address, createWalletClient, erc20Abi, http, parseEther } from "viem"; +import { abstractTestnet } from "viem/chains"; +import { privateKeyToAccount } from "viem/accounts"; +import { eip712WalletActions } from "viem/zksync"; +import { z } from "zod"; + +const TransferSchema = z.object({ + tokenAddress: z.string(), + recipient: z.string(), + amount: z.string(), +}); + +export interface TransferContent extends Content { + tokenAddress: string; + recipient: string; + amount: string | number; +} + +export function isTransferContent( + content: TransferContent +): content is TransferContent { + // Validate types + const validTypes = + typeof content.tokenAddress === "string" && + typeof content.recipient === "string" && + (typeof content.amount === "string" || + typeof content.amount === "number"); + if (!validTypes) { + return false; + } + + // Validate addresses + const validAddresses = + content.tokenAddress.startsWith("0x") && + content.tokenAddress.length === 42 && + content.recipient.startsWith("0x") && + content.recipient.length === 42; + + return validAddresses; +} + +const transferTemplate = `Respond with a JSON markdown block containing only the extracted values. Use null for any values that cannot be determined. + +Here are several frequently used addresses. Use these for the corresponding tokens: +- ETH/eth: 0x000000000000000000000000000000000000800A +- USDC/usdc: 0xe4c7fbb0a626ed208021ccaba6be1566905e2dfc + +Example response: +\`\`\`json +{ + "tokenAddress": "0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E", + "recipient": "0xCCa8009f5e09F8C5dB63cb0031052F9CB635Af62", + "amount": "1000" +} +\`\`\` + +{{recentMessages}} + +Given the recent messages, extract the following information about the requested token transfer: +- Token contract address +- Recipient wallet address +- Amount to transfer + +Respond with a JSON markdown block containing only the extracted values.`; + +const ETH_ADDRESS = "0x000000000000000000000000000000000000800A"; +const ERC20_OVERRIDE_INFO = { + "0xe4c7fbb0a626ed208021ccaba6be1566905e2dfc": { + name: "USDC", + decimals: 6, + }, +}; + +export default { + name: "SEND_TOKEN", + similes: [ + "TRANSFER_TOKEN_ON_ABSTRACT", + "TRANSFER_TOKENS_ON_ABSTRACT", + "SEND_TOKENS_ON_ABSTRACT", + "SEND_ETH_ON_ABSTRACT", + "PAY_ON_ABSTRACT", + "MOVE_TOKENS_ON_ABSTRACT", + "MOVE_ETH_ON_ABSTRACT", + ], + validate: async (runtime: IAgentRuntime, message: Memory) => { + await validateAbstractConfig(runtime); + return true; + }, + description: "Transfer tokens from the agent's wallet to another address", + handler: async ( + runtime: IAgentRuntime, + message: Memory, + state: State, + _options: { [key: string]: unknown }, + callback?: HandlerCallback + ): Promise => { + elizaLogger.log("Starting Abstract SEND_TOKEN handler..."); + + // Initialize or update state + if (!state) { + state = (await runtime.composeState(message)) as State; + } else { + state = await runtime.updateRecentMessageState(state); + } + + // Compose transfer context + const transferContext = composeContext({ + state, + template: transferTemplate, + }); + + // Generate transfer content + const content = ( + await generateObject({ + runtime, + context: transferContext, + modelClass: ModelClass.SMALL, + schema: TransferSchema, + }) + ).object as unknown as TransferContent; + + // Validate transfer content + if (!isTransferContent(content)) { + console.error("Invalid content for TRANSFER_TOKEN action."); + if (callback) { + callback({ + text: "Unable to process transfer request. Invalid content provided.", + content: { error: "Invalid transfer content" }, + }); + } + return false; + } + + try { + const PRIVATE_KEY = runtime.getSetting("ABSTRACT_PRIVATE_KEY")!; + const account = privateKeyToAccount(`0x${PRIVATE_KEY}`); + + const walletClient = createWalletClient({ + chain: abstractTestnet, + transport: http(), + }).extend(eip712WalletActions()); + + let hash; + if ( + content.tokenAddress.toLowerCase() !== ETH_ADDRESS.toLowerCase() + ) { + // Convert amount to proper token decimals + const tokenInfo = + ERC20_OVERRIDE_INFO[content.tokenAddress.toLowerCase()]; + const decimals = tokenInfo?.decimals ?? 18; // Default to 18 decimals if not specified + const tokenAmount = + BigInt(content.amount) * BigInt(10 ** decimals); + + // Execute ERC20 transfer + hash = await walletClient.writeContract({ + account, + chain: abstractTestnet, + address: content.tokenAddress as Address, + abi: erc20Abi, + functionName: "transfer", + args: [content.recipient as Address, tokenAmount], + }); + } else { + hash = await walletClient.sendTransaction({ + account: account, + chain: abstractTestnet, + to: content.recipient as Address, + value: parseEther(content.amount.toString()), + kzg: undefined, + }); + } + + elizaLogger.success( + "Transfer completed successfully! Transaction hash: " + hash + ); + if (callback) { + callback({ + text: + "Transfer completed successfully! Transaction hash: " + + hash, + content: {}, + }); + } + + return true; + } catch (error) { + elizaLogger.error("Error during token transfer:", error); + if (callback) { + callback({ + text: `Error transferring tokens: ${error.message}`, + content: { error: error.message }, + }); + } + return false; + } + }, + + examples: [ + [ + { + user: "{{user1}}", + content: { + text: "Send 100 USDC to 0xCCa8009f5e09F8C5dB63cb0031052F9CB635Af62", + }, + }, + { + user: "{{agent}}", + content: { + text: "Sure, I'll send 100 USDC to that address now.", + action: "SEND_TOKEN", + }, + }, + { + user: "{{agent}}", + content: { + text: "Successfully sent 100 USDC to 0xCCa8009f5e09F8C5dB63cb0031052F9CB635Af62\nTransaction: 0x4fed598033f0added272c3ddefd4d83a521634a738474400b27378db462a76ec", + }, + }, + ], + [ + { + user: "{{user1}}", + content: { + text: "Please send 0.1 ETH to 0xbD8679cf79137042214fA4239b02F4022208EE82", + }, + }, + { + user: "{{agent}}", + content: { + text: "Of course. Sending 0.1 ETH to that address now.", + action: "SEND_TOKEN", + }, + }, + { + user: "{{agent}}", + content: { + text: "Successfully sent 0.1 ETH to 0xbD8679cf79137042214fA4239b02F4022208EE82\nTransaction: 0x0b9f23e69ea91ba98926744472717960cc7018d35bc3165bdba6ae41670da0f0", + }, + }, + ], + ] as ActionExample[][], +} as Action; diff --git a/packages/plugin-abstract/src/environment.ts b/packages/plugin-abstract/src/environment.ts new file mode 100644 index 00000000000..e7801fc409b --- /dev/null +++ b/packages/plugin-abstract/src/environment.ts @@ -0,0 +1,32 @@ +import { IAgentRuntime } from "@elizaos/core"; +import { z } from "zod"; + +export const abstractEnvSchema = z.object({ + ABSTRACT_ADDRESS: z.string().min(1, "Abstract address is required"), + ABSTRACT_PRIVATE_KEY: z.string().min(1, "Abstract private key is required"), +}); + +export type AbstractConfig = z.infer; + +export async function validateAbstractConfig( + runtime: IAgentRuntime +): Promise { + try { + const config = { + ABSTRACT_ADDRESS: runtime.getSetting("ABSTRACT_ADDRESS"), + ABSTRACT_PRIVATE_KEY: runtime.getSetting("ABSTRACT_PRIVATE_KEY"), + }; + + return abstractEnvSchema.parse(config); + } catch (error) { + if (error instanceof z.ZodError) { + const errorMessages = error.errors + .map((err) => `${err.path.join(".")}: ${err.message}`) + .join("\n"); + throw new Error( + `Abstract configuration validation failed:\n${errorMessages}` + ); + } + throw error; + } +} diff --git a/packages/plugin-abstract/src/index.ts b/packages/plugin-abstract/src/index.ts new file mode 100644 index 00000000000..4fc47c94705 --- /dev/null +++ b/packages/plugin-abstract/src/index.ts @@ -0,0 +1,13 @@ +import { Plugin } from "@elizaos/core"; + +import transfer from "./actions/transfer.ts"; + +export const abstractPlugin: Plugin = { + name: "abstract", + description: "Abstract Plugin for Eliza", + actions: [transfer], + evaluators: [], + providers: [], +}; + +export default abstractPlugin; diff --git a/packages/plugin-abstract/tsconfig.json b/packages/plugin-abstract/tsconfig.json new file mode 100644 index 00000000000..73993deaaf7 --- /dev/null +++ b/packages/plugin-abstract/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../core/tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src" + }, + "include": [ + "src/**/*.ts" + ] +} \ No newline at end of file diff --git a/packages/plugin-abstract/tsup.config.ts b/packages/plugin-abstract/tsup.config.ts new file mode 100644 index 00000000000..e42bf4efeae --- /dev/null +++ b/packages/plugin-abstract/tsup.config.ts @@ -0,0 +1,20 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + outDir: "dist", + sourcemap: true, + clean: true, + format: ["esm"], // Ensure you're targeting CommonJS + external: [ + "dotenv", // Externalize dotenv to prevent bundling + "fs", // Externalize fs to use Node.js built-in module + "path", // Externalize other built-ins if necessary + "@reflink/reflink", + "@node-llama-cpp", + "https", + "http", + "agentkeepalive", + // Add other modules you want to externalize + ], +}); diff --git a/packages/plugin-aptos/package.json b/packages/plugin-aptos/package.json index 60f0b5ae9b7..9fa49d52564 100644 --- a/packages/plugin-aptos/package.json +++ b/packages/plugin-aptos/package.json @@ -1,26 +1,26 @@ { - "name": "@elizaos/plugin-aptos", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@aptos-labs/ts-sdk": "^1.26.0", - "bignumber": "1.1.0", - "bignumber.js": "9.1.2", - "node-cache": "5.1.2", - "tsup": "8.3.5", - "vitest": "2.1.4" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache .", - "test": "vitest run" - }, - "peerDependencies": { - "form-data": "4.0.1", - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-aptos", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@aptos-labs/ts-sdk": "^1.26.0", + "bignumber": "1.1.0", + "bignumber.js": "9.1.2", + "node-cache": "5.1.2", + "tsup": "8.3.5", + "vitest": "2.1.4" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache .", + "test": "vitest run" + }, + "peerDependencies": { + "form-data": "4.0.1", + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-bootstrap/package.json b/packages/plugin-bootstrap/package.json index 7672d271899..aec3d90c7f0 100644 --- a/packages/plugin-bootstrap/package.json +++ b/packages/plugin-bootstrap/package.json @@ -1,19 +1,19 @@ { - "name": "@elizaos/plugin-bootstrap", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-bootstrap", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-coinbase/advanced-sdk-ts/package.json b/packages/plugin-coinbase/advanced-sdk-ts/package.json index 78480e529e8..52e42a7e897 100644 --- a/packages/plugin-coinbase/advanced-sdk-ts/package.json +++ b/packages/plugin-coinbase/advanced-sdk-ts/package.json @@ -1,34 +1,34 @@ { - "name": "@coinbase-samples/advanced-sdk-ts", - "version": "0.1.0", - "main": "dist/main.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "build": "tsc", - "lint": "eslint . --ext .js,.ts", - "format": "prettier --write \"**/*.{js,ts,tsx,json,css,md}\"" - }, - "files": [ - "dist/" - ], - "keywords": [], - "author": "", - "license": "ISC", - "description": "", - "dependencies": { - "jsonwebtoken": "^9.0.2", - "node-fetch": "^2.6.1" - }, - "devDependencies": { - "@types/jsonwebtoken": "^9.0.7", - "@types/node-fetch": "^2.6.11", - "@typescript-eslint/eslint-plugin": "^5.59.0", - "@typescript-eslint/parser": "^5.59.0", - "dotenv": "^16.4.5", - "eslint": "^8.35.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.8", - "typescript": "^5.5.4" - } + "name": "@coinbase-samples/advanced-sdk-ts", + "version": "0.1.0", + "main": "dist/main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build": "tsc", + "lint": "eslint . --ext .js,.ts", + "format": "prettier --write \"**/*.{js,ts,tsx,json,css,md}\"" + }, + "files": [ + "dist/" + ], + "keywords": [], + "author": "", + "license": "ISC", + "description": "", + "dependencies": { + "jsonwebtoken": "^9.0.2", + "node-fetch": "^2.6.1" + }, + "devDependencies": { + "@types/jsonwebtoken": "^9.0.7", + "@types/node-fetch": "^2.6.11", + "@typescript-eslint/eslint-plugin": "^5.59.0", + "@typescript-eslint/parser": "^5.59.0", + "dotenv": "^16.4.5", + "eslint": "^8.35.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-prettier": "^4.2.1", + "prettier": "^2.8.8", + "typescript": "^5.5.4" + } } diff --git a/packages/plugin-coinbase/package.json b/packages/plugin-coinbase/package.json index cc5f839009a..ea5fc503a32 100644 --- a/packages/plugin-coinbase/package.json +++ b/packages/plugin-coinbase/package.json @@ -1,24 +1,24 @@ { - "name": "@elizaos/plugin-coinbase", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "coinbase-api": "1.0.5", - "coinbase-advanced-sdk": "file:../../packages/plugin-coinbase/advanced-sdk-ts", - "jsonwebtoken": "^9.0.2", - "@types/jsonwebtoken": "^9.0.7", - "node-fetch": "^2.6.1" - }, - "devDependencies": { - "tsup": "8.3.5", - "@types/node": "^20.0.0" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." - } + "name": "@elizaos/plugin-coinbase", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "coinbase-api": "1.0.5", + "coinbase-advanced-sdk": "file:../../packages/plugin-coinbase/advanced-sdk-ts", + "jsonwebtoken": "^9.0.2", + "@types/jsonwebtoken": "^9.0.7", + "node-fetch": "^2.6.1" + }, + "devDependencies": { + "tsup": "8.3.5", + "@types/node": "^20.0.0" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + } } diff --git a/packages/plugin-coinbase/src/plugins/advancedTrade.ts b/packages/plugin-coinbase/src/plugins/advancedTrade.ts index 8b70a76e438..3e26e78ac08 100644 --- a/packages/plugin-coinbase/src/plugins/advancedTrade.ts +++ b/packages/plugin-coinbase/src/plugins/advancedTrade.ts @@ -34,6 +34,7 @@ const tradeCsvFilePath = path.join(baseDir, "advanced_trades.csv"); const tradeProvider: Provider = { get: async (runtime: IAgentRuntime, _message: Memory) => { + elizaLogger.debug("Starting tradeProvider function"); try { const client = new RESTClient( runtime.getSetting("COINBASE_API_KEY") ?? @@ -103,6 +104,7 @@ const tradeProvider: Provider = { }; export async function appendTradeToCsv(tradeResult: any) { + elizaLogger.debug("Starting appendTradeToCsv function"); try { const csvWriter = createArrayCsvWriter({ path: tradeCsvFilePath, @@ -139,6 +141,7 @@ async function hasEnoughBalance( amount: number, side: string ): Promise { + elizaLogger.debug("Starting hasEnoughBalance function"); try { const response = await client.listAccounts({}); const accounts = JSON.parse(response); @@ -216,6 +219,7 @@ export const executeAdvancedTradeAction: Action = { let client: RESTClient; // Initialize client + elizaLogger.debug("Starting advanced trade client initialization"); try { client = new RESTClient( runtime.getSetting("COINBASE_API_KEY") ?? @@ -237,6 +241,7 @@ export const executeAdvancedTradeAction: Action = { // Generate trade details let tradeDetails; + elizaLogger.debug("Starting trade details generation"); try { tradeDetails = await generateObject({ runtime, @@ -276,6 +281,7 @@ export const executeAdvancedTradeAction: Action = { // Configure order let orderConfiguration: OrderConfiguration; + elizaLogger.debug("Starting order configuration"); try { if (orderType === "MARKET") { orderConfiguration = @@ -323,6 +329,7 @@ export const executeAdvancedTradeAction: Action = { // Execute trade let order: CreateOrderResponse; try { + elizaLogger.debug("Executing the trade"); if ( !(await hasEnoughBalance( client, diff --git a/packages/plugin-coinbase/src/plugins/commerce.ts b/packages/plugin-coinbase/src/plugins/commerce.ts index 411aea6015c..7dacdc0fcb6 100644 --- a/packages/plugin-coinbase/src/plugins/commerce.ts +++ b/packages/plugin-coinbase/src/plugins/commerce.ts @@ -30,6 +30,7 @@ interface ChargeRequest { } export async function createCharge(apiKey: string, params: ChargeRequest) { + elizaLogger.debug("Starting createCharge function"); try { const response = await fetch(url, { method: "POST", @@ -47,13 +48,14 @@ export async function createCharge(apiKey: string, params: ChargeRequest) { const data = await response.json(); return data.data; } catch (error) { - console.error("Error creating charge:", error); + elizaLogger.error("Error creating charge:", error); throw error; } } // Function to fetch all charges export async function getAllCharges(apiKey: string) { + elizaLogger.debug("Starting getAllCharges function"); try { const response = await fetch(url, { method: "GET", @@ -72,13 +74,14 @@ export async function getAllCharges(apiKey: string) { const data = await response.json(); return data.data; } catch (error) { - console.error("Error fetching charges:", error); + elizaLogger.error("Error fetching charges:", error); throw error; } } // Function to fetch details of a specific charge export async function getChargeDetails(apiKey: string, chargeId: string) { + elizaLogger.debug("Starting getChargeDetails function"); const getUrl = `${url}${chargeId}`; try { @@ -99,7 +102,7 @@ export async function getChargeDetails(apiKey: string, chargeId: string) { const data = await response.json(); return data; } catch (error) { - console.error( + elizaLogger.error( `Error fetching charge details for ID ${chargeId}:`, error ); @@ -140,7 +143,7 @@ export const createCoinbaseChargeAction: Action = { _options: any, callback: HandlerCallback ) => { - elizaLogger.log("Composing state for message:", message); + elizaLogger.info("Composing state for message:", message); if (!state) { state = (await runtime.composeState(message)) as State; } else { @@ -172,10 +175,10 @@ export const createCoinbaseChargeAction: Action = { return; } - elizaLogger.log("Charge details received:", chargeDetails); + elizaLogger.info("Charge details received:", chargeDetails); // Initialize Coinbase Commerce client - + elizaLogger.debug("Starting Coinbase Commerce client initialization"); try { // Create a charge const chargeResponse = await createCharge( @@ -191,7 +194,7 @@ export const createCoinbaseChargeAction: Action = { } ); - elizaLogger.log( + elizaLogger.info( "Coinbase Commerce charge created:", chargeResponse ); @@ -333,7 +336,7 @@ export const getAllChargesAction: Action = { callback: HandlerCallback ) => { try { - elizaLogger.log("Composing state for message:", message); + elizaLogger.info("Composing state for message:", message); if (!state) { state = (await runtime.composeState(message)) as State; } else { @@ -343,7 +346,7 @@ export const getAllChargesAction: Action = { runtime.getSetting("COINBASE_COMMERCE_KEY") ); - elizaLogger.log("Fetched all charges:", charges); + elizaLogger.info("Fetched all charges:", charges); callback( { @@ -397,7 +400,7 @@ export const getChargeDetailsAction: Action = { _options: any, callback: HandlerCallback ) => { - elizaLogger.log("Composing state for message:", message); + elizaLogger.info("Composing state for message:", message); if (!state) { state = (await runtime.composeState(message)) as State; } else { @@ -434,7 +437,7 @@ export const getChargeDetailsAction: Action = { charge.id ); - elizaLogger.log("Fetched charge details:", chargeDetails); + elizaLogger.info("Fetched charge details:", chargeDetails); callback( { @@ -486,6 +489,7 @@ export const getChargeDetailsAction: Action = { export const chargeProvider: Provider = { get: async (runtime: IAgentRuntime, _message: Memory) => { + elizaLogger.debug("Starting chargeProvider.get function"); const charges = await getAllCharges( runtime.getSetting("COINBASE_COMMERCE_KEY") ); @@ -504,8 +508,8 @@ export const chargeProvider: Provider = { privateKey: coinbasePrivateKey, }); const { balances, transactions } = await getWalletDetails(runtime); - elizaLogger.log("Current Balances:", balances); - elizaLogger.log("Last Transactions:", transactions); + elizaLogger.info("Current Balances:", balances); + elizaLogger.info("Last Transactions:", transactions); } const formattedCharges = charges.map((charge) => ({ id: charge.id, @@ -513,7 +517,7 @@ export const chargeProvider: Provider = { description: charge.description, pricing: charge.pricing, })); - elizaLogger.log("Charges:", formattedCharges); + elizaLogger.info("Charges:", formattedCharges); return { charges: formattedCharges, balances, transactions }; }, }; diff --git a/packages/plugin-coinbase/src/plugins/massPayments.ts b/packages/plugin-coinbase/src/plugins/massPayments.ts index 6eca0849679..70e65d17fc8 100644 --- a/packages/plugin-coinbase/src/plugins/massPayments.ts +++ b/packages/plugin-coinbase/src/plugins/massPayments.ts @@ -41,6 +41,7 @@ const csvFilePath = path.join(baseDir, "transactions.csv"); export const massPayoutProvider: Provider = { get: async (runtime: IAgentRuntime, _message: Memory) => { + elizaLogger.debug("Starting massPayoutProvider.get function"); try { Coinbase.configure({ apiKeyName: @@ -50,7 +51,7 @@ export const massPayoutProvider: Provider = { runtime.getSetting("COINBASE_PRIVATE_KEY") ?? process.env.COINBASE_PRIVATE_KEY, }); - elizaLogger.log("Reading CSV file from:", csvFilePath); + elizaLogger.info("Reading CSV file from:", csvFilePath); // Ensure the CSV file exists if (!fs.existsSync(csvFilePath)) { @@ -66,7 +67,7 @@ export const massPayoutProvider: Provider = { ], }); await csvWriter.writeRecords([]); // Create an empty file with headers - elizaLogger.log("New CSV file created with headers."); + elizaLogger.info("New CSV file created with headers."); } // Read and parse the CSV file @@ -78,9 +79,9 @@ export const massPayoutProvider: Provider = { const { balances, transactions } = await getWalletDetails(runtime); - elizaLogger.log("Parsed CSV records:", records); - elizaLogger.log("Current Balances:", balances); - elizaLogger.log("Last Transactions:", transactions); + elizaLogger.info("Parsed CSV records:", records); + elizaLogger.info("Current Balances:", balances); + elizaLogger.info("Last Transactions:", transactions); return { currentTransactions: records.map((record: any) => ({ @@ -107,17 +108,19 @@ async function executeMassPayout( transferAmount: number, assetId: string ): Promise { + elizaLogger.debug("Starting executeMassPayout function"); const transactions: Transaction[] = []; const assetIdLowercase = assetId.toLowerCase(); let sendingWallet: Wallet; try { + elizaLogger.debug("Initializing sending wallet"); sendingWallet = await initializeWallet(runtime, networkId); } catch (error) { elizaLogger.error("Error initializing sending wallet:", error); throw error; } for (const address of receivingAddresses) { - elizaLogger.log("Processing payout for address:", address); + elizaLogger.info("Processing payout for address:", address); if (address) { try { // Check balance before initiating transfer @@ -125,7 +128,7 @@ async function executeMassPayout( const walletBalance = await sendingWallet.getBalance(assetIdLowercase); - elizaLogger.log("Wallet balance for asset:", { + elizaLogger.info("Wallet balance for asset:", { assetId, walletBalance, }); @@ -174,7 +177,7 @@ async function executeMassPayout( }); } } else { - elizaLogger.log("Skipping invalid or empty address."); + elizaLogger.info("Skipping invalid or empty address."); transactions.push({ address: "Invalid or Empty", amount: transferAmount, @@ -188,6 +191,7 @@ async function executeMassPayout( const charityAddress = getCharityAddress(networkId); try { + elizaLogger.debug("Sending 1% to charity:", charityAddress); const charityTransfer = await executeTransfer( sendingWallet, transferAmount * 0.01, @@ -213,7 +217,7 @@ async function executeMassPayout( }); } await appendTransactionsToCsv(transactions); - elizaLogger.log("Finished processing mass payouts."); + elizaLogger.info("Finished processing mass payouts."); return transactions; } @@ -224,7 +228,7 @@ export const sendMassPayoutAction: Action = { description: "Sends mass payouts to a list of receiving addresses using a predefined sending wallet and logs all transactions to a CSV file.", validate: async (runtime: IAgentRuntime, _message: Memory) => { - elizaLogger.log("Validating runtime and message..."); + elizaLogger.info("Validating runtime and message..."); return ( !!( runtime.character.settings.secrets?.COINBASE_API_KEY || @@ -243,7 +247,7 @@ export const sendMassPayoutAction: Action = { _options: any, callback: HandlerCallback ) => { - elizaLogger.log("Starting SEND_MASS_PAYOUT handler..."); + elizaLogger.debug("Starting SEND_MASS_PAYOUT handler..."); try { Coinbase.configure({ apiKeyName: @@ -273,7 +277,7 @@ export const sendMassPayoutAction: Action = { schema: TransferSchema, }); - elizaLogger.log( + elizaLogger.info( "Transfer details generated:", transferDetails.object ); @@ -319,7 +323,7 @@ export const sendMassPayoutAction: Action = { return; } - elizaLogger.log("◎ Starting mass payout..."); + elizaLogger.info("◎ Starting mass payout..."); const transactions = await executeMassPayout( runtime, network, diff --git a/packages/plugin-coinbase/src/plugins/tokenContract.ts b/packages/plugin-coinbase/src/plugins/tokenContract.ts index 5a268f4b1a3..861f67ba235 100644 --- a/packages/plugin-coinbase/src/plugins/tokenContract.ts +++ b/packages/plugin-coinbase/src/plugins/tokenContract.ts @@ -58,7 +58,7 @@ export const deployTokenContractAction: Action = { description: "Deploy an ERC20, ERC721, or ERC1155 token contract using the Coinbase SDK", validate: async (runtime: IAgentRuntime, _message: Memory) => { - elizaLogger.log("Validating runtime for DEPLOY_TOKEN_CONTRACT..."); + elizaLogger.info("Validating runtime for DEPLOY_TOKEN_CONTRACT..."); return ( !!( runtime.character.settings.secrets?.COINBASE_API_KEY || @@ -77,7 +77,7 @@ export const deployTokenContractAction: Action = { _options: any, callback: HandlerCallback ) => { - elizaLogger.log("Starting DEPLOY_TOKEN_CONTRACT handler..."); + elizaLogger.debug("Starting DEPLOY_TOKEN_CONTRACT handler..."); try { Coinbase.configure({ @@ -118,7 +118,7 @@ export const deployTokenContractAction: Action = { modelClass: ModelClass.SMALL, schema: TokenContractSchema, }); - elizaLogger.log("Contract details:", contractDetails.object); + elizaLogger.info("Contract details:", contractDetails.object); if (!isTokenContractContent(contractDetails.object)) { callback( @@ -138,7 +138,7 @@ export const deployTokenContractAction: Action = { baseURI, totalSupply, } = contractDetails.object; - elizaLogger.log("Contract details:", contractDetails.object); + elizaLogger.info("Contract details:", contractDetails.object); const wallet = await initializeWallet(runtime, network); let contract: SmartContract; let deploymentDetails; @@ -177,8 +177,8 @@ export const deployTokenContractAction: Action = { // Wait for deployment to complete await contract.wait(); - elizaLogger.log("Deployment details:", deploymentDetails); - elizaLogger.log("Contract deployed successfully:", contract); + elizaLogger.info("Deployment details:", deploymentDetails); + elizaLogger.info("Contract deployed successfully:", contract); // Log deployment to CSV const csvWriter = createArrayCsvWriter({ path: contractsCsvFilePath, @@ -287,7 +287,7 @@ export const invokeContractAction: Action = { description: "Invoke a method on a deployed smart contract using the Coinbase SDK", validate: async (runtime: IAgentRuntime, _message: Memory) => { - elizaLogger.log("Validating runtime for INVOKE_CONTRACT..."); + elizaLogger.info("Validating runtime for INVOKE_CONTRACT..."); return ( !!( runtime.character.settings.secrets?.COINBASE_API_KEY || @@ -306,7 +306,7 @@ export const invokeContractAction: Action = { _options: any, callback: HandlerCallback ) => { - elizaLogger.log("Starting INVOKE_CONTRACT handler..."); + elizaLogger.debug("Starting INVOKE_CONTRACT handler..."); try { Coinbase.configure({ @@ -329,7 +329,7 @@ export const invokeContractAction: Action = { modelClass: ModelClass.LARGE, schema: ContractInvocationSchema, }); - elizaLogger.log("Invocation details:", invocationDetails.object); + elizaLogger.info("Invocation details:", invocationDetails.object); if (!isContractInvocationContent(invocationDetails.object)) { callback( { @@ -362,7 +362,7 @@ export const invokeContractAction: Action = { networkId, assetId, }; - elizaLogger.log("Invocation options:", invocationOptions); + elizaLogger.info("Invocation options:", invocationOptions); // Invoke the contract const invocation = await wallet.invokeContract(invocationOptions); @@ -454,7 +454,7 @@ export const readContractAction: Action = { description: "Read data from a deployed smart contract using the Coinbase SDK", validate: async (runtime: IAgentRuntime, _message: Memory) => { - elizaLogger.log("Validating runtime for READ_CONTRACT..."); + elizaLogger.info("Validating runtime for READ_CONTRACT..."); return ( !!( runtime.character.settings.secrets?.COINBASE_API_KEY || @@ -473,7 +473,7 @@ export const readContractAction: Action = { _options: any, callback: HandlerCallback ) => { - elizaLogger.log("Starting READ_CONTRACT handler..."); + elizaLogger.debug("Starting READ_CONTRACT handler..."); try { Coinbase.configure({ @@ -509,7 +509,7 @@ export const readContractAction: Action = { const { contractAddress, method, args, networkId, abi } = readDetails.object; - elizaLogger.log("Reading contract:", { + elizaLogger.info("Reading contract:", { contractAddress, method, args, diff --git a/packages/plugin-coinbase/src/plugins/trade.ts b/packages/plugin-coinbase/src/plugins/trade.ts index e26a9d20cb2..5858d70f1ad 100644 --- a/packages/plugin-coinbase/src/plugins/trade.ts +++ b/packages/plugin-coinbase/src/plugins/trade.ts @@ -30,6 +30,7 @@ const tradeCsvFilePath = path.join(baseDir, "trades.csv"); export const tradeProvider: Provider = { get: async (runtime: IAgentRuntime, _message: Memory) => { + elizaLogger.debug("Starting tradeProvider.get function"); try { Coinbase.configure({ apiKeyName: @@ -39,7 +40,7 @@ export const tradeProvider: Provider = { runtime.getSetting("COINBASE_PRIVATE_KEY") ?? process.env.COINBASE_PRIVATE_KEY, }); - elizaLogger.log("Reading CSV file from:", tradeCsvFilePath); + elizaLogger.info("Reading CSV file from:", tradeCsvFilePath); // Check if the file exists; if not, create it with headers if (!fs.existsSync(tradeCsvFilePath)) { @@ -57,7 +58,7 @@ export const tradeProvider: Provider = { ], }); await csvWriter.writeRecords([]); // Create an empty file with headers - elizaLogger.log("New CSV file created with headers."); + elizaLogger.info("New CSV file created with headers."); } // Read and parse the CSV file @@ -67,10 +68,10 @@ export const tradeProvider: Provider = { skip_empty_lines: true, }); - elizaLogger.log("Parsed CSV records:", records); + elizaLogger.info("Parsed CSV records:", records); const { balances, transactions } = await getWalletDetails(runtime); - elizaLogger.log("Current Balances:", balances); - elizaLogger.log("Last Transactions:", transactions); + elizaLogger.info("Current Balances:", balances); + elizaLogger.info("Last Transactions:", transactions); return { currentTrades: records.map((record: any) => ({ network: record["Network"] || undefined, @@ -96,7 +97,7 @@ export const executeTradeAction: Action = { description: "Execute a trade between two assets using the Coinbase SDK and log the result.", validate: async (runtime: IAgentRuntime, _message: Memory) => { - elizaLogger.log("Validating runtime for EXECUTE_TRADE..."); + elizaLogger.info("Validating runtime for EXECUTE_TRADE..."); return ( !!( runtime.character.settings.secrets?.COINBASE_API_KEY || @@ -115,7 +116,7 @@ export const executeTradeAction: Action = { _options: any, callback: HandlerCallback ) => { - elizaLogger.log("Starting EXECUTE_TRADE handler..."); + elizaLogger.debug("Starting EXECUTE_TRADE handler..."); try { Coinbase.configure({ diff --git a/packages/plugin-coinbase/src/plugins/webhooks.ts b/packages/plugin-coinbase/src/plugins/webhooks.ts index 742dca2ccb1..62dd40de223 100644 --- a/packages/plugin-coinbase/src/plugins/webhooks.ts +++ b/packages/plugin-coinbase/src/plugins/webhooks.ts @@ -18,6 +18,7 @@ import { appendWebhooksToCsv } from "../utils"; export const webhookProvider: Provider = { get: async (runtime: IAgentRuntime, _message: Memory) => { + elizaLogger.debug("Starting webhookProvider.get function"); try { Coinbase.configure({ apiKeyName: @@ -30,7 +31,7 @@ export const webhookProvider: Provider = { // List all webhooks const resp = await Webhook.list(); - elizaLogger.log("Listing all webhooks:", resp.data); + elizaLogger.info("Listing all webhooks:", resp.data); return { webhooks: resp.data.map((webhook: Webhook) => ({ @@ -53,7 +54,7 @@ export const createWebhookAction: Action = { name: "CREATE_WEBHOOK", description: "Create a new webhook using the Coinbase SDK.", validate: async (runtime: IAgentRuntime, _message: Memory) => { - elizaLogger.log("Validating runtime for CREATE_WEBHOOK..."); + elizaLogger.info("Validating runtime for CREATE_WEBHOOK..."); return ( !!( runtime.character.settings.secrets?.COINBASE_API_KEY || @@ -76,7 +77,7 @@ export const createWebhookAction: Action = { _options: any, callback: HandlerCallback ) => { - elizaLogger.log("Starting CREATE_WEBHOOK handler..."); + elizaLogger.debug("Starting CREATE_WEBHOOK handler..."); try { Coinbase.configure({ @@ -125,7 +126,7 @@ export const createWebhookAction: Action = { ); return; } - elizaLogger.log("Creating webhook with details:", { + elizaLogger.info("Creating webhook with details:", { networkId, notificationUri, eventType, @@ -138,7 +139,7 @@ export const createWebhookAction: Action = { eventType, eventFilters, }); - elizaLogger.log( + elizaLogger.info( "Webhook created successfully:", webhook.toString() ); @@ -149,7 +150,7 @@ export const createWebhookAction: Action = { [] ); await appendWebhooksToCsv([webhook]); - elizaLogger.log("Webhook appended to CSV successfully"); + elizaLogger.info("Webhook appended to CSV successfully"); } catch (error) { elizaLogger.error("Error during webhook creation:", error); callback( diff --git a/packages/plugin-conflux/package.json b/packages/plugin-conflux/package.json index 3db911e9454..5e63dddcca7 100644 --- a/packages/plugin-conflux/package.json +++ b/packages/plugin-conflux/package.json @@ -1,15 +1,15 @@ { - "name": "@elizaos/plugin-conflux", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "cive": "0.7.1" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch" - } + "name": "@elizaos/plugin-conflux", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "cive": "0.7.1" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch" + } } diff --git a/packages/plugin-echochambers/package.json b/packages/plugin-echochambers/package.json index a22cd125363..9af3933d66a 100644 --- a/packages/plugin-echochambers/package.json +++ b/packages/plugin-echochambers/package.json @@ -1,15 +1,15 @@ { - "name": "@elizaos/plugin-echochambers", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@elizaos/plugin-node": "workspace:*" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch" - } + "name": "@elizaos/plugin-echochambers", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@elizaos/plugin-node": "workspace:*" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch" + } } diff --git a/packages/plugin-evm/package.json b/packages/plugin-evm/package.json index 2fc2c5ba19d..cd32883130d 100644 --- a/packages/plugin-evm/package.json +++ b/packages/plugin-evm/package.json @@ -1,24 +1,24 @@ { - "name": "@elizaos/plugin-evm", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@lifi/data-types": "5.15.5", - "@lifi/sdk": "3.4.1", - "@lifi/types": "16.3.0", - "tsup": "8.3.5", - "viem": "2.21.53" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "test": "vitest run", - "lint": "eslint --fix --cache ." - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-evm", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@lifi/data-types": "5.15.5", + "@lifi/sdk": "3.4.1", + "@lifi/types": "16.3.0", + "tsup": "8.3.5", + "viem": "2.21.53" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "test": "vitest run", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-evm/src/templates/index.ts b/packages/plugin-evm/src/templates/index.ts index 68c6be91d73..d4dea3f9d29 100644 --- a/packages/plugin-evm/src/templates/index.ts +++ b/packages/plugin-evm/src/templates/index.ts @@ -40,8 +40,8 @@ Respond with a JSON markdown block containing only the extracted values: \`\`\`json { "token": string | null, - "fromChain": "ethereum" | "base" | "sepolia" | "bsc" | "arbitrum" | "avalanche" | "polygon" | "optimism" | "cronos" | "gnosis" | "fantom" | "klaytn" | "celo" | "moonbeam" | "aurora" | "harmonyOne" | "moonriver" | "arbitrumNova" | "mantle" | "linea" | "scroll" | "filecoin" | "taiko" | "zksync" | "canto" | null, - "toChain": "ethereum" | "base" | "sepolia" | "bsc" | "arbitrum" | "avalanche" | "polygon" | "optimism" | "cronos" | "gnosis" | "fantom" | "klaytn" | "celo" | "moonbeam" | "aurora" | "harmonyOne" | "moonriver" | "arbitrumNova" | "mantle" | "linea" | "scroll" | "filecoin" | "taiko" | "zksync" | "canto" | null, + "fromChain": "ethereum" | "abstract" | "base" | "sepolia" | "bsc" | "arbitrum" | "avalanche" | "polygon" | "optimism" | "cronos" | "gnosis" | "fantom" | "klaytn" | "celo" | "moonbeam" | "aurora" | "harmonyOne" | "moonriver" | "arbitrumNova" | "mantle" | "linea" | "scroll" | "filecoin" | "taiko" | "zksync" | "canto" | "alienx" | null, + "toChain": "ethereum" | "abstract" | "base" | "sepolia" | "bsc" | "arbitrum" | "avalanche" | "polygon" | "optimism" | "cronos" | "gnosis" | "fantom" | "klaytn" | "celo" | "moonbeam" | "aurora" | "harmonyOne" | "moonriver" | "arbitrumNova" | "mantle" | "linea" | "scroll" | "filecoin" | "taiko" | "zksync" | "canto" | "alienx" | null, "amount": string | null, "toAddress": string | null } @@ -67,7 +67,7 @@ Respond with a JSON markdown block containing only the extracted values. Use nul "inputToken": string | null, "outputToken": string | null, "amount": string | null, - "chain": "ethereum" | "base" | "sepolia" | "bsc" | "arbitrum" | "avalanche" | "polygon" | "optimism" | "cronos" | "gnosis" | "fantom" | "klaytn" | "celo" | "moonbeam" | "aurora" | "harmonyOne" | "moonriver" | "arbitrumNova" | "mantle" | "linea" | "scroll" | "filecoin" | "taiko" | "zksync" | "canto" | null, + "chain": "ethereum" | "abstract" | "base" | "sepolia" | "bsc" | "arbitrum" | "avalanche" | "polygon" | "optimism" | "cronos" | "gnosis" | "fantom" | "klaytn" | "celo" | "moonbeam" | "aurora" | "harmonyOne" | "moonriver" | "arbitrumNova" | "mantle" | "linea" | "scroll" | "filecoin" | "taiko" | "zksync" | "canto" | "alienx" | null, "slippage": number | null } \`\`\` diff --git a/packages/plugin-evm/src/types/index.ts b/packages/plugin-evm/src/types/index.ts index c2e7c29acd4..5db8d941f86 100644 --- a/packages/plugin-evm/src/types/index.ts +++ b/packages/plugin-evm/src/types/index.ts @@ -10,7 +10,9 @@ import type { } from "viem"; import * as viemChains from "viem/chains"; -const _SupportedChainList = Object.keys(viemChains) as Array; +const _SupportedChainList = Object.keys(viemChains) as Array< + keyof typeof viemChains +>; export type SupportedChain = (typeof _SupportedChainList)[number]; // Transaction types @@ -88,6 +90,7 @@ export interface BridgeParams { export interface EvmPluginConfig { rpcUrl?: { ethereum?: string; + abstract?: string; base?: string; sepolia?: string; bsc?: string; @@ -112,6 +115,7 @@ export interface EvmPluginConfig { taiko?: string; zksync?: string; canto?: string; + alienx?: string; }; secrets?: { EVM_PRIVATE_KEY: string; diff --git a/packages/plugin-flow/package.json b/packages/plugin-flow/package.json index ffe81bb15c5..df7acca6ae8 100644 --- a/packages/plugin-flow/package.json +++ b/packages/plugin-flow/package.json @@ -1,36 +1,36 @@ { - "name": "@elizaos/plugin-flow", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@onflow/config": "1.5.1", - "@onflow/fcl": "1.13.1", - "@onflow/typedefs": "1.4.0", - "bignumber.js": "9.1.2", - "bs58": "6.0.0", - "elliptic": "6.6.1", - "node-cache": "5.1.2", - "sha3": "2.1.4", - "uuid": "11.0.3", - "zod": "3.23.8" - }, - "devDependencies": { - "@types/elliptic": "6.4.18", - "@types/uuid": "10.0.0", - "tsup": "8.3.5", - "vitest": "2.1.4" - }, - "scripts": { - "lines": "find . \\( -name '*.cdc' -o -name '*.ts' \\) -not -path '*/node_modules/*' -not -path '*/tests/*' -not -path '*/deps/*' -not -path '*/dist/*' -not -path '*/imports*' | xargs wc -l", - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache .", - "test": "vitest run" - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-flow", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@onflow/config": "1.5.1", + "@onflow/fcl": "1.13.1", + "@onflow/typedefs": "1.4.0", + "bignumber.js": "9.1.2", + "bs58": "6.0.0", + "elliptic": "6.6.1", + "node-cache": "5.1.2", + "sha3": "2.1.4", + "uuid": "11.0.3", + "zod": "3.23.8" + }, + "devDependencies": { + "@types/elliptic": "6.4.18", + "@types/uuid": "10.0.0", + "tsup": "8.3.5", + "vitest": "2.1.4" + }, + "scripts": { + "lines": "find . \\( -name '*.cdc' -o -name '*.ts' \\) -not -path '*/node_modules/*' -not -path '*/tests/*' -not -path '*/deps/*' -not -path '*/dist/*' -not -path '*/imports*' | xargs wc -l", + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache .", + "test": "vitest run" + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-goat/README.md b/packages/plugin-goat/README.md index 4baa1bd1500..6dca2160d5e 100644 --- a/packages/plugin-goat/README.md +++ b/packages/plugin-goat/README.md @@ -33,6 +33,13 @@ const tools = getOnChainActions({ }) ``` +## Environment Variables Setup + +To set up your environment variables, you will need to provide the following information: + +* `EVM_PRIVATE_KEY`: Your EVM wallet private key. +* `EVM_PROVIDER_URL`: Your RPC provider URL (e.g. Infura, Alchemy, etc.). + ## Wallets GOAT supports many different wallets from key pairs to [Crossmint Smart Wallets](https://docs.crossmint.com/wallets/smart-wallets/overview) and Coinbase. diff --git a/packages/plugin-goat/package.json b/packages/plugin-goat/package.json index 94afb15bb29..79fcc166acc 100644 --- a/packages/plugin-goat/package.json +++ b/packages/plugin-goat/package.json @@ -1,23 +1,23 @@ { - "name": "@elizaos/plugin-goat", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@goat-sdk/core": "0.3.8", - "@goat-sdk/plugin-erc20": "0.1.7", - "@goat-sdk/wallet-viem": "0.1.3", - "@goat-sdk/plugin-coingecko": "0.1.4", - "tsup": "8.3.5", - "viem": "2.21.53" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch" - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-goat", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@goat-sdk/core": "0.3.8", + "@goat-sdk/plugin-erc20": "0.1.7", + "@goat-sdk/wallet-viem": "0.1.3", + "@goat-sdk/plugin-coingecko": "0.1.4", + "tsup": "8.3.5", + "viem": "2.21.53" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch" + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-icp/package.json b/packages/plugin-icp/package.json index bdf62d0e637..9dee9b4424c 100644 --- a/packages/plugin-icp/package.json +++ b/packages/plugin-icp/package.json @@ -1,24 +1,24 @@ { - "name": "@elizaos/plugin-icp", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@dfinity/agent": "2.1.3", - "@dfinity/candid": "2.1.3", - "@dfinity/identity": "2.1.3", - "@dfinity/principal": "2.1.3" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch" - }, - "devDependencies": { - "@types/jest": "29.5.14", - "jest": "29.7.0", - "tsup": "8.3.5", - "typescript": "5.6.3" - } + "name": "@elizaos/plugin-icp", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@dfinity/agent": "2.1.3", + "@dfinity/candid": "2.1.3", + "@dfinity/identity": "2.1.3", + "@dfinity/principal": "2.1.3" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch" + }, + "devDependencies": { + "@types/jest": "29.5.14", + "jest": "29.7.0", + "tsup": "8.3.5", + "typescript": "5.6.3" + } } diff --git a/packages/plugin-image-generation/package.json b/packages/plugin-image-generation/package.json index 9115c73b57a..69546f782f3 100644 --- a/packages/plugin-image-generation/package.json +++ b/packages/plugin-image-generation/package.json @@ -1,19 +1,19 @@ { - "name": "@elizaos/plugin-image-generation", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-image-generation", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-image-generation/src/index.ts b/packages/plugin-image-generation/src/index.ts index 1c9d0305ae4..1be67fca924 100644 --- a/packages/plugin-image-generation/src/index.ts +++ b/packages/plugin-image-generation/src/index.ts @@ -109,6 +109,8 @@ const imageGeneration: Action = { seed?: number; modelId?: string; jobId?: string; + stylePreset?: string; + hideWatermark?: boolean; }, callback: HandlerCallback ) => { @@ -120,6 +122,9 @@ const imageGeneration: Action = { const imagePrompt = message.content.text; elizaLogger.log("Image prompt received:", imagePrompt); + const imageSettings = runtime.character?.settings?.imageSettings || {}; + elizaLogger.log("Image settings:", imageSettings); + // TODO: Generate a prompt for the image const res: { image: string; caption: string }[] = []; @@ -128,23 +133,17 @@ const imageGeneration: Action = { const images = await generateImage( { prompt: imagePrompt, - width: options.width || 1024, - height: options.height || 1024, - ...(options.count != null ? { count: options.count || 1 } : {}), - ...(options.negativePrompt != null - ? { negativePrompt: options.negativePrompt } - : {}), - ...(options.numIterations != null - ? { numIterations: options.numIterations } - : {}), - ...(options.guidanceScale != null - ? { guidanceScale: options.guidanceScale } - : {}), - ...(options.seed != null ? { seed: options.seed } : {}), - ...(options.modelId != null - ? { modelId: options.modelId } - : {}), - ...(options.jobId != null ? { jobId: options.jobId } : {}), + width: options.width || imageSettings.width || 1024, + height: options.height || imageSettings.height || 1024, + ...(options.count != null || imageSettings.count != null ? { count: options.count || imageSettings.count || 1 } : {}), + ...(options.negativePrompt != null || imageSettings.negativePrompt != null ? { negativePrompt: options.negativePrompt || imageSettings.negativePrompt } : {}), + ...(options.numIterations != null || imageSettings.numIterations != null ? { numIterations: options.numIterations || imageSettings.numIterations } : {}), + ...(options.guidanceScale != null || imageSettings.guidanceScale != null ? { guidanceScale: options.guidanceScale || imageSettings.guidanceScale } : {}), + ...(options.seed != null || imageSettings.seed != null ? { seed: options.seed || imageSettings.seed } : {}), + ...(options.modelId != null || imageSettings.modelId != null ? { modelId: options.modelId || imageSettings.modelId } : {}), + ...(options.jobId != null || imageSettings.jobId != null ? { jobId: options.jobId || imageSettings.jobId } : {}), + ...(options.stylePreset != null || imageSettings.stylePreset != null ? { stylePreset: options.stylePreset || imageSettings.stylePreset } : {}), + ...(options.hideWatermark != null || imageSettings.hideWatermark != null ? { hideWatermark: options.hideWatermark || imageSettings.hideWatermark } : {}), }, runtime ); diff --git a/packages/plugin-intiface/package.json b/packages/plugin-intiface/package.json index 99bfb7c29d5..954bc8322fd 100644 --- a/packages/plugin-intiface/package.json +++ b/packages/plugin-intiface/package.json @@ -1,21 +1,21 @@ { - "name": "@elizaos/plugin-intiface", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "buttplug": "3.2.2", - "net": "1.0.2", - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "test-via-bun": "bun test/simulate.ts" - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-intiface", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "buttplug": "3.2.2", + "net": "1.0.2", + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "test-via-bun": "bun test/simulate.ts" + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-multiversx/package.json b/packages/plugin-multiversx/package.json index a38ba29885e..97e015359f2 100644 --- a/packages/plugin-multiversx/package.json +++ b/packages/plugin-multiversx/package.json @@ -1,26 +1,26 @@ { - "name": "@elizaos/plugin-multiversx", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@multiversx/sdk-core": "13.15.0", - "bignumber.js": "9.1.2", - "browserify": "^17.0.1", - "esbuild-plugin-polyfill-node": "^0.3.0", - "esmify": "^2.1.1", - "tsup": "8.3.5", - "vitest": "2.1.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "test": "vitest run", - "test:watch": "vitest", - "lint": "eslint . --fix" - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-multiversx", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@multiversx/sdk-core": "13.15.0", + "bignumber.js": "9.1.2", + "browserify": "^17.0.1", + "esbuild-plugin-polyfill-node": "^0.3.0", + "esmify": "^2.1.1", + "tsup": "8.3.5", + "vitest": "2.1.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "test": "vitest run", + "test:watch": "vitest", + "lint": "eslint . --fix" + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-near/package.json b/packages/plugin-near/package.json index 78dd934e5bf..d638525bf24 100644 --- a/packages/plugin-near/package.json +++ b/packages/plugin-near/package.json @@ -1,25 +1,25 @@ { - "name": "@elizaos/plugin-near", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@ref-finance/ref-sdk": "^1.4.6", - "tsup": "8.3.5", - "near-api-js": "5.0.1", - "bignumber.js": "9.1.2", - "node-cache": "5.1.2" - }, - "scripts": { - "build": "tsup --format esm,cjs --dts", - "test": "vitest run", - "test:watch": "vitest", - "lint": "eslint . --fix" - }, - "peerDependencies": { - "whatwg-url": "7.1.0", - "form-data": "4.0.1" - } + "name": "@elizaos/plugin-near", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@ref-finance/ref-sdk": "^1.4.6", + "tsup": "8.3.5", + "near-api-js": "5.0.1", + "bignumber.js": "9.1.2", + "node-cache": "5.1.2" + }, + "scripts": { + "build": "tsup --format esm,cjs --dts", + "test": "vitest run", + "test:watch": "vitest", + "lint": "eslint . --fix" + }, + "peerDependencies": { + "whatwg-url": "7.1.0", + "form-data": "4.0.1" + } } diff --git a/packages/plugin-nft-generation/package.json b/packages/plugin-nft-generation/package.json index acc7c94ea4e..9bebdc18999 100644 --- a/packages/plugin-nft-generation/package.json +++ b/packages/plugin-nft-generation/package.json @@ -1,30 +1,30 @@ { - "name": "@elizaos/plugin-nft-generation", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@elizaos/plugin-image-generation": "workspace:*", - "@elizaos/plugin-node": "workspace:*", - "@metaplex-foundation/mpl-token-metadata": "^3.3.0", - "@metaplex-foundation/mpl-toolbox": "^0.9.4", - "@metaplex-foundation/umi": "^0.9.2", - "@metaplex-foundation/umi-bundle-defaults": "^0.9.2", - "@solana-developers/helpers": "^2.5.6", - "@solana/web3.js": "1.95.5", - "bs58": "6.0.0", - "express": "4.21.1", - "node-cache": "5.1.2", - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint . --fix" - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-nft-generation", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@elizaos/plugin-image-generation": "workspace:*", + "@elizaos/plugin-node": "workspace:*", + "@metaplex-foundation/mpl-token-metadata": "^3.3.0", + "@metaplex-foundation/mpl-toolbox": "^0.9.4", + "@metaplex-foundation/umi": "^0.9.2", + "@metaplex-foundation/umi-bundle-defaults": "^0.9.2", + "@solana-developers/helpers": "^2.5.6", + "@solana/web3.js": "1.95.5", + "bs58": "6.0.0", + "express": "4.21.1", + "node-cache": "5.1.2", + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint . --fix" + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-node/package.json b/packages/plugin-node/package.json index cdec1c04149..2718b0eed27 100644 --- a/packages/plugin-node/package.json +++ b/packages/plugin-node/package.json @@ -1,89 +1,89 @@ { - "name": "@elizaos/plugin-node", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "files": [ - "dist", - "scripts", - "package.json", - "LICENSE", - "tsup.config.ts" - ], - "dependencies": { - "@elizaos/core": "workspace:*", - "@aws-sdk/client-s3": "^3.705.0", - "@aws-sdk/s3-request-presigner": "^3.705.0", - "@cliqz/adblocker-playwright": "1.34.0", - "@echogarden/espeak-ng-emscripten": "0.3.3", - "@echogarden/kissfft-wasm": "0.2.0", - "@echogarden/speex-resampler-wasm": "0.2.1", - "@huggingface/transformers": "3.0.2", - "@opendocsg/pdf2md": "0.1.32", - "@types/uuid": "10.0.0", - "alawmulaw": "6.0.0", - "bignumber": "1.1.0", - "bignumber.js": "9.1.2", - "capsolver-npm": "2.0.2", - "cldr-segmentation": "2.2.1", - "command-exists": "1.2.9", - "csv-writer": "1.6.0", - "echogarden": "2.0.7", - "espeak-ng": "1.0.2", - "ffmpeg-static": "5.2.0", - "fluent-ffmpeg": "2.1.3", - "formdata-node": "6.0.3", - "fs-extra": "11.2.0", - "gaxios": "6.7.1", - "gif-frames": "0.4.1", - "glob": "11.0.0", - "graceful-fs": "4.2.11", - "html-escaper": "3.0.3", - "html-to-text": "9.0.5", - "import-meta-resolve": "4.1.0", - "jieba-wasm": "2.2.0", - "json5": "2.2.3", - "kuromoji": "0.1.2", - "libsodium-wrappers": "0.7.15", - "multer": "1.4.5-lts.1", - "node-cache": "5.1.2", - "node-llama-cpp": "3.1.1", - "nodejs-whisper": "0.1.18", - "onnxruntime-node": "1.20.1", - "pdfjs-dist": "4.7.76", - "playwright": "1.48.2", - "pm2": "5.4.3", - "puppeteer-extra": "3.3.6", - "puppeteer-extra-plugin-capsolver": "2.0.1", - "sharp": "0.33.5", - "srt": "0.0.3", - "systeminformation": "5.23.5", - "tar": "7.4.3", - "tinyld": "1.3.4", - "uuid": "11.0.3", - "wav": "1.0.2", - "wav-encoder": "1.3.0", - "wavefile": "11.0.0", - "yargs": "17.7.2", - "youtube-dl-exec": "3.0.10" - }, - "devDependencies": { - "@types/node": "22.8.4", - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache .", - "postinstall": "node scripts/postinstall.js" - }, - "peerDependencies": { - "onnxruntime-node": "1.20.1", - "whatwg-url": "7.1.0" - }, - "trustedDependencies": { - "onnxruntime-node": "1.20.1", - "sharp": "0.33.5" - } + "name": "@elizaos/plugin-node", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "files": [ + "dist", + "scripts", + "package.json", + "LICENSE", + "tsup.config.ts" + ], + "dependencies": { + "@elizaos/core": "workspace:*", + "@aws-sdk/client-s3": "^3.705.0", + "@aws-sdk/s3-request-presigner": "^3.705.0", + "@cliqz/adblocker-playwright": "1.34.0", + "@echogarden/espeak-ng-emscripten": "0.3.3", + "@echogarden/kissfft-wasm": "0.2.0", + "@echogarden/speex-resampler-wasm": "0.2.1", + "@huggingface/transformers": "3.0.2", + "@opendocsg/pdf2md": "0.1.32", + "@types/uuid": "10.0.0", + "alawmulaw": "6.0.0", + "bignumber": "1.1.0", + "bignumber.js": "9.1.2", + "capsolver-npm": "2.0.2", + "cldr-segmentation": "2.2.1", + "command-exists": "1.2.9", + "csv-writer": "1.6.0", + "echogarden": "2.0.7", + "espeak-ng": "1.0.2", + "ffmpeg-static": "5.2.0", + "fluent-ffmpeg": "2.1.3", + "formdata-node": "6.0.3", + "fs-extra": "11.2.0", + "gaxios": "6.7.1", + "gif-frames": "0.4.1", + "glob": "11.0.0", + "graceful-fs": "4.2.11", + "html-escaper": "3.0.3", + "html-to-text": "9.0.5", + "import-meta-resolve": "4.1.0", + "jieba-wasm": "2.2.0", + "json5": "2.2.3", + "kuromoji": "0.1.2", + "libsodium-wrappers": "0.7.15", + "multer": "1.4.5-lts.1", + "node-cache": "5.1.2", + "node-llama-cpp": "3.1.1", + "nodejs-whisper": "0.1.18", + "onnxruntime-node": "1.20.1", + "pdfjs-dist": "4.7.76", + "playwright": "1.48.2", + "pm2": "5.4.3", + "puppeteer-extra": "3.3.6", + "puppeteer-extra-plugin-capsolver": "2.0.1", + "sharp": "0.33.5", + "srt": "0.0.3", + "systeminformation": "5.23.5", + "tar": "7.4.3", + "tinyld": "1.3.4", + "uuid": "11.0.3", + "wav": "1.0.2", + "wav-encoder": "1.3.0", + "wavefile": "11.0.0", + "yargs": "17.7.2", + "youtube-dl-exec": "3.0.10" + }, + "devDependencies": { + "@types/node": "22.8.4", + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache .", + "postinstall": "node scripts/postinstall.js" + }, + "peerDependencies": { + "onnxruntime-node": "1.20.1", + "whatwg-url": "7.1.0" + }, + "trustedDependencies": { + "onnxruntime-node": "1.20.1", + "sharp": "0.33.5" + } } diff --git a/packages/plugin-solana/package.json b/packages/plugin-solana/package.json index daf157ec516..8fbe9f44fd7 100644 --- a/packages/plugin-solana/package.json +++ b/packages/plugin-solana/package.json @@ -1,33 +1,33 @@ { - "name": "@elizaos/plugin-solana", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@elizaos/plugin-trustdb": "workspace:*", - "@elizaos/plugin-tee": "workspace:*", - "@coral-xyz/anchor": "0.30.1", - "@solana/spl-token": "0.4.9", - "@solana/web3.js": "1.95.8", - "bignumber": "1.1.0", - "bignumber.js": "9.1.2", - "bs58": "6.0.0", - "fomo-sdk-solana": "1.3.2", - "node-cache": "5.1.2", - "pumpdotfun-sdk": "1.3.2", - "tsup": "8.3.5", - "vitest": "2.1.4" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache .", - "test": "vitest run" - }, - "peerDependencies": { - "form-data": "4.0.1", - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-solana", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@elizaos/plugin-trustdb": "workspace:*", + "@elizaos/plugin-tee": "workspace:*", + "@coral-xyz/anchor": "0.30.1", + "@solana/spl-token": "0.4.9", + "@solana/web3.js": "1.95.8", + "bignumber": "1.1.0", + "bignumber.js": "9.1.2", + "bs58": "6.0.0", + "fomo-sdk-solana": "1.3.2", + "node-cache": "5.1.2", + "pumpdotfun-sdk": "1.3.2", + "tsup": "8.3.5", + "vitest": "2.1.4" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache .", + "test": "vitest run" + }, + "peerDependencies": { + "form-data": "4.0.1", + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-starknet/package.json b/packages/plugin-starknet/package.json index 79a8662062a..2a30e191959 100644 --- a/packages/plugin-starknet/package.json +++ b/packages/plugin-starknet/package.json @@ -1,27 +1,27 @@ { - "name": "@elizaos/plugin-starknet", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@elizaos/plugin-trustdb": "workspace:*", - "@avnu/avnu-sdk": "2.1.1", - "@uniswap/sdk-core": "6.0.0", - "@unruggable_starknet/core": "0.1.0", - "starknet": "6.18.0", - "tsup": "8.3.5", - "vitest": "2.1.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "test": "vitest run", - "test:watch": "vitest", - "lint": "eslint --fix --cache ." - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-starknet", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@elizaos/plugin-trustdb": "workspace:*", + "@avnu/avnu-sdk": "2.1.1", + "@uniswap/sdk-core": "6.0.0", + "@unruggable_starknet/core": "0.1.0", + "starknet": "6.18.0", + "tsup": "8.3.5", + "vitest": "2.1.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "test": "vitest run", + "test:watch": "vitest", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-story/package.json b/packages/plugin-story/package.json index 6c8a9b14c35..9f1e59b0020 100644 --- a/packages/plugin-story/package.json +++ b/packages/plugin-story/package.json @@ -1,26 +1,26 @@ { - "name": "@elizaos/plugin-story", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@elizaos/plugin-trustdb": "workspace:*", - "@story-protocol/core-sdk": "1.2.0-rc.3", - "tsup": "8.3.5", - "viem": "2.21.54", - "@pinata/sdk": "^2.1.0" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "test": "vitest run" - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - }, - "devDependencies": { - "@types/node": "^22.10.1" - } + "name": "@elizaos/plugin-story", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@elizaos/plugin-trustdb": "workspace:*", + "@story-protocol/core-sdk": "1.2.0-rc.3", + "tsup": "8.3.5", + "viem": "2.21.54", + "@pinata/sdk": "^2.1.0" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "test": "vitest run" + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + }, + "devDependencies": { + "@types/node": "^22.10.1" + } } diff --git a/packages/plugin-sui/package.json b/packages/plugin-sui/package.json index 5b5d678387c..0a15c67de5e 100644 --- a/packages/plugin-sui/package.json +++ b/packages/plugin-sui/package.json @@ -1,26 +1,26 @@ { - "name": "@elizaos/plugin-sui", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@elizaos/plugin-trustdb": "workspace:*", - "@mysten/sui": "^1.16.0", - "bignumber": "1.1.0", - "bignumber.js": "9.1.2", - "node-cache": "5.1.2", - "tsup": "8.3.5", - "vitest": "2.1.4" - }, - "scripts": { - "build": "tsup --format esm --dts", - "lint": "eslint . --fix", - "test": "vitest run" - }, - "peerDependencies": { - "form-data": "4.0.1", - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-sui", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@elizaos/plugin-trustdb": "workspace:*", + "@mysten/sui": "^1.16.0", + "bignumber": "1.1.0", + "bignumber.js": "9.1.2", + "node-cache": "5.1.2", + "tsup": "8.3.5", + "vitest": "2.1.4" + }, + "scripts": { + "build": "tsup --format esm --dts", + "lint": "eslint . --fix", + "test": "vitest run" + }, + "peerDependencies": { + "form-data": "4.0.1", + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-tee/package.json b/packages/plugin-tee/package.json index 339846ae350..3985cd8b0a5 100644 --- a/packages/plugin-tee/package.json +++ b/packages/plugin-tee/package.json @@ -1,28 +1,28 @@ { - "name": "@elizaos/plugin-tee", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@phala/dstack-sdk": "0.1.6", - "@solana/spl-token": "0.4.9", - "@solana/web3.js": "1.95.8", - "bignumber": "1.1.0", - "bignumber.js": "9.1.2", - "bs58": "6.0.0", - "node-cache": "5.1.2", - "pumpdotfun-sdk": "1.3.2", - "tsup": "8.3.5", - "viem": "2.21.53" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-tee", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@phala/dstack-sdk": "0.1.6", + "@solana/spl-token": "0.4.9", + "@solana/web3.js": "1.95.8", + "bignumber": "1.1.0", + "bignumber.js": "9.1.2", + "bs58": "6.0.0", + "node-cache": "5.1.2", + "pumpdotfun-sdk": "1.3.2", + "tsup": "8.3.5", + "viem": "2.21.53" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-ton/package.json b/packages/plugin-ton/package.json index d0a0e899c65..98af38aff1e 100644 --- a/packages/plugin-ton/package.json +++ b/packages/plugin-ton/package.json @@ -1,25 +1,25 @@ { - "name": "@elizaos/plugin-ton", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@elizaos/plugin-trustdb": "workspace:*", - "bignumber": "1.1.0", - "bignumber.js": "9.1.2", - "node-cache": "5.1.2", - "@ton/ton": "15.1.0", - "@ton/crypto": "3.3.0", - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "test": "vitest run" - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-ton", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@elizaos/plugin-trustdb": "workspace:*", + "bignumber": "1.1.0", + "bignumber.js": "9.1.2", + "node-cache": "5.1.2", + "@ton/ton": "15.1.0", + "@ton/crypto": "3.3.0", + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "test": "vitest run" + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-trustdb/package.json b/packages/plugin-trustdb/package.json index 9a30d2af02c..f0ab079a764 100644 --- a/packages/plugin-trustdb/package.json +++ b/packages/plugin-trustdb/package.json @@ -1,27 +1,27 @@ { - "name": "@elizaos/plugin-trustdb", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "dompurify": "3.2.2", - "tsup": "8.3.5", - "uuid": "11.0.3", - "vitest": "2.1.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "test": "vitest run", - "test:watch": "vitest", - "lint": "eslint --fix --cache ." - }, - "devDependencies": { - "@types/dompurify": "3.2.0" - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-trustdb", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "dompurify": "3.2.2", + "tsup": "8.3.5", + "uuid": "11.0.3", + "vitest": "2.1.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "test": "vitest run", + "test:watch": "vitest", + "lint": "eslint --fix --cache ." + }, + "devDependencies": { + "@types/dompurify": "3.2.0" + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-video-generation/package.json b/packages/plugin-video-generation/package.json index 237baf8cea9..9051dca60ea 100644 --- a/packages/plugin-video-generation/package.json +++ b/packages/plugin-video-generation/package.json @@ -1,19 +1,19 @@ { - "name": "@elizaos/plugin-video-generation", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "lint": "eslint --fix --cache ." - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-video-generation", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "lint": "eslint --fix --cache ." + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-web-search/package.json b/packages/plugin-web-search/package.json index 49e8b605fda..9dbe0291152 100644 --- a/packages/plugin-web-search/package.json +++ b/packages/plugin-web-search/package.json @@ -1,18 +1,18 @@ { - "name": "@elizaos/plugin-web-search", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "tsup": "8.3.5" - }, - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch" - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-web-search", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "tsup": "8.3.5" + }, + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch" + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/packages/plugin-whatsapp/package.json b/packages/plugin-whatsapp/package.json index a1f6dc89c94..d56d37693da 100644 --- a/packages/plugin-whatsapp/package.json +++ b/packages/plugin-whatsapp/package.json @@ -1,26 +1,26 @@ { - "name": "@elizaos/plugin-whatsapp", - "version": "0.1.7-alpha.1", - "description": "WhatsApp Cloud API plugin", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "scripts": { - "build": "tsup --format esm --dts", - "dev": "tsup --format esm --dts --watch", - "test": "jest", - "lint": "eslint --fix --cache ." - }, - "dependencies": { - "@elizaos/core": "workspace:*", - "axios": "1.7.8" - }, - "devDependencies": { - "@types/jest": "29.5.14", - "@types/node": "20.17.9", - "@typescript-eslint/eslint-plugin": "8.16.0", - "@typescript-eslint/parser": "8.16.0", - "jest": "29.7.0", - "ts-jest": "29.2.5", - "typescript": "5.6.3" - } + "name": "@elizaos/plugin-whatsapp", + "version": "0.1.7-alpha.1", + "description": "WhatsApp Cloud API plugin", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsup --format esm --dts", + "dev": "tsup --format esm --dts --watch", + "test": "jest", + "lint": "eslint --fix --cache ." + }, + "dependencies": { + "@elizaos/core": "workspace:*", + "axios": "1.7.8" + }, + "devDependencies": { + "@types/jest": "29.5.14", + "@types/node": "20.17.9", + "@typescript-eslint/eslint-plugin": "8.16.0", + "@typescript-eslint/parser": "8.16.0", + "jest": "29.7.0", + "ts-jest": "29.2.5", + "typescript": "5.6.3" + } } diff --git a/packages/plugin-zksync-era/package.json b/packages/plugin-zksync-era/package.json index 2dd4b09ab32..b64598e53da 100644 --- a/packages/plugin-zksync-era/package.json +++ b/packages/plugin-zksync-era/package.json @@ -1,20 +1,20 @@ { - "name": "@elizaos/plugin-zksync-era", - "version": "0.1.7-alpha.1", - "main": "dist/index.js", - "type": "module", - "types": "dist/index.d.ts", - "dependencies": { - "@elizaos/core": "workspace:*", - "@elizaos/plugin-trustdb": "workspace:*", - "tsup": "^8.3.5", - "web3": "^4.15.0", - "web3-plugin-zksync": "^1.0.8" - }, - "scripts": { - "build": "tsup --format esm --dts" - }, - "peerDependencies": { - "whatwg-url": "7.1.0" - } + "name": "@elizaos/plugin-zksync-era", + "version": "0.1.7-alpha.1", + "main": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "dependencies": { + "@elizaos/core": "workspace:*", + "@elizaos/plugin-trustdb": "workspace:*", + "tsup": "^8.3.5", + "web3": "^4.15.0", + "web3-plugin-zksync": "^1.0.8" + }, + "scripts": { + "build": "tsup --format esm --dts" + }, + "peerDependencies": { + "whatwg-url": "7.1.0" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f9d6a690321..14182a0b956 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -138,6 +138,9 @@ importers: '@elizaos/plugin-0g': specifier: workspace:* version: link:../packages/plugin-0g + '@elizaos/plugin-abstract': + specifier: workspace:* + version: link:../packages/plugin-abstract '@elizaos/plugin-aptos': specifier: workspace:* version: link:../packages/plugin-aptos @@ -544,12 +547,6 @@ importers: packages/client-discord: dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core - '@elizaos/plugin-node': - specifier: workspace:* - version: link:../plugin-node '@discordjs/opus': specifier: github:discordjs/opus version: https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13) @@ -559,6 +556,12 @@ importers: '@discordjs/voice': specifier: 0.17.0 version: 0.17.0(@discordjs/opus@https://codeload.github.com/discordjs/opus/tar.gz/31da49d8d2cc6c5a2ab1bfd332033ff7d5f9fb02(encoding@0.1.13))(bufferutil@4.0.8)(ffmpeg-static@5.2.0)(utf-8-validate@5.0.10) + '@elizaos/core': + specifier: workspace:* + version: link:../core + '@elizaos/plugin-node': + specifier: workspace:* + version: link:../plugin-node discord.js: specifier: 14.16.3 version: 14.16.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -944,14 +947,32 @@ importers: specifier: 8.3.5 version: 8.3.5(@swc/core@1.10.1(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.6.1) - packages/plugin-aptos: + packages/plugin-abstract: dependencies: '@elizaos/core': specifier: workspace:* version: link:../core + tsup: + specifier: ^8.3.5 + version: 8.3.5(@swc/core@1.10.1(@swc/helpers@0.5.15))(jiti@2.4.2)(postcss@8.4.49)(typescript@5.6.3)(yaml@2.6.1) + viem: + specifier: 2.21.53 + version: 2.21.53(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + web3: + specifier: ^4.15.0 + version: 4.16.0(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + whatwg-url: + specifier: 7.1.0 + version: 7.1.0 + + packages/plugin-aptos: + dependencies: '@aptos-labs/ts-sdk': specifier: ^1.26.0 version: 1.33.1 + '@elizaos/core': + specifier: workspace:* + version: link:../core bignumber: specifier: 1.1.0 version: 1.1.0 @@ -1152,9 +1173,6 @@ importers: packages/plugin-icp: dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core '@dfinity/agent': specifier: 2.1.3 version: 2.1.3(@dfinity/candid@2.1.3(@dfinity/principal@2.1.3))(@dfinity/principal@2.1.3) @@ -1167,6 +1185,9 @@ importers: '@dfinity/principal': specifier: 2.1.3 version: 2.1.3 + '@elizaos/core': + specifier: workspace:* + version: link:../core devDependencies: '@types/jest': specifier: 29.5.14 @@ -1315,9 +1336,6 @@ importers: packages/plugin-node: dependencies: - '@elizaos/core': - specifier: workspace:* - version: link:../core '@aws-sdk/client-s3': specifier: ^3.705.0 version: 3.713.0 @@ -1336,6 +1354,9 @@ importers: '@echogarden/speex-resampler-wasm': specifier: 0.2.1 version: 0.2.1 + '@elizaos/core': + specifier: workspace:* + version: link:../core '@huggingface/transformers': specifier: 3.0.2 version: 3.0.2 @@ -1493,6 +1514,9 @@ importers: packages/plugin-solana: dependencies: + '@coral-xyz/anchor': + specifier: 0.30.1 + version: 0.30.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) '@elizaos/core': specifier: workspace:* version: link:../core @@ -1502,9 +1526,6 @@ importers: '@elizaos/plugin-trustdb': specifier: workspace:* version: link:../plugin-trustdb - '@coral-xyz/anchor': - specifier: 0.30.1 - version: 0.30.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) '@solana/spl-token': specifier: 0.4.9 version: 0.4.9(@solana/web3.js@1.95.8(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) @@ -1544,15 +1565,15 @@ importers: packages/plugin-starknet: dependencies: + '@avnu/avnu-sdk': + specifier: 2.1.1 + version: 2.1.1(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(qs@6.13.1)(starknet@6.18.0(encoding@0.1.13)) '@elizaos/core': specifier: workspace:* version: link:../core '@elizaos/plugin-trustdb': specifier: workspace:* version: link:../plugin-trustdb - '@avnu/avnu-sdk': - specifier: 2.1.1 - version: 2.1.1(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(qs@6.13.1)(starknet@6.18.0(encoding@0.1.13)) '@uniswap/sdk-core': specifier: 6.0.0 version: 6.0.0