diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000000..e5deb93b1d --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,24 @@ +ARG NODE_VER=23.5.0 +ARG BASE_IMAGE=node:${NODE_VER} +FROM $BASE_IMAGE + +ENV DEBIAN_FRONTEND=noninteractive + +# Install pnpm globally and install necessary build tools +RUN apt-get update \ + && apt-get install -y \ + git \ + python3 \ + make \ + g++ \ + nano \ + vim \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +ARG PNPM_VER=9.15.2 +RUN npm install -g pnpm@${PNPM_VER} + +# Set Python 3 as the default python +RUN ln -s /usr/bin/python3 /usr/bin/python +ENV DEBIAN_FRONTEND=dialog diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..23aca531b4 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,38 @@ +// See https://aka.ms/vscode-remote/devcontainer.json for format details. +{ + "name": "elizaos-dev", + "dockerFile": "Dockerfile", + "build": { + "args": { + "NODE_VER": "23.5.0", + "PNPM_VER": "9.15.2" + } + }, + "privileged": true, + "runArgs": [ + "-p=3000:3000", // Add port for server api + "-p=5173:5173", // Add port for client + //"--volume=/usr/lib/wsl:/usr/lib/wsl", // uncomment for WSL + //"--volume=/mnt/wslg:/mnt/wslg", // uncomment for WSL + "--gpus=all", // ! uncomment for vGPU + //"--device=/dev/dxg", // uncomment this for vGPU under WSL + "--device=/dev/dri" + ], + "containerEnv": { + //"MESA_D3D12_DEFAULT_ADAPTER_NAME": "NVIDIA", // uncomment for WSL + //"LD_LIBRARY_PATH": "/usr/lib/wsl/lib" // uncomment for WSL + }, + "customizations": { + "vscode": { + "extensions": [ + "vscode.json-language-features", + "vscode.css-language-features", + // "foxundermoon.shell-format", + // "dbaeumer.vscode-eslint", + // "esbenp.prettier-vscode" + "ms-python.python" + ] + } + }, + "features": {} +} \ No newline at end of file diff --git a/.env.example b/.env.example index f54f552f6a..4b3bc9eb44 100644 --- a/.env.example +++ b/.env.example @@ -20,8 +20,9 @@ IMAGE_OPENAI_MODEL= # Default: dall-e-3 ETERNALAI_URL= ETERNALAI_MODEL= # Default: "neuralmagic/Meta-Llama-3.1-405B-Instruct-quantized.w4a16" ETERNALAI_API_KEY= +ETERNAL_AI_LOG_REQUEST=false #Default: false -GROK_API_KEY= # GROK API Key +GROK_API_KEY= # GROK/xAI API Key GROQ_API_KEY= # Starts with gsk_ OPENROUTER_API_KEY= GOOGLE_GENERATIVE_AI_API_KEY= # Gemini API key @@ -36,6 +37,18 @@ SMALL_HYPERBOLIC_MODEL= # Default: meta-llama/Llama-3.2-3B-Instruct MEDIUM_HYPERBOLIC_MODEL= # Default: meta-llama/Meta-Llama-3.1-70B-Instruct LARGE_HYPERBOLIC_MODEL= # Default: meta-llama/Meta-Llama-3.1-405-Instruct + +# Infera Configuration + +INFERA_API_KEY= # visit api.infera.org/docs to obtain an API key under /signup_user +INFERA_MODEL= # Default: llama3.2:latest +INFERA_SERVER_URL= # Default: https://api.infera.org/ + +SMALL_INFERA_MODEL= #Recommended: llama3.2:latest +MEDIUM_INFERA_MODEL= #Recommended: mistral-nemo:latest +LARGE_INFERA_MODEL= #Recommended: mistral-small:latest + + # Livepeer configuration LIVEPEER_GATEWAY_URL= # Free inference gateways and docs: https://livepeer-eliza.com/ LIVEPEER_IMAGE_MODEL= # Default: ByteDance/SDXL-Lightning @@ -43,6 +56,9 @@ LIVEPEER_IMAGE_MODEL= # Default: ByteDance/SDXL-Lightning # Speech Synthesis ELEVENLABS_XI_API_KEY= # API key from elevenlabs +# Transcription Provider +TRANSCRIPTION_PROVIDER= # Default: local (possible values: openai, deepgram, local) + # Direct Client Setting EXPRESS_MAX_PAYLOAD= # Default: 100kb @@ -67,6 +83,7 @@ TWITTER_POLL_INTERVAL=120 # How often (in seconds) the bot should check fo TWITTER_SEARCH_ENABLE=FALSE # Enable timeline search, WARNING this greatly increases your chance of getting banned TWITTER_TARGET_USERS= # Comma separated list of Twitter user names to interact with TWITTER_RETRY_LIMIT= # Maximum retry attempts for Twitter login +TWITTER_SPACES_ENABLE=false # Enable or disable Twitter Spaces logic X_SERVER_URL= XAI_API_KEY= @@ -78,7 +95,7 @@ POST_INTERVAL_MAX= # Default: 180 POST_IMMEDIATELY= # Twitter action processing configuration -ACTION_INTERVAL=300000 # Interval in milliseconds between action processing runs (default: 5 minutes) +ACTION_INTERVAL= # Interval in minutes between action processing runs (default: 5 minutes) ENABLE_ACTION_PROCESSING=false # Set to true to enable the action processing loop # Feature Flags @@ -162,6 +179,14 @@ LARGE_GAIANET_SERVER_URL= # Default: https://qwen72b.gaia.domains/v1 GAIANET_EMBEDDING_MODEL= USE_GAIANET_EMBEDDING= # Set to TRUE for GAIANET/768, leave blank for local +# Volcengine Configuration +VOLENGINE_API_URL= # Volcengine API Endpoint, Default: https://open.volcengineapi.com/api/v3/ +VOLENGINE_MODEL= +SMALL_VOLENGINE_MODEL= # Default: doubao-lite-128k +MEDIUM_VOLENGINE_MODEL= # Default: doubao-pro-128k +LARGE_VOLENGINE_MODEL= # Default: doubao-pro-256k +VOLENGINE_EMBEDDING_MODEL= # Default: doubao-embedding + # EVM EVM_PRIVATE_KEY= EVM_PROVIDER_URL= @@ -326,6 +351,16 @@ NEAR_NETWORK=testnet # or mainnet ZKSYNC_ADDRESS= ZKSYNC_PRIVATE_KEY= +# Avail DA Configuration +AVAIL_ADDRESS= +AVAIL_SEED= +AVAIL_APP_ID=0 +AVAIL_RPC_URL=wss://avail-turing.public.blastapi.io/ # (Default) Testnet: wss://avail-turing.public.blastapi.io/ | Mainnet: wss://avail-mainnet.public.blastapi.io/ + +# Marlin +TEE_MARLIN= # Set "yes" to enable the plugin +TEE_MARLIN_ATTESTATION_ENDPOINT= # Optional, default "http://127.0.0.1:1350" + # Ton TON_PRIVATE_KEY= # Ton Mnemonic Seed Phrase Join With Empty String TON_RPC_URL= # ton rpc @@ -341,7 +376,7 @@ AWS_S3_UPLOAD_PATH= DEEPGRAM_API_KEY= # Sui -SUI_PRIVATE_KEY= # Sui Mnemonic Seed Phrase (`sui keytool generate ed25519`) +SUI_PRIVATE_KEY= # Sui Mnemonic Seed Phrase (`sui keytool generate ed25519`) , Also support `suiprivatekeyxxxx` (sui keytool export --key-identity 0x63) SUI_NETWORK= # must be one of mainnet, testnet, devnet, localnet # Story @@ -356,3 +391,16 @@ CRONOSZKEVM_PRIVATE_KEY= # Fuel Ecosystem (FuelVM) FUEL_WALLET_PRIVATE_KEY= + +# Tokenizer Settings +TOKENIZER_MODEL= # Specify the tokenizer model to be used. +TOKENIZER_TYPE= # Options: tiktoken (for OpenAI models) or auto (AutoTokenizer from Hugging Face for non-OpenAI models). Default: tiktoken. + +# Stargaze NFT marketplace from Cosmos (You can use https://graphql.mainnet.stargaze-apis.com/graphql) +STARGAZE_ENDPOINT= + +# GenLayer +GENLAYER_PRIVATE_KEY=0x0000000000000000000000000000000000000000000000000000000000000000 # Private key of the GenLayer account to use for the agent + +# OpenWeather +OPEN_WEATHER_API_KEY= # OpenWeather API key diff --git a/.eslintrc.json b/.eslintrc.json index e795935eb7..33527e7c35 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,47 +1,36 @@ { - "plugins": [ - "@stylistic" - ], - "extends": [ - "next/core-web-vitals", - "plugin:@stylistic/recommended-extends" - ], - "rules": { - "@stylistic/indent": [ - "error", - 4, - { - "SwitchCase": 1 - } + "plugins": ["@stylistic"], + "extends": [ + "next/core-web-vitals", + "plugin:@stylistic/recommended-extends" ], - "@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 + "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"] + } +} diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 09649bafae..45a4b4b367 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -20,7 +20,7 @@ jobs: cache: "pnpm" - name: Install dependencies - run: pnpm install + run: pnpm install -r --no-frozen-lockfile - name: Run Prettier run: pnpm run prettier --check . diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index b3716b3716..82729ab3f8 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,55 +1,55 @@ name: "CodeQL Advanced" on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - schedule: - - cron: '29 8 * * 6' + 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}}" + 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 index 9963e69354..b1ba989d35 100644 --- a/.github/workflows/generate-readme-translations.yml +++ b/.github/workflows/generate-readme-translations.yml @@ -9,21 +9,22 @@ jobs: 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'} - ] + 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: @@ -36,32 +37,32 @@ jobs: uses: 0xjord4n/aixion@v1.2.1 id: aixion with: - config: > - { - "provider": "openai", - "provider_options": { - "api_key": "${{ secrets.OPENAI_API_KEY }}" - }, - "messages": [ + config: > { - "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" + "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" } - ], - "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 + name: readme-${{ matrix.language.code }} + path: README_${{ matrix.language.code }}.md commit: needs: translation @@ -76,8 +77,8 @@ jobs: - name: Download all translations uses: actions/download-artifact@v4 with: - pattern: readme-* - merge-multiple: true + pattern: readme-* + merge-multiple: true - name: Commit all translations uses: stefanzweifel/git-auto-commit-action@v5 diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index 7ef42e050e..750e5ce458 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -3,15 +3,14 @@ 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!" - + 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/integrationTests.yaml b/.github/workflows/integrationTests.yaml index 46ee277516..0dcef61c06 100644 --- a/.github/workflows/integrationTests.yaml +++ b/.github/workflows/integrationTests.yaml @@ -17,15 +17,18 @@ jobs: - uses: pnpm/action-setup@v3 with: - version: 9.4.0 + version: 9.15.0 - uses: actions/setup-node@v4 with: - node-version: "23" + node-version: "23.3.0" cache: "pnpm" + - name: Clean up + run: pnpm clean + - name: Install dependencies - run: pnpm install -r + run: pnpm install -r --no-frozen-lockfile - name: Build packages run: pnpm build diff --git a/.github/workflows/jsdoc-automation.yml b/.github/workflows/jsdoc-automation.yml index d487b08fe4..60458fcf4d 100644 --- a/.github/workflows/jsdoc-automation.yml +++ b/.github/workflows/jsdoc-automation.yml @@ -1,87 +1,104 @@ name: JSDoc Automation on: - workflow_dispatch: - inputs: - pull_number: - description: 'Pull Request Number (if not provided, scans root_directory) - PR must be merged to develop branch' - required: false - type: string - root_directory: - description: 'Only scans files in this directory (relative to repository root, e.g., packages/core/src)' - required: true - default: 'packages/core/src/test_resources' - type: string - excluded_directories: - description: 'Directories to exclude from scanning (comma-separated, relative to root_directory)' - required: true - default: 'node_modules,dist,test' - type: string - reviewers: - description: 'Pull Request Reviewers (comma-separated GitHub usernames)' - required: true - default: '' - type: string - branch: - description: 'Target branch for PR (defaults to develop)' - required: false - default: 'develop' - type: string + workflow_dispatch: + inputs: + jsdoc: + description: "Generate JSDoc comments (T/F)" + required: true + default: "T" + type: string + readme: + description: "Generate README documentation (T/F)" + required: true + default: "T" + type: string + pull_number: + description: "Pull Request Number (if not provided, scans root_directory) - PR must be merged to develop branch. DONT provide if `README documentation` is T from above" + required: false + type: string + root_directory: + description: "Only scans files in this directory (relative to repository root, e.g., packages/core/src)" + required: true + default: "packages/plugin-near/" + type: string + excluded_directories: + description: "Directories to exclude from scanning (comma-separated, relative to root_directory)" + required: true + default: "node_modules,dist,test" + type: string + reviewers: + description: "Pull Request Reviewers (Must be collaborator on the repository) comma-separated GitHub usernames" + required: true + default: "" + type: string + branch: + description: "Target branch for PR (defaults to develop)" + required: false + default: "develop" + type: string + language: + description: "Documentation language (e.g., English, Spanish, French)" + required: true + default: "English" + type: string jobs: - generate-docs: - runs-on: ubuntu-latest + generate-docs: + runs-on: ubuntu-latest - env: - GITHUB_ACCESS_TOKEN: ${{ secrets.GH_PAT }} - OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + env: + GITHUB_ACCESS_TOKEN: ${{ secrets.GH_PAT }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '23' + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" - - name: Install pnpm - uses: pnpm/action-setup@v2 - with: - version: 8 - run_install: false + - name: Install pnpm + uses: pnpm/action-setup@v2 + with: + version: 8 + run_install: false - - name: Update lockfile - working-directory: scripts/jsdoc-automation - run: | - echo "Updating lockfile..." - pnpm install --no-frozen-lockfile - git config --global user.email "github-actions[bot]@users.noreply.github.com" - git config --global user.name "github-actions[bot]" - git add pnpm-lock.yaml - git commit -m "chore: update pnpm lockfile" || echo "No changes to commit" - git push || echo "No changes to push" + - name: Update lockfile + working-directory: scripts/jsdoc-automation + run: | + echo "Updating lockfile..." + pnpm install --no-frozen-lockfile + git config --global user.email "github-actions[bot]@users.noreply.github.com" + git config --global user.name "github-actions[bot]" + git add pnpm-lock.yaml + git commit -m "chore: update pnpm lockfile" || echo "No changes to commit" + git push || echo "No changes to push" - - name: Install root dependencies - run: pnpm install --no-frozen-lockfile + - name: Install root dependencies + run: pnpm install --no-frozen-lockfile - - name: Install package dependencies - working-directory: scripts/jsdoc-automation - run: pnpm install --no-frozen-lockfile + - name: Install package dependencies + working-directory: scripts/jsdoc-automation + run: pnpm install --no-frozen-lockfile - - name: Run documentation generator - working-directory: scripts/jsdoc-automation - run: | - echo "Node version: $(node --version)" - echo "NPM version: $(npm --version)" - echo "Directory contents:" - ls -la - NODE_OPTIONS='--experimental-vm-modules --no-warnings' pnpm start - env: - INPUT_ROOT_DIRECTORY: ${{ inputs.root_directory }} - INPUT_PULL_NUMBER: ${{ inputs.pull_number }} - INPUT_EXCLUDED_DIRECTORIES: ${{ inputs.excluded_directories }} - INPUT_REVIEWERS: ${{ inputs.reviewers }} - INPUT_BRANCH: ${{ inputs.branch }} \ No newline at end of file + - name: Build TypeScript + working-directory: scripts/jsdoc-automation + run: pnpm build + + - name: Run documentation generator + working-directory: scripts/jsdoc-automation + run: pnpm start + env: + INPUT_ROOT_DIRECTORY: ${{ inputs.root_directory }} + INPUT_PULL_NUMBER: ${{ inputs.pull_number }} + INPUT_EXCLUDED_DIRECTORIES: ${{ inputs.excluded_directories }} + INPUT_REVIEWERS: ${{ inputs.reviewers }} + INPUT_BRANCH: ${{ inputs.branch }} + INPUT_LANGUAGE: ${{ inputs.language }} + INPUT_JSDOC: ${{ inputs.jsdoc }} + INPUT_README: ${{ inputs.readme }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 086bfe3c77..d640179b54 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -35,7 +35,7 @@ jobs: run: sudo apt-get install -y protobuf-compiler - name: Install dependencies - run: pnpm install + run: pnpm install -r --no-frozen-lockfile - name: Build packages run: pnpm run build diff --git a/.github/workflows/smoke-tests.yml b/.github/workflows/smoke-tests.yml index fd059a3523..2c088afbe6 100644 --- a/.github/workflows/smoke-tests.yml +++ b/.github/workflows/smoke-tests.yml @@ -15,11 +15,11 @@ jobs: - uses: pnpm/action-setup@v3 with: - version: 9.4.0 + version: 9.15.0 - uses: actions/setup-node@v4 with: - node-version: "23" + node-version: "23.3.0" cache: "pnpm" - name: Run smoke tests diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 51d21090bc..62810fe3d8 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -1,34 +1,33 @@ name: Mark stale issues and pull requests on: - schedule: - - cron: '25 18 * * *' + schedule: + - cron: "25 18 * * *" jobs: - stale: + stale: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write - runs-on: ubuntu-latest - permissions: - issues: write - pull-requests: write + env: + DAYS_BEFORE_STALE: 30 # Define the days-before-stale value + DAYS_BEFORE_CLOSE: 7 # Define the days-before-close value - env: - DAYS_BEFORE_STALE: 30 # Define the days-before-stale value - DAYS_BEFORE_CLOSE: 7 # Define the days-before-close value - - steps: - - uses: actions/stale@v5 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: | - This issue has been automatically marked as stale due to ${{ - env.DAYS_BEFORE_STALE }} days of inactivity. - If no further activity occurs within ${{ env.DAYS_BEFORE_CLOSE }} days, it will be closed automatically. Please take action if this issue is still relevant. - stale-pr-message: | - This pull request has been automatically marked as stale due to ${{ - env.DAYS_BEFORE_STALE }} days of inactivity. - If no further activity occurs within ${{ env.DAYS_BEFORE_CLOSE }} days, it will be closed automatically. Please take action if this pull request is still relevant. - stale-issue-label: 'no-issue-activity' - stale-pr-label: 'no-pr-activity' - days-before-stale: ${{ env.DAYS_BEFORE_STALE }} - days-before-close: ${{ env.DAYS_BEFORE_CLOSE }} + steps: + - uses: actions/stale@v5 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: | + This issue has been automatically marked as stale due to ${{ + env.DAYS_BEFORE_STALE }} days of inactivity. + If no further activity occurs within ${{ env.DAYS_BEFORE_CLOSE }} days, it will be closed automatically. Please take action if this issue is still relevant. + stale-pr-message: | + This pull request has been automatically marked as stale due to ${{ + env.DAYS_BEFORE_STALE }} days of inactivity. + If no further activity occurs within ${{ env.DAYS_BEFORE_CLOSE }} days, it will be closed automatically. Please take action if this pull request is still relevant. + stale-issue-label: "no-issue-activity" + stale-pr-label: "no-pr-activity" + days-before-stale: ${{ env.DAYS_BEFORE_STALE }} + days-before-close: ${{ env.DAYS_BEFORE_CLOSE }} diff --git a/.gitignore b/.gitignore index 62f07bce31..91e92c453d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,57 +1,58 @@ -node_modules -/out - -.env -.env.production -.env.local -.env_main -concatenated-output.ts -embedding-cache.json -packages/plugin-buttplug/intiface-engine - -.idea -.DS_Store - -dist/ -# Allow models directory but ignore model files -models/*.gguf - -cookies.json - -db.sqlite -searches/ -tweets/ - -*.gguf -*.onnx -*.wav -*.mp3 - -logs/ - -test-report.json -content_cache/ -test_data/ -tokencache/ -tweetcache/ -twitter_cookies.json -timeline_cache.json - -*.sqlite - -characters/ - -packages/core/src/providers/cache -packages/core/src/providers/cache/* -cache/* -packages/plugin-coinbase/src/plugins/transactions.csv - -tsup.config.bundled_*.mjs - -.turbo -.cursorrules - -coverage -.eslintcache - -agent/content +node_modules +/out + +.env +.env.production +.env.local +.env_main +concatenated-output.ts +embedding-cache.json +packages/plugin-buttplug/intiface-engine + +.idea +.DS_Store + +dist/ +# Allow models directory but ignore model files +models/*.gguf + +cookies.json + +db.sqlite +searches/ +tweets/ + +*.gguf +*.onnx +*.wav +*.mp3 + +logs/ + +test-report.json +content_cache/ +test_data/ +tokencache/ +tweetcache/ +twitter_cookies.json +timeline_cache.json + +*.sqlite + +characters/ + +packages/core/src/providers/cache +packages/core/src/providers/cache/* +cache/* +packages/plugin-coinbase/src/plugins/transactions.csv + +tsup.config.bundled_*.mjs + +.turbo +.cursorrules +.pnpm-store + +coverage +.eslintcache + +agent/content diff --git a/.gitpod.yml b/.gitpod.yml index 76cad748fe..549220e91e 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -1,8 +1,7 @@ - tasks: - - name: "init eliza env" - init: | - nvm install v23.3.0 - git fetch --tags - git checkout $(git describe --tags --abbrev=0) - command: pnpm install && pnpm run build + - name: "init eliza env" + init: | + nvm install v23.3.0 + git fetch --tags + git checkout $(git describe --tags --abbrev=0) + command: pnpm install && pnpm run build diff --git a/.vscode/settings.json b/.vscode/settings.json index bb351d019f..813a00406e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -44,4 +44,4 @@ "[shellscript]": { "editor.defaultFormatter": "foxundermoon.shell-format" } -} \ No newline at end of file +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 671c0a0ebb..805402a190 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -6,11 +6,9 @@ { "type": "typescript", "tsconfig": "packages/core/tsconfig.json", - "problemMatcher": [ - "$tsc" - ], + "problemMatcher": ["$tsc"], "label": "tsbuild", "group": "build" } ] -} \ No newline at end of file +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ac64c2f52..c3d60aa4d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,298 @@ # Changelog +## [v0.1.7](https://github.com/elizaOS/eliza/tree/v0.1.7) (2025-01-04) + +[Full Changelog](https://github.com/elizaOS/eliza/compare/v0.1.7-alpha.2...v0.1.7) + +**Implemented enhancements:** + +- Implement Caching for API Responses [\#1794](https://github.com/elizaOS/eliza/issues/1794) +- Implement Caching for API Responses [\#1792](https://github.com/elizaOS/eliza/issues/1792) +- Implement Caching for API Responses [\#1791](https://github.com/elizaOS/eliza/issues/1791) +- Implement Caching for API Responses [\#1789](https://github.com/elizaOS/eliza/issues/1789) +- Feature Request: Implement Enhanced Error Logging for API Calls [\#1736](https://github.com/elizaOS/eliza/issues/1736) +- Implement feature for issue \#1725 on repository elizaOS/eliza branch develop [\#1734](https://github.com/elizaOS/eliza/issues/1734) +- Enhance API Documentation [\#1732](https://github.com/elizaOS/eliza/issues/1732) +- Implement feature for issue \#1725 [\#1731](https://github.com/elizaOS/eliza/issues/1731) +- Implement feature for issue \#1725 [\#1730](https://github.com/elizaOS/eliza/issues/1730) +- Enhance API Documentation [\#1729](https://github.com/elizaOS/eliza/issues/1729) +- Implement a Caching Mechanism for API Responses [\#1726](https://github.com/elizaOS/eliza/issues/1726) +- Implement a Structured Logging Framework [\#1724](https://github.com/elizaOS/eliza/issues/1724) +- Add support for Coinbase Commerce integration [\#1723](https://github.com/elizaOS/eliza/issues/1723) +- Serve docusaurus docs from a docker container for quick docs verification [\#1720](https://github.com/elizaOS/eliza/issues/1720) +- Use Caret \(^\) for Dependency Versions in package.json [\#1662](https://github.com/elizaOS/eliza/issues/1662) +- Deduplicate dependencies across plugins and move shared dependencies to the root package.json [\#1658](https://github.com/elizaOS/eliza/issues/1658) +- Deduplicate Dependencies Across Plugins [\#1656](https://github.com/elizaOS/eliza/issues/1656) +- Deduplicate Dependencies Across Plugins [\#1652](https://github.com/elizaOS/eliza/issues/1652) +- Deduplicate Dependencies Across Plugins [\#1650](https://github.com/elizaOS/eliza/issues/1650) +- Viem version too old to include Arthera EVM chain [\#1635](https://github.com/elizaOS/eliza/issues/1635) +- Add Spanish Translation for Documentation README \(docs/README\_es.md\) [\#1592](https://github.com/elizaOS/eliza/issues/1592) +- Expand Support for Non-OpenAI Models in Token Trimming [\#1565](https://github.com/elizaOS/eliza/issues/1565) +- spades [\#1563](https://github.com/elizaOS/eliza/issues/1563) +- Support better in-monorepo navigation with custom conditions [\#1363](https://github.com/elizaOS/eliza/issues/1363) +- Add Livepeer as an Image Generation Provider [\#1271](https://github.com/elizaOS/eliza/issues/1271) +- Arbitrum Integration [\#851](https://github.com/elizaOS/eliza/issues/851) +- Twitter Spaces Voice Client [\#301](https://github.com/elizaOS/eliza/issues/301) +- 🐛 fix plugins.md formatting for docs with dockerized docs validation [\#1722](https://github.com/elizaOS/eliza/pull/1722) ([marcellodesales](https://github.com/marcellodesales)) + +**Fixed bugs:** + +- Fix: Standardize ACTION\_INTERVAL unit to minutes in Twitter client [\#1788](https://github.com/elizaOS/eliza/issues/1788) +- pdf js crashes the agent [\#1751](https://github.com/elizaOS/eliza/issues/1751) +- Failed to run on Macbook M1 [\#1742](https://github.com/elizaOS/eliza/issues/1742) +- Issue Created: http proxy error: /e0e10e6f-ff2b-0d4c-8011-1fc1eee7cb32/message [\#1733](https://github.com/elizaOS/eliza/issues/1733) +- can't build framework - followed quick start - pnpm build error [\#1714](https://github.com/elizaOS/eliza/issues/1714) +- Google Model Not Working [\#1709](https://github.com/elizaOS/eliza/issues/1709) +- failed: @elizaos/plugin-echochambers\#build [\#1691](https://github.com/elizaOS/eliza/issues/1691) +- initial setup not working. help needed please. [\#1666](https://github.com/elizaOS/eliza/issues/1666) +- ImageDescriptionService [\#1643](https://github.com/elizaOS/eliza/issues/1643) +- Dockerfile errors when building image [\#1623](https://github.com/elizaOS/eliza/issues/1623) +- Initial setup based on docs not working [\#1622](https://github.com/elizaOS/eliza/issues/1622) +- Running Eliza with LLAMALOCAL fails after first query [\#1575](https://github.com/elizaOS/eliza/issues/1575) +- Quick start guide bug - pnpm start [\#1552](https://github.com/elizaOS/eliza/issues/1552) +- callback throws - \["⛔ TypeError: callback is not a function"\] - when action is called from the Twitter Client [\#1544](https://github.com/elizaOS/eliza/issues/1544) +- Bug: generateText is ignoring dynamic parameters due to a hard-coded model class [\#1439](https://github.com/elizaOS/eliza/issues/1439) +- fix: Slack client Media type implementation missing required properties in message attachments [\#1384](https://github.com/elizaOS/eliza/issues/1384) +- Error when trying deploy using dockerfile [\#1168](https://github.com/elizaOS/eliza/issues/1168) + +**Closed issues:** + +- Pull Request Created: Simulate discord typing while generating a response [\#1786](https://github.com/elizaOS/eliza/issues/1786) +- Fix Public Solana Wallet Not Found! [\#1781](https://github.com/elizaOS/eliza/issues/1781) +- \