Skip to content

Commit 2312c02

Browse files
committed
Initial commit: Bizy - Enterprise AI Framework Orchestration
- Complete business logic orchestration layer for AI agents - Support for MCP, A2A, Temporal, LangChain, Semantic Kernel, Zep AI, FastMCP - Framework adapters with unified interface - Event-driven cross-framework communication - YAML-based business rule engine - BDD testing integration - Community contribution packages - Comprehensive documentation and examples - Production-ready with monitoring and observability
0 parents  commit 2312c02

File tree

120 files changed

+30424
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

120 files changed

+30424
-0
lines changed

.behaverc

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
[behave]
2+
# Behave configuration for Business Logic Orchestrator
3+
4+
# Test discovery
5+
paths = features
6+
step_path = features/steps
7+
8+
# Output format
9+
format = pretty
10+
show_skipped = false
11+
show_timings = true
12+
show_multiline = true
13+
14+
# Logging
15+
logging_level = INFO
16+
logging_format = %(levelname)-8s %(name)s: %(message)s
17+
18+
# Tags for test organization
19+
default_tags =
20+
tags = @smoke,@integration,@cross_framework
21+
22+
# Parallel execution (if supported)
23+
jobs = 1
24+
25+
# Stop on first failure for debugging
26+
stop = false
27+
28+
# Include scenario outlines
29+
include_re = .*\.(feature|story)$
30+
exclude_re = .*\.backup\..*
31+
32+
# JSON output for CI/CD integration
33+
json = reports/behave_results.json
34+
json.pretty = true
35+
36+
# JUnit XML output
37+
junit = true
38+
junit_directory = reports/junit
39+
40+
# Allure reporting (if allure-behave is installed)
41+
# allure_output = reports/allure
42+
43+
[behave.userdata]
44+
# Custom configuration for business logic orchestrator
45+
orchestrator.timeout = 60
46+
frameworks.mock_mode = true
47+
logging.capture = true
48+
test.environment = development

.env.example

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Example environment configuration for Bizy
2+
# Copy this file to .env and update with your actual values
3+
4+
# LangChain Configuration
5+
LANGCHAIN_API_KEY=your-langchain-api-key
6+
LANGCHAIN_MODEL=gpt-4
7+
LANGCHAIN_TEMPERATURE=0.7
8+
9+
# Temporal Configuration
10+
TEMPORAL_HOST=localhost
11+
TEMPORAL_PORT=7233
12+
TEMPORAL_NAMESPACE=default
13+
14+
# MCP Configuration
15+
MCP_SERVER_URL=http://localhost:8080
16+
MCP_AUTH_TOKEN=your-mcp-token
17+
18+
# Semantic Kernel Configuration
19+
SEMANTIC_KERNEL_API_KEY=your-sk-api-key
20+
SEMANTIC_KERNEL_SKILLS_DIR=skills/
21+
22+
# Zep AI Configuration
23+
ZEP_API_KEY=your-zep-api-key
24+
ZEP_API_URL=http://localhost:8000
25+
26+
# Redis Configuration (for event bus)
27+
REDIS_HOST=localhost
28+
REDIS_PORT=6379
29+
REDIS_DB=0
30+
31+
# Monitoring Configuration
32+
ENABLE_MONITORING=true
33+
METRICS_PORT=9090

.github/workflows/ci.yml

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [ main, develop ]
6+
pull_request:
7+
branches: [ main ]
8+
9+
jobs:
10+
lint:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
15+
- name: Set up Python
16+
uses: actions/setup-python@v5
17+
with:
18+
python-version: '3.12'
19+
20+
- name: Install Poetry
21+
uses: snok/install-poetry@v1
22+
with:
23+
version: latest
24+
virtualenvs-create: true
25+
virtualenvs-in-project: true
26+
27+
- name: Cache dependencies
28+
uses: actions/cache@v3
29+
with:
30+
path: .venv
31+
key: poetry-${{ runner.os }}-${{ hashFiles('poetry.lock') }}
32+
restore-keys: |
33+
poetry-${{ runner.os }}-
34+
35+
- name: Install dependencies
36+
run: poetry install --no-interaction
37+
38+
- name: Run black
39+
run: poetry run black --check bizy tests
40+
41+
- name: Run isort
42+
run: poetry run isort --check-only bizy tests
43+
44+
- name: Run flake8
45+
run: poetry run flake8 bizy tests
46+
47+
- name: Run mypy
48+
run: poetry run mypy bizy
49+
50+
test:
51+
runs-on: ubuntu-latest
52+
strategy:
53+
matrix:
54+
python-version: ['3.10', '3.11', '3.12']
55+
56+
services:
57+
redis:
58+
image: redis:6.2-alpine
59+
options: >-
60+
--health-cmd "redis-cli ping"
61+
--health-interval 10s
62+
--health-timeout 5s
63+
--health-retries 5
64+
ports:
65+
- 6379:6379
66+
67+
steps:
68+
- uses: actions/checkout@v4
69+
70+
- name: Set up Python ${{ matrix.python-version }}
71+
uses: actions/setup-python@v5
72+
with:
73+
python-version: ${{ matrix.python-version }}
74+
75+
- name: Install Poetry
76+
uses: snok/install-poetry@v1
77+
with:
78+
version: latest
79+
virtualenvs-create: true
80+
virtualenvs-in-project: true
81+
82+
- name: Cache dependencies
83+
uses: actions/cache@v3
84+
with:
85+
path: .venv
86+
key: poetry-${{ runner.os }}-py${{ matrix.python-version }}-${{ hashFiles('poetry.lock') }}
87+
restore-keys: |
88+
poetry-${{ runner.os }}-py${{ matrix.python-version }}-
89+
90+
- name: Install dependencies
91+
run: poetry install --no-interaction
92+
93+
- name: Run tests with coverage
94+
env:
95+
REDIS_URL: redis://localhost:6379
96+
run: |
97+
poetry run pytest --cov=bizy --cov-report=term-missing --cov-report=xml
98+
99+
- name: Upload coverage to Codecov
100+
uses: codecov/codecov-action@v3
101+
with:
102+
file: ./coverage.xml
103+
flags: unittests
104+
name: codecov-umbrella
105+
fail_ci_if_error: false
106+
107+
security:
108+
runs-on: ubuntu-latest
109+
steps:
110+
- uses: actions/checkout@v4
111+
112+
- name: Set up Python
113+
uses: actions/setup-python@v5
114+
with:
115+
python-version: '3.12'
116+
117+
- name: Install Poetry
118+
uses: snok/install-poetry@v1
119+
120+
- name: Install dependencies
121+
run: poetry install --no-interaction
122+
123+
- name: Run bandit
124+
run: poetry run bandit -r bizy -f json -o bandit-report.json
125+
126+
- name: Upload bandit report
127+
uses: actions/upload-artifact@v4
128+
with:
129+
name: bandit-report
130+
path: bandit-report.json

.github/workflows/deploy-docs.yml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
paths:
8+
- 'website/**'
9+
workflow_dispatch:
10+
11+
permissions:
12+
contents: read
13+
pages: write
14+
id-token: write
15+
16+
concurrency:
17+
group: "pages"
18+
cancel-in-progress: false
19+
20+
jobs:
21+
build:
22+
runs-on: ubuntu-latest
23+
steps:
24+
- name: Checkout
25+
uses: actions/checkout@v4
26+
27+
- name: Setup Node.js
28+
uses: actions/setup-node@v4
29+
with:
30+
node-version: '18'
31+
cache: 'npm'
32+
cache-dependency-path: website/package-lock.json
33+
34+
- name: Install dependencies
35+
working-directory: ./website
36+
run: npm ci
37+
38+
- name: Build website
39+
working-directory: ./website
40+
run: npm run build
41+
42+
- name: Setup Pages
43+
uses: actions/configure-pages@v4
44+
45+
- name: Upload artifact
46+
uses: actions/upload-pages-artifact@v3
47+
with:
48+
path: './website/build'
49+
50+
deploy:
51+
environment:
52+
name: github-pages
53+
url: ${{ steps.deployment.outputs.page_url }}
54+
runs-on: ubuntu-latest
55+
needs: build
56+
steps:
57+
- name: Deploy to GitHub Pages
58+
id: deployment
59+
uses: actions/deploy-pages@v4

.github/workflows/publish-pypi.yml

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
name: Publish to PyPI
2+
3+
on:
4+
release:
5+
types: [published]
6+
workflow_dispatch:
7+
inputs:
8+
test_pypi:
9+
description: 'Publish to Test PyPI'
10+
required: false
11+
default: 'true'
12+
type: boolean
13+
14+
jobs:
15+
build:
16+
runs-on: ubuntu-latest
17+
steps:
18+
- name: Checkout code
19+
uses: actions/checkout@v4
20+
21+
- name: Set up Python
22+
uses: actions/setup-python@v5
23+
with:
24+
python-version: '3.12'
25+
26+
- name: Install Poetry
27+
uses: snok/install-poetry@v1
28+
with:
29+
version: latest
30+
virtualenvs-create: true
31+
virtualenvs-in-project: true
32+
33+
- name: Cache Poetry dependencies
34+
uses: actions/cache@v3
35+
with:
36+
path: .venv
37+
key: poetry-${{ runner.os }}-${{ hashFiles('poetry.lock') }}
38+
restore-keys: |
39+
poetry-${{ runner.os }}-
40+
41+
- name: Install dependencies
42+
run: poetry install --no-interaction --no-root
43+
44+
- name: Install package
45+
run: poetry install --no-interaction
46+
47+
- name: Run tests
48+
run: poetry run pytest
49+
50+
- name: Build package
51+
run: poetry build
52+
53+
- name: Upload artifacts
54+
uses: actions/upload-artifact@v4
55+
with:
56+
name: python-package-distributions
57+
path: dist/
58+
59+
publish-test-pypi:
60+
if: github.event_name == 'workflow_dispatch' && github.event.inputs.test_pypi == 'true'
61+
needs: build
62+
runs-on: ubuntu-latest
63+
environment:
64+
name: test-pypi
65+
url: https://test.pypi.org/project/bizy
66+
permissions:
67+
id-token: write
68+
steps:
69+
- name: Download artifacts
70+
uses: actions/download-artifact@v4
71+
with:
72+
name: python-package-distributions
73+
path: dist/
74+
75+
- name: Publish to Test PyPI
76+
uses: pypa/gh-action-pypi-publish@release/v1
77+
with:
78+
repository-url: https://test.pypi.org/legacy/
79+
skip-existing: true
80+
81+
publish-pypi:
82+
if: github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.test_pypi == 'false')
83+
needs: build
84+
runs-on: ubuntu-latest
85+
environment:
86+
name: pypi
87+
url: https://pypi.org/project/bizy
88+
permissions:
89+
id-token: write
90+
steps:
91+
- name: Download artifacts
92+
uses: actions/download-artifact@v4
93+
with:
94+
name: python-package-distributions
95+
path: dist/
96+
97+
- name: Publish to PyPI
98+
uses: pypa/gh-action-pypi-publish@release/v1

0 commit comments

Comments
 (0)