Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
909f5f4
refactor(a2a): move a2a agent and bindings code to common library
sriaradhyula Oct 7, 2025
a470e3d
feat: refactor a2a_stream with common code
sriaradhyula Oct 8, 2025
a5129a2
fix: lint and tests
sriaradhyula Oct 8, 2025
852107b
feat: implement A2A streaming and common code refactoring
sriaradhyula Oct 20, 2025
3e5afe0
refactor: Refactor AWS agent to use BaseStrandsAgent and BaseStrandsA…
sriaradhyula Oct 20, 2025
58151bd
fix: Fix linting issues and verify tests pass
sriaradhyula Oct 21, 2025
743875c
refactor: Move prompt_config.yaml to charts directory and relocate docs
sriaradhyula Oct 21, 2025
13080b4
chore: Bump Helm chart version to 0.3.4
sriaradhyula Oct 21, 2025
8b25678
refactor: GitHub agent to use BaseLangGraphAgent for consistent strea…
sriaradhyula Oct 21, 2025
a9d3958
fix(async-streaming): wip
sriaradhyula Oct 21, 2025
05a381a
fix(async-streaming): wip
sriaradhyula Oct 21, 2025
1b38052
refactor: Weather and Webex agents to use BaseLangGraphAgent
sriaradhyula Oct 21, 2025
f79e750
fix: Update Weather and Webex agent Docker configurations
sriaradhyula Oct 21, 2025
41f091f
fix: Weather and Webex agent environment and MCP configuration
sriaradhyula Oct 21, 2025
679a85d
fix: restore RAG direct routing and add streaming tests
sriaradhyula Oct 21, 2025
a7570a5
fix: resolve test suite issues and enable linting
sriaradhyula Oct 22, 2025
2adf7e0
fix(splunk): apply automatic linting fixes
sriaradhyula Oct 22, 2025
01f9ed5
feat: update a2a streaming and agent improvements
sriaradhyula Oct 22, 2025
1f766d1
fix(ci): resolve Docker build context issues for agent containers
sriaradhyula Oct 22, 2025
fc7d34f
fix(ci): resolve RAG agent Docker build context issues
sriaradhyula Oct 22, 2025
b664f4a
fix: resolve Docker build context issues for RAG and A2A agents
sriaradhyula Oct 23, 2025
02159a7
feat: Major streaming architecture improvements and prompt enhancements
sriaradhyula Oct 23, 2025
c2d4b01
feat: Add execution plan markers and creation confirmation policy
sriaradhyula Oct 23, 2025
a4f8f68
feat: add prompt templates and agent integration improvements
sriaradhyula Oct 24, 2025
5ea2f76
fix: update confluence agent dockerfile
sriaradhyula Oct 24, 2025
1ce44bd
fix: update webex agent dockerfile
sriaradhyula Oct 24, 2025
a63979d
fix: update rag agent dockerfile
sriaradhyula Oct 24, 2025
f84426d
fix: update weather agent dockerfile
sriaradhyula Oct 24, 2025
4ddaff8
Add querying announcement detection and _get_tool_purpose to supervis…
sriaradhyula Oct 25, 2025
0f49f63
Fix sub-agent tool message streaming with deduplication and formatting
sriaradhyula Oct 26, 2025
6cf43be
test: add comprehensive unit tests for date handling and fix existing…
sriaradhyula Oct 27, 2025
fd33cab
fix(docker): correct MCP directory path in agent Dockerfiles
sriaradhyula Oct 27, 2025
cc345af
fix(docker): correct A2A directory paths in agent Dockerfiles
sriaradhyula Oct 27, 2025
a8cb734
fix(docker): correct RAG Dockerfile paths and enable supervisor build…
sriaradhyula Oct 27, 2025
100d6e7
fix(build): update Makefiles to use repository root as Docker build c…
sriaradhyula Oct 27, 2025
8988f14
fix(build): correct Dockerfile paths in Makefiles to use absolute paths
sriaradhyula Oct 27, 2025
9178c5c
fix(build): add PYTHONPATH and fix RAG server venv detection
sriaradhyula Oct 27, 2025
f77a763
fix(build): export PYTHONPATH for all agent run targets
sriaradhyula Oct 27, 2025
8c129d3
fix(agents/template): resolve Docker build failure in CI
sriaradhyula Oct 27, 2025
5d80dd5
fix: resolve RAG unit tests virtual environment and module import issues
sriaradhyula Oct 27, 2025
74d4058
fix(docker): include __main__.py files in agent Docker builds
sriaradhyula Oct 27, 2025
68bbc73
fix(docker): align docker-compose contexts with Dockerfile changes
sriaradhyula Oct 27, 2025
d7874e4
ci: add GitHub Action workflow for Agent Forge plugin build
sriaradhyula Oct 30, 2025
fe5a1ee
fix: updates
sriaradhyula Oct 30, 2025
97822d1
feat: refactor a2a stream with common code and fix agent-forge workflow
sriaradhyula Oct 31, 2025
6029e95
fix: resolve yarn workspace state file issue in agent-forge build
sriaradhyula Oct 31, 2025
29c396d
fix: remove unnecessary Node.js setup and build steps from workflow
sriaradhyula Oct 31, 2025
40ae4b2
fix: copy .yarn directory to Docker container for Yarn 4.9.4 binary
sriaradhyula Oct 31, 2025
08cf348
fix: simplify Dockerfile to copy all files at once
sriaradhyula Oct 31, 2025
f2e4b9b
fix: run yarn from workspace root to access state files
sriaradhyula Oct 31, 2025
bdf8053
fix: use shell to cd into workspace directory before starting
sriaradhyula Oct 31, 2025
4c64d0b
feat: Update agent-forge Dockerfile for AMD64 compatibility
sriaradhyula Oct 31, 2025
3b67d66
fix: Build agent-forge Docker image for AMD64 only
sriaradhyula Oct 31, 2025
fa4af39
feat: Support multi-platform Docker builds (AMD64 + ARM64)
sriaradhyula Oct 31, 2025
be08078
fix: lint
sriaradhyula Oct 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 11 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,23 @@
ai_platform_engineering/agents/*/agent_*/**
!ai_platform_engineering/agents/*/agent_*/agentcard.py
!ai_platform_engineering/agents/*/agent_*/__init__.py
!ai_platform_engineering/agents/*/agent_*/__main__.py
!ai_platform_engineering/agents/*/agent_*/agent.py
!ai_platform_engineering/agents/*/agent_*/agent_langgraph.py
!ai_platform_engineering/agents/*/agent_*/models.py
!ai_platform_engineering/agents/*/agent_*/state.py
!ai_platform_engineering/agents/*/agent_*/protocol_bindings/**

# Exclude special client directories for weather/webex (they use different structure)
ai_platform_engineering/agents/weather/agntcy_agent_client/**
!ai_platform_engineering/agents/weather/agntcy_agent_client/agentcard.py
!ai_platform_engineering/agents/weather/agntcy_agent_client/__init__.py
!ai_platform_engineering/agents/weather/agntcy_agent_client/__main__.py
!ai_platform_engineering/agents/weather/agntcy_agent_client/agent.py
ai_platform_engineering/agents/webex/a2a_agent_client/**
!ai_platform_engineering/agents/webex/a2a_agent_client/agentcard.py
!ai_platform_engineering/agents/webex/a2a_agent_client/__init__.py
!ai_platform_engineering/agents/webex/a2a_agent_client/__main__.py
!ai_platform_engineering/agents/webex/a2a_agent_client/agent.py

# Exclude heavy directories
Expand All @@ -31,7 +39,8 @@ ai_platform_engineering/agents/*/Makefile

# Exclude main agent implementation files but keep __init__.py
ai_platform_engineering/agents/*/main.py
ai_platform_engineering/agents/*/__main__.py
# NOTE: Don't exclude agent_*/__main__.py - it's needed for python -m execution
# ai_platform_engineering/agents/*/__main__.py

# Exclude other heavy directories
ai_platform_engineering/evaluation/**
Expand All @@ -43,6 +52,7 @@ ai_platform_engineering/cli/**
!ai_platform_engineering/knowledge_bases/*

volumes/**
docker-compose/volumes/**
docs/**
workshop/**

Expand Down
178 changes: 178 additions & 0 deletions .github/test-build-locally.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
#!/bin/bash

# Local Build Test Script for Agent Forge Plugin
# This script mimics the GitHub Action workflow for local testing

set -e # Exit on error

# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

echo -e "${BLUE}╔══════════════════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}β•‘ Agent Forge Plugin - Local Build Test β•‘${NC}"
echo -e "${BLUE}╔══════════════════════════════════════════════════════════════╗${NC}"
echo ""

# Configuration
REPO_URL="https://github.com/cnoe-io/community-plugins.git"
BRANCH="agent-forge-upstream-docker"
IMAGE_NAME="ghcr.io/cnoe-io/backstage-plugin-agent-forge"
BUILD_DIR="/tmp/community-plugins-build"

# Cleanup function
cleanup() {
echo -e "${YELLOW}Cleaning up...${NC}"
if [ -d "$BUILD_DIR" ]; then
rm -rf "$BUILD_DIR"
fi
}

# Set trap for cleanup on exit
trap cleanup EXIT

# Step 1: Clone the repository
echo -e "${GREEN}[Step 1/5]${NC} Cloning repository..."
echo -e " Repository: ${YELLOW}$REPO_URL${NC}"
echo -e " Branch: ${YELLOW}$BRANCH${NC}"

if [ -d "$BUILD_DIR" ]; then
rm -rf "$BUILD_DIR"
fi

git clone --branch "$BRANCH" --single-branch "$REPO_URL" "$BUILD_DIR"
cd "$BUILD_DIR"

echo -e "${GREEN}βœ“${NC} Repository cloned successfully"
echo ""

# Step 2: Setup Node.js environment
echo -e "${GREEN}[Step 2/5]${NC} Checking Node.js environment..."
NODE_VERSION=$(node --version 2>/dev/null || echo "not installed")
YARN_VERSION=$(yarn --version 2>/dev/null || echo "not installed")

echo -e " Node.js: ${YELLOW}$NODE_VERSION${NC}"
echo -e " Yarn: ${YELLOW}$YARN_VERSION${NC}"

if [ "$NODE_VERSION" = "not installed" ]; then
echo -e "${RED}βœ— Node.js is not installed. Please install Node.js 20 or higher.${NC}"
exit 1
fi

if [ "$YARN_VERSION" = "not installed" ]; then
echo -e "${YELLOW}⚠ Yarn is not installed. Installing via npm...${NC}"
npm install -g yarn
fi

echo -e "${GREEN}βœ“${NC} Environment ready"
echo ""

# Step 3: Install dependencies
echo -e "${GREEN}[Step 3/5]${NC} Installing dependencies..."
echo -e " Running: ${YELLOW}yarn install --frozen-lockfile${NC}"

yarn install --frozen-lockfile

echo -e "${GREEN}βœ“${NC} Dependencies installed"
echo ""

# Step 4: Build the project
echo -e "${GREEN}[Step 4/5]${NC} Building project..."
echo -e " Running: ${YELLOW}yarn build:all${NC}"

# Check if build:all script exists
if grep -q '"build:all"' package.json; then
yarn build:all
else
echo -e "${YELLOW}⚠ 'build:all' script not found. Trying 'yarn build'...${NC}"
yarn build
fi

echo -e "${GREEN}βœ“${NC} Build completed"
echo ""

# Step 5: Build Docker image
echo -e "${GREEN}[Step 5/5]${NC} Building Docker image..."
echo -e " Image: ${YELLOW}$IMAGE_NAME:local-test${NC}"

# Check for custom Dockerfile in the original repo
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
CUSTOM_DOCKERFILE="$SCRIPT_DIR/../build/agent-forge/Dockerfile"

if [ -f "$CUSTOM_DOCKERFILE" ]; then
echo -e "${GREEN}βœ“${NC} Using custom Dockerfile from: ${YELLOW}build/agent-forge/Dockerfile${NC}"
cp "$CUSTOM_DOCKERFILE" "$BUILD_DIR/Dockerfile"
else
echo -e "${YELLOW}⚠ Custom Dockerfile not found at $CUSTOM_DOCKERFILE${NC}"
echo -e "${YELLOW}Looking for Dockerfile in cloned repository...${NC}"

if [ ! -f "$BUILD_DIR/Dockerfile" ]; then
# Search for Dockerfile
DOCKERFILE_PATH=$(find "$BUILD_DIR" -name "Dockerfile" -type f | head -n 1)

if [ -z "$DOCKERFILE_PATH" ]; then
echo -e "${RED}βœ— No Dockerfile found${NC}"
exit 1
else
echo -e "${GREEN}βœ“${NC} Found Dockerfile at: ${YELLOW}$DOCKERFILE_PATH${NC}"
cp "$DOCKERFILE_PATH" "$BUILD_DIR/Dockerfile"
fi
fi
fi

# Build the image
docker build -t "$IMAGE_NAME:local-test" "$BUILD_DIR"

echo -e "${GREEN}βœ“${NC} Docker image built successfully"
echo ""

# Summary
echo -e "${BLUE}╔══════════════════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}β•‘ Build Summary β•‘${NC}"
echo -e "${BLUE}╠══════════════════════════════════════════════════════════════╣${NC}"
echo -e "${GREEN}βœ“${NC} Repository cloned from ${YELLOW}$BRANCH${NC} branch"
echo -e "${GREEN}βœ“${NC} Dependencies installed"
echo -e "${GREEN}βœ“${NC} Project built successfully"
echo -e "${GREEN}βœ“${NC} Docker image created: ${YELLOW}$IMAGE_NAME:local-test${NC}"
echo -e "${BLUE}β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•${NC}"
echo ""

# Additional information
echo -e "${BLUE}Next Steps:${NC}"
echo ""
echo -e "1. ${GREEN}Test the Docker image:${NC}"
echo -e " docker run -d -p 7007:7007 --name agent-forge-test $IMAGE_NAME:local-test"
echo ""
echo -e "2. ${GREEN}View logs:${NC}"
echo -e " docker logs -f agent-forge-test"
echo ""
echo -e "3. ${GREEN}Stop and remove container:${NC}"
echo -e " docker stop agent-forge-test && docker rm agent-forge-test"
echo ""
echo -e "4. ${GREEN}Push to registry (if authenticated):${NC}"
echo -e " docker tag $IMAGE_NAME:local-test $IMAGE_NAME:latest"
echo -e " docker push $IMAGE_NAME:latest"
echo ""
echo -e "5. ${GREEN}Inspect the image:${NC}"
echo -e " docker images | grep agent-forge"
echo -e " docker inspect $IMAGE_NAME:local-test"
echo ""

# Offer to run the container
read -p "Would you like to run the container now? (y/n): " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo -e "${GREEN}Starting container...${NC}"
docker run -d -p 7007:7007 --name agent-forge-test "$IMAGE_NAME:local-test"
echo ""
echo -e "${GREEN}βœ“${NC} Container started successfully"
echo -e "Access the application at: ${YELLOW}http://localhost:7007${NC}"
echo -e "View logs with: ${YELLOW}docker logs -f agent-forge-test${NC}"
fi

echo ""
echo -e "${GREEN}Local build test completed successfully!${NC}"

Loading
Loading