diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index fe250ebd3..770ded5f5 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -9,3 +9,9 @@ updates:
directory: "/" # Location of package manifests
schedule:
interval: "monthly"
+
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ # Check for updates to GitHub Actions every week
+ interval: "weekly"
diff --git a/.github/workflows/build-view.yml b/.github/workflows/build-view.yml
index b81c3ed4c..46dc9ba2d 100644
--- a/.github/workflows/build-view.yml
+++ b/.github/workflows/build-view.yml
@@ -25,12 +25,12 @@ jobs:
uses: actions/checkout@v4
- name: Setup Node.js
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: 20
- name: Setup Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v6
with:
python-version: "3.11"
@@ -72,7 +72,7 @@ jobs:
- name: Upload Artifact (macOS - dmg only)
if: runner.os == 'macOS'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: release-${{ matrix.os }}-${{ matrix.arch }}
path: |
@@ -81,7 +81,7 @@ jobs:
- name: Upload Artifact (Windows - exe only)
if: runner.os == 'Windows'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: release-${{ matrix.os }}-${{ matrix.arch }}
path: |
@@ -97,19 +97,19 @@ jobs:
# Download all artifacts with correct names
- name: Download mac-x64 artifact
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: release-macos-15-intel-x64
path: temp-mac-x64
- name: Download mac-arm64 artifact
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: release-macos-latest-arm64
path: temp-mac-arm64
- name: Download win-x64 artifact
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: release-windows-latest-x64
path: temp-win-x64
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 59b8616f8..a52d762f7 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -37,12 +37,12 @@ jobs:
uses: actions/checkout@v4
- name: Setup Node.js
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: 20
- name: Setup Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v6
with:
python-version: "3.11"
@@ -83,7 +83,7 @@ jobs:
VITE_STACK_SECRET_SERVER_KEY: ${{ secrets.VITE_STACK_SECRET_SERVER_KEY }}
- name: Upload Artifact
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: release-${{ matrix.os }}-${{ matrix.arch }}
path: |
@@ -101,19 +101,19 @@ jobs:
# Download all artifacts with correct names
- name: Download mac-x64 artifact
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: release-macos-15-intel-x64
path: temp-mac-x64
- name: Download mac-arm64 artifact
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: release-macos-latest-arm64
path: temp-mac-arm64
- name: Download win-x64 artifact
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: release-windows-latest-x64
path: temp-win-x64
diff --git a/.github/workflows/lint-markdown.yml b/.github/workflows/lint-markdown.yml
index 8bac4240d..df0d9c405 100644
--- a/.github/workflows/lint-markdown.yml
+++ b/.github/workflows/lint-markdown.yml
@@ -26,7 +26,7 @@ jobs:
- name: Get changed markdown files
id: changed-files
- uses: tj-actions/changed-files@v45
+ uses: tj-actions/changed-files@v47
with:
files: |
**.md
diff --git a/README.md b/README.md
index b9c3a6383..1c12b2eb4 100644
--- a/README.md
+++ b/README.md
@@ -23,7 +23,7 @@
-**English** · [简体中文](./README_CN.md) · [日本語](./README_JA.md) · [Official Site][eigent-site] · [Documents][docs-site] · [Feedback][github-issue-link]
+**English** · [Português](./README_PT-BR.md) · [简体中文](./README_CN.md) · [日本語](./README_JA.md) · [Official Site][eigent-site] · [Documents][docs-site] · [Feedback][github-issue-link]
@@ -151,7 +151,7 @@ Employs a team of specialized AI agents that collaborate to solve complex tasks.
Eigent pre-defined the following agent workers:
- **Developer Agent:** Writes and executes code, runs terminal commands.
-- **Search Agent:** Searches the web and extracts content.
+- **Browser Agent:** Searches the web and extracts content.
- **Document Agent:** Creates and manages documents.
- **Multi-Modal Agent:** Processes images and audio.
diff --git a/README_CN.md b/README_CN.md
index 1756c9417..e55be2c5b 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -23,7 +23,7 @@
-[English](./README.md) · **简体中文** · [日本語](./README_JA.md) · [官方网站][eigent-site] · [文档][docs-site] · [反馈][github-issue-link]
+[English](./README.md) · [Português](./README_PT-BR.md) · **简体中文** · [日本語](./README_JA.md) · [官方网站][eigent-site] · [文档][docs-site] · [反馈][github-issue-link]
diff --git a/README_JA.md b/README_JA.md
index 34e0d02ac..ed2d76d08 100644
--- a/README_JA.md
+++ b/README_JA.md
@@ -23,7 +23,7 @@
-[English](./README.md) · [简体中文](./README_CN.md) · **日本語** · [公式サイト][eigent-site] · [ドキュメント][docs-site] · [フィードバック][github-issue-link]
+[English](./README.md) · [Português](./README_PT-BR.md) · [简体中文](./README_CN.md) · **日本語** · [公式サイト][eigent-site] · [ドキュメント][docs-site] · [フィードバック][github-issue-link]
@@ -149,7 +149,7 @@ Eigentの強力な機能で卓越した生産性の可能性を最大限に引
Eigentは以下のエージェントワーカーを事前定義しています:
- **Developer Agent:** コードを書いて実行し、ターミナルコマンドを実行します。
-- **Search Agent:** ウェブを検索し、コンテンツを抽出します。
+- **Browser Agent:** ウェブを検索し、コンテンツを抽出します。
- **Document Agent:** ドキュメントを作成・管理します。
- **Multi-Modal Agent:** 画像と音声を処理します。
diff --git a/README_PT-BR.md b/README_PT-BR.md
new file mode 100644
index 000000000..8e101e4f6
--- /dev/null
+++ b/README_PT-BR.md
@@ -0,0 +1,393 @@
+
+
+[![][image-head]][eigent-site]
+
+[![][image-seperator]][eigent-site]
+
+### Eigent: O Desktop Cowork Open Source para Desbloquear sua Produtividade Excepcional
+
+
+
+[![][download-shield]][eigent-download]
+[![][github-star]][eigent-github]
+[![][social-x-shield]][social-x-link]
+[![][discord-image]][discord-url]
+[![Reddit][reddit-image]][reddit-url]
+[![Wechat][wechat-image]][wechat-url]
+[![][sponsor-shield]][sponsor-link]
+[![][built-with-camel]][camel-github]
+[![][join-us-image]][join-us]
+
+
+
+
+
+
+[English](./README.md) · **Português** · [简体中文](./README_CN.md) · [日本語](./README_JA.md) · [Site Oficial][eigent-site] · [Documentação][docs-site] · [Feedback][github-issue-link]
+
+
+
+
+**Eigent** é a aplicação desktop cowork open source que capacita você a construir, gerenciar e implantar uma força de trabalho de IA personalizada, capaz de transformar seus fluxos de trabalho mais complexos em tarefas automatizadas.
+
+Construído sobre o aclamado projeto open source da [CAMEL-AI][camel-site], nosso sistema introduz uma **Força de Trabalho Multiagente** que **aumenta a produtividade** por meio de execução paralela, personalização e proteção de privacidade.
+
+### ⭐ 100% Open Source - 🥇 Implantação Local - 🏆 Integração MCP
+
+- ✅ **Zero Configuração** - Nenhuma configuração técnica necessária
+- ✅ **Coordenação Multiagente** - Gerencie fluxos de trabalho complexos com múltiplos agentes
+- ✅ **Recursos Corporativos** - SSO / Controle de acesso
+- ✅ **Implantação Local**
+- ✅ **Open Source**
+- ✅ **Suporte a Modelos Personalizados**
+- ✅ **Integração MCP**
+
+
+
+[![][image-join-us]][join-us]
+
+
+Sumário
+
+#### TOC
+
+- [🚀 Primeiros Passos](#-primeiros-passos)
+ - [🏠 Implantação Local (Recomendado)](#-implantação-local-recomendado)
+ - [⚡ Início Rápido (Conectado à Nuvem)](#-início-rápido-conectado-à-nuvem)
+ - [🏢 Empresarial](#-empresarial)
+ - [☁️ Versão em Nuvem](#️-versão-em-nuvem)
+- [✨ Principais Recursos](#-principais-recursos)
+ - [🏭 Força de Trabalho](#-força-de-trabalho)
+ - [🧠 Suporte Abrangente a Modelos](#-suporte-abrangente-a-modelos)
+ - [🔌 Integração de Ferramentas MCP (MCP)](#-integração-de-ferramentas-mcp-mcp)
+ - [✋ Humano no Circuito](#-humano-no-circuito)
+ - [👐 100% Código Aberto](#-100-código-aberto)
+- [🧩 Casos de Uso](#-casos-de-uso)
+- [🛠️ Stack Tecnológica](#-stack-tecnológica)
+ - [Backend](#backend)
+ - [Frontend](#frontend)
+- [🌟 Mantendo-se à Frente](#-mantendo-se-à-frente)
+- [🗺️ Roadmap](#-roadmap)
+- [🤝 Contribuição](#-contribuição)
+ - [Contribuidores](#contribuidores)
+- [❤️ Patrocínio](#-patrocínio)
+- [📄 Licença Open Source](#-licença-open-source)
+- [🌐 Comunidade & Contato](#-comunidade--contato)
+
+####
+
+
+
+
+
+## **🚀 Primeiros Passos**
+
+> **🔓 Construído em Público** — Eigent é **100% open source** desde o primeiro dia. Cada funcionalidade, cada commit e cada decisão são transparentes. Acreditamos que as melhores ferramentas de IA devem ser construídas abertamente com a comunidade, e não a portas fechadas.
+
+### 🏠 Implantação Local (Recomendado)
+
+A forma recomendada de executar o Eigent — totalmente independente, com controle completo sobre seus dados, sem necessidade de conta em nuvem.
+
+👉 **[Guia Completo de Implantação Local](./server/README_EN.md)**
+
+Esta configuração inclui:
+- Servidor backend local com API completa
+- Integração de modelos locais (vLLM, Ollama, LM Studio, etc.)
+- Isolamento completo de serviços em nuvem
+- Zero dependências externas
+
+### ⚡ Início Rápido (Conectado à Nuvem)
+
+Para uma visualização rápida usando nosso backend em nuvem — comece em segundos:
+
+#### Pré-requisitos
+
+- Node.js (versão 18–22) e npm
+
+#### Passos
+
+```bash
+git clone https://github.com/eigent-ai/eigent.git
+cd eigent
+npm install
+npm run dev
+```
+
+> Nota: Este modo se conecta aos serviços em nuvem do Eigent e requer registro de conta. Para uma experiência totalmente independente, utilize a [Implantação Local](#-implantação-local-recomendado) em vez disso.
+
+### 🏢 Empresarial
+
+Para organizações que requerem máxima segurança, personalização e controle:
+
+- **Recursos Exclusivos** (como SSO e desenvolvimento personalizado)
+- **Implantação Empresarial Escalável**
+- **SLAs Negociados** e serviços de implementação
+
+📧 Para mais detalhes, entre em contato conosco em [info@eigent.ai](mailto:info@eigent.ai).
+
+### ☁️ Versão em Nuvem
+
+Para equipes que preferem infraestrutura gerenciada, também oferecemos uma plataforma em nuvem. A maneira mais rápida de experimentar as capacidades de IA multi-agente do Eigent sem complexidade de configuração. Nós hospedaremos os modelos, APIs e armazenamento em nuvem, garantindo que o Eigent funcione perfeitamente.
+
+- **Acesso Instantâneo** - Comece a construir fluxos de trabalho multi-agente em minutos.
+- **Infraestrutura Gerenciada** - Nós cuidamos da escalabilidade, atualizações e manutenção.
+- **Suporte Premium** - Assine e obtenha assistência prioritária de nossa equipe de engenharia.
+
+
+
+[![image-public-beta]][eigent-download]
+
+
+
+## **✨ Principais recursos**
+Desbloqueie todo o potencial de produtividade excepcional com os poderosos recursos do Eigent—construídos para integração perfeita, execução de tarefas mais inteligente e automação ilimitada.
+
+### 🏭 Força de Trabalho
+Emprega uma equipe de agentes de IA especializados que colaboram para resolver tarefas complexas. O Eigent divide dinamicamente as tarefas e ativa múltiplos agentes para trabalhar **em paralelo.**
+
+O Eigent pré-definiu os seguintes agentes trabalhadores:
+
+- **Agente Desenvolvedor:** Escreve e executa código, executa comandos de terminal.
+- **Agente de Busca:** Pesquisa na web e extrai conteúdo.
+- **Agente de Documento:** Cria e gerencia documentos.
+- **Agente Multi-Modal:** Processa imagens e áudio.
+
+
+
+
+
+### 🧠 Suporte Abrangente a Modelos
+Implante o Eigent localmente com seus modelos preferidos.
+
+
+
+
+
+### 🔌 Integração de Ferramentas MCP (MCP)
+O Eigent vem com ferramentas massivas integradas do **Protocolo de Contexto de Modelo (MCP)** (para navegação web, execução de código, Notion, Google suite, Slack etc.), e também permite que você **instale suas próprias ferramentas**. Equipe os agentes com exatamente as ferramentas certas para seus cenários – até mesmo integre APIs internas ou funções personalizadas – para aprimorar suas capacidades.
+
+
+
+
+
+### ✋ Humano no Circuito
+Se uma tarefa ficar travada ou encontrar incerteza, o Eigent solicitará automaticamente entrada humana.
+
+
+
+
+
+### 👐 100% Código Aberto
+O Eigent é completamente de código aberto. Você pode baixar, inspecionar e modificar o código, garantindo transparência e promovendo um ecossistema impulsionado pela comunidade para inovação multi-agente.
+
+![Código Aberto][image-opensource]
+
+
+
+## 🧩 Casos de Uso
+
+### 1. Itinerário de Viagem de Tênis em Palm Springs com Resumo no Slack [Replay ▶️](https://www.eigent.ai/download?share_token=IjE3NTM0MzUxNTEzMzctNzExMyI.aIeysw.MUeG6ZcBxI1GqvPDvn4dcv-CDWw__1753435151337-7113)
+
+
+
+Prompt: Somos dois fãs de tênis e queremos ir ver o torneio de tênis ...
+
+Somos dois fãs de tênis e queremos ir ver o torneio de tênis em Palm Springs 2026. Eu moro em SF - por favor, prepare um itinerário detalhado com voos, hotéis, coisas para fazer por 3 dias - na época em que as semifinais/finais estão acontecendo. Gostamos de trilhas, comida vegana e spas. Nosso orçamento é de $5K. O itinerário deve ser uma linha do tempo detalhada de horário, atividade, custo, outros detalhes e, se aplicável, um link para comprar ingressos/fazer reservas etc. para o item. Algumas preferências. Acesso a spa seria bom, mas não necessário. Quando você terminar esta tarefa, por favor gere um relatório html sobre esta viagem; escreva um resumo deste plano e envie o resumo de texto e o link do relatório html para o canal slack #tennis-trip-sf.
+
+
+
+
+### 2. Gerar Relatório do Q2 a partir de Dados Bancários em CSV [Replay ▶️](https://www.eigent.ai/download?share_token=IjE3NTM1MjY4OTE4MDgtODczOSI.aIjJmQ.WTdoX9mATwrcBr_w53BmGEHPo8U__1753526891808-8739)
+
+
+Prompt: Por favor, me ajude a preparar uma demonstração financeira do Q2 baseada no meu ...
+
+Por favor, me ajude a preparar uma demonstração financeira do Q2 baseada no meu arquivo de registro de transferência bancária bank_transacation.csv na minha área de trabalho para um relatório html com gráfico para investidores sobre quanto gastamos.
+
+
+
+
+### 3. Automação de Relatório de Pesquisa de Mercado de Saúde do Reino Unido [Replay ▶️](https://www.eigent.ai/download?share_token=IjE3NTMzOTM1NTg3OTctODcwNyI.aIey-Q.Jh9QXzYrRYarY0kz_qsgoj3ewX0__1753393558797-8707)
+
+
+Prompt: Analise a indústria de saúde do Reino Unido para apoiar o planejamento ...
+
+Analise a indústria de saúde do Reino Unido para apoiar o planejamento da minha próxima empresa. Forneça uma visão geral abrangente do mercado, incluindo tendências atuais, projeções de crescimento e regulamentações relevantes. Identifique as 5–10 principais oportunidades, lacunas ou segmentos mal atendidos dentro do mercado. Apresente todas as descobertas em um relatório HTML bem estruturado e profissional. Em seguida, envie uma mensagem para o canal slack #eigentr-product-test quando esta tarefa estiver concluída para alinhar o conteúdo do relatório com meus colegas de equipe.
+
+
+
+
+### 4. Viabilidade do Mercado Alemão de Skate Elétrico [Replay ▶️](https://www.eigent.ai/download?share_token=IjE3NTM2NTI4MjY3ODctNjk2Ig.aIjGiA.t-qIXxk_BZ4ENqa-yVIm0wMVyXU__1753652826787-696)
+
+
+Prompt: Somos uma empresa que produz skates elétricos de alto padrão ...
+
+Somos uma empresa que produz skates elétricos de alto padrão e estamos considerando entrar no mercado alemão. Por favor, prepare um relatório detalhado de viabilidade de entrada no mercado. O relatório deve cobrir os seguintes aspectos: 1. Tamanho do Mercado & Regulamentações: Pesquise o tamanho do mercado, taxa de crescimento anual, principais players e participação de mercado de Veículos Elétricos Leves Pessoais (PLEVs) na Alemanha. Ao mesmo tempo, forneça um detalhamento e resumo das leis e regulamentações alemãs sobre o uso de skates elétricos em vias públicas, incluindo requisitos de certificação (como certificação ABE) e apólices de seguro. 2. Perfil do Consumidor: Analise o perfil dos potenciais consumidores alemães, incluindo idade, nível de renda, principais cenários de uso (deslocamento, lazer), fatores-chave de decisão de compra (preço, desempenho, marca, design) e os canais que normalmente utilizam para buscar informações (fóruns, redes sociais, lojas físicas). 3. Canais & Distribuição: Investigue as principais plataformas online de venda de eletrônicos na Alemanha (ex.: Amazon.de, MediaMarkt.de) e grandes redes físicas de artigos esportivos de alto padrão. Liste os 5 principais potenciais parceiros de distribuição online e offline e encontre, se possível, as informações de contato de seus departamentos de compras. 4. Custos & Precificação: Com base na estrutura de custos do produto no arquivo Product_Cost.csv na minha área de trabalho, e considerando taxas alfandegárias alemãs, Imposto sobre Valor Agregado (IVA), custos logísticos e de armazenagem, além de possíveis despesas de marketing, estime o Preço de Venda Sugerido ao Consumidor (MSRP) e analise sua competitividade no mercado. 5. Relatório Abrangente & Apresentação: Resuma todas as descobertas da pesquisa em um arquivo de relatório em HTML. O conteúdo deve incluir gráficos de dados, principais conclusões e uma recomendação final de estratégia de entrada no mercado (Recomendado / Não Recomendado / Recomendado com Condições).
+
+
+
+
+### 5. Auditoria de SEO para Lançamento do Workforce Multiagent [Replay ▶️](https://www.eigent.ai/download?share_token=IjE3NTM2OTk5NzExNDQtNTY5NiI.aIex0w.jc_NIPmfIf9e3zGt-oG9fbMi3K4__1753699971144-5696)
+
+
+Prompt: Para apoiar o lançamento do nosso novo produto Workforce Multiagent ...
+
+Para apoiar o lançamento do nosso novo produto Workforce Multiagent, por favor, execute uma auditoria completa de SEO no nosso site oficial (https://www.camel-ai.org/) e entregue um relatório detalhado de otimização com recomendações acionáveis.
+
+
+
+
+### 6. Identificar Arquivos Duplicados em Downloads [Replay ▶️](https://www.eigent.ai/download?share_token=IjE3NTM3NjAzODgxNzEtMjQ4Ig.aIhKLQ.epOG--0Nj0o4Bqjtdqm9OZdaqRQ__1753760388171-248)
+
+
+Prompt: Tenho uma pasta chamada mydocs dentro do diretório Documents ...
+
+Tenho uma pasta chamada mydocs dentro do diretório Documents. Por favor, escaneie-a e identifique todos os arquivos que sejam duplicados exatos ou quase duplicados — incluindo aqueles com conteúdo, tamanho ou formato idênticos (mesmo que nomes ou extensões de arquivo sejam diferentes). Liste-os claramente, agrupados por similaridade.
+
+
+
+
+### 7. Adicionar Assinatura a PDF [Replay ▶️](https://www.eigent.ai/download?share_token=IjE3NTQwOTU0ODM0NTItNTY2MSI.aJCHrA.Mg5yPOFqj86H_GQvvRNditzepXc__1754095483452-5661)
+
+
+Prompt: Por favor, adicione esta imagem de assinatura às áreas de assinatura no PDF ...
+
+Por favor, adicione esta imagem de assinatura às áreas de assinatura no PDF. Você pode instalar a ferramenta de linha de comando ‘tesseract’ (necessária para localização confiável das ‘Áreas de Assinatura’ via OCR) para ajudar a concluir esta tarefa.
+
+
+
+
+## 🛠️ Stack Tecnológica
+
+### Backend
+- **Framework:** FastAPI
+- **Gerenciador de Pacotes:** uv
+- **Servidor Assíncrono:** Uvicorn
+- **Autenticação:** OAuth 2.0, Passlib
+- **Framework Multiagente:** CAMEL
+
+### Frontend
+
+- **Framework:** React
+- **Framework de App Desktop:** Electron
+- **Linguagem:** TypeScript
+- **UI:** Tailwind CSS, Radix UI, Lucide React, Framer Motion
+- **Gerenciamento de Estado:** Zustand
+- **Editor de Fluxo:** React Flow
+
+## 🌟 Mantendo-se à Frente
+
+> \[!IMPORTANT]
+>
+> **Dê uma estrela no Eigent**, você receberá todas as notificações de lançamento do GitHub sem qualquer atraso \~ ⭐️
+
+![][image-star-us]
+
+## 🗺️ Roadmap
+
+| Tópicos | Issues | Canal do Discord |
+| ------------------------- | -- |-- |
+| **Engenharia de Contexto** | - Cache de prompts
- Otimização de prompt do sistema
- Otimização de docstrings do toolkit
- Compressão de contexto | [**Entrar no Discord →**](https://discord.gg/D2e3rBWD) |
+| **Aprimoramento Multimodal** | - Compreensão de imagens mais precisa ao usar o navegador
- Geração avançada de vídeo | [**Entrar no Discord →**](https://discord.gg/kyapNCeJ) |
+| **Sistema Multiagente** | - Suporte do Workforce a fluxos fixos
- Suporte do Workforce a conversas em múltiplas rodadas | [**Entrar no Discord →**](https://discord.gg/bFRmPuDB) |
+| **Toolkit de Navegador** | - Integração com BrowseCamp
- Melhoria de benchmark
- Proibir visitas repetidas a páginas
- Clique automático em botões de cache | [**Entrar no Discord →**](https://discord.gg/NF73ze5v) |
+| **Toolkit de Documentos** | - Suporte à edição dinâmica de arquivos | [**Entrar no Discord →**](https://discord.gg/4yAWJxYr) |
+| **Toolkit de Terminal** | - Melhoria de benchmark
- Integração com Terminal-Bench | [**Entrar no Discord →**](https://discord.gg/FjQfnsrV) |
+| **Ambiente & RL** | - Design de ambiente
- Geração de dados
- Integração de frameworks de RL (VERL, TRL, OpenRLHF) | [**Entrar no Discord →**](https://discord.gg/MaVZXEn8) |
+
+
+## [🤝 Contribuição][contribution-link]
+
+Acreditamos em construir confiança e abraçar todas as formas de colaboração open source. Suas contribuições criativas ajudam a impulsionar a inovação do `Eigent`. Explore as issues e projetos no GitHub para participar e mostrar do que você é capaz 🤝❤️ [Guia de Contribuição][contribution-link]
+
+
+## Contribuidores
+
+
+
+
+
+Feito com [contrib.rocks](https://contrib.rocks).
+
+
+
+## [❤️ Patrocínio][sponsor-link]
+
+O Eigent é construído sobre as pesquisas e infraestruturas da [CAMEL-AI.org][camel-ai-org-github]. [Patrocinar a CAMEL-AI.org][sponsor-link] tornará o `Eigent` ainda melhor.
+
+## **📄 Licença Open Source**
+
+Este repositório é licenciado sob a [Licença Apache 2.0](LICENSE).
+
+## 🌐 Comunidade & Contato
+Para mais informações, entre em contato pelo e-mail info@eigent.ai
+
+- **GitHub Issues:** Relate bugs, solicite funcionalidades e acompanhe o desenvolvimento. [Enviar uma issue][github-issue-link]
+
+- **Discord:** Obtenha suporte em tempo real, converse com a comunidade e fique atualizado. [Junte-se a nós](https://discord.camel-ai.org/)
+
+- **X (Twitter):** Siga para atualizações, insights de IA e anúncios importantes. [Siga-nos][social-x-link]
+
+- **Comunidade WeChat:** Escaneie o QR code abaixo para adicionar nosso assistente no WeChat e entrar no grupo da comunidade WeChat.
+
+
+

+
+
+
+
+
+
+[discord-url]: https://discord.camel-ai.org/
+[discord-image]: https://img.shields.io/discord/1082486657678311454?logo=discord&labelColor=%20%235462eb&logoColor=%20%23f5f5f5&color=%20%235462eb
+
+[built-with-camel]:https://img.shields.io/badge/-Built--with--CAMEL-4C19E8.svg?logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQ4IiBoZWlnaHQ9IjI3MiIgdmlld0JveD0iMCAwIDI0OCAyNzIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik04LjgzMTE3IDE4LjU4NjVMMCAzMC44MjY3QzUuNDY2OTIgMzUuMDQzMiAxNS4xMzkxIDM4LjgyNTggMjQuODExNCAzNi4yOTU5QzMwLjY5ODggNDAuOTM0MSAzOS42NzAyIDQwLjIzMTMgNDQuMTU1OSA0MC4wOTA4QzQzLjQ1NSA0Ny4zOTk0IDQyLjQ3MzcgNzAuOTU1OCA0NC4xNTU5IDEwNi43MTJDNDUuODM4IDE0Mi40NjggNzEuNzcwOCAxNjYuODY4IDg0LjUyNjkgMTc0LjU5OEw3Ni4wMDAyIDIyMEw4NC41MjY5IDI3MkgxMDguOTE4TDk4LjAwMDIgMjIwTDEwOC45MTggMTc0LjU5OEwxMjkuOTQ0IDI3MkgxNTQuNzU2TDEzNC4xNSAxNzQuNTk4SDE4Ny4xMzdMMTY2LjUzMSAyNzJIMTkxLjc2M0wyMTIuMzY5IDE3NC41OThMMjI2IDIyMEwyMTIuMzY5IDI3MkgyMzcuNjAxTDI0OC4wMDEgMjIwTDIzNy4xOCAxNzQuNTk4QzIzOS4yODMgMTY5LjExNyAyNDAuNDAxIDE2Ni45NzYgMjQxLjgwNiAxNjEuMTA1QzI0OS4zNzUgMTI5LjQ4MSAyMzUuMDc3IDEwMy45MDEgMjI2LjY2NyA5NC40ODRMMjA2LjQ4MSA3My44MjNDMTk3LjY1IDY0Ljk2ODMgMTgyLjUxMSA2NC41NDY3IDE3Mi44MzkgNzIuNTU4MUMxNjUuNzI4IDc4LjQ0NzcgMTYxLjcwMSA3OC43NzI3IDE1NC43NTYgNzIuNTU4MUMxNTEuODEyIDcwLjAyODEgMTQ0LjUzNSA2MS40ODg5IDEzNC45OTEgNTMuNTgzN0MxMjUuMzE5IDQ1LjU3MjMgMTA4LjQ5NyA0OC45NDU1IDEwMi4xODkgNTUuNjkxOUw3My41OTMxIDg0LjM2NDRWNy42MjM0OUw3OS4xMjczIDBDNjAuOTA0MiAzLjY1NDMzIDIzLjgwMjEgOS41NjMwOSAxOS43NjUgMTAuNTc1MUMxNS43Mjc5IDExLjU4NyAxMC43OTM3IDE2LjMzNzcgOC44MzExNyAxOC41ODY1WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTQzLjIwMzggMTguNzE4N0w0OS4wOTEyIDEzLjA0OTNMNTQuOTc4NyAxOC43MTg3TDQ5LjA5MTIgMjQuODI0Mkw0My4yMDM4IDE4LjcxODdaIiBmaWxsPSIjNEMxOUU4Ii8+Cjwvc3ZnPgo=
+
+[eigent-github]: https://github.com/eigent-ai/eigent
+[github-star]: https://img.shields.io/github/stars/eigent-ai?color=F5F4F0&labelColor=gray&style=plastic&logo=github
+[camel-ai-org-github]: https://github.com/camel-ai
+
+[camel-github]: https://github.com/camel-ai/camel
+[contribution-link]: https://github.com/eigent-ai/eigent/blob/main/CONTRIBUTING.md
+
+[social-x-link]: https://x.com/Eigent_AI
+[social-x-shield]: https://img.shields.io/badge/-%40Eigent_AI-white?labelColor=gray&logo=x&logoColor=white&style=plastic
+
+[reddit-url]: https://www.reddit.com/r/CamelAI/
+[reddit-image]: https://img.shields.io/reddit/subreddit-subscribers/CamelAI?style=plastic&logo=reddit&label=r%2FCAMEL&labelColor=white
+
+[wechat-url]: https://ghli.org/camel/wechat.png
+[wechat-image]: https://img.shields.io/badge/WeChat-CamelAIOrg-brightgreen?logo=wechat&logoColor=white
+
+[sponsor-link]: https://github.com/sponsors/camel-ai
+[sponsor-shield]: https://img.shields.io/badge/-Sponsor%20CAMEL--AI-1d1d1d?logo=github&logoColor=white&style=plastic
+
+[eigent-download]: https://www.eigent.ai/download
+[download-shield]: https://img.shields.io/badge/Download%20Eigent-363AF5?style=plastic
+
+[join-us]:https://eigent-ai.notion.site/eigent-ai-careers
+[join-us-image]:https://img.shields.io/badge/Join%20Us-yellow?style=plastic
+
+
+[camel-site]: https://www.camel-ai.org
+[eigent-site]: https://www.eigent.ai
+[docs-site]: https://docs.eigent.ai
+[github-issue-link]: https://github.com/eigent-ai/eigent/issues
+
+
+[image-seperator]: https://eigent-ai.github.io/.github/assets/seperator.png
+[image-head]: https://eigent-ai.github.io/.github/assets/head.png
+[image-public-beta]: https://eigent-ai.github.io/.github/assets/banner.png
+[image-star-us]: https://eigent-ai.github.io/.github/assets/star-us.gif
+[image-opensource]: https://eigent-ai.github.io/.github/assets/opensource.png
+[image-wechat]: https://eigent-ai.github.io/.github/assets/wechat.png
+[image-join-us]: https://camel-ai.github.io/camel_asset/graphics/join_us.png
+
+
+[image-workforce]: https://eigent-ai.github.io/.github/assets/feature_dynamic_workforce.gif
+[image-human-in-the-loop]: https://eigent-ai.github.io/.github/assets/feature_human_in_the_loop.gif
+[image-customise-workers]: https://eigent-ai.github.io/.github/assets/feature_customise_workers.gif
+[image-add-mcps]: https://eigent-ai.github.io/.github/assets/feature_add_mcps.gif
+[image-local-model]: https://eigent-ai.github.io/.github/assets/feature_local_model.gif
diff --git a/backend/app/service/chat_service.py b/backend/app/service/chat_service.py
index afbbc1696..c8b6ef716 100644
--- a/backend/app/service/chat_service.py
+++ b/backend/app/service/chat_service.py
@@ -35,7 +35,7 @@ from app.utils.agent import (
developer_agent,
document_agent,
multi_modal_agent,
- search_agent,
+ browser_agent,
social_medium_agent,
task_summary_agent,
question_confirm_agent,
@@ -1332,13 +1332,13 @@ The current date is {datetime.date.today()}. For any date-related tasks, you MUS
)
# msg_toolkit = AgentCommunicationToolkit(max_message_history=100)
- searcher = search_agent(options)
+ searcher = browser_agent(options)
developer = await developer_agent(options)
documenter = await document_agent(options)
multi_modaler = multi_modal_agent(options)
# msg_toolkit.register_agent("Worker", new_worker_agent)
- # msg_toolkit.register_agent("Search_Agent", searcher)
+ # msg_toolkit.register_agent("Browser_Agent", searcher)
# msg_toolkit.register_agent("Developer_Agent", developer)
# msg_toolkit.register_agent("Document_Agent", documenter)
# msg_toolkit.register_agent("Multi_Modal_Agent", multi_modaler)
@@ -1368,7 +1368,7 @@ The current date is {datetime.date.today()}. For any date-related tasks, you MUS
developer,
)
workforce.add_single_agent_worker(
- "Search Agent: Can search the web, extract webpage content, "
+ "Browser Agent: Can search the web, extract webpage content, "
"simulate browser actions, and provide relevant information to "
"solve the given task.",
searcher,
diff --git a/backend/app/service/task.py b/backend/app/service/task.py
index 7f2e379d5..77439487b 100644
--- a/backend/app/service/task.py
+++ b/backend/app/service/task.py
@@ -250,7 +250,7 @@ class Agents(str, Enum):
coordinator_agent = "coordinator_agent"
new_worker_agent = "new_worker_agent"
developer_agent = "developer_agent"
- search_agent = "search_agent"
+ browser_agent = "browser_agent"
document_agent = "document_agent"
multi_modal_agent = "multi_modal_agent"
social_medium_agent = "social_medium_agent"
diff --git a/backend/app/utils/agent.py b/backend/app/utils/agent.py
index ae73cc440..ce734da56 100644
--- a/backend/app/utils/agent.py
+++ b/backend/app/utils/agent.py
@@ -844,11 +844,11 @@ these tips to maximize your effectiveness:
@traceroot.trace()
-def search_agent(options: Chat):
+def browser_agent(options: Chat):
working_directory = get_working_directory(options)
- traceroot_logger.info(f"Creating search agent for project: {options.project_id} in directory: {working_directory}")
+ traceroot_logger.info(f"Creating browser agent for project: {options.project_id} in directory: {working_directory}")
message_integration = ToolkitMessageIntegration(
- message_handler=HumanToolkit(options.project_id, Agents.search_agent).send_message_to_user
+ message_handler=HumanToolkit(options.project_id, Agents.browser_agent).send_message_to_user
)
web_toolkit_custom = HybridBrowserToolkit(
@@ -878,10 +878,10 @@ def search_agent(options: Chat):
# Save reference before registering for toolkits_to_register_agent
web_toolkit_for_agent_registration = web_toolkit_custom
web_toolkit_custom = message_integration.register_toolkits(web_toolkit_custom)
- terminal_toolkit = TerminalToolkit(options.project_id, Agents.search_agent, safe_mode=True, clone_current_env=False)
+ terminal_toolkit = TerminalToolkit(options.project_id, Agents.browser_agent, safe_mode=True, clone_current_env=False)
terminal_toolkit = message_integration.register_functions([terminal_toolkit.shell_exec])
- note_toolkit = NoteTakingToolkit(options.project_id, Agents.search_agent, working_directory=working_directory)
+ note_toolkit = NoteTakingToolkit(options.project_id, Agents.browser_agent, working_directory=working_directory)
note_toolkit = message_integration.register_toolkits(note_toolkit)
search_tools = SearchToolkit.get_can_use_tools(options.project_id)
# Only register search tools if any are available
@@ -891,7 +891,7 @@ def search_agent(options: Chat):
search_tools = []
tools = [
- *HumanToolkit.get_can_use_tools(options.project_id, Agents.search_agent),
+ *HumanToolkit.get_can_use_tools(options.project_id, Agents.browser_agent),
*web_toolkit_custom.get_tools(),
*terminal_toolkit,
*note_toolkit.get_tools(),
@@ -1011,9 +1011,9 @@ Your approach depends on available search tools:
"""
return agent_model(
- Agents.search_agent,
+ Agents.browser_agent,
BaseMessage.make_assistant_message(
- role_name="Search Agent",
+ role_name="Browser Agent",
content=system_message,
),
options,
@@ -1493,7 +1493,7 @@ Your integrated toolkits enable you to:
- Communicate with other agents using messaging tools when collaboration
is needed. Use `list_available_agents` to see available team members and
`send_message` to coordinate with them, especially when you need content
- from document agents or research from search agents.
+ from document agents or research from browser agents.
9. File System Access:
- You can use terminal tools to interact with the local file system in
diff --git a/backend/app/utils/toolkit/craw4ai_toolkit.py b/backend/app/utils/toolkit/craw4ai_toolkit.py
index 65d1b51c7..4fcaa990b 100644
--- a/backend/app/utils/toolkit/craw4ai_toolkit.py
+++ b/backend/app/utils/toolkit/craw4ai_toolkit.py
@@ -7,7 +7,7 @@ from app.utils.toolkit.abstract_toolkit import AbstractToolkit
@auto_listen_toolkit(BaseCrawl4AIToolkit)
class Crawl4AIToolkit(BaseCrawl4AIToolkit, AbstractToolkit):
- agent_name: str = Agents.search_agent
+ agent_name: str = Agents.browser_agent
def __init__(self, api_task_id: str, timeout: float | None = None):
self.api_task_id = api_task_id
diff --git a/backend/app/utils/toolkit/hybrid_browser_python_toolkit.py b/backend/app/utils/toolkit/hybrid_browser_python_toolkit.py
index db48abf2f..a0fc6da3e 100644
--- a/backend/app/utils/toolkit/hybrid_browser_python_toolkit.py
+++ b/backend/app/utils/toolkit/hybrid_browser_python_toolkit.py
@@ -128,7 +128,7 @@ class BrowserSession(BaseHybridBrowserSession):
@auto_listen_toolkit(BaseHybridBrowserToolkit)
class HybridBrowserPythonToolkit(BaseHybridBrowserToolkit, AbstractToolkit):
- agent_name: str = Agents.search_agent
+ agent_name: str = Agents.browser_agent
def __init__(
self,
diff --git a/backend/app/utils/toolkit/hybrid_browser_toolkit.py b/backend/app/utils/toolkit/hybrid_browser_toolkit.py
index f39cb9000..29d28479e 100644
--- a/backend/app/utils/toolkit/hybrid_browser_toolkit.py
+++ b/backend/app/utils/toolkit/hybrid_browser_toolkit.py
@@ -215,7 +215,7 @@ websocket_connection_pool = WebSocketConnectionPool()
@auto_listen_toolkit(BaseHybridBrowserToolkit)
class HybridBrowserToolkit(BaseHybridBrowserToolkit, AbstractToolkit):
- agent_name: str = Agents.search_agent
+ agent_name: str = Agents.browser_agent
def __init__(
self,
diff --git a/backend/app/utils/toolkit/pyautogui_toolkit.py b/backend/app/utils/toolkit/pyautogui_toolkit.py
index 8cf3d0c50..324112eb3 100644
--- a/backend/app/utils/toolkit/pyautogui_toolkit.py
+++ b/backend/app/utils/toolkit/pyautogui_toolkit.py
@@ -10,7 +10,7 @@ from app.utils.toolkit.abstract_toolkit import AbstractToolkit
@auto_listen_toolkit(BasePyAutoGUIToolkit)
class PyAutoGUIToolkit(BasePyAutoGUIToolkit, AbstractToolkit):
- agent_name: str = Agents.search_agent
+ agent_name: str = Agents.browser_agent
def __init__(
self,
diff --git a/backend/app/utils/toolkit/search_toolkit.py b/backend/app/utils/toolkit/search_toolkit.py
index ab6958a86..93607383d 100644
--- a/backend/app/utils/toolkit/search_toolkit.py
+++ b/backend/app/utils/toolkit/search_toolkit.py
@@ -14,7 +14,7 @@ logger = traceroot.get_logger("search_toolkit")
@auto_listen_toolkit(BaseSearchToolkit)
class SearchToolkit(BaseSearchToolkit, AbstractToolkit):
- agent_name: str = Agents.search_agent
+ agent_name: str = Agents.browser_agent
def __init__(
self,
diff --git a/backend/tests/unit/service/test_chat_service.py b/backend/tests/unit/service/test_chat_service.py
index fd854eec6..a483fba5b 100644
--- a/backend/tests/unit/service/test_chat_service.py
+++ b/backend/tests/unit/service/test_chat_service.py
@@ -612,7 +612,7 @@ class TestChatServiceAgentOperations:
with patch("app.service.chat_service.agent_model") as mock_agent_model, \
patch("app.service.chat_service.Workforce", return_value=mock_workforce), \
- patch("app.service.chat_service.search_agent"), \
+ patch("app.service.chat_service.browser_agent"), \
patch("app.service.chat_service.developer_agent"), \
patch("app.service.chat_service.document_agent"), \
patch("app.service.chat_service.multi_modal_agent"), \
diff --git a/backend/tests/unit/service/test_task.py b/backend/tests/unit/service/test_task.py
index 5ebcb3f88..330215a51 100644
--- a/backend/tests/unit/service/test_task.py
+++ b/backend/tests/unit/service/test_task.py
@@ -156,7 +156,7 @@ class TestTaskServiceModels:
"""Test Agents enum contains expected values."""
expected_agents = [
"task_agent", "coordinator_agent", "new_worker_agent",
- "developer_agent", "search_agent", "document_agent",
+ "developer_agent", "browser_agent", "document_agent",
"multi_modal_agent", "social_medium_agent", "mcp_agent"
]
diff --git a/backend/tests/unit/utils/test_agent.py b/backend/tests/unit/utils/test_agent.py
index 161db996b..5eb57c643 100644
--- a/backend/tests/unit/utils/test_agent.py
+++ b/backend/tests/unit/utils/test_agent.py
@@ -19,7 +19,7 @@ from app.utils.agent import (
question_confirm_agent,
task_summary_agent,
developer_agent,
- search_agent,
+ browser_agent,
document_agent,
multi_modal_agent,
social_medium_agent,
@@ -520,8 +520,8 @@ class TestAgentFactoryFunctions:
tools_arg = call_args[0][3] # tools argument
assert isinstance(tools_arg, list)
- def test_search_agent_creation(self, sample_chat_data):
- """Test search_agent creates agent with search tools."""
+ def test_browser_agent_creation(self, sample_chat_data):
+ """Test browser_agent creates agent with search tools."""
options = Chat(**sample_chat_data)
# Setup task lock in the registry before calling agent function
@@ -557,14 +557,14 @@ class TestAgentFactoryFunctions:
mock_agent = MagicMock()
mock_agent_model.return_value = mock_agent
- result = search_agent(options)
+ result = browser_agent(options)
assert result is mock_agent
mock_agent_model.assert_called_once()
- # Check that it was called with search agent configuration
+ # Check that it was called with browser agent configuration
call_args = mock_agent_model.call_args
- assert "search_agent" in str(call_args[0][0]) # agent_name (enum contains this value)
+ assert "browser_agent" in str(call_args[0][0]) # agent_name (enum contains this value)
# The system_prompt is a BaseMessage, so check its content attribute
system_message = call_args[0][1]
if hasattr(system_message, 'content'):
diff --git a/docs/core/workforce.md b/docs/core/workforce.md
index 2113bca9f..b3728be76 100644
--- a/docs/core/workforce.md
+++ b/docs/core/workforce.md
@@ -76,7 +76,7 @@ Eigent comes with a set of pre-configured agents, each designed for a specific d
- NoteTakingToolkit
- WebDeployToolkit
-### SearchAgent
+### BrowserAgent
*Can search the web, extract webpage content, simulate browser actions, and provide relevant information to solve the given task.*
diff --git a/docs/get_started/quick_start.md b/docs/get_started/quick_start.md
index 7f111da02..28faad0e5 100644
--- a/docs/get_started/quick_start.md
+++ b/docs/get_started/quick_start.md
@@ -62,7 +62,7 @@ Cloud version users: outputs are also saved in your cloud workspace according to
Eigent comes with four ready-to-work agents. Each is equipped with a specific set of tools and shines at specific tasks—click to explore:
1. **Developer Agent** – writes, debugs and executes code
-2. **Search Agent** – fetches and gathers info from the web
+2. **Browser Agent** – fetches and gathers info from the web
3. **Multimodal Agent** – ideals with images, videos and more
4. **Document Agent** – reads, writes and manages files (Markdown, PDF, Word, etc.)
@@ -115,10 +115,10 @@ Once the task starts, your agents will run in parallel on the Canvas:
Click on an agent icon to open its **Workspace**:
-- Example 1: open **Search Agent**, launch embedded browser
+- Example 1: open **Browser Agent**, launch embedded browser
- Use **“Take Control”** to take over browsing (e.g., accept cookies), then return control to the agent
-
+
- Example 2: open **Developer Agent**, lauch **Terminal**
diff --git a/src/components/SearchAgentWrokSpace/index.tsx b/src/components/BrowserAgentWorkSpace/index.tsx
similarity index 99%
rename from src/components/SearchAgentWrokSpace/index.tsx
rename to src/components/BrowserAgentWorkSpace/index.tsx
index fb198a900..07e3c23a7 100644
--- a/src/components/SearchAgentWrokSpace/index.tsx
+++ b/src/components/BrowserAgentWorkSpace/index.tsx
@@ -38,8 +38,8 @@ export default function Home() {
borderColor: "border-bg-fill-coding-active",
bgColorLight: "bg-emerald-200",
},
- search_agent: {
- name: "Search Agent",
+ browser_agent: {
+ name: "Browser Agent",
icon: ,
textColor: "text-blue-700",
bgColor: "bg-bg-fill-browser-active",
diff --git a/src/components/TerminalAgentWrokSpace/index.tsx b/src/components/TerminalAgentWrokSpace/index.tsx
index dc6ea08ef..a4111f75c 100644
--- a/src/components/TerminalAgentWrokSpace/index.tsx
+++ b/src/components/TerminalAgentWrokSpace/index.tsx
@@ -40,8 +40,8 @@ export default function TerminalAgentWrokSpace() {
borderColor: "border-bg-fill-coding-active",
bgColorLight: "bg-emerald-200",
},
- search_agent: {
- name: "Search Agent",
+ browser_agent: {
+ name: "Browser Agent",
icon: ,
textColor: "text-blue-700",
bgColor: "bg-bg-fill-browser-active",
diff --git a/src/components/WorkFlow/index.tsx b/src/components/WorkFlow/index.tsx
index 45ad756c8..f23c79758 100644
--- a/src/components/WorkFlow/index.tsx
+++ b/src/components/WorkFlow/index.tsx
@@ -68,9 +68,9 @@ export default function Workflow({
},
{
tasks: [],
- agent_id: "search_agent",
- name: "Search Agent",
- type: "search_agent",
+ agent_id: "browser_agent",
+ name: "Browser Agent",
+ type: "browser_agent",
tools: [
"Search Toolkit",
"Browser Toolkit",
diff --git a/src/components/WorkFlow/node.tsx b/src/components/WorkFlow/node.tsx
index 3af1e022e..2952ed4bd 100644
--- a/src/components/WorkFlow/node.tsx
+++ b/src/components/WorkFlow/node.tsx
@@ -234,8 +234,8 @@ export function Node({ id, data }: NodeProps) {
borderColor: "border-bg-fill-coding-active",
bgColorLight: "bg-emerald-200",
},
- search_agent: {
- name: "Search Agent",
+ browser_agent: {
+ name: "Browser Agent",
icon: ,
textColor: "text-blue-700",
bgColor: "bg-bg-fill-browser-active",
@@ -278,7 +278,7 @@ export function Node({ id, data }: NodeProps) {
"# Web Deployment ",
"# Screen Capture ",
],
- search_agent: ["# Web Browser ", "# Search Engines "],
+ browser_agent: ["# Web Browser ", "# Search Engines "],
multi_modal_agent: [
"# Image Analysis ",
"# Video Processing ",
diff --git a/src/components/WorkSpaceMenu/index.tsx b/src/components/WorkSpaceMenu/index.tsx
index c8d76ec92..5e90b8f7f 100644
--- a/src/components/WorkSpaceMenu/index.tsx
+++ b/src/components/WorkSpaceMenu/index.tsx
@@ -35,9 +35,9 @@ export function WorkSpaceMenu() {
},
{
tasks: [],
- agent_id: "search_agent",
- name: t("layout.search-agent"),
- type: "search_agent",
+ agent_id: "browser_agent",
+ name: t("layout.browser-agent"),
+ type: "browser_agent",
log: [],
activeWebviewIds: [],
},
@@ -101,9 +101,9 @@ export function WorkSpaceMenu() {
);
if (activeAgentIndex === -1) {
- const searchAgentIndex = taskAssigning.findIndex((item) => item.type === 'search_agent');
- if (searchAgentIndex !== -1) {
- taskAssigning[searchAgentIndex].activeWebviewIds?.push({
+ const browserAgentIndex = taskAssigning.findIndex((item) => item.type === 'browser_agent');
+ if (browserAgentIndex !== -1) {
+ taskAssigning[browserAgentIndex].activeWebviewIds?.push({
id,
url,
img: "",
@@ -134,10 +134,10 @@ export function WorkSpaceMenu() {
...webViewUrls,
]);
} else {
- // If no URL match found, also try to add to search_agent
- const searchAgentIndex = taskAssigning.findIndex((item) => item.type === 'search_agent');
- if (searchAgentIndex !== -1 && webViewUrls.length > 0) {
- taskAssigning[searchAgentIndex].activeWebviewIds?.push({
+ // If no URL match found, also try to add to browser_agent
+ const browserAgentIndex = taskAssigning.findIndex((item) => item.type === 'browser_agent');
+ if (browserAgentIndex !== -1 && webViewUrls.length > 0) {
+ taskAssigning[browserAgentIndex].activeWebviewIds?.push({
id,
url,
img: "",
@@ -153,7 +153,7 @@ export function WorkSpaceMenu() {
let webviews: { id: string; agent_id: string; index: number }[] = [];
taskAssigning.map((item) => {
- if (item.type === "search_agent") {
+ if (item.type === "browser_agent") {
item.activeWebviewIds?.map((webview, index) => {
// console.log("@@@@@@", webview);
if (webview.id === id) {
@@ -175,16 +175,16 @@ export function WorkSpaceMenu() {
...chatStore.tasks[chatStore.activeTaskId as string]
.taskAssigning,
];
- const searchAgentIndex = taskAssigning.findIndex(
+ const browserAgentIndex = taskAssigning.findIndex(
(agent) => agent.agent_id === webview.agent_id
);
if (
- searchAgentIndex !== -1 &&
+ browserAgentIndex !== -1 &&
base64 &&
base64 !== "data:image/jpeg;base64,"
) {
- taskAssigning[searchAgentIndex].activeWebviewIds![
+ taskAssigning[browserAgentIndex].activeWebviewIds![
webview.index
].img = base64;
@@ -222,8 +222,8 @@ export function WorkSpaceMenu() {
borderColor: "border-bg-fill-coding-active",
bgColorLight: "bg-emerald-200",
},
- search_agent: {
- name: t("layout.search-agent"),
+ browser_agent: {
+ name: t("layout.browser-agent"),
icon: ,
textColor: "text-blue-700",
bgColor: "bg-bg-fill-browser-active",
@@ -265,9 +265,9 @@ export function WorkSpaceMenu() {
className={`!h-[10px] !w-[10px] ${agentMap.developer_agent.textColor}`}
/>
),
- search_agent: (
+ browser_agent: (
),
document_agent: (
@@ -376,7 +376,7 @@ export function WorkSpaceMenu() {
disabled={
![
"developer_agent",
- "search_agent",
+ "browser_agent",
"document_agent",
].includes(agent.type as AgentNameType) ||
agent.tasks.length === 0
diff --git a/src/i18n/locales/ar/dashboard.json b/src/i18n/locales/ar/dashboard.json
index 3f3c000e8..d309d0e63 100644
--- a/src/i18n/locales/ar/dashboard.json
+++ b/src/i18n/locales/ar/dashboard.json
@@ -19,7 +19,7 @@
"search-emoji": "بحث إيموجي",
"calculator": "آلة حاسبة",
"developer-agent": "وكيل المطور",
- "search-agent": "وكيل البحث",
+ "browser-agent": "وكيل المتصفح",
"document-agent": "وكيل المستندات",
"multi-modal-agent": "وكيل متعدد الوسائط",
"social-media-agent": "وكيل وسائل التواصل الاجتماعي",
diff --git a/src/i18n/locales/ar/layout.json b/src/i18n/locales/ar/layout.json
index 522629c55..89a534592 100644
--- a/src/i18n/locales/ar/layout.json
+++ b/src/i18n/locales/ar/layout.json
@@ -100,7 +100,7 @@
"share": "مشاركة",
"home": "الرئيسية",
"developer-agent": "وكيل المطور",
- "search-agent": "وكيل البحث",
+ "browser-agent": "وكيل المتصفح",
"document-agent": "وكيل المستندات",
"multi-modal-agent": "وكيل متعدد الوسائط",
"social-media-agent": "وكيل وسائل التواصل الاجتماعي",
diff --git a/src/i18n/locales/de/dashboard.json b/src/i18n/locales/de/dashboard.json
index 365be9711..40aa684af 100644
--- a/src/i18n/locales/de/dashboard.json
+++ b/src/i18n/locales/de/dashboard.json
@@ -19,7 +19,7 @@
"search-emoji": "Emoji suchen",
"calculator": "Taschenrechner",
"developer-agent": "Entwickler-Agent",
- "search-agent": "Such-Agent",
+ "browser-agent": "Browser-Agent",
"document-agent": "Dokument-Agent",
"multi-modal-agent": "Multi-Modal-Agent",
"social-media-agent": "Social-Media-Agent",
diff --git a/src/i18n/locales/de/layout.json b/src/i18n/locales/de/layout.json
index e96d5607e..3bcd2b82f 100644
--- a/src/i18n/locales/de/layout.json
+++ b/src/i18n/locales/de/layout.json
@@ -100,7 +100,7 @@
"share": "Teilen",
"home": "Startseite",
"developer-agent": "Entwickler-Agent",
- "search-agent": "Such-Agent",
+ "browser-agent": "Browser-Agent",
"document-agent": "Dokument-Agent",
"multi-modal-agent": "Multi-Modal-Agent",
"social-media-agent": "Social-Media-Agent",
diff --git a/src/i18n/locales/en-us/dashboard.json b/src/i18n/locales/en-us/dashboard.json
index 9b2e6cd17..9ccaa2187 100644
--- a/src/i18n/locales/en-us/dashboard.json
+++ b/src/i18n/locales/en-us/dashboard.json
@@ -19,7 +19,7 @@
"search-emoji": "Search Emoji",
"calculator": "Calculator",
"developer-agent": "Developer Agent",
- "search-agent": "Search Agent",
+ "browser-agent": "Browser Agent",
"document-agent": "Document Agent",
"multi-modal-agent": "Multi Modal Agent",
"social-media-agent": "Social Media Agent",
diff --git a/src/i18n/locales/en-us/layout.json b/src/i18n/locales/en-us/layout.json
index 128ba2271..0852352fd 100644
--- a/src/i18n/locales/en-us/layout.json
+++ b/src/i18n/locales/en-us/layout.json
@@ -102,7 +102,7 @@
"home": "Home",
"back": "Back",
"developer-agent": "Developer Agent",
- "search-agent": "Search Agent",
+ "browser-agent": "Browser Agent",
"document-agent": "Document Agent",
"multi-modal-agent": "Multi Modal Agent",
"social-media-agent": "Social Media Agent",
diff --git a/src/i18n/locales/es/dashboard.json b/src/i18n/locales/es/dashboard.json
index 77c301f61..515ca1f51 100644
--- a/src/i18n/locales/es/dashboard.json
+++ b/src/i18n/locales/es/dashboard.json
@@ -19,7 +19,7 @@
"search-emoji": "Buscar Emoji",
"calculator": "Calculadora",
"developer-agent": "Agente Desarrollador",
- "search-agent": "Agente de Búsqueda",
+ "browser-agent": "Agente de Navegador",
"document-agent": "Agente de Documentos",
"multi-modal-agent": "Agente Multi Modal",
"social-media-agent": "Agente de Redes Sociales",
diff --git a/src/i18n/locales/es/layout.json b/src/i18n/locales/es/layout.json
index f05b9da33..3b9e9481a 100644
--- a/src/i18n/locales/es/layout.json
+++ b/src/i18n/locales/es/layout.json
@@ -100,7 +100,7 @@
"share": "Compartir",
"home": "Inicio",
"developer-agent": "Agente Desarrollador",
- "search-agent": "Agente de Búsqueda",
+ "browser-agent": "Agente de Navegador",
"document-agent": "Agente de Documentos",
"multi-modal-agent": "Agente Multi Modal",
"social-media-agent": "Agente de Redes Sociales",
diff --git a/src/i18n/locales/fr/dashboard.json b/src/i18n/locales/fr/dashboard.json
index 447e5d94e..e9a79b772 100644
--- a/src/i18n/locales/fr/dashboard.json
+++ b/src/i18n/locales/fr/dashboard.json
@@ -19,7 +19,7 @@
"search-emoji": "Rechercher un emoji",
"calculator": "Calculatrice",
"developer-agent": "Agent Développeur",
- "search-agent": "Agent de Recherche",
+ "browser-agent": "Agent Navigateur",
"document-agent": "Agent de Documents",
"multi-modal-agent": "Agent Multi Modal",
"social-media-agent": "Agent de Médias Sociaux",
diff --git a/src/i18n/locales/fr/layout.json b/src/i18n/locales/fr/layout.json
index 4f7eca894..b014860cd 100644
--- a/src/i18n/locales/fr/layout.json
+++ b/src/i18n/locales/fr/layout.json
@@ -100,7 +100,7 @@
"share": "Partager",
"home": "Accueil",
"developer-agent": "Agent Développeur",
- "search-agent": "Agent de Recherche",
+ "browser-agent": "Agent Navigateur",
"document-agent": "Agent de Documents",
"multi-modal-agent": "Agent Multi Modal",
"social-media-agent": "Agent de Médias Sociaux",
diff --git a/src/i18n/locales/it/dashboard.json b/src/i18n/locales/it/dashboard.json
index 73b0fff5b..a0184cc2a 100644
--- a/src/i18n/locales/it/dashboard.json
+++ b/src/i18n/locales/it/dashboard.json
@@ -19,7 +19,7 @@
"search-emoji": "Cerca Emoji",
"calculator": "Calcolatrice",
"developer-agent": "Agente Sviluppatore",
- "search-agent": "Agente di Ricerca",
+ "browser-agent": "Agente Browser",
"document-agent": "Agente Documenti",
"multi-modal-agent": "Agente Multi Modale",
"social-media-agent": "Agente Social Media",
diff --git a/src/i18n/locales/it/layout.json b/src/i18n/locales/it/layout.json
index 3a18faa1f..d01a46c5a 100644
--- a/src/i18n/locales/it/layout.json
+++ b/src/i18n/locales/it/layout.json
@@ -100,7 +100,7 @@
"share": "Condividi",
"home": "Home",
"developer-agent": "Agente Sviluppatore",
- "search-agent": "Agente di Ricerca",
+ "browser-agent": "Agente Browser",
"document-agent": "Agente Documenti",
"multi-modal-agent": "Agente Multi Modale",
"social-media-agent": "Agente Social Media",
diff --git a/src/i18n/locales/ja/dashboard.json b/src/i18n/locales/ja/dashboard.json
index aba32f28b..0b6435fec 100644
--- a/src/i18n/locales/ja/dashboard.json
+++ b/src/i18n/locales/ja/dashboard.json
@@ -19,7 +19,7 @@
"search-emoji": "絵文字を検索",
"calculator": "計算機",
"developer-agent": "開発者エージェント",
- "search-agent": "検索エージェント",
+ "browser-agent": "ブラウザエージェント",
"document-agent": "ドキュメントエージェント",
"multi-modal-agent": "マルチモーダルエージェント",
"social-media-agent": "ソーシャルメディアエージェント",
diff --git a/src/i18n/locales/ja/layout.json b/src/i18n/locales/ja/layout.json
index 0942b31b6..2deca213e 100644
--- a/src/i18n/locales/ja/layout.json
+++ b/src/i18n/locales/ja/layout.json
@@ -100,7 +100,7 @@
"share": "共有",
"home": "ホーム",
"developer-agent": "開発者エージェント",
- "search-agent": "検索エージェント",
+ "browser-agent": "ブラウザエージェント",
"document-agent": "ドキュメントエージェント",
"multi-modal-agent": "マルチモーダルエージェント",
"social-media-agent": "ソーシャルメディアエージェント",
diff --git a/src/i18n/locales/ko/dashboard.json b/src/i18n/locales/ko/dashboard.json
index 05092ff6d..0338ea412 100644
--- a/src/i18n/locales/ko/dashboard.json
+++ b/src/i18n/locales/ko/dashboard.json
@@ -19,7 +19,7 @@
"search-emoji": "이모지 검색",
"calculator": "계산기",
"developer-agent": "개발자 에이전트",
- "search-agent": "검색 에이전트",
+ "browser-agent": "브라우저 에이전트",
"document-agent": "문서 에이전트",
"multi-modal-agent": "멀티모달 에이전트",
"social-media-agent": "소셜미디어 에이전트",
diff --git a/src/i18n/locales/ko/layout.json b/src/i18n/locales/ko/layout.json
index 1a6a0bcc5..4b5676dce 100644
--- a/src/i18n/locales/ko/layout.json
+++ b/src/i18n/locales/ko/layout.json
@@ -100,7 +100,7 @@
"share": "공유",
"home": "홈",
"developer-agent": "개발자 에이전트",
- "search-agent": "검색 에이전트",
+ "browser-agent": "브라우저 에이전트",
"document-agent": "문서 에이전트",
"multi-modal-agent": "멀티모달 에이전트",
"social-media-agent": "소셜미디어 에이전트",
diff --git a/src/i18n/locales/ru/dashboard.json b/src/i18n/locales/ru/dashboard.json
index af8730d56..88d034276 100644
--- a/src/i18n/locales/ru/dashboard.json
+++ b/src/i18n/locales/ru/dashboard.json
@@ -19,7 +19,7 @@
"search-emoji": "Поиск эмодзи",
"calculator": "Калькулятор",
"developer-agent": "Агент разработчика",
- "search-agent": "Агент поиска",
+ "browser-agent": "Агент браузера",
"document-agent": "Агент документов",
"multi-modal-agent": "Мультимодальный агент",
"social-media-agent": "Агент социальных сетей",
diff --git a/src/i18n/locales/ru/layout.json b/src/i18n/locales/ru/layout.json
index 2dcaeab9c..0ad35b9ab 100644
--- a/src/i18n/locales/ru/layout.json
+++ b/src/i18n/locales/ru/layout.json
@@ -100,7 +100,7 @@
"share": "Поделиться",
"home": "Главная",
"developer-agent": "Агент разработчика",
- "search-agent": "Агент поиска",
+ "browser-agent": "Агент браузера",
"document-agent": "Агент документов",
"multi-modal-agent": "Мультимодальный агент",
"social-media-agent": "Агент социальных сетей",
diff --git a/src/i18n/locales/zh-Hans/dashboard.json b/src/i18n/locales/zh-Hans/dashboard.json
index 8ab137037..acd0203bc 100644
--- a/src/i18n/locales/zh-Hans/dashboard.json
+++ b/src/i18n/locales/zh-Hans/dashboard.json
@@ -19,7 +19,7 @@
"search-emoji": "搜索表情",
"calculator": "计算器",
"developer-agent": "开发者智能体",
- "search-agent": "搜索智能体",
+ "browser-agent": "浏览器智能体",
"document-agent": "文档智能体",
"multi-modal-agent": "多模态智能体",
"social-media-agent": "社交媒体智能体",
diff --git a/src/i18n/locales/zh-Hans/layout.json b/src/i18n/locales/zh-Hans/layout.json
index ddbbd84f6..9cca62f29 100644
--- a/src/i18n/locales/zh-Hans/layout.json
+++ b/src/i18n/locales/zh-Hans/layout.json
@@ -103,7 +103,7 @@
"home": "首页",
"back": "返回",
"developer-agent": "开发者智能体",
- "search-agent": "搜索智能体",
+ "browser-agent": "浏览器智能体",
"document-agent": "文档智能体",
"multi-modal-agent": "多模态智能体",
"social-media-agent": "社交媒体智能体",
diff --git a/src/i18n/locales/zh-Hant/dashboard.json b/src/i18n/locales/zh-Hant/dashboard.json
index a29288a7f..7659a8397 100644
--- a/src/i18n/locales/zh-Hant/dashboard.json
+++ b/src/i18n/locales/zh-Hant/dashboard.json
@@ -19,7 +19,7 @@
"search-emoji": "搜尋表情符號",
"calculator": "計算機",
"developer-agent": "開發者智能體",
- "search-agent": "搜尋智能體",
+ "browser-agent": "瀏覽器智能體",
"document-agent": "文件智能體",
"multi-modal-agent": "多模態智能體",
"social-media-agent": "社群媒體智能體",
diff --git a/src/i18n/locales/zh-Hant/layout.json b/src/i18n/locales/zh-Hant/layout.json
index c67008118..b4e6dc4f8 100644
--- a/src/i18n/locales/zh-Hant/layout.json
+++ b/src/i18n/locales/zh-Hant/layout.json
@@ -103,7 +103,7 @@
"home": "首頁",
"back": "返回",
"developer-agent": "開發者智能體",
- "search-agent": "搜尋智能體",
+ "browser-agent": "瀏覽器智能體",
"document-agent": "文件智能體",
"multi-modal-agent": "多模態智能體",
"social-media-agent": "社群媒體智能體",
diff --git a/src/lib/llm.ts b/src/lib/llm.ts
index 1aa85938d..a982d5500 100644
--- a/src/lib/llm.ts
+++ b/src/lib/llm.ts
@@ -28,6 +28,15 @@ export const INIT_PROVODERS: Provider[] = [
is_valid: false,
model_type: ""
},
+ {
+ id: 'openrouter',
+ name: 'OpenRouter',
+ apiKey: '',
+ apiHost: 'https://openrouter.ai/api/v1',
+ description: "OpenRouter model configuration.",
+ is_valid: false,
+ model_type: ""
+ },
{
id: 'tongyi-qianwen',
name: 'Qwen',
diff --git a/src/pages/Dashboard/Project.tsx b/src/pages/Dashboard/Project.tsx
index 584fe4864..5ab5b9e20 100644
--- a/src/pages/Dashboard/Project.tsx
+++ b/src/pages/Dashboard/Project.tsx
@@ -72,8 +72,8 @@ export default function Project() {
borderColor: "border-bg-fill-coding-active",
bgColorLight: "bg-emerald-200",
},
- search_agent: {
- name: t("dashboard.search-agent"),
+ browser_agent: {
+ name: t("dashboard.browser-agent"),
textColor: "text-blue-700",
bgColor: "bg-bg-fill-browser-active",
@@ -116,9 +116,9 @@ export default function Project() {
className={`!h-[10px] !w-[10px] ${agentMap.developer_agent.textColor}`}
/>
),
- search_agent: (
+ browser_agent: (
),
document_agent: (
diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx
index a43293155..70585e2c9 100644
--- a/src/pages/Home.tsx
+++ b/src/pages/Home.tsx
@@ -6,7 +6,7 @@ import useChatStoreAdapter from "@/hooks/useChatStoreAdapter";
import { useEffect, useState } from "react";
import { ReactFlowProvider } from "@xyflow/react";
import BottomBar from "@/components/BottomBar";
-import SearchAgentWrokSpace from "@/components/SearchAgentWrokSpace";
+import BrowserAgentWorkSpace from "@/components/BrowserAgentWorkSpace";
import TerminalAgentWrokSpace from "@/components/TerminalAgentWrokSpace";
import { useSidebarStore } from "@/store/sidebarStore";
import UpdateElectron from "@/components/update";
@@ -49,7 +49,7 @@ export default function Home() {
];
let webviews: { id: string; agent_id: string; index: number }[] = [];
taskAssigning.map((item) => {
- if (item.type === "search_agent") {
+ if (item.type === "browser_agent") {
item.activeWebviewIds?.map((webview, index) => {
webviews.push({ ...webview, agent_id: item.agent_id, index });
});
@@ -61,10 +61,10 @@ export default function Home() {
}
if (webviews.length === 0) {
- const searchAgent = taskAssigning.find(agent => agent.type === 'search_agent');
- if (searchAgent && searchAgent.activeWebviewIds && searchAgent.activeWebviewIds.length > 0) {
- searchAgent.activeWebviewIds.forEach((webview, index) => {
- webviews.push({ ...webview, agent_id: searchAgent.agent_id, index });
+ const browserAgent = taskAssigning.find(agent => agent.type === 'browser_agent');
+ if (browserAgent && browserAgent.activeWebviewIds && browserAgent.activeWebviewIds.length > 0) {
+ browserAgent.activeWebviewIds.forEach((webview, index) => {
+ webviews.push({ ...webview, agent_id: browserAgent.agent_id, index });
});
}
}
@@ -88,15 +88,15 @@ export default function Home() {
let taskAssigning = [
...currentTask.taskAssigning,
];
- const searchAgentIndex = taskAssigning.findIndex(
+ const browserAgentIndex = taskAssigning.findIndex(
(agent) => agent.agent_id === webview.agent_id
);
if (
- searchAgentIndex !== -1 &&
+ browserAgentIndex !== -1 &&
base64 !== "data:image/jpeg;base64,"
) {
- taskAssigning[searchAgentIndex].activeWebviewIds![
+ taskAssigning[browserAgentIndex].activeWebviewIds![
webview.index
].img = base64;
chatStore.setTaskAssigning(
@@ -104,7 +104,7 @@ export default function Home() {
taskAssigning
);
const { processTaskId, url } =
- taskAssigning[searchAgentIndex].activeWebviewIds![
+ taskAssigning[browserAgentIndex].activeWebviewIds![
webview.index
];
chatStore.setSnapshotsTemp(chatStore.activeTaskId as string, {
@@ -204,9 +204,9 @@ export default function Home() {
agent.agent_id ===
chatStore.tasks[chatStore.activeTaskId as string]
.activeWorkSpace
- )?.type === "search_agent" && (
+ )?.type === "browser_agent" && (
-
+
)}
{chatStore.tasks[chatStore.activeTaskId as string]
diff --git a/src/store/chatStore.ts b/src/store/chatStore.ts
index 5a53d54db..2b475693f 100644
--- a/src/store/chatStore.ts
+++ b/src/store/chatStore.ts
@@ -662,7 +662,7 @@ const chatStore = (initial?: Partial) => createStore()(
console.log("agentMessages", agentMessages);
const agentNameMap = {
developer_agent: "Developer Agent",
- search_agent: "Search Agent",
+ browser_agent: "Browser Agent",
document_agent: "Document Agent",
multi_modal_agent: "Multi Modal Agent",
social_medium_agent: "Social Media Agent",
@@ -940,7 +940,7 @@ const chatStore = (initial?: Partial) => createStore()(
if (!hasAgent) {
let activeWebviewIds: any = [];
- if (agent_name == 'search_agent') {
+ if (agent_name == 'browser_agent') {
snapshots.forEach((item: any) => {
const imgurl = !item.image_path.includes('/public') ? item.image_path : (import.meta.env.DEV ? import.meta.env.VITE_PROXY_URL : import.meta.env.VITE_BASE_URL) + item.image_path
activeWebviewIds.push({
@@ -1011,7 +1011,7 @@ const chatStore = (initial?: Partial) => createStore()(
// destroy webview
tasks[currentTaskId].taskAssigning = tasks[currentTaskId].taskAssigning.map((item) => {
- if (item.type === "search_agent" && item.activeWebviewIds?.length && item.activeWebviewIds?.length > 0) {
+ if (item.type === "browser_agent" && item.activeWebviewIds?.length && item.activeWebviewIds?.length > 0) {
let removeList: number[] = []
item.activeWebviewIds.map((webview, index) => {
if (webview.processTaskId === task_id) {
diff --git a/src/types/chatbox.d.ts b/src/types/chatbox.d.ts
index d494feb58..94beef44f 100644
--- a/src/types/chatbox.d.ts
+++ b/src/types/chatbox.d.ts
@@ -133,19 +133,19 @@ declare global {
type AgentNameType =
| "developer_agent"
- | "search_agent"
+ | "browser_agent"
| "document_agent"
| "multi_modal_agent"
| "social_medium_agent";
interface AgentNameMap {
developer_agent: "Developer Agent";
- search_agent: "Search Agent";
+ browser_agent: "Browser Agent";
document_agent: "Document Agent";
multi_modal_agent: "Multi Modal Agent";
social_medium_agent: "Social Media Agent";
}
- type WorkspaceType = 'workflow' | 'developer_agent' | 'search_agent' | 'document_agent' | 'multi_modal_agent' | 'social_medium_agent' | null;
+ type WorkspaceType = 'workflow' | 'developer_agent' | 'browser_agent' | 'document_agent' | 'multi_modal_agent' | 'social_medium_agent' | null;
}
diff --git a/src/types/workspace.d.ts b/src/types/workspace.d.ts
index 0bde87527..d26116a22 100644
--- a/src/types/workspace.d.ts
+++ b/src/types/workspace.d.ts
@@ -1,7 +1,7 @@
// Global type definitions for WorkspaceMenu component
declare global {
- type WorkspaceType = 'workflow' | 'developer_agent' | 'search_agent' | 'document_agent' | 'multi_modal_agent' | 'social_medium_agent' | null;
+ type WorkspaceType = 'workflow' | 'developer_agent' | 'browser_agent' | 'document_agent' | 'multi_modal_agent' | 'social_medium_agent' | null;
}
diff --git a/test/mocks/sse.mock.ts b/test/mocks/sse.mock.ts
index c7255391e..eb8ff527a 100644
--- a/test/mocks/sse.mock.ts
+++ b/test/mocks/sse.mock.ts
@@ -81,7 +81,7 @@ export const issue619SseSequence = [
event: {
step: 'create_agent',
data: {
- agent_name: 'search_agent',
+ agent_name: 'browser_agent',
agent_id: 'c249ac7b-6745-4832-a5c1-3238f9176434',
tools: ['Search Toolkit', 'Browser Toolkit', 'Human Toolkit', 'Note Taking Toolkit', 'Terminal Toolkit']
}
@@ -92,7 +92,7 @@ export const issue619SseSequence = [
event: {
step: 'deactivate_toolkit',
data: {
- agent_name: 'search_agent',
+ agent_name: 'browser_agent',
process_task_id: '',
toolkit_name: 'Browser Toolkit',
method_name: 'register agent',
@@ -129,11 +129,11 @@ export const issue619SseSequence = [
event: {
step: 'activate_toolkit',
data: {
- agent_name: 'search_agent',
+ agent_name: 'browser_agent',
process_task_id: '',
toolkit_name: 'Browser Toolkit',
method_name: 'register agent',
- message: 'ChatAgent(Search Agent, RoleType.ASSISTANT, gpt-5)'
+ message: 'ChatAgent(Browser Agent, RoleType.ASSISTANT, gpt-5)'
}
},
delay: 100
@@ -153,11 +153,11 @@ export const issue619SseSequence = [
event: {
step: 'activate_toolkit',
data: {
- agent_name: 'search_agent',
+ agent_name: 'browser_agent',
process_task_id: '',
toolkit_name: 'Browser Toolkit',
method_name: 'register agent',
- message: 'ChatAgent(Search Agent, RoleType.ASSISTANT, gpt-5)'
+ message: 'ChatAgent(Browser Agent, RoleType.ASSISTANT, gpt-5)'
}
},
delay: 100
@@ -200,11 +200,11 @@ export const issue619SseSequence = [
event: {
step: 'activate_toolkit',
data: {
- agent_name: 'search_agent',
+ agent_name: 'browser_agent',
process_task_id: '',
toolkit_name: 'Browser Toolkit',
method_name: 'register agent',
- message: 'ChatAgent(Search Agent, RoleType.ASSISTANT, gpt-4.1)'
+ message: 'ChatAgent(Browser Agent, RoleType.ASSISTANT, gpt-4.1)'
}
},
delay: 100
@@ -248,7 +248,7 @@ export const issue619SseSequence = [
event: {
step: 'deactivate_toolkit',
data: {
- agent_name: 'search_agent',
+ agent_name: 'browser_agent',
process_task_id: '',
toolkit_name: 'Browser Toolkit',
method_name: 'register agent',
@@ -272,11 +272,11 @@ export const issue619SseSequence = [
event: {
step: 'activate_toolkit',
data: {
- agent_name: 'search_agent',
+ agent_name: 'browser_agent',
process_task_id: '',
toolkit_name: 'Browser Toolkit',
method_name: 'register agent',
- message: 'ChatAgent(Search Agent, RoleType.ASSISTANT, gpt-4.1)'
+ message: 'ChatAgent(Browser Agent, RoleType.ASSISTANT, gpt-4.1)'
}
},
delay: 1100