Skip to content

Commit 98cd2a9

Browse files
authored
Merge pull request #4 from SynthoraAI-AI-News-Content-Curator/claude/production-ready-enhancement-012fYt8jSqr4u9f9RDEhoiWr
feat: Add comprehensive production-ready enhancements
2 parents 8a4a694 + 4cedb6b commit 98cd2a9

37 files changed

Lines changed: 5086 additions & 1 deletion

.dockerignore

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Git
2+
.git
3+
.gitignore
4+
.gitattributes
5+
6+
# Python
7+
__pycache__
8+
*.py[cod]
9+
*$py.class
10+
*.so
11+
.Python
12+
build/
13+
develop-eggs/
14+
dist/
15+
downloads/
16+
eggs/
17+
.eggs/
18+
lib/
19+
lib64/
20+
parts/
21+
sdist/
22+
var/
23+
wheels/
24+
*.egg-info/
25+
.installed.cfg
26+
*.egg
27+
MANIFEST
28+
29+
# Testing
30+
.pytest_cache/
31+
.coverage
32+
.coverage.*
33+
htmlcov/
34+
.tox/
35+
.nox/
36+
coverage.xml
37+
*.cover
38+
39+
# Type checking
40+
.mypy_cache/
41+
.dmypy.json
42+
dmypy.json
43+
.pyre/
44+
.pytype/
45+
46+
# IDEs
47+
.vscode/
48+
.idea/
49+
*.swp
50+
*.swo
51+
*~
52+
.DS_Store
53+
54+
# Environment
55+
.env
56+
.env.*
57+
!.env.example
58+
.venv
59+
venv/
60+
ENV/
61+
env/
62+
63+
# Logs
64+
*.log
65+
logs/
66+
67+
# Output directories
68+
output/
69+
workspace/
70+
reports/
71+
sessions/
72+
73+
# Documentation
74+
docs/_build/
75+
76+
# CI/CD
77+
.github/
78+
79+
# Other
80+
*.md
81+
!README.md
82+
LICENSE
83+
Makefile

.editorconfig

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# EditorConfig is awesome: https://EditorConfig.org
2+
3+
root = true
4+
5+
[*]
6+
charset = utf-8
7+
end_of_line = lf
8+
insert_final_newline = true
9+
trim_trailing_whitespace = true
10+
11+
[*.py]
12+
indent_style = space
13+
indent_size = 4
14+
max_line_length = 100
15+
16+
[*.{yaml,yml}]
17+
indent_style = space
18+
indent_size = 2
19+
20+
[*.{json,jsonc}]
21+
indent_style = space
22+
indent_size = 2
23+
24+
[*.md]
25+
trim_trailing_whitespace = false
26+
27+
[Makefile]
28+
indent_style = tab
29+
30+
[*.sh]
31+
indent_style = space
32+
indent_size = 2
33+
34+
[*.{bat,cmd,ps1}]
35+
end_of_line = crlf

.env.example

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# AI Orchestrator Environment Configuration
2+
# Copy this file to .env and fill in your values
3+
4+
# Application Settings
5+
APP_ENV=development
6+
APP_DEBUG=false
7+
LOG_LEVEL=INFO
8+
LOG_FILE=logs/ai-orchestrator.log
9+
10+
# Agent Configuration
11+
CODEX_ENABLED=true
12+
CODEX_COMMAND=codex
13+
CODEX_TIMEOUT=300
14+
15+
GEMINI_ENABLED=true
16+
GEMINI_COMMAND=gemini
17+
GEMINI_TIMEOUT=180
18+
19+
CLAUDE_ENABLED=true
20+
CLAUDE_COMMAND=claude
21+
CLAUDE_TIMEOUT=300
22+
23+
COPILOT_ENABLED=false
24+
COPILOT_COMMAND=copilot
25+
COPILOT_TIMEOUT=120
26+
27+
# Workflow Settings
28+
DEFAULT_WORKFLOW=default
29+
MAX_ITERATIONS=3
30+
MAX_RETRIES=3
31+
RETRY_DELAY=1.0
32+
33+
# Directories
34+
OUTPUT_DIR=./output
35+
WORKSPACE_DIR=./workspace
36+
REPORTS_DIR=./reports
37+
SESSIONS_DIR=./sessions
38+
39+
# Performance Settings
40+
ENABLE_CACHING=true
41+
CACHE_TTL=3600
42+
MAX_CONCURRENT_AGENTS=3
43+
REQUEST_TIMEOUT=600
44+
45+
# Monitoring & Metrics
46+
ENABLE_METRICS=true
47+
METRICS_PORT=9090
48+
METRICS_PATH=/metrics
49+
50+
# Security
51+
ENABLE_RATE_LIMITING=true
52+
RATE_LIMIT_PER_MINUTE=60
53+
MAX_TASK_LENGTH=10000
54+
55+
# Feature Flags
56+
ENABLE_ASYNC_EXECUTION=true
57+
ENABLE_DISTRIBUTED_TRACING=false
58+
ENABLE_AUTO_RECOVERY=true

.flake8

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
[flake8]
2+
max-line-length = 100
3+
extend-ignore = E203, E266, E501, W503
4+
exclude =
5+
.git,
6+
__pycache__,
7+
build,
8+
dist,
9+
.eggs,
10+
*.egg-info,
11+
.tox,
12+
.venv,
13+
venv,
14+
*/migrations/*,
15+
*/static/*,
16+
per-file-ignores =
17+
__init__.py:F401
18+
max-complexity = 10
19+
docstring-convention = google

.gitattributes

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Auto detect text files and perform LF normalization
2+
* text=auto
3+
4+
# Source code
5+
*.py text eol=lf
6+
*.yaml text eol=lf
7+
*.yml text eol=lf
8+
*.json text eol=lf
9+
*.md text eol=lf
10+
*.txt text eol=lf
11+
*.sh text eol=lf
12+
13+
# Windows scripts
14+
*.bat text eol=crlf
15+
*.ps1 text eol=crlf
16+
17+
# Binary files
18+
*.png binary
19+
*.jpg binary
20+
*.jpeg binary
21+
*.gif binary
22+
*.ico binary
23+
*.pdf binary
24+
25+
# Archives
26+
*.zip binary
27+
*.tar binary
28+
*.gz binary
29+
*.tgz binary
30+
*.rar binary
31+
*.7z binary

.github/workflows/ci.yml

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main, develop, 'claude/**']
6+
pull_request:
7+
branches: [main, develop]
8+
9+
jobs:
10+
lint:
11+
name: Lint
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- name: Set up Python
17+
uses: actions/setup-python@v5
18+
with:
19+
python-version: '3.11'
20+
cache: 'pip'
21+
22+
- name: Install dependencies
23+
run: |
24+
python -m pip install --upgrade pip
25+
pip install -r requirements.txt
26+
27+
- name: Run Black
28+
run: black --check orchestrator adapters tests
29+
30+
- name: Run isort
31+
run: isort --check-only orchestrator adapters tests
32+
33+
- name: Run Flake8
34+
run: flake8 orchestrator adapters tests
35+
36+
- name: Run Pylint
37+
run: pylint orchestrator adapters --fail-under=8.0
38+
39+
type-check:
40+
name: Type Check
41+
runs-on: ubuntu-latest
42+
steps:
43+
- uses: actions/checkout@v4
44+
45+
- name: Set up Python
46+
uses: actions/setup-python@v5
47+
with:
48+
python-version: '3.11'
49+
cache: 'pip'
50+
51+
- name: Install dependencies
52+
run: |
53+
python -m pip install --upgrade pip
54+
pip install -r requirements.txt
55+
56+
- name: Run MyPy
57+
run: mypy orchestrator adapters --ignore-missing-imports
58+
59+
security:
60+
name: Security Scan
61+
runs-on: ubuntu-latest
62+
steps:
63+
- uses: actions/checkout@v4
64+
65+
- name: Set up Python
66+
uses: actions/setup-python@v5
67+
with:
68+
python-version: '3.11'
69+
cache: 'pip'
70+
71+
- name: Install dependencies
72+
run: |
73+
python -m pip install --upgrade pip
74+
pip install -r requirements.txt
75+
76+
- name: Run Bandit
77+
run: bandit -r orchestrator adapters -c pyproject.toml
78+
79+
- name: Run Safety
80+
run: safety check --json || true
81+
82+
test:
83+
name: Test Python ${{ matrix.python-version }}
84+
runs-on: ${{ matrix.os }}
85+
strategy:
86+
fail-fast: false
87+
matrix:
88+
os: [ubuntu-latest, macos-latest, windows-latest]
89+
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
90+
91+
steps:
92+
- uses: actions/checkout@v4
93+
94+
- name: Set up Python ${{ matrix.python-version }}
95+
uses: actions/setup-python@v5
96+
with:
97+
python-version: ${{ matrix.python-version }}
98+
cache: 'pip'
99+
100+
- name: Install dependencies
101+
run: |
102+
python -m pip install --upgrade pip
103+
pip install -r requirements.txt
104+
105+
- name: Run tests
106+
run: pytest tests/ -v --cov --cov-report=xml --cov-report=term
107+
108+
- name: Upload coverage to Codecov
109+
uses: codecov/codecov-action@v4
110+
with:
111+
file: ./coverage.xml
112+
flags: unittests
113+
name: codecov-umbrella
114+
fail_ci_if_error: false
115+
116+
integration-test:
117+
name: Integration Tests
118+
runs-on: ubuntu-latest
119+
steps:
120+
- uses: actions/checkout@v4
121+
122+
- name: Set up Python
123+
uses: actions/setup-python@v5
124+
with:
125+
python-version: '3.11'
126+
cache: 'pip'
127+
128+
- name: Install dependencies
129+
run: |
130+
python -m pip install --upgrade pip
131+
pip install -r requirements.txt
132+
133+
- name: Run integration tests
134+
run: pytest tests/ -v -m integration
135+
136+
build:
137+
name: Build Package
138+
runs-on: ubuntu-latest
139+
needs: [lint, type-check, test]
140+
steps:
141+
- uses: actions/checkout@v4
142+
143+
- name: Set up Python
144+
uses: actions/setup-python@v5
145+
with:
146+
python-version: '3.11'
147+
cache: 'pip'
148+
149+
- name: Install build dependencies
150+
run: |
151+
python -m pip install --upgrade pip
152+
pip install build wheel
153+
154+
- name: Build package
155+
run: python -m build
156+
157+
- name: Upload artifacts
158+
uses: actions/upload-artifact@v4
159+
with:
160+
name: dist
161+
path: dist/

0 commit comments

Comments
 (0)