Skip to content

Commit 06c1c41

Browse files
authored
Merge pull request #1006 from ai16z/main
chore: Bring Develop up to date with HEAD
2 parents d4c170a + 1c9a5a1 commit 06c1c41

File tree

1,382 files changed

+155611
-66575
lines changed

Some content is hidden

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

1,382 files changed

+155611
-66575
lines changed

.editorconfig

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
root = true
2+
3+
[*]
4+
indent_style = space
5+
indent_size = 4
6+
end_of_line = lf
7+
charset = utf-8
8+
trim_trailing_whitespace = true
9+
insert_final_newline = true
10+
11+
[*.md]
12+
trim_trailing_whitespace = false

.env.example

+253
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,253 @@
1+
# Discord Configuration
2+
DISCORD_APPLICATION_ID=
3+
DISCORD_API_TOKEN= # Bot token
4+
DISCORD_VOICE_CHANNEL_ID= # The ID of the voice channel the bot should join (optional)
5+
6+
# AI Model API Keys
7+
OPENAI_API_KEY= # OpenAI API key, starting with sk-
8+
SMALL_OPENAI_MODEL= # Default: gpt-4o-mini
9+
MEDIUM_OPENAI_MODEL= # Default: gpt-4o
10+
LARGE_OPENAI_MODEL= # Default: gpt-4o
11+
EMBEDDING_OPENAI_MODEL= # Default: text-embedding-3-small
12+
IMAGE_OPENAI_MODEL= # Default: dall-e-3
13+
14+
# Eternal AI's Decentralized Inference API
15+
ETERNALAI_URL=
16+
ETERNALAI_MODEL= #Default: "neuralmagic/Meta-Llama-3.1-405B-Instruct-quantized.w4a16"
17+
ETERNALAI_API_KEY=
18+
19+
GROK_API_KEY= # GROK API Key
20+
GROQ_API_KEY= # Starts with gsk_
21+
OPENROUTER_API_KEY=
22+
GOOGLE_GENERATIVE_AI_API_KEY= # Gemini API key
23+
24+
ALI_BAILIAN_API_KEY= # Ali Bailian API Key
25+
VOLENGINE_API_KEY= # VolEngine API Key
26+
NANOGPT_API_KEY= # NanoGPT API Key
27+
28+
HYPERBOLIC_API_KEY= # Hyperbolic API Key
29+
HYPERBOLIC_MODEL=
30+
IMAGE_HYPERBOLIC_MODEL= # Default: FLUX.1-dev
31+
SMALL_HYPERBOLIC_MODEL= # Default: meta-llama/Llama-3.2-3B-Instruct
32+
MEDIUM_HYPERBOLIC_MODEL= # Default: meta-llama/Meta-Llama-3.1-70B-Instruct
33+
LARGE_HYPERBOLIC_MODEL= # Default: meta-llama/Meta-Llama-3.1-405-Instruct
34+
35+
# Speech Synthesis
36+
ELEVENLABS_XI_API_KEY= # API key from elevenlabs
37+
38+
# ElevenLabs Settings
39+
ELEVENLABS_MODEL_ID=eleven_multilingual_v2
40+
ELEVENLABS_VOICE_ID=21m00Tcm4TlvDq8ikWAM
41+
ELEVENLABS_VOICE_STABILITY=0.5
42+
ELEVENLABS_VOICE_SIMILARITY_BOOST=0.9
43+
ELEVENLABS_VOICE_STYLE=0.66
44+
ELEVENLABS_VOICE_USE_SPEAKER_BOOST=false
45+
ELEVENLABS_OPTIMIZE_STREAMING_LATENCY=4
46+
ELEVENLABS_OUTPUT_FORMAT=pcm_16000
47+
48+
# Twitter/X Configuration
49+
TWITTER_DRY_RUN=false
50+
TWITTER_USERNAME= # Account username
51+
TWITTER_PASSWORD= # Account password
52+
TWITTER_EMAIL= # Account email
53+
TWITTER_2FA_SECRET=
54+
TWITTER_COOKIES= # Account cookies
55+
TWITTER_POLL_INTERVAL=120 # How often (in seconds) the bot should check for interactions
56+
X_SERVER_URL=
57+
XAI_API_KEY=
58+
XAI_MODEL=
59+
60+
# Post Interval Settings (in minutes)
61+
POST_INTERVAL_MIN= # Default: 90
62+
POST_INTERVAL_MAX= # Default: 180
63+
POST_IMMEDIATELY=
64+
65+
# Feature Flags
66+
IMAGE_GEN= # Set to TRUE to enable image generation
67+
USE_OPENAI_EMBEDDING= # Set to TRUE for OpenAI/1536, leave blank for local
68+
USE_OLLAMA_EMBEDDING= # Set to TRUE for OLLAMA/1024, leave blank for local
69+
70+
# OpenRouter Models
71+
OPENROUTER_MODEL= # Default: uses hermes 70b/405b
72+
SMALL_OPENROUTER_MODEL=
73+
MEDIUM_OPENROUTER_MODEL=
74+
LARGE_OPENROUTER_MODEL=
75+
76+
# REDPILL Configuration
77+
# https://docs.red-pill.ai/get-started/supported-models
78+
REDPILL_API_KEY= # REDPILL API Key
79+
REDPILL_MODEL=
80+
SMALL_REDPILL_MODEL= # Default: gpt-4o-mini
81+
MEDIUM_REDPILL_MODEL= # Default: gpt-4o
82+
LARGE_REDPILL_MODEL= # Default: gpt-4o
83+
84+
# Ollama Configuration
85+
OLLAMA_SERVER_URL= # Default: localhost:11434
86+
OLLAMA_MODEL=
87+
OLLAMA_EMBEDDING_MODEL= # Default: mxbai-embed-large
88+
SMALL_OLLAMA_MODEL= # Default: llama3.2
89+
MEDIUM_OLLAMA_MODEL= # Default: hermes3
90+
LARGE_OLLAMA_MODEL= # Default: hermes3:70b
91+
92+
# Google Configuration
93+
GOOGLE_MODEL=
94+
SMALL_GOOGLE_MODEL= # Default: gemini-1.5-flash-latest
95+
MEDIUM_GOOGLE_MODEL= # Default: gemini-1.5-flash-latest
96+
LARGE_GOOGLE_MODEL= # Default: gemini-1.5-pro-latest
97+
EMBEDDING_GOOGLE_MODEL= # Default: text-embedding-004
98+
99+
# Groq Configuration
100+
SMALL_GROQ_MODEL= # Default: llama-3.1-8b-instant
101+
MEDIUM_GROQ_MODEL= # Default: llama-3.3-70b-versatile
102+
LARGE_GROQ_MODEL= # Default: llama-3.2-90b-vision-preview
103+
EMBEDDING_GROQ_MODEL= # Default: llama-3.1-8b-instant
104+
105+
# NanoGPT Configuration
106+
SMALL_NANOGPT_MODEL= # Default: gpt-4o-mini
107+
MEDIUM_NANOGPT_MODEL= # Default: gpt-4o
108+
LARGE_NANOGPT_MODEL= # Default: gpt-4o
109+
110+
#LlamaLocal Configuration
111+
LLAMALOCAL_PATH= # Default: "" which is the current directory in plugin-node/dist/ which gets destroyed and recreated on every build
112+
113+
# API Keys
114+
ANTHROPIC_API_KEY= # For Claude
115+
SMALL_ANTHROPIC_MODEL= # Default: claude-3-haiku-20240307
116+
MEDIUM_ANTHROPIC_MODEL= # Default: claude-3-5-sonnet-20241022
117+
LARGE_ANTHROPIC_MODEL= # Default: claude-3-5-sonnet-20241022
118+
119+
HEURIST_API_KEY= # Get from https://heurist.ai/dev-access
120+
121+
# Heurist Models
122+
SMALL_HEURIST_MODEL= # Default: meta-llama/llama-3-70b-instruct
123+
MEDIUM_HEURIST_MODEL= # Default: meta-llama/llama-3-70b-instruct
124+
LARGE_HEURIST_MODEL= # Default: meta-llama/llama-3.1-405b-instruct
125+
HEURIST_IMAGE_MODEL= # Default: PepeXL
126+
127+
# Gaianet Configuration
128+
GAIANET_MODEL=
129+
GAIANET_SERVER_URL=
130+
131+
SMALL_GAIANET_MODEL= # Default: llama3b
132+
SMALL_GAIANET_SERVER_URL= # Default: https://llama3b.gaia.domains/v1
133+
134+
MEDIUM_GAIANET_MODEL= # Default: llama
135+
MEDIUM_GAIANET_SERVER_URL= # Default: https://llama8b.gaia.domains/v1
136+
137+
LARGE_GAIANET_MODEL= # Default: qwen72b
138+
LARGE_GAIANET_SERVER_URL= # Default: https://qwen72b.gaia.domains/v1
139+
140+
GAIANET_EMBEDDING_MODEL=
141+
USE_GAIANET_EMBEDDING= # Set to TRUE for GAIANET/768, leave blank for local
142+
143+
# EVM
144+
EVM_PRIVATE_KEY=
145+
EVM_PROVIDER_URL=
146+
147+
# Solana
148+
SOLANA_PRIVATE_KEY=
149+
SOLANA_PUBLIC_KEY=
150+
151+
# Fallback Wallet Configuration (deprecated)
152+
WALLET_PRIVATE_KEY=
153+
WALLET_PUBLIC_KEY=
154+
155+
BIRDEYE_API_KEY=
156+
157+
# Solana Configuration
158+
SOL_ADDRESS=So11111111111111111111111111111111111111112
159+
SLIPPAGE=1
160+
BASE_MINT=So11111111111111111111111111111111111111112
161+
RPC_URL=https://api.mainnet-beta.solana.com
162+
HELIUS_API_KEY=
163+
164+
# Telegram Configuration
165+
TELEGRAM_BOT_TOKEN=
166+
167+
# Together Configuration
168+
TOGETHER_API_KEY=
169+
170+
# Server Configuration
171+
SERVER_PORT=3000
172+
173+
# Starknet Configuration
174+
STARKNET_ADDRESS=
175+
STARKNET_PRIVATE_KEY=
176+
STARKNET_RPC_URL=
177+
178+
# Intiface Configuration
179+
INTIFACE_WEBSOCKET_URL=ws://localhost:12345
180+
181+
# Farcaster Neynar Configuration
182+
FARCASTER_FID= # the FID associated with the account your are sending casts from
183+
FARCASTER_NEYNAR_API_KEY= # Neynar API key: https://neynar.com/
184+
FARCASTER_NEYNAR_SIGNER_UUID= # signer for the account you are sending casts from. create a signer here: https://dev.neynar.com/app
185+
FARCASTER_DRY_RUN=false # Set to true if you want to run the bot without actually publishing casts
186+
FARCASTER_POLL_INTERVAL=120 # How often (in seconds) the bot should check for farcaster interactions (replies and mentions)
187+
188+
# Coinbase
189+
COINBASE_COMMERCE_KEY= # from coinbase developer portal
190+
COINBASE_API_KEY= # from coinbase developer portal
191+
COINBASE_PRIVATE_KEY= # from coinbase developer portal
192+
# if not configured it will be generated and written to runtime.character.settings.secrets.COINBASE_GENERATED_WALLET_ID and runtime.character.settings.secrets.COINBASE_GENERATED_WALLET_HEX_SEED
193+
COINBASE_GENERATED_WALLET_ID= # not your address but the wallet id from generating a wallet through the plugin
194+
COINBASE_GENERATED_WALLET_HEX_SEED= # not your address but the wallet hex seed from generating a wallet through the plugin and calling export
195+
# for webhook plugin the uri you want to send the webhook to for dummy ones use https://webhook.site
196+
COINBASE_NOTIFICATION_URI=
197+
# Conflux Configuration
198+
CONFLUX_CORE_PRIVATE_KEY=
199+
CONFLUX_CORE_SPACE_RPC_URL=
200+
CONFLUX_ESPACE_PRIVATE_KEY=
201+
CONFLUX_ESPACE_RPC_URL=
202+
CONFLUX_MEME_CONTRACT_ADDRESS=
203+
204+
#ZeroG
205+
ZEROG_INDEXER_RPC=
206+
ZEROG_EVM_RPC=
207+
ZEROG_PRIVATE_KEY=
208+
ZEROG_FLOW_ADDRESS=
209+
210+
# TEE Configuration
211+
# TEE_MODE options:
212+
# - LOCAL: Uses simulator at localhost:8090 (for local development)
213+
# - DOCKER: Uses simulator at host.docker.internal:8090 (for docker development)
214+
# - PRODUCTION: No simulator, uses production endpoints
215+
# Defaults to OFF if not specified
216+
TEE_MODE=OFF #LOCAL|DOCKER|PRODUCTION
217+
WALLET_SECRET_SALT= # ONLY DEFINE IF YOU WANT TO USE TEE Plugin, otherwise it will throw errors
218+
219+
# Galadriel Configuration
220+
GALADRIEL_API_KEY=gal-* # Get from https://dashboard.galadriel.com/
221+
222+
# fal.ai Configuration
223+
FAL_API_KEY=
224+
FAL_AI_LORA_PATH=
225+
226+
# WhatsApp Cloud API Configuration
227+
WHATSAPP_ACCESS_TOKEN= # Permanent access token from Facebook Developer Console
228+
WHATSAPP_PHONE_NUMBER_ID= # Phone number ID from WhatsApp Business API
229+
WHATSAPP_BUSINESS_ACCOUNT_ID= # Business Account ID from Facebook Business Manager
230+
WHATSAPP_WEBHOOK_VERIFY_TOKEN= # Custom string for webhook verification
231+
WHATSAPP_API_VERSION=v17.0 # WhatsApp API version (default: v17.0)
232+
233+
# Flow Blockchain Configuration
234+
FLOW_ADDRESS=
235+
FLOW_PRIVATE_KEY= # Private key for SHA3-256 + P256 ECDSA
236+
FLOW_NETWORK= # Default: mainnet
237+
FLOW_ENDPOINT_URL= # Default: https://mainnet.onflow.org
238+
239+
# ICP
240+
INTERNET_COMPUTER_PRIVATE_KEY=
241+
INTERNET_COMPUTER_ADDRESS=
242+
243+
# Aptos
244+
APTOS_PRIVATE_KEY= # Aptos private key
245+
APTOS_NETWORK= # must be one of mainnet, testnet
246+
247+
248+
# AWS S3 Configuration Settings for File Upload
249+
AWS_ACCESS_KEY_ID=
250+
AWS_SECRET_ACCESS_KEY=
251+
AWS_REGION=
252+
AWS_S3_BUCKET=
253+
AWS_S3_UPLOAD_PATH=

.eslintrc.json

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"plugins": [
3+
"@stylistic"
4+
],
5+
"extends": [
6+
"next/core-web-vitals",
7+
"plugin:@stylistic/recommended-extends"
8+
],
9+
"rules": {
10+
"@stylistic/indent": [
11+
"error",
12+
4,
13+
{
14+
"SwitchCase": 1
15+
}
16+
],
17+
"@stylistic/no-tabs": "error",
18+
"@stylistic/member-delimiter-style": [
19+
"error",
20+
{
21+
"multiline": {
22+
"delimiter": "semi",
23+
"requireLast": true
24+
},
25+
"singleline": {
26+
"delimiter": "semi",
27+
"requireLast": false
28+
}
29+
}
30+
],
31+
"@stylistic/eol-last": [
32+
"error",
33+
"always"
34+
],
35+
"@stylistic/multiline-ternary": "off",
36+
"@stylistic/semi": [
37+
"error",
38+
"always"
39+
],
40+
"@stylistic/quotes": "off",
41+
"@stylistic/comma-dangle": "off",
42+
"@stylistic/brace-style": [
43+
"error",
44+
"1tbs"
45+
]
46+
}
47+
}

.github/pull_request_template.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ If a docs change is needed: I have updated the documentation accordingly.
4747
## Detailed testing steps
4848

4949
<!--
50-
None, automtated tests are fine.
50+
None, automated tests are fine.
5151
-->
5252

5353
<!--
@@ -77,3 +77,9 @@ None, automtated tests are fine.
7777
<!--
7878
## Deployment instructions
7979
-->
80+
81+
<!-- If you are on Discord, please join https://discord.gg/ai16z and state your Discord username here for contribute role and join us in #development-feed -->
82+
<!--
83+
## Discord username
84+
85+
-->

.github/workflows/ci.yaml

+11-3
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,21 @@ jobs:
2525
- name: Run Prettier
2626
run: pnpm run prettier --check .
2727

28+
- name: Run Linter
29+
run: pnpm run lint
30+
2831
- name: Create test env file
2932
run: |
30-
echo "TEST_DATABASE_CLIENT=sqlite" > core/.env.test
31-
echo "NODE_ENV=test" >> core/.env.test
33+
echo "TEST_DATABASE_CLIENT=sqlite" > packages/core/.env.test
34+
echo "NODE_ENV=test" >> packages/core/.env.test
3235
3336
- name: Run tests
34-
run: cd core && pnpm test
37+
run: cd packages/core && pnpm test
3538

3639
- name: Build packages
3740
run: pnpm run build
41+
42+
- name: Upload coverage reports to Codecov
43+
uses: codecov/codecov-action@v5
44+
with:
45+
token: ${{ secrets.CODECOV_TOKEN }}
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Generate Changelog
2+
on:
3+
push:
4+
tags:
5+
- "*"
6+
jobs:
7+
changelog:
8+
runs-on: ubuntu-latest
9+
permissions:
10+
contents: write
11+
steps:
12+
- uses: actions/checkout@v4
13+
with:
14+
ref: main
15+
token: ${{ secrets.CHANGELOG_GITHUB_TOKEN }}
16+
- name: Generate Changelog
17+
run: |
18+
export PATH="$PATH:/home/runner/.local/share/gem/ruby/3.0.0/bin"
19+
gem install --user-install github_changelog_generator
20+
github_changelog_generator \
21+
-u ${{ github.repository_owner }} \
22+
-p ${{ github.event.repository.name }} \
23+
--token ${{ secrets.CHANGELOG_GITHUB_TOKEN }}
24+
- name: Commit Changelog
25+
uses: stefanzweifel/git-auto-commit-action@v5
26+
with:
27+
commit_message: "chore: update changelog"
28+
branch: main
29+
file_pattern: "CHANGELOG.md"
30+
commit_author: "GitHub Action <actions@github.com>"

0 commit comments

Comments
 (0)