mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-29 01:58:14 +00:00
Compare commits
2 Commits
1.9.0
...
devin/1769
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9af03058fe | ||
|
|
d52dbc1f4b |
@@ -4,6 +4,74 @@ description: "Product updates, improvements, and bug fixes for CrewAI"
|
||||
icon: "clock"
|
||||
mode: "wide"
|
||||
---
|
||||
<Update label="Jan 26, 2026">
|
||||
## v1.9.0
|
||||
|
||||
[View release on GitHub](https://github.com/crewAIInc/crewAI/releases/tag/1.9.0)
|
||||
|
||||
## What's Changed
|
||||
|
||||
### Features
|
||||
- Add structured outputs and response_format support across providers
|
||||
- Add response ID to streaming responses
|
||||
- Add event ordering with parent-child hierarchies
|
||||
- Add Keycloak SSO authentication support
|
||||
- Add multimodal file handling capabilities
|
||||
- Add native OpenAI responses API support
|
||||
- Add A2A task execution utilities
|
||||
- Add A2A server configuration and agent card generation
|
||||
- Enhance event system and expand transport options
|
||||
- Improve tool calling mechanisms
|
||||
|
||||
### Bug Fixes
|
||||
- Enhance file store with fallback memory cache when aiocache is not available
|
||||
- Ensure document list is not empty
|
||||
- Handle Bedrock stop sequences properly
|
||||
- Add Google Vertex API key support
|
||||
- Enhance Azure model stop word detection
|
||||
- Improve error handling for HumanFeedbackPending in flow execution
|
||||
- Fix execution span task unlinking
|
||||
|
||||
### Documentation
|
||||
- Add native file handling documentation
|
||||
- Add OpenAI responses API documentation
|
||||
- Add agent card implementation guidance
|
||||
- Refine A2A documentation
|
||||
- Update changelog for v1.8.0
|
||||
|
||||
### Contributors
|
||||
@Anaisdg, @GininDenis, @Vidit-Ostwal, @greysonlalonde, @heitorado, @joaomdmoura, @koushiv777, @lorenzejay, @nicoferdi96, @vinibrsl
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="Jan 15, 2026">
|
||||
## v1.8.1
|
||||
|
||||
[View release on GitHub](https://github.com/crewAIInc/crewAI/releases/tag/1.8.1)
|
||||
|
||||
## What's Changed
|
||||
|
||||
### Features
|
||||
- Add A2A task execution utilities
|
||||
- Add A2A server configuration and agent card generation
|
||||
- Add additional transport mechanisms
|
||||
- Add Galileo integration support
|
||||
|
||||
### Bug Fixes
|
||||
- Improve Azure model compatibility
|
||||
- Expand frame inspection depth to detect parent_flow
|
||||
- Resolve task execution span management issues
|
||||
- Enhance error handling for human feedback scenarios during flow execution
|
||||
|
||||
### Documentation
|
||||
- Add A2A agent card documentation
|
||||
- Add PII redaction feature documentation
|
||||
|
||||
### Contributors
|
||||
@Anaisdg, @GininDenis, @greysonlalonde, @joaomdmoura, @koushiv777, @lorenzejay, @vinibrsl
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="Jan 08, 2026">
|
||||
## v1.8.0
|
||||
|
||||
|
||||
@@ -4,6 +4,74 @@ description: "CrewAI의 제품 업데이트, 개선 사항 및 버그 수정"
|
||||
icon: "clock"
|
||||
mode: "wide"
|
||||
---
|
||||
<Update label="2026년 1월 26일">
|
||||
## v1.9.0
|
||||
|
||||
[GitHub 릴리스 보기](https://github.com/crewAIInc/crewAI/releases/tag/1.9.0)
|
||||
|
||||
## 변경 사항
|
||||
|
||||
### 기능
|
||||
- 프로바이더 전반에 걸친 구조화된 출력 및 response_format 지원 추가
|
||||
- 스트리밍 응답에 응답 ID 추가
|
||||
- 부모-자식 계층 구조를 가진 이벤트 순서 추가
|
||||
- Keycloak SSO 인증 지원 추가
|
||||
- 멀티모달 파일 처리 기능 추가
|
||||
- 네이티브 OpenAI responses API 지원 추가
|
||||
- A2A 작업 실행 유틸리티 추가
|
||||
- A2A 서버 구성 및 에이전트 카드 생성 추가
|
||||
- 이벤트 시스템 향상 및 전송 옵션 확장
|
||||
- 도구 호출 메커니즘 개선
|
||||
|
||||
### 버그 수정
|
||||
- aiocache를 사용할 수 없을 때 폴백 메모리 캐시로 파일 저장소 향상
|
||||
- 문서 목록이 비어 있지 않도록 보장
|
||||
- Bedrock 중지 시퀀스 적절히 처리
|
||||
- Google Vertex API 키 지원 추가
|
||||
- Azure 모델 중지 단어 감지 향상
|
||||
- 흐름 실행 시 HumanFeedbackPending 오류 처리 개선
|
||||
- 실행 스팬 작업 연결 해제 수정
|
||||
|
||||
### 문서
|
||||
- 네이티브 파일 처리 문서 추가
|
||||
- OpenAI responses API 문서 추가
|
||||
- 에이전트 카드 구현 가이드 추가
|
||||
- A2A 문서 개선
|
||||
- v1.8.0 변경 로그 업데이트
|
||||
|
||||
### 기여자
|
||||
@Anaisdg, @GininDenis, @Vidit-Ostwal, @greysonlalonde, @heitorado, @joaomdmoura, @koushiv777, @lorenzejay, @nicoferdi96, @vinibrsl
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="2026년 1월 15일">
|
||||
## v1.8.1
|
||||
|
||||
[GitHub 릴리스 보기](https://github.com/crewAIInc/crewAI/releases/tag/1.8.1)
|
||||
|
||||
## 변경 사항
|
||||
|
||||
### 기능
|
||||
- A2A 작업 실행 유틸리티 추가
|
||||
- A2A 서버 구성 및 에이전트 카드 생성 추가
|
||||
- 추가 전송 메커니즘 추가
|
||||
- Galileo 통합 지원 추가
|
||||
|
||||
### 버그 수정
|
||||
- Azure 모델 호환성 개선
|
||||
- parent_flow 감지를 위한 프레임 검사 깊이 확장
|
||||
- 작업 실행 스팬 관리 문제 해결
|
||||
- 흐름 실행 중 휴먼 피드백 시나리오에 대한 오류 처리 향상
|
||||
|
||||
### 문서
|
||||
- A2A 에이전트 카드 문서 추가
|
||||
- PII 삭제 기능 문서 추가
|
||||
|
||||
### 기여자
|
||||
@Anaisdg, @GininDenis, @greysonlalonde, @joaomdmoura, @koushiv777, @lorenzejay, @vinibrsl
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="2026년 1월 8일">
|
||||
## v1.8.0
|
||||
|
||||
|
||||
@@ -4,6 +4,74 @@ description: "Atualizações de produto, melhorias e correções do CrewAI"
|
||||
icon: "clock"
|
||||
mode: "wide"
|
||||
---
|
||||
<Update label="26 jan 2026">
|
||||
## v1.9.0
|
||||
|
||||
[Ver release no GitHub](https://github.com/crewAIInc/crewAI/releases/tag/1.9.0)
|
||||
|
||||
## O que Mudou
|
||||
|
||||
### Funcionalidades
|
||||
- Adicionar suporte a saídas estruturadas e response_format em vários provedores
|
||||
- Adicionar ID de resposta às respostas de streaming
|
||||
- Adicionar ordenação de eventos com hierarquias pai-filho
|
||||
- Adicionar suporte à autenticação SSO Keycloak
|
||||
- Adicionar capacidades de manipulação de arquivos multimodais
|
||||
- Adicionar suporte nativo à API de respostas OpenAI
|
||||
- Adicionar utilitários de execução de tarefas A2A
|
||||
- Adicionar configuração de servidor A2A e geração de cartão de agente
|
||||
- Aprimorar sistema de eventos e expandir opções de transporte
|
||||
- Melhorar mecanismos de chamada de ferramentas
|
||||
|
||||
### Correções de Bugs
|
||||
- Aprimorar armazenamento de arquivos com cache de memória de fallback quando aiocache não está disponível
|
||||
- Garantir que lista de documentos não esteja vazia
|
||||
- Tratar sequências de parada do Bedrock adequadamente
|
||||
- Adicionar suporte à chave de API do Google Vertex
|
||||
- Aprimorar detecção de palavras de parada do modelo Azure
|
||||
- Melhorar tratamento de erros para HumanFeedbackPending na execução de fluxo
|
||||
- Corrigir desvinculação de tarefa do span de execução
|
||||
|
||||
### Documentação
|
||||
- Adicionar documentação de manipulação nativa de arquivos
|
||||
- Adicionar documentação da API de respostas OpenAI
|
||||
- Adicionar orientação de implementação de cartão de agente
|
||||
- Refinar documentação A2A
|
||||
- Atualizar changelog para v1.8.0
|
||||
|
||||
### Contribuidores
|
||||
@Anaisdg, @GininDenis, @Vidit-Ostwal, @greysonlalonde, @heitorado, @joaomdmoura, @koushiv777, @lorenzejay, @nicoferdi96, @vinibrsl
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="15 jan 2026">
|
||||
## v1.8.1
|
||||
|
||||
[Ver release no GitHub](https://github.com/crewAIInc/crewAI/releases/tag/1.8.1)
|
||||
|
||||
## O que Mudou
|
||||
|
||||
### Funcionalidades
|
||||
- Adicionar utilitários de execução de tarefas A2A
|
||||
- Adicionar configuração de servidor A2A e geração de cartão de agente
|
||||
- Adicionar mecanismos de transporte adicionais
|
||||
- Adicionar suporte à integração Galileo
|
||||
|
||||
### Correções de Bugs
|
||||
- Melhorar compatibilidade do modelo Azure
|
||||
- Expandir profundidade de inspeção de frame para detectar parent_flow
|
||||
- Resolver problemas de gerenciamento de span de execução de tarefas
|
||||
- Aprimorar tratamento de erros para cenários de feedback humano durante execução de fluxo
|
||||
|
||||
### Documentação
|
||||
- Adicionar documentação de cartão de agente A2A
|
||||
- Adicionar documentação de recurso de redação de PII
|
||||
|
||||
### Contribuidores
|
||||
@Anaisdg, @GininDenis, @greysonlalonde, @joaomdmoura, @koushiv777, @lorenzejay, @vinibrsl
|
||||
|
||||
</Update>
|
||||
|
||||
<Update label="08 jan 2026">
|
||||
## v1.8.0
|
||||
|
||||
|
||||
@@ -173,6 +173,13 @@ class Telemetry:
|
||||
|
||||
self._original_handlers: dict[int, Any] = {}
|
||||
|
||||
if threading.current_thread() is not threading.main_thread():
|
||||
logger.debug(
|
||||
"CrewAI telemetry: Skipping signal handler registration "
|
||||
"(not running in main thread)."
|
||||
)
|
||||
return
|
||||
|
||||
self._register_signal_handler(signal.SIGTERM, SigTermEvent, shutdown=True)
|
||||
self._register_signal_handler(signal.SIGINT, SigIntEvent, shutdown=True)
|
||||
if hasattr(signal, "SIGHUP"):
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import os
|
||||
import threading
|
||||
from unittest.mock import patch
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
from crewai import Agent, Crew, Task
|
||||
@@ -121,3 +121,90 @@ def test_telemetry_singleton_pattern():
|
||||
thread.join()
|
||||
|
||||
assert all(instance is telemetry1 for instance in instances)
|
||||
|
||||
|
||||
def test_signal_handler_registration_skipped_in_non_main_thread():
|
||||
"""Test that signal handler registration is skipped when running from a non-main thread.
|
||||
|
||||
This test verifies that when Telemetry is initialized from a non-main thread,
|
||||
the signal handler registration is skipped without raising noisy ValueError tracebacks.
|
||||
See: https://github.com/crewAIInc/crewAI/issues/4289
|
||||
"""
|
||||
Telemetry._instance = None
|
||||
|
||||
result = {"register_signal_handler_called": False, "error": None}
|
||||
|
||||
def init_telemetry_in_thread():
|
||||
try:
|
||||
with patch("crewai.telemetry.telemetry.TracerProvider"):
|
||||
with patch.object(
|
||||
Telemetry,
|
||||
"_register_signal_handler",
|
||||
wraps=lambda *args, **kwargs: None,
|
||||
) as mock_register:
|
||||
telemetry = Telemetry()
|
||||
result["register_signal_handler_called"] = mock_register.called
|
||||
result["telemetry"] = telemetry
|
||||
except Exception as e:
|
||||
result["error"] = e
|
||||
|
||||
thread = threading.Thread(target=init_telemetry_in_thread)
|
||||
thread.start()
|
||||
thread.join()
|
||||
|
||||
assert result["error"] is None, f"Unexpected error: {result['error']}"
|
||||
assert (
|
||||
result["register_signal_handler_called"] is False
|
||||
), "Signal handler should not be registered in non-main thread"
|
||||
|
||||
|
||||
def test_signal_handler_registration_skipped_logs_debug_message():
|
||||
"""Test that a debug message is logged when signal handler registration is skipped.
|
||||
|
||||
This test verifies that when Telemetry is initialized from a non-main thread,
|
||||
a debug message is logged indicating that signal handler registration was skipped.
|
||||
"""
|
||||
Telemetry._instance = None
|
||||
|
||||
result = {"telemetry": None, "error": None, "debug_calls": []}
|
||||
|
||||
mock_logger_debug = MagicMock()
|
||||
|
||||
def init_telemetry_in_thread():
|
||||
try:
|
||||
with patch("crewai.telemetry.telemetry.TracerProvider"):
|
||||
with patch(
|
||||
"crewai.telemetry.telemetry.logger.debug", mock_logger_debug
|
||||
):
|
||||
result["telemetry"] = Telemetry()
|
||||
result["debug_calls"] = [
|
||||
str(call) for call in mock_logger_debug.call_args_list
|
||||
]
|
||||
except Exception as e:
|
||||
result["error"] = e
|
||||
|
||||
thread = threading.Thread(target=init_telemetry_in_thread)
|
||||
thread.start()
|
||||
thread.join()
|
||||
|
||||
assert result["error"] is None, f"Unexpected error: {result['error']}"
|
||||
assert result["telemetry"] is not None
|
||||
|
||||
debug_calls = result["debug_calls"]
|
||||
assert any(
|
||||
"Skipping signal handler registration" in call for call in debug_calls
|
||||
), f"Expected debug message about skipping signal handler registration, got: {debug_calls}"
|
||||
|
||||
|
||||
def test_signal_handlers_registered_in_main_thread():
|
||||
"""Test that signal handlers are registered when running from the main thread."""
|
||||
Telemetry._instance = None
|
||||
|
||||
with patch("crewai.telemetry.telemetry.TracerProvider"):
|
||||
with patch(
|
||||
"crewai.telemetry.telemetry.Telemetry._register_signal_handler"
|
||||
) as mock_register:
|
||||
telemetry = Telemetry()
|
||||
|
||||
assert telemetry.ready is True
|
||||
assert mock_register.call_count >= 2
|
||||
|
||||
Reference in New Issue
Block a user