diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..779f99a12b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.env.example b/.env.example index 1540f43c51..b9a808d756 100644 --- a/.env.example +++ b/.env.example @@ -1,17 +1,21 @@ # Discord Configuration DISCORD_APPLICATION_ID= -DISCORD_API_TOKEN= # Bot token +DISCORD_API_TOKEN= # Bot token +DISCORD_VOICE_CHANNEL_ID= # The ID of the voice channel the bot should join (optional) # AI Model API Keys -OPENAI_API_KEY= # OpenAI API key, starting with sk- -REDPILL_API_KEY= # REDPILL API Key -GROK_API_KEY= # GROK API Key -GROQ_API_KEY= # Starts with gsk_ +OPENAI_API_KEY= # OpenAI API key, starting with sk- + +ETERNALAI_URL= +ETERNALAI_API_KEY= + +GROK_API_KEY= # GROK API Key +GROQ_API_KEY= # Starts with gsk_ OPENROUTER_API_KEY= -GOOGLE_GENERATIVE_AI_API_KEY= # Gemini API key +GOOGLE_GENERATIVE_AI_API_KEY= # Gemini API key # Speech Synthesis -ELEVENLABS_XI_API_KEY= # API key from elevenlabs +ELEVENLABS_XI_API_KEY= # API key from elevenlabs # ElevenLabs Settings ELEVENLABS_MODEL_ID=eleven_multilingual_v2 @@ -25,39 +29,54 @@ ELEVENLABS_OUTPUT_FORMAT=pcm_16000 # Twitter/X Configuration TWITTER_DRY_RUN=false -TWITTER_USERNAME= # Account username -TWITTER_PASSWORD= # Account password -TWITTER_EMAIL= # Account email -TWITTER_COOKIES= # Account cookies +TWITTER_USERNAME= # Account username +TWITTER_PASSWORD= # Account password +TWITTER_EMAIL= # Account email +TWITTER_2FA_SECRET= +TWITTER_COOKIES= # Account cookies +TWITTER_POLL_INTERVAL=120 # How often (in seconds) the bot should check for interactions X_SERVER_URL= XAI_API_KEY= XAI_MODEL= # Post Interval Settings (in minutes) -POST_INTERVAL_MIN= # Default: 90 -POST_INTERVAL_MAX= # Default: 180 +POST_INTERVAL_MIN= # Default: 90 +POST_INTERVAL_MAX= # Default: 180 +POST_IMMEDIATELY= # Feature Flags -IMAGE_GEN= # Set to TRUE to enable image generation -USE_OPENAI_EMBEDDING= # Set to TRUE for OpenAI, leave blank for local +IMAGE_GEN= # Set to TRUE to enable image generation +USE_OPENAI_EMBEDDING= # Set to TRUE for OpenAI/1536, leave blank for local +USE_OLLAMA_EMBEDDING= # Set to TRUE for OLLAMA/1024, leave blank for local # OpenRouter Models -OPENROUTER_MODEL= # Default: uses hermes 70b/405b +OPENROUTER_MODEL= # Default: uses hermes 70b/405b SMALL_OPENROUTER_MODEL= MEDIUM_OPENROUTER_MODEL= LARGE_OPENROUTER_MODEL= +# REDPILL Configuration +# https://docs.red-pill.ai/get-started/supported-models +REDPILL_API_KEY= # REDPILL API Key +REDPILL_MODEL= +SMALL_REDPILL_MODEL= # Default: gpt-4o-mini +MEDIUM_REDPILL_MODEL= # Default: gpt-4o +LARGE_REDPILL_MODEL= # Default: gpt-4o + # Ollama Configuration -OLLAMA_SERVER_URL= # Default: localhost:11434 +OLLAMA_SERVER_URL= # Default: localhost:11434 OLLAMA_MODEL= -OLLAMA_EMBEDDING_MODEL= # Default: mxbai-embed-large -SMALL_OLLAMA_MODEL= # Default: llama3.2 -MEDIUM_OLLAMA_MODEL= # Default: hermes3 -LARGE_OLLAMA_MODEL= # Default: hermes3:70b +OLLAMA_EMBEDDING_MODEL= # Default: mxbai-embed-large +SMALL_OLLAMA_MODEL= # Default: llama3.2 +MEDIUM_OLLAMA_MODEL= # Default: hermes3 +LARGE_OLLAMA_MODEL= # Default: hermes3:70b + +#LlamaLocal Configuration +LLAMALOCAL_PATH= # Default: "" which is the current directory in plugin-node/dist/ which gets destroyed and recreated on every build # API Keys -ANTHROPIC_API_KEY= # For Claude -HEURIST_API_KEY= # Get from https://heurist.ai/dev-access +ANTHROPIC_API_KEY= # For Claude +HEURIST_API_KEY= # Get from https://heurist.ai/dev-access # Heurist Models SMALL_HEURIST_LANGUAGE_MODEL= @@ -65,9 +84,18 @@ MEDIUM_HEURIST_LANGUAGE_MODEL= LARGE_HEURIST_LANGUAGE_MODEL= HEURIST_IMAGE_MODEL= -# Wallet Configuration -WALLET_PRIVATE_KEY=EXAMPLE_WALLET_PRIVATE_KEY -WALLET_PUBLIC_KEY=EXAMPLE_WALLET_PUBLIC_KEY +# EVM +EVM_PRIVATE_KEY= +EVM_PUBLIC_KEY= + +# Solana +SOLANA_PRIVATE_KEY= +SOLANA_PUBLIC_KEY= + +# Fallback Wallet Configuration (deprecated) +WALLET_PRIVATE_KEY= +WALLET_PUBLIC_KEY= + BIRDEYE_API_KEY= # Solana Configuration @@ -91,12 +119,20 @@ STARKNET_ADDRESS= STARKNET_PRIVATE_KEY= STARKNET_RPC_URL= +# Intiface Configuration +INTIFACE_WEBSOCKET_URL=ws://localhost:12345 + +# Farcaster +FARCASTER_HUB_URL= +FARCASTER_FID= +FARCASTER_PRIVATE_KEY= + # Coinbase COINBASE_COMMERCE_KEY= # from coinbase developer portal -COINBASE_API_KEY= # from coinbase developer portal -COINBASE_PRIVATE_KEY= # from coinbase developer portal +COINBASE_API_KEY= # from coinbase developer portal +COINBASE_PRIVATE_KEY= # from coinbase developer portal # 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 -COINBASE_GENERATED_WALLET_ID= # not your address but the wallet id from generating a wallet through the plugin +COINBASE_GENERATED_WALLET_ID= # not your address but the wallet id from generating a wallet through the plugin COINBASE_GENERATED_WALLET_HEX_SEED= # not your address but the wallet hex seed from generating a wallet through the plugin and calling export # Conflux Configuration @@ -112,6 +148,32 @@ ZEROG_EVM_RPC= ZEROG_PRIVATE_KEY= ZEROG_FLOW_ADDRESS= -# Coinbase Commerce +# Coinbase COINBASE_COMMERCE_KEY= +COINBASE_API_KEY= +COINBASE_PRIVATE_KEY= + +COINBASE_GENERATED_WALLET_ID= +COINBASE_GENERATED_WALLET_HEX_SEED= + +# TEE Configuration +DSTACK_SIMULATOR_ENDPOINT= +WALLET_SECRET_SALT= # ONLY DEFINE IF YOU WANT TO USE TEE Plugin, otherwise it will throw errors + +# Galadriel Configuration +GALADRIEL_API_KEY=gal-* # Get from https://dashboard.galadriel.com/ + +# fal.ai Configuration +FAL_API_KEY= +FAL_AI_LORA_PATH= + +# WhatsApp Cloud API Configuration +WHATSAPP_ACCESS_TOKEN= # Permanent access token from Facebook Developer Console +WHATSAPP_PHONE_NUMBER_ID= # Phone number ID from WhatsApp Business API +WHATSAPP_BUSINESS_ACCOUNT_ID= # Business Account ID from Facebook Business Manager +WHATSAPP_WEBHOOK_VERIFY_TOKEN= # Custom string for webhook verification +WHATSAPP_API_VERSION=v17.0 # WhatsApp API version (default: v17.0) +# ICP +INTERNET_COMPUTER_PRIVATE_KEY= +INTERNET_COMPUTER_ADDRESS= diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000000..e795935eb7 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,47 @@ +{ + "plugins": [ + "@stylistic" + ], + "extends": [ + "next/core-web-vitals", + "plugin:@stylistic/recommended-extends" + ], + "rules": { + "@stylistic/indent": [ + "error", + 4, + { + "SwitchCase": 1 + } + ], + "@stylistic/no-tabs": "error", + "@stylistic/member-delimiter-style": [ + "error", + { + "multiline": { + "delimiter": "semi", + "requireLast": true + }, + "singleline": { + "delimiter": "semi", + "requireLast": false + } + } + ], + "@stylistic/eol-last": [ + "error", + "always" + ], + "@stylistic/multiline-ternary": "off", + "@stylistic/semi": [ + "error", + "always" + ], + "@stylistic/quotes": "off", + "@stylistic/comma-dangle": "off", + "@stylistic/brace-style": [ + "error", + "1tbs" + ] + } +} \ No newline at end of file diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 7c0ba4587a..0dcc810f5f 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -47,7 +47,7 @@ If a docs change is needed: I have updated the documentation accordingly. ## Detailed testing steps