π¨ README was generated using claude read with caution π¨ π¨ Please note this is not a production ready project, this is a personal side project π¨
AI-Powered Meeting Intelligence & Action Item Automation
MeetingActions is a distributed AI agent platform that transforms meeting notes into actionable tasks through intelligent automation. Built with a clean microservices architecture, it seamlessly integrates with Google Workspace, Jira, and other enterprise tools to provide comprehensive meeting intelligence and workflow orchestration with human-in-the-loop capabilities.
MeetingActions follows a microservices architecture with specialized agents and workflow services for comprehensive meeting intelligence:
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Jira Agent β β Google Agent β β Action Items β
β (Port 8000) β β (Port 8001) β β Workflow Server β
β β β β β (Port 8002) β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Agent Registry Service β
β (Port 8003) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Redis Cache β
β (Port 6380) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Purpose: Automates Jira operations and task management
- Port: 8000
- Features:
- Issue creation, updating, and querying
- Project management automation
- Integration with Red Hat Jira instance
- MCP (Model Context Protocol) tool integration
- Purpose: Google Workspace integration and meeting analysis
- Port: 8001
- Features:
- Meeting notes processing
- Google Calendar integration
- Document analysis and generation
- Email automation capabilities
- Purpose: Orchestrates action items workflow with human-in-the-loop capabilities
- Port: 8002
- Architecture: Separated workflow orchestrators for better modularity
- Features:
- Generation Endpoint (
/generate): Creates action items from meeting notes - Dispatch Endpoint (
/dispatch): Routes approved action items to agents - Multi-agent task orchestration and routing
- Agent discovery and dynamic dispatch via service registry
- Human review and approval workflow support
- Generation Endpoint (
- Purpose: Service discovery and health monitoring
- Port: 8003
- Components:
registry_service.py: Standalone registry serverregistry_client.py: Client library for service discoveryagent_registry.py: Registry data models and in-memory store
- Features:
- Agent registration and discovery
- Health check monitoring
- Load balancing support
- Service metadata management
- Purpose: Model Context Protocol server for Google tools
- Port: 8100
- Features:
- Google API tool exposure via MCP
- Standardized tool interface
- Authentication management
- Purpose: Model Context Protocol server for JIRA tools
- Port: 8101
- Features:
- JIRA API tool exposure via MCP
- Issue management capabilities
- Standardized tool interface
- Purpose: Human-in-the-loop workflow interface
- Features:
- Rich terminal UI for action item review
- Edit action items before dispatch
- Approve/remove items individually
- Add new action items manually
- Final approval before agent dispatch
- Detailed results display with action item tracking
- Two-Step Process: Generate β Review β Dispatch
- Interactive Review: Rich CLI for reviewing and editing action items
- Flexible Control: Approve, edit, remove, or add items before dispatch
- Full Visibility: Track which action items were processed and their results
- ReActAgent Framework: Uses LlamaIndex's ReActAgent for intelligent reasoning and action
- Multi-LLM Support: Compatible with OpenAI, Google Gemini, and OpenAI-like endpoints
- Unified Response Model: Consistent
AgentResponseschema across all agents - Tool Integration: Extensible tool system for external API integration
- Progressive Summarization: Multi-pass iterative summarization for very long meeting notes
- Handles documents of any size with automatic chunking
- Configurable strategies (aggressive, balanced, conservative)
- Preserves critical information through structured reduction
- See PROGRESSIVE_SUMMARIZATION.md for details
- Jira Integration: Full CRUD operations on issues, projects, and workflows
- Google Workspace: Calendar, Drive, Gmail, and Meet integration
- Redis Caching: High-performance caching for documents and general data
- MCP Protocol: Standardized tool communication protocol
- Langfuse Integration: Comprehensive LLM observability and tracing
- Structured Logging: Centralized logging with configurable levels
- Health Monitoring: Service health checks and status reporting
- Performance Metrics: Request/response tracking and performance analysis
- Separated Base Classes: Distinct
BaseAgentServerandBaseWorkflowServer - Centralized Schemas: All Pydantic models in
src/core/schemas/ - Modular Design: Composable workflows and reusable components
- Type Safety: Full type hints and Pydantic validation throughout
- Containerized Deployment: Docker/Podman containers for all services
- Service Mesh: Inter-service communication and discovery
- Configuration Management: JSON-based configuration with environment overrides
- Development Tools: Makefile for easy service management
# Required
- Python 3.11+
- Docker & Docker Compose
- Redis (for caching)
# API Access
- Google API credentials (credentials.json)
- Jira API token
- Gemini API key# 1. Clone repository
git clone <repository-url>
cd Agents
# 2. Set environment variables
export MODEL_API_KEY="your_gemini_api_key"
export LOG_LEVEL="INFO"
# 3. Launch all services
docker-compose up --buildService Endpoints:
- Jira Agent: http://localhost:8000
- Google Agent: http://localhost:8001
- Workflows: http://localhost:8002
- Registry: http://localhost:8003
- Google MCP: http://localhost:8100
- JIRA MCP: http://localhost:8101
- Redis Cache: localhost:6380
# Start all services
make start-all
# Or individual services (in dependency order)
make start-registry # Port 8003 (start first - service discovery)
make start-mcp # Port 8100 (start second - tool protocol)
make start-jira-agent # Port 8000
make start-google-agents # Port 8001
make start-workflows # Port 8002# Run the interactive client for human-in-the-loop workflow
python -m src.clients.meeting_actions_client
# Or with custom server URL
python -m src.clients.meeting_actions_client --url http://localhost:8002Client Workflow:
- Enter meeting name and date
- Review generated action items (view each individually)
- Edit, approve, or remove items
- Add new items if needed
- Final approval before dispatch
- View detailed execution results
src/
βββ clients/ # Client applications
β βββ meeting_actions_client.py # Interactive CLI client
βββ core/ # Business logic and domain
β βββ agents/ # Individual agent implementations
β β βββ jira_agent.py # Jira integration agent
β β βββ google_agent.py # Google Workspace agent
β βββ error_handler.py # Centralized error handling and resilience
β βββ schemas/ # Pydantic models and schemas
β β βββ __init__.py # Centralized schema exports
β β βββ agent_response.py # Unified AgentResponse model
β β βββ workflow_models.py # Workflow data models
β βββ workflows/ # Event-driven workflow definitions
β β βββ meeting_notes_and_generation_orchestrator.py
β β βββ action_items_dispatch_orchestrator.py
β β βββ sub_workflows/ # Focused sub-workflow components
β β βββ meeting_notes_workflow.py
β β βββ action_items_generation_workflow.py
β β βββ agent_dispatch_workflow.py
β βββ workflow_servers/ # Workflow execution servers
β βββ action_items_server.py # Action items server
βββ shared/ # Shared components and utilities
β βββ agents/ # Agent utilities
β β βββ utils.py # Agent utility functions
β βββ base/ # Base classes for servers
β β βββ base_server.py # Base server for all services
β β βββ base_agent_server.py # Base for agent servers
β β βββ base_workflow_server.py # Base for workflow servers
β βββ common/ # Common patterns and utilities
β β βββ singleton_meta.py # Singleton metaclass implementation
β βββ llm/ # LLM-related utilities
β β βββ summarization/ # Summarization tools
β β β βββ progressive.py # Multi-pass summarization engine
β β βββ token_utils.py # Token counting and management
β βββ resilience/ # Resilience patterns
β βββ circuit_breaker.py # Circuit breaker implementation
β βββ exceptions.py # Custom exception hierarchy
β βββ retry.py # Retry logic and decorators
βββ infrastructure/ # Platform infrastructure
β βββ cache/ # Redis caching with singleton pattern
β β βββ redis_cache.py # Redis cache implementation
β β βββ document_cache.py # Document-specific caching
β βββ config/ # Configuration management
β β βββ read_config.py # Configuration reader
β β βββ models.py # Configuration models
β βββ prompts/ # System prompts (organized by category)
β β βββ prompts.py # Prompt loader and management
β β βββ action_items/ # Action items generation prompts
β β β βββ generation.txt
β β β βββ refinement.txt
β β β βββ review.txt
β β βββ agents/ # Agent-specific prompts
β β β βββ agent_query.txt
β β β βββ google_context.txt
β β β βββ jira_context.txt
β β β βββ tool_dispatcher_prompt.txt
β β βββ summarization/ # Progressive summarization prompts
β β β βββ basic.txt
β β β βββ progressive_pass1.txt
β β β βββ progressive_pass2.txt
β β β βββ progressive_pass3.txt
β β βββ meeting_notes/ # Meeting notes processing
β β β βββ identify_file.txt
β β βββ legacy/ # Deprecated prompts (backward compatibility)
β β βββ ...
β βββ logging/ # Structured logging
β β βββ logging_config.py # Logging configuration
β βββ observability/ # Langfuse integration
β βββ observability.py # Monitoring and tracing
βββ integrations/ # External service integrations
β βββ common/ # Common integration utilities
β β βββ date_tools.py # Date/time utilities
β βββ google/ # Google Workspace APIs
β β βββ auth.py # Authentication utilities
β β βββ tools.py # Google API tools
β β βββ gmail_tools.py # Gmail-specific tools
β βββ jira/ # Jira API integration
β β βββ formatter.py # Jira data formatting
β β βββ tools.py # Jira API tools
β βββ general_tools/ # Legacy general tools
βββ services/ # Standalone services
βββ mcp/ # Model Context Protocol servers
β βββ google_tools_mcp.py # Google tools MCP server (Port 8100)
β βββ jira_tools_mcp.py # JIRA tools MCP server (Port 8101)
βββ registry/ # Agent registry service
βββ registry_service.py # Registry server (Port 8003)
βββ registry_client.py # Registry client
βββ agent_registry.py # Registry data models
tests/ # Test suite
βββ unit/ # Unit tests
β βββ utils/
β β βββ test_progressive_summarization.py # 26 comprehensive tests
β βββ ...
βββ integration/ # Integration tests
βββ ...
configs/ # Container-specific configurations
βββ action-items-config.json # Action items server (includes progressive_summarization)
βββ google-agent-config.json # Google agent configuration
βββ jira-agent-config.json # Jira agent configuration
βββ google-mcp-config.json # Google MCP server configuration
βββ jira-mcp-config.json # JIRA MCP server configuration
βββ registry-service-config.json # Registry service configuration
docs/ # Documentation
βββ ARCHITECTURE.md # System architecture and design patterns
βββ PROGRESSIVE_SUMMARIZATION.md # Progressive summarization feature guide
βββ ERROR_HANDLING.md # Error handling patterns
- Singleton Pattern: Efficient resource management for caching and shared services
- Factory Pattern: Dynamic model and configuration creation
- Observer Pattern: Event-driven workflow orchestration
- Repository Pattern: Clean data access abstraction
- Separation of Concerns: Clear boundaries between core domain, shared utilities, and infrastructure
- Resilience Patterns: Circuit breakers, retry logic, and error handling in
src/shared/resilience/
- Unified AgentResponse Schema: Single, consistent response model for all agents and workflows
- Separated Base Classes:
BaseAgentServerfor agents,BaseWorkflowServerfor workflows insrc/shared/base/ - Centralized Schemas: All Pydantic models organized in
src/core/schemas/ - Enhanced Execution Results: Full action item tracking in dispatch results
- Modular Workflows: Composable orchestrators for better maintainability
- Shared Utilities Layer: Common components in
src/shared/for cross-cutting concerns- Agent utilities in
src/shared/agents/ - LLM tools in
src/shared/llm/ - Resilience patterns in
src/shared/resilience/(circuit breakers, retry, exceptions)
- Agent utilities in
- Progressive Summarization: Multi-pass reduction system with semantic chunking
- New workflow step separation:
prepare_meeting_notesβgenerate_action_items - Event-based communication via
NotesReadyEvent - 26 comprehensive unit tests with full coverage
- New workflow step separation:
- Organized Integrations: Clean separation by service provider
src/integrations/google/for Google Workspacesrc/integrations/jira/for Jirasrc/integrations/common/for shared utilities
- Organized Prompts Structure: Category-based prompt organization
action_items/,agents/,summarization/,meeting_notes/,legacy/- Easier prompt management and maintenance
- Clear separation by feature domain
Core Features:
- Meeting Intelligence: Extract structured action items from meeting notes with AI precision
- Calendar Management: Schedule meetings, manage events, sync calendars automatically
- Document Processing: Analyze Google Docs for actionable content and insights
- MeetingActions Integration: Seamless automated meeting-to-action-item pipelines
API Examples:
# Extract action items from meeting
curl -X POST "http://localhost:8001/agent" \
-H "Content-Type: application/json" \
-d '{
"query": "Extract action items from my team meeting notes"
}'
# Response format (AgentResponse)
{
"response": "I found 3 action items...",
"error": false,
"additional_info_required": false
}Core Features:
- Ticket Lifecycle Management: Create, update, track, and close issues
- Project Coordination: Manage sprints, backlogs, and project workflows
- Automated Integration: Convert action items to Jira tickets
- Team Collaboration: Comment management and notification handling
API Examples:
# Create Jira ticket
curl -X POST "http://localhost:8000/agent" \
-H "Content-Type: application/json" \
-d '{
"query": "Create ticket for authentication bug fix in user login"
}'
# Response format (AgentResponse)
{
"response": "Created ticket PROJ-123",
"error": false,
"additional_info_required": false
}The action items workflow has been separated into two distinct orchestrators to enable human review:
- Purpose: Retrieve meeting notes and generate action items
- Endpoint:
POST /generate - Process:
- Fetch meeting notes from Google agent
- Generate structured action items with AI
- Return items for human review
- Purpose: Dispatch approved action items to agents
- Endpoint:
POST /dispatch - Process:
- Discover available agents
- Route action items to appropriate agents
- Execute and collect results
- Return detailed execution results with action item tracking
The CLI client provides a rich interface for the human-in-the-loop workflow:
# Start the interactive client
python -m src.clients.meeting_actions_client
# Workflow steps:
# 1. Enter meeting information
# β Meeting name: "Weekly Team Sync"
# β Date: 2024-09-08
# 2. Review generated action items
# β View each item with full details
# β Options: Approve, Edit, Remove, Back
# 3. Edit fields if needed
# β Title, Description, Assignee
# β Due Date, Priority, Category
# 4. Final approval
# β Review all items in summary table
# β Add new items if needed
# β Dispatch to agents
# 5. View results
# β See which items were processed
# β View agent responses
# β Track success/failure status# Generate action items
import requests
generation_response = requests.post(
"http://localhost:8002/generate",
json={
"meeting": "Weekly Team Sync",
"date": "2024-09-08"
}
)
action_items = generation_response.json()["action_items"]
# Review and modify action items (your custom logic here)
# ...
# Dispatch approved action items
dispatch_response = requests.post(
"http://localhost:8002/dispatch",
json={"action_items": action_items}
)
results = dispatch_response.json()["results"]
# Each result contains:
# - action_item: The original action item with title
# - agent_name: Which agent processed it
# - response: Agent's response
# - request_error: Whether request failed
# - agent_error: Whether agent reported an error
# - additional_info_required: Whether more info is neededThe system uses composable sub-workflows for maximum flexibility:
- Retrieve and validate meeting notes from external sources
- Content validation and format normalization
- Error handling and retry logic
- Preparation Step: Intelligent token management and progressive summarization
- Automatic detection of oversized meeting notes
- Multi-pass reduction with configurable strategies
- Semantic chunking for extremely large documents
- Generation Step: Extract structured action items using LLM analysis
- Multi-stage validation: Review cycles with feedback loops
- Iterative refinement: Continuous improvement based on review
- Pydantic model validation: Type-safe structured output
- Intelligent agent discovery via registry
- Dynamic routing decisions based on action item content
- Parallel execution and result aggregation
- Full action item tracking in results
Advanced Features:
- Composable Architecture: Each sub-workflow can be used independently
- Shared Data Models: Type-safe Pydantic models from
src/core/schemas/ - Common Events: Standardized event system across workflows
- Error Propagation: Structured error handling with proper error models
- Observability: Full tracing with Langfuse integration
- Enhanced Results: Action item details included in execution results
{
"llm": "OpenAILike",
"model": "gemini-2.0-flash",
"verify_ssl": false,
"additional_model_parameter": {
"api_base": "https://your-gemini-endpoint.com/v1beta/openai",
"is_chat_model": true
},
"tools_config": {
"jira_tool": {
"server": "https://your-jira-instance.com"
}
},
"agent_config": {
"max_iterations": 20,
"verbose": true
},
"mcp_config": {
"port": 8100,
"servers": [
"http://127.0.0.1:8100/mcp"
]
},
"cache_config": {
"enable": true,
"ttl_hours": 1,
"max_size_mb": 100,
"host": "localhost",
"port": 6380,
"password": "12345"
},
"observability": {
"enable": true,
"secret_key": "sk-lf-your-secret-key",
"public_key": "pk-lf-your-public-key",
"host": "http://localhost:3000"
},
"progressive_summarization": {
"threshold_ratio": 0.75,
"max_passes": 3,
"strategy": "balanced",
"chunk_threshold_ratio": 0.5,
"chunk_size_ratio": 0.4,
"chunk_overlap_tokens": 500
},
"meeting_notes_endpoint": "http://127.0.0.1:8001/meeting-notes",
"heartbeat_interval": 60,
"registry_endpoint": "http://localhost:8003"
}verify_ssl: SSL certificate verification for API calls (boolean)mcp_config: Model Context Protocol server configurationport: MCP server port (default: 8100)servers: Array of MCP server endpoints
progressive_summarization: Multi-pass summarization (automatically activates for large documents)threshold_ratio: Trigger progressive summarization when tokens > (max_context_tokens Γ ratio). Value between 0 and 1. (default: 0.75)max_passes: Maximum number of summarization passes (1-5, default: 3)strategy:"aggressive","balanced", or"conservative"(default:"balanced")chunk_threshold_ratio: Trigger automatic chunking when tokens > (context Γ ratio) (default: 0.5)chunk_size_ratio: Each chunk size as ratio of context window (default: 0.4)chunk_overlap_tokens: Token overlap between chunks (default: 500)- Note: Progressive summarization and chunking always activate when thresholds are exceededβno enable/disable flag
- See PROGRESSIVE_SUMMARIZATION.md for details
meeting_notes_endpoint: Endpoint for meeting notes processingheartbeat_interval: Service health check interval in secondsregistry_endpoint: Agent registry service endpoint for service discovery
# Required
MODEL_API_KEY=your_gemini_api_key
JIRA_API_TOKEN=your_jira_token
# Optional
LOG_LEVEL=INFO
CONFIG_PATH=/path/to/config.json
PYTHONPATH=/appRedis Singleton Cache:
- Singleton Pattern: Single connection instance across application
- Configurable TTL: Flexible expiration policies
- Error Resilience: Graceful degradation when cache unavailable
- Performance Monitoring: Built-in cache statistics and health checks
from src.infrastructure.cache.redis_cache import get_cache
# Get singleton cache instance
cache = get_cache()
# Cache document content
cache.set_document_content("doc_id", content, title="Document Title")
# Retrieve cached content
content = cache.get_document_content("doc_id")
# Monitor performance
stats = cache.get_cache_stats()Structured Logging System:
- JSON Format: Machine-readable log output
- Contextual Information: Request IDs, user context, timing
- Configurable Levels: DEBUG, INFO, WARNING, ERROR, CRITICAL
- Performance Tracking: Response times and resource usage
Langfuse Integration:
- LLM Monitoring: Track token usage, costs, and performance
- Conversation Flows: Visualize agent interactions and decision trees
- Error Analytics: Detailed error tracking and debugging
- Performance Optimization: Identify bottlenecks and optimization opportunities
services:
redis: # High-performance cache
jira-agent: # Jira integration service
google-agent: # Google Workspace service
workflows: # Workflow orchestration
google-mcp: # Google tools MCP server
jira-mcp: # JIRA tools MCP server
registry: # Service discovery# Build production images
docker-compose -f docker-compose.prod.yml build
# Deploy with scaling
docker-compose -f docker-compose.prod.yml up -d --scale jira-agent=3
# Monitor services
docker-compose logs -f# Check service health
curl http://localhost:8000/health
curl http://localhost:8001/health
curl http://localhost:8002/health
curl http://localhost:8003/health
# Monitor cache performance
curl http://localhost:8000/cache/stats
# View API documentation
open http://localhost:8000/docs
open http://localhost:8001/docs
open http://localhost:8002/docsExtensible Tool Framework:
Located in src/services/mcp/ - standalone MCP server implementations:
- Google Tools MCP (Port 8100): Calendar, Docs, Drive, Gmail integration
- JIRA Tools MCP (Port 8101): Issue management, project coordination, ticket operations
- Custom Protocols: Build domain-specific tool integrations
- Agent Enhancement: Extend capabilities through external tools
- Google Workspace: Calendar, Docs, Drive, Gmail integration
- Jira Cloud/Server: Full project management capabilities
- Redis: High-performance distributed caching
- Langfuse: Comprehensive LLM observability
- Response Times: Agent processing and API call latencies
- Success Rates: Workflow completion and error rates
- Resource Usage: Memory, CPU, and cache utilization
- Cost Tracking: LLM token usage and API costs
# Enable debug logging
export LOG_LEVEL=DEBUG
# Test generation endpoint
curl -X POST "http://localhost:8002/generate" \
-H "Content-Type: application/json" \
-d '{"meeting": "Debug Test", "date": "2024-09-08"}'
# Test dispatch endpoint
curl -X POST "http://localhost:8002/dispatch" \
-H "Content-Type: application/json" \
-d '{
"action_items": {
"meeting_title": "Test",
"meeting_date": "2024-09-08",
"action_items": [...]
}
}'
# Check cache performance
python -c "
from src.infrastructure.cache.redis_cache import get_cache
cache = get_cache()
print(cache.get_cache_stats())
"-
Create Agent Class: Extend
BaseAgentServerfrom src.shared.base.base_agent_server import BaseAgentServer from src.core.schemas.agent_response import AgentResponse class MyAgent(BaseAgentServer): def create_service(self): # No llm parameter needed - use self.llm return ReActAgent( name="my-agent", tools=my_tools, llm=self.llm, output_cls=AgentResponse )
-
Define Capabilities: Implement required methods and tools
-
Configure Integration: Add to Docker Compose and config
-
Add Documentation: Update API docs and examples
-
Define Workflow Class: Extend
BaseWorkflowServerfrom src.shared.base.base_workflow_server import BaseWorkflowServer class MyWorkflowServer(BaseWorkflowServer): def additional_routes(self): @self.app.post("/my-workflow") async def my_workflow(request: MyRequest): # Create orchestrator on-demand orchestrator = MyOrchestrator(llm=self.llm) result = await orchestrator.run(...) return result
-
Implement Workflow Steps: Use
@stepdecorators for workflow logic -
Use Shared Schemas: Import from
src.core.schemas -
Add Error Handling: Implement retry and recovery mechanisms
-
Integration Testing: Validate with existing agents
All schemas are centralized in src/core/schemas/:
from src.core.schemas import (
AgentResponse, # Unified agent response
ActionItem, # Single action item
ActionItemsList, # Complete action items list
AgentExecutionResult, # Execution result with action item
)Use the progressive summarization engine for handling long documents:
from src.shared.llm.summarization.progressive import (
progressive_summarize,
SummarizationStrategy,
ProgressiveSummaryResult,
)
# Summarize a long document
result: ProgressiveSummaryResult = await progressive_summarize(
text=long_document,
llm=your_llm,
target_tokens=10000,
max_passes=3,
strategy=SummarizationStrategy.BALANCED,
chunk_threshold_ratio=0.5,
)
# Access results
print(f"Reduced from {result.original_tokens} to {result.final_tokens}")
print(f"Reduction: {result.overall_reduction:.1%}")
print(f"Passes: {result.total_passes}")
print(f"Chunked: {result.was_chunked} ({result.num_chunks} chunks)")
print(f"Summary: {result.final_summary}")See PROGRESSIVE_SUMMARIZATION.md for complete API reference and examples.
- Jira Agent: http://localhost:8000/docs
- Google Agent: http://localhost:8001/docs
- Workflows: http://localhost:8002/docs
- Registry: http://localhost:8003/docs
# Health checks
GET / # Service status and information
GET /health # Detailed health metrics
GET /description # Service description
# Agent interactions
POST /agent # Main agent query endpoint (returns AgentResponse)
POST /test # Test endpoint without full context
# Workflow operations (NEW SEPARATED ENDPOINTS)
POST /generate # Generate action items from meeting (step 1)
POST /dispatch # Dispatch action items to agents (step 2)
# Administrative
GET /info # Agent information and capabilities
GET /discover # Discover other registered agents
GET /cache/stats # Cache performance metricsAll agents return a unified response format:
{
"response": "Agent response content or error description",
"error": false,
"additional_info_required": false
}Dispatch endpoint returns enhanced results with action item tracking:
{
"results": [
{
"action_item_index": 0,
"action_item": {
"title": "Update documentation",
"description": "...",
"assignee": "John",
"due_date": "2024-09-15",
"priority": "high"
},
"agent_name": "jira-agent",
"request_error": false,
"agent_error": false,
"response": "Created ticket PROJ-123",
"additional_info_required": false,
"execution_time": 2.5
}
]
}-
Authentication Errors
- Verify Google credentials.json placement
- Check Jira API token validity
- Validate API endpoint accessibility
-
Cache Connection Issues
- Ensure Redis is running on correct port
- Check password configuration
- Verify network connectivity
-
Agent Response Delays
- Monitor LLM API rate limits
- Check cache hit rates
- Validate network latency
-
Workflow Failures
- Review Langfuse traces for error details
- Check agent endpoint availability via
/discover - Validate JSON schema compliance with Pydantic models
- Ensure action items match
ActionItemsListschema
# Test Redis connection
redis-cli -h localhost -p 6380 -a 12345 ping
# Validate configuration
python -c "from src.infrastructure.config import ConfigReader; print(ConfigReader().config)"
# Check agent health
curl -f http://localhost:8000/health || echo "Jira agent down"
curl -f http://localhost:8001/health || echo "Google agent down"
curl -f http://localhost:8002/health || echo "Workflows down"
curl -f http://localhost:8003/health || echo "Registry down"
# Test agent discovery
curl http://localhost:8000/discover
# Run all tests
pytest tests/unit/ -v
pytest tests/integration/ -v
# Run progressive summarization tests specifically
pytest tests/unit/utils/test_progressive_summarization.py -v
# Run with coverage
pytest tests/unit/utils/test_progressive_summarization.py --cov=src/infrastructure/utils/progressive_summarizationMeetingActions demonstrates enterprise AI automation patterns for meeting intelligence and is intended for educational and development purposes. Ensure compliance with all integrated service terms of use.
- Code Quality: Follow PEP 8 and use type hints
- Documentation: Comprehensive docstrings for all classes and methods
- Testing: Unit tests for new functionality
- Architecture: Maintain clean architecture principles
- Schema Validation: Use Pydantic models from
src/core/schemas/ - Consistent Responses: Use
AgentResponsefor all agent endpoints
- Unified AgentResponse: Single response model across all agents
- Separated Base Classes:
BaseAgentServervsBaseWorkflowServer - Centralized Schemas: All models in
src/core/schemas/ - Human-in-the-Loop: Separated generation and dispatch workflows
- Enhanced Results: Full action item tracking in execution results
- Interactive CLI: Rich terminal interface for workflow management
- Progressive Summarization: Multi-pass iterative reduction for long meeting notes
- Automatic chunking for documents exceeding context windows
- Configurable reduction strategies (aggressive/balanced/conservative)
- Workflow refactoring: separated
prepare_meeting_notesstep - Event-based communication with
NotesReadyEvent - See PROGRESSIVE_SUMMARIZATION.md
MeetingActions - Transforming Meetings into Actions with AI
Built with: Python 3.11+ β’ FastAPI β’ LlamaIndex β’ Redis β’ Docker β’ Langfuse