Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
51f8571
docs: add comprehensive Phase 2 completion context
ScientiaCapital Nov 17, 2025
62a1bf6
docs: add multi-language + Phase 3 foundation design
ScientiaCapital Nov 18, 2025
b281b55
docs: add detailed implementation plan
ScientiaCapital Nov 18, 2025
5883394
feat(adapters): add LanguageAdapter interface
ScientiaCapital Nov 18, 2025
eb7d6d7
fix(adapters): address code review issues for LanguageAdapter interface
ScientiaCapital Nov 18, 2025
b779420
fix(adapters): use export type for isolated modules compliance
ScientiaCapital Nov 18, 2025
f386670
feat(adapters): add PythonAdapter with FastAPI support
ScientiaCapital Nov 18, 2025
5e50a71
fix(adapters): address PythonAdapter security and type safety issues
ScientiaCapital Nov 18, 2025
9435119
feat(adapters): add GoAdapter with Gin framework support
ScientiaCapital Nov 18, 2025
90ec12d
feat(adapters): add RustAdapter with Actix-web support
ScientiaCapital Nov 18, 2025
e10d22c
test(adapters): add formatCode test to RustAdapter
ScientiaCapital Nov 18, 2025
2e57e9b
feat(agents): integrate language adapters into BaseAgent
ScientiaCapital Nov 18, 2025
7e4d136
test(integration): add E2E multi-language tests
ScientiaCapital Nov 18, 2025
30a6f43
feat(providers): add IProvider interface and types
ScientiaCapital Nov 18, 2025
94519e6
feat(providers): add ClaudeProvider with Anthropic SDK
ScientiaCapital Nov 18, 2025
8870a56
feat(providers): add QwenProvider and DeepSeekProvider
ScientiaCapital Nov 18, 2025
b5cf1c0
feat(providers): add ModelRouter with intelligent routing
ScientiaCapital Nov 18, 2025
cac30fc
feat(validation): implement Python JSON validator service
ScientiaCapital Nov 18, 2025
2dbe667
feat(dashboard): add GitHub OAuth login button
ScientiaCapital Nov 20, 2025
4860f3e
feat(deployment): configure RunPod serverless deployment
ScientiaCapital Nov 20, 2025
7db118b
feat(phase3): complete Phase 3 foundation - 100%
ScientiaCapital Nov 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
172 changes: 172 additions & 0 deletions .github/workflows/deploy-runpod.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
name: Deploy to RunPod

on:
push:
branches:
- main
paths:
- 'src/**'
- 'python-validator/**'
- 'Dockerfile.serverless'
- 'package.json'
- '.github/workflows/deploy-runpod.yml'
workflow_dispatch:
inputs:
force_deploy:
description: 'Force deployment even if tests fail'
required: false
default: 'false'

env:
REGISTRY: ghcr.io
IMAGE_NAME_AGENTS: ${{ github.repository }}/ai-agents
IMAGE_NAME_VALIDATOR: ${{ github.repository }}/json-validator

jobs:
build-and-push-agents:
name: Build & Push Node.js Agents Image
runs-on: ubuntu-latest
permissions:
contents: read
packages: write

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
platforms: linux/amd64

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME_AGENTS }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=sha,prefix={{branch}}-
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}

- name: Build and push Docker image (AMD64 only)
uses: docker/build-push-action@v5
env:
VCS_REF: ${{ github.sha }}
with:
context: .
file: ./Dockerfile.serverless
platforms: linux/amd64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Image digest
run: echo ${{ steps.meta.outputs.digest }}

build-and-push-validator:
name: Build & Push Python Validator Image
runs-on: ubuntu-latest
permissions:
contents: read
packages: write

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
platforms: linux/amd64

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME_VALIDATOR }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=sha,prefix={{branch}}-
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}

- name: Build and push Docker image (AMD64 only)
uses: docker/build-push-action@v5
env:
VCS_REF: ${{ github.sha }}
with:
context: ./python-validator
file: ./python-validator/Dockerfile.serverless
platforms: linux/amd64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Image digest
run: echo ${{ steps.meta.outputs.digest }}

deploy-notification:
name: Deployment Notification
runs-on: ubuntu-latest
needs: [build-and-push-agents, build-and-push-validator]
if: always()

steps:
- name: Check deployment status
env:
AGENTS_RESULT: ${{ needs.build-and-push-agents.result }}
VALIDATOR_RESULT: ${{ needs.build-and-push-validator.result }}
AGENTS_IMAGE: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME_AGENTS }}
VALIDATOR_IMAGE: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME_VALIDATOR }}
run: |
if [ "$AGENTS_RESULT" == "success" ] && [ "$VALIDATOR_RESULT" == "success" ]; then
echo "βœ… All images built and pushed successfully!"
echo "πŸš€ Ready to deploy to RunPod"
echo ""
echo "Agent Image: ${AGENTS_IMAGE}:latest"
echo "Validator Image: ${VALIDATOR_IMAGE}:latest"
else
echo "❌ Deployment failed - check logs above"
exit 1
fi

- name: RunPod Deployment Instructions
if: success()
env:
AGENTS_IMAGE: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME_AGENTS }}
run: |
echo "πŸ“‹ RunPod Deployment Steps:"
echo "1. Go to RunPod Serverless Dashboard"
echo "2. Create new template with image: ${AGENTS_IMAGE}:latest"
echo "3. Configure environment variables:"
echo " - ANTHROPIC_API_KEY"
echo " - DASHSCOPE_API_KEY"
echo " - DEEPSEEK_API_KEY"
echo " - PYTHON_VALIDATOR_URL=http://validator:8001"
echo "4. Set auto-scaling: Min=0, Max=10"
echo "5. Enable FlashBoot for fast cold starts"
echo "6. Deploy validator service separately"
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,15 @@ supabase/config.toml
context/
*.mcp.log

# ===================================
# Python Validator Service
# ===================================
python-validator/venv/
python-validator/__pycache__/
python-validator/.pytest_cache/
python-validator/*.json
python-validator/.env

# Logs
# Dependency directories
# Environment variables
Expand Down
Loading
Loading