Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
83 changes: 83 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Git
.git
.gitignore
.gitattributes

# Python
__pycache__
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# Testing
.pytest_cache/
.coverage
.coverage.*
htmlcov/
.tox/
.nox/
coverage.xml
*.cover

# Type checking
.mypy_cache/
.dmypy.json
dmypy.json
.pyre/
.pytype/

# IDEs
.vscode/
.idea/
*.swp
*.swo
*~
.DS_Store

# Environment
.env
.env.*
!.env.example
.venv
venv/
ENV/
env/

# Logs
*.log
logs/

# Output directories
output/
workspace/
reports/
sessions/

# Documentation
docs/_build/

# CI/CD
.github/

# Other
*.md
!README.md
LICENSE
Makefile
35 changes: 35 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# EditorConfig is awesome: https://EditorConfig.org

root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

[*.py]
indent_style = space
indent_size = 4
max_line_length = 100

[*.{yaml,yml}]
indent_style = space
indent_size = 2

[*.{json,jsonc}]
indent_style = space
indent_size = 2

[*.md]
trim_trailing_whitespace = false

[Makefile]
indent_style = tab

[*.sh]
indent_style = space
indent_size = 2

[*.{bat,cmd,ps1}]
end_of_line = crlf
58 changes: 58 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# AI Orchestrator Environment Configuration
# Copy this file to .env and fill in your values

# Application Settings
APP_ENV=development
APP_DEBUG=false
LOG_LEVEL=INFO
LOG_FILE=logs/ai-orchestrator.log

# Agent Configuration
CODEX_ENABLED=true
CODEX_COMMAND=codex
CODEX_TIMEOUT=300

GEMINI_ENABLED=true
GEMINI_COMMAND=gemini
GEMINI_TIMEOUT=180

CLAUDE_ENABLED=true
CLAUDE_COMMAND=claude
CLAUDE_TIMEOUT=300

COPILOT_ENABLED=false
COPILOT_COMMAND=copilot
COPILOT_TIMEOUT=120

# Workflow Settings
DEFAULT_WORKFLOW=default
MAX_ITERATIONS=3
MAX_RETRIES=3
RETRY_DELAY=1.0

# Directories
OUTPUT_DIR=./output
WORKSPACE_DIR=./workspace
REPORTS_DIR=./reports
SESSIONS_DIR=./sessions

# Performance Settings
ENABLE_CACHING=true
CACHE_TTL=3600
MAX_CONCURRENT_AGENTS=3
REQUEST_TIMEOUT=600

# Monitoring & Metrics
ENABLE_METRICS=true
METRICS_PORT=9090
METRICS_PATH=/metrics

# Security
ENABLE_RATE_LIMITING=true
RATE_LIMIT_PER_MINUTE=60
MAX_TASK_LENGTH=10000

# Feature Flags
ENABLE_ASYNC_EXECUTION=true
ENABLE_DISTRIBUTED_TRACING=false
ENABLE_AUTO_RECOVERY=true
19 changes: 19 additions & 0 deletions .flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[flake8]
max-line-length = 100
extend-ignore = E203, E266, E501, W503
exclude =
.git,
__pycache__,
build,
dist,
.eggs,
*.egg-info,
.tox,
.venv,
venv,
*/migrations/*,
*/static/*,
per-file-ignores =
__init__.py:F401
max-complexity = 10
docstring-convention = google
31 changes: 31 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Auto detect text files and perform LF normalization
* text=auto

# Source code
*.py text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
*.json text eol=lf
*.md text eol=lf
*.txt text eol=lf
*.sh text eol=lf

# Windows scripts
*.bat text eol=crlf
*.ps1 text eol=crlf

# Binary files
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.pdf binary

# Archives
*.zip binary
*.tar binary
*.gz binary
*.tgz binary
*.rar binary
*.7z binary
161 changes: 161 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
name: CI

on:
push:
branches: [main, develop, 'claude/**']
pull_request:
branches: [main, develop]

jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt

- name: Run Black
run: black --check orchestrator adapters tests

- name: Run isort
run: isort --check-only orchestrator adapters tests

- name: Run Flake8
run: flake8 orchestrator adapters tests

- name: Run Pylint
run: pylint orchestrator adapters --fail-under=8.0

type-check:
name: Type Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt

- name: Run MyPy
run: mypy orchestrator adapters --ignore-missing-imports

security:
name: Security Scan
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt

- name: Run Bandit
run: bandit -r orchestrator adapters -c pyproject.toml

- name: Run Safety
run: safety check --json || true

test:
name: Test Python ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']

steps:
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt

- name: Run tests
run: pytest tests/ -v --cov --cov-report=xml --cov-report=term

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
file: ./coverage.xml
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false

integration-test:
name: Integration Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt

- name: Run integration tests
run: pytest tests/ -v -m integration

build:
name: Build Package
runs-on: ubuntu-latest
needs: [lint, type-check, test]
steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'

- name: Install build dependencies
run: |
python -m pip install --upgrade pip
pip install build wheel

- name: Build package
run: python -m build

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
Loading
Loading