Skip to content

Commit

Permalink
Merge branch 'develop' into silasneo-additions
Browse files Browse the repository at this point in the history
  • Loading branch information
shakkernerd authored Feb 3, 2025
2 parents c08114e + 72f5991 commit c654233
Show file tree
Hide file tree
Showing 185 changed files with 6,293 additions and 634 deletions.
8 changes: 6 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ REMOTE_CHARACTER_URLS=
USE_CHARACTER_STORAGE=false

# Logging
DEFAULT_LOG_LEVEL=warn
DEFAULT_LOG_LEVEL=info
LOG_JSON_FORMAT=false # Print everything in logger as json; false by default

###############################
Expand Down Expand Up @@ -745,7 +745,8 @@ QUAI_PRIVATE_KEY=
QUAI_RPC_URL=https://rpc.quai.network

# Chainbase
CHAINBASE_API_KEY=demo # demo is a free tier key
# demo is a free tier key
CHAINBASE_API_KEY= # demo is a free tier key

# 0x
ZERO_EX_API_KEY=
Expand Down Expand Up @@ -952,4 +953,7 @@ ARBITRAGE_EVM_PRIVATE_KEY= # Private key for the wallet executi
FLASHBOTS_RELAY_SIGNING_KEY= # Signing key for Flashbots relay interactions
BUNDLE_EXECUTOR_ADDRESS= # Address of the bundle executor contract

# DESK Exchange Plugin Configration
DESK_EXCHANGE_PRIVATE_KEY= # Required for trading and cancelling orders
DESK_EXCHANGE_NETWORK= # "mainnet" or "testnet

2 changes: 1 addition & 1 deletion .github/workflows/image.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
# Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.
# Uses the `docker/login-action` action to log in to the Container registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.
- name: Log in to the Container registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:

steps:
- name: Check out the repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Validate PR title
id: validate
Expand Down
48 changes: 24 additions & 24 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,29 @@
FROM node:23.3.0-slim AS builder

# Install pnpm globally and necessary build tools
RUN npm install -g pnpm@9.4.0 && \
RUN npm install -g pnpm@9.15.4 && \
apt-get update && \
apt-get upgrade -y && \
apt-get install -y \
git \
python3 \
python3-pip \
curl \
node-gyp \
ffmpeg \
libtool-bin \
autoconf \
automake \
libopus-dev \
make \
g++ \
build-essential \
libcairo2-dev \
libjpeg-dev \
libpango1.0-dev \
libgif-dev \
openssl \
libssl-dev && \
git \
python3 \
python3-pip \
curl \
node-gyp \
ffmpeg \
libtool-bin \
autoconf \
automake \
libopus-dev \
make \
g++ \
build-essential \
libcairo2-dev \
libjpeg-dev \
libpango1.0-dev \
libgif-dev \
openssl \
libssl-dev && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

Expand All @@ -47,12 +47,12 @@ RUN pnpm run build && pnpm prune --prod
FROM node:23.3.0-slim

# Install runtime dependencies
RUN npm install -g pnpm@9.4.0 && \
RUN npm install -g pnpm@9.15.4 && \
apt-get update && \
apt-get install -y \
git \
python3 \
ffmpeg && \
git \
python3 \
ffmpeg && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

## ✨ Features

- 🛠️ Full-featured Discord, Twitter and Telegram connectors
- 🛠️ Full-featured Discord, X (Twitter) and Telegram connectors
- 🔗 Support for every model (Llama, Grok, OpenAI, Anthropic, Gemini, etc.)
- 👥 Multi-agent and room support
- 📚 Easily ingest and interact with your documents
Expand Down
4 changes: 2 additions & 2 deletions agent/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,10 @@
"@elizaos/plugin-coinmarketcap": "workspace:*",
"@elizaos/plugin-conflux": "workspace:*",
"@elizaos/plugin-cosmos": "workspace:*",
"@elizaos/plugin-desk-exchange": "workspace:*",
"@elizaos/plugin-echochambers": "workspace:*",
"@elizaos/plugin-evm": "workspace:*",
"@elizaos/plugin-edwin": "workspace:*",
"@elizaos/plugin-flow": "workspace:*",
"@elizaos/plugin-gelato": "workspace:*",
"@elizaos/plugin-giphy": "workspace:*",
Expand All @@ -66,9 +68,7 @@
"@elizaos/plugin-icp": "workspace:*",
"@elizaos/plugin-initia": "workspace:*",
"@elizaos/plugin-image-generation": "workspace:*",
"@elizaos/plugin-intiface": "workspace:*",
"@elizaos/plugin-lens-network": "workspace:*",
"@elizaos/plugin-letzai": "workspace:*",
"@elizaos/plugin-lit": "workspace:*",
"@elizaos/plugin-massa": "workspace:*",
"@elizaos/plugin-mind-network": "workspace:*",
Expand Down
12 changes: 11 additions & 1 deletion agent/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,9 @@ import { coinmarketcapPlugin } from "@elizaos/plugin-coinmarketcap";
import { confluxPlugin } from "@elizaos/plugin-conflux";
import { createCosmosPlugin } from "@elizaos/plugin-cosmos";
import { cronosZkEVMPlugin } from "@elizaos/plugin-cronoszkevm";
import { deskExchangePlugin } from "@elizaos/plugin-desk-exchange";
import { evmPlugin } from "@elizaos/plugin-evm";
import { edwinPlugin } from "@elizaos/plugin-edwin";
import { flowPlugin } from "@elizaos/plugin-flow";
import { fuelPlugin } from "@elizaos/plugin-fuel";
import { genLayerPlugin } from "@elizaos/plugin-genlayer";
Expand Down Expand Up @@ -1067,6 +1069,10 @@ export async function createAgent(
getSecret(character, "WALLET_PUBLIC_KEY")?.startsWith("0x"))
? evmPlugin
: null,
(getSecret(character, "EVM_PRIVATE_KEY") ||
getSecret(character, "SOLANA_PRIVATE_KEY"))
? edwinPlugin
: null,
(getSecret(character, "EVM_PUBLIC_KEY") ||
getSecret(character, "INJECTIVE_PUBLIC_KEY")) &&
getSecret(character, "INJECTIVE_PRIVATE_KEY")
Expand Down Expand Up @@ -1295,6 +1301,10 @@ export async function createAgent(
getSecret(character, "ARBITRAGE_BUNDLE_EXECUTOR_ADDRESS")
? arbitragePlugin
: null,
getSecret(character, "DESK_EXCHANGE_PRIVATE_KEY") ||
getSecret(character, "DESK_EXCHANGE_NETWORK")
? deskExchangePlugin
: null,
]
.flat()
.filter(Boolean),
Expand Down Expand Up @@ -1515,7 +1525,7 @@ const startAgents = async () => {
elizaLogger.log(`Server started on alternate port ${serverPort}`);
}

elizaLogger.log(
elizaLogger.info(
"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`"
);
};
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
title: "Weekly Contributor Meeting Notes"
date: 2025-01-21
description: "Major architectural discussions on implementing a dynamic plugin system and addressing challenges from the Biome linter migration."
---

# Weekly Contributor Meeting Notes

(January 21, 2025 4:00 PM PST)

**Dynamic Plugin System & Biome Migration: Major Architecture Changes Ahead**


## Summary

This was a weekly contributors meeting for the open-source agent framework, ElizaOS. Participants discussed various technical topics, primarily focusing on issues with the codebase, recent changes, and future development plans.

* **Linting Issues:** The team recently switched from ESLint to Biome as their linter tool. While Biome is faster, it introduced around 2,000 linting errors in the codebase. This led to discussions about how to best address these errors—whether to fix them all at once or progressively. There was also a concern that merging a large pull request (PR) related to Biome might have exacerbated the issue.
* **Merge Queue and CI/CD:** Participants talked about improving the merge queue process and Continuous Integration/Continuous Deployment (CI/CD) workflows. They considered using remote caching with Turbo to speed up builds and discussed the possibility of setting up their own Drone CI instance.
* **Agent Discussions:** The use of different PR agents like Devon, CodeRabbit, and AI Flows was brought up. There were mixed opinions on Devon's effectiveness, while CodeRabbit received positive feedback for catching errors in a PR.
* **Dynamic Plugin System:** A significant portion of the meeting was dedicated to discussing a new dynamic plugin system proposed by a contributor representing Upstreet and Avere. This system aims to move plugins out of the main codebase and into separate repositories, making the core lighter and faster. The system would allow for both "official" plugins maintained by the ElizaOS team and community-submitted plugins.
* **Security Concerns:** The dynamic plugin system raised security concerns, especially regarding community plugins hosted on any GitHub repository. Ideas to mitigate these risks included maintaining a blacklist of malicious plugins, using automated code scanning tools, and requiring plugins to be loaded from specific release tags rather than directly from the main branch.
* **Version Compatibility:** With the introduction of the dynamic plugin system, version compatibility between ElizaOS releases and plugin versions became a crucial point of discussion. The team discussed potential approaches to handle versioning, such as aligning plugin versions with ElizaOS releases or using a range-based system similar to NPM.

Other topics touched upon included:

* The Node.js container, which was deemed unnecessary.
* Key management issues that need to be addressed.
* The possibility of adding a REST endpoint to list all registered actions for better oversight.

The meeting concluded with an agreement to prioritize resolving the linting errors introduced by Biome and to further discuss the dynamic plugin system, focusing on its implementation and security aspects.
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
---
title: "Weekly Contributor Meeting Notes"
date: 2025-01-28
description: "Cracking Down on Chaos - Biome, Merges, and Quality Control. Discussion on enforcing contributor guidelines, Biome adoption, and quality improvements."
---

# Weekly Contributor Meeting Notes

(January 28, 2025 4:00 PM PST)

**Cracking Down on Chaos - Biome, Merges, and Quality Control**


## Summary

This was a weekly contributors meeting for the open-source agent framework ElizaOS.

**1. Enforcing Contributor Guidelines and Repo Rules:**

* The meeting started with a discussion about implementing stricter contributor guidelines and enforcing rules on the repository.
* A key point was to enforce code formatting using Biome to improve code quality and readability.
* The problem of contributors submitting "draft" Pull Requests (PRs) with non-working or poorly typed code was highlighted.
* There was agreement on the need to stop merging PRs that don't meet the standards and to ask contributors to fix issues themselves.
* The goal is to have community guidelines for submissions hammered out and ramped up by next Tuesday.

**2. Biome Adoption and TypeScript Enforcement:**

* The recent switch to Biome for linting was a major topic. While Biome itself is considered powerful and good, the transition has been messy.
* The main issue is that the Biome integration was merged without ensuring all plugins and configurations were updated to support it. This resulted in a large number of errors (2700 mentioned) and broken tests.
* AIFlow is working on fixing Biome errors plugin by plugin, and these PRs need to be merged quickly to avoid further issues and conflicts.
* The lack of TypeScript typing in contributions is a significant problem, leading to errors and making code harder to maintain. Enforcing stricter typing is seen as crucial, potentially using tools like Cursor to guide contributors.

**3. Plugin Issues and Solana Plugin Unification:**

* "Draft" PRs with missing parameters and methods are being submitted, indicating a rush to contribute without proper testing or completion.
* The meeting discussed the issue of having multiple Solana plugins doing the same thing with potentially different library versions.
* The consensus was to unify these plugins into a single, well-maintained Solana plugin to avoid library version conflicts and improve maintainability. Bounties were suggested to encourage this unification.

**4. Testing and Workflow Improvements:**

* Fixing broken workflow tests is a priority. The goal is to get back to a state where only PRs with green checkmarks are merged.
* Smoke tests are being worked on to improve functional testing.
* Pre-commit hooks to run linters before commits are desired to normalize code formatting and improve PR readability.
* The meeting discussed workflow tests and aiming to have green checkmarks to prevent merging broken code.

**5. V2 and V1.5 Development:**

* V2 development is underway, but currently, the focus is shifting towards V1.5 which seems to incorporate elements of V2.
* There was a request for visibility into the V2 codebase, but access is currently limited. A window to discuss access with Shaw (likely the project lead) is planned.
* A "develop-v2" branch was mentioned as potentially accessible for contributors to view, though permissions are unclear.

**6. NPM Package Issues and Releases:**

* Issues with NPM packages have been fixed, and version 0.1.8 alpha 1 is now available.
* A 1.9 release is planned for Friday to include recent work and allow for testing and patching.
* Testing of the new release is crucial to avoid issues for users upgrading from previous versions.
* Merging of new code will be slowed down to allow for stabilization and to avoid contributors' fixes becoming obsolete due to rapid changes.

**7. New Contributor and Community:**

* A new contributor, Kesa, introduced herself, offering to help with documentation and "chum work" to build her portfolio.
* She was welcomed and encouraged to contribute, with the team emphasizing a supportive community for mentorship and help.

**8. Tooling and Infrastructure:**

* Graphite is now online and available. It offers features like a merge queue, which can be used optionally to manage PRs that depend on subsequent fixes (like the Biome transition).
* SNYK (security vulnerability scanning) is being explored for future integration.
* Remote cache server setup is in progress to improve build and workflow efficiency.

**9. Security Concerns:**

* Recent security incidents, like the "Dog Wif Tools" wallet compromise due to injected JavaScript, highlighted the importance of security.
* The discussion about minified JavaScript and line length checks in plugins is related to security concerns. Exceptions for smart contract code with long lines are needed to re-enable these checks.

**10. Open Issues and Callouts:**

* A contributor reported an issue where OpenAI embeddings were being used by default even when Anthropic was configured, leading to errors. This needs to be investigated and fixed.
* OpenAI keys need to be rotated and new keys provided to contributors who need them for tools and integrations.
* An inquiry was made about a Ruby project assigned by Shaw to someone on the team, to understand who is working on it.
* A question was raised about the timeline for responses to applications for the Eliza OS Vault Hackathon at ETH Denver.

**Overall, the meeting focused on stabilizing the project after the Biome integration, improving code quality and contributor workflow, planning upcoming releases, and addressing security concerns. There was a positive outlook for the future of the Eliza OS framework, with excitement about upcoming changes and improvements.**
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ The conversation focused on integrating @bigdookie's artwork as bumpers in their
- Do we need video producers? Why is it complicated for comfy stuff to be fast-paced? (asked by [boom](09:56))
- What are the next steps in establishing a Creative Studio and bidding on projects? How does budget influence project success? (asked by [whobody, boom](10:27))
- How will the open-source approach help us? How can Banodoco handle bids on their end? (asked by [boom (10:00)])
- Can we prompt an engineer to help the story arch or main punchlines for AI-assisted writing? How does it come together with human and AI collaboration in filmmaking? (asked by [boom] (10:05))
- Can we prompt an engineer to help the story arc or main punchlines for AI-assisted writing? How does it come together with human and AI collaboration in filmmaking? (asked by [boom] (10:05))

## Who Helped Who

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

## Summary

Discussion focused on extending functionality of a Discord bot using actions, plugins (mentioned by W3_Bounty), solving an Unauthorized error when linking Solona wallet (Howie Duhzit's issue resolved with Yoni’s help). DorianD inquired about AI models and image-text generation separation. Shaw suggested focusing on image generation for development school.
Discussion focused on extending functionality of a Discord bot using actions, plugins (mentioned by W3_Bounty), solving an Unauthorized error when linking Solana wallet (Howie Duhzit's issue resolved with Yoni’s help). DorianD inquired about AI models and image-text generation separation. Shaw suggested focusing on image generation for development school.

## FAQ

- Why am I getting an Unauthorized error when linking a Solona wallet? How can it be resolved? (asked by @Howie Duhzit)
- Why am I getting an Unauthorized error when linking a Solana wallet? How can it be resolved? (asked by @Howie Duhzit)
- What is the most used AI model currently, and how to separate image generation from text gen in Discord using X Grok or OpenAI API key for different purposes? (asked by [DorianD])

## Who Helped Who
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ The chat segment focused primarily on the technical aspects of self-learning, pa

## FAQ

- How did you learn all these in depth, from vides or documentation?...can you give some pointers? (asked by @Tharakesh)
- How did you learn all these in depth, from videos or documentation?...can you give some pointers? (asked by @Tharakesh)
- And where can I find these...I didn't find these in the docs (asked by @Tharakesh)
- (asked by @W3Bounty)
- Which free alternatives to Claude can you recommend for proof-of-concept? And how much does it cost to test with the actual service, like Claude's API keys and testing budget of $5 per day? (asked by [chevronkey] (22:42))
Expand Down
Loading

0 comments on commit c654233

Please sign in to comment.