Skip to content

Commit 8153651

Browse files
author
Tom Softreck
committed
update structure
1 parent f2241b8 commit 8153651

34 files changed

+2979
-171
lines changed

README.md

Lines changed: 453 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
"""
2+
TaskProvision - AI-Powered Development Automation Platform
3+
4+
A comprehensive platform for automating development workflows using AI,
5+
including code generation, quality assurance, and task management.
6+
"""
7+
8+
__version__ = "1.0.0"
9+
__author__ = "TaskProvision Team"
10+
__email__ = "contact@taskprovision.com"
11+
__license__ = "Apache 2.0"
12+
13+
# Core imports for public API
14+
from .core.code_generator import CodeGenerator
15+
from .core.quality_guard import QualityGuard
16+
from .core.task_manager import TaskManager
17+
from .core.ai_analyzer import AIAnalyzer
18+
19+
# Configuration
20+
from .config.settings import get_settings
21+
22+
# Main application
23+
from .main import app
24+
25+
__all__ = [
26+
"__version__",
27+
"__author__",
28+
"__email__",
29+
"__license__",
30+
"CodeGenerator",
31+
"QualityGuard",
32+
"TaskManager",
33+
"AIAnalyzer",
34+
"get_settings",
35+
"app",
36+
]
37+
38+
# Package metadata
39+
PACKAGE_INFO = {
40+
"name": "taskprovision",
41+
"version": __version__,
42+
"description": "AI-Powered Development Automation Platform",
43+
"author": __author__,
44+
"email": __email__,
45+
"license": __license__,
46+
"url": "https://github.com/taskprovision/python",
47+
"docs": "https://github.com/taskprovision/www",
48+
"source": "https://github.com/taskprovision/taskprovision",
49+
}
50+
51+
def get_package_info():
52+
"""Get package information dictionary"""
53+
return PACKAGE_INFO.copy()
54+
55+
def print_banner():
56+
"""Print TaskProvision banner"""
57+
banner = f"""
58+
╔══════════════════════════════════════════════════════════════╗
59+
║ TaskProvision ║
60+
║ AI-Powered Development Automation ║
61+
║ v{__version__}
62+
╚══════════════════════════════════════════════════════════════╝
63+
64+
🚀 From idea to production-ready code in minutes
65+
🤖 AI-powered code generation and quality assurance
66+
📊 Intelligent task management with insights
67+
🛡️ Built-in security and best practices
68+
69+
Documentation: https://github.com/taskprovision/www
70+
Support: https://github.com/taskprovision/taskprovision/issues
71+
"""
72+
print(banner)
73+
74+
# Initialize logging
75+
import logging
76+
import sys
77+
78+
logging.basicConfig(
79+
level=logging.INFO,
80+
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
81+
handlers=[
82+
logging.StreamHandler(sys.stdout)
83+
]
84+
)
85+
86+
logger = logging.getLogger(__name__)
87+
logger.info(f"TaskProvision v{__version__} initialized")

build/lib/taskprovision/api/__init__.py

Whitespace-only changes.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
"""
2+
auth.py
3+
"""
4+
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
"""
2+
billing.py
3+
"""
4+
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
"""
2+
generation.py
3+
"""
4+
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
"""
2+
projects.py
3+
"""
4+

build/lib/taskprovision/config/__init__.py

Whitespace-only changes.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
"""
2+
database.py
3+
"""
4+
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
"""
2+
TaskProvision configuration management
3+
"""
4+
5+
import os
6+
from typing import Optional, List
7+
from pydantic import BaseSettings, Field
8+
from functools import lru_cache
9+
10+
11+
class Settings(BaseSettings):
12+
"""Application settings"""
13+
14+
# App configuration
15+
app_name: str = "TaskProvision"
16+
app_version: str = "1.0.0"
17+
debug: bool = False
18+
environment: str = Field(default="development", env="ENVIRONMENT")
19+
20+
# Server configuration
21+
host: str = Field(default="0.0.0.0", env="HOST")
22+
port: int = Field(default=8000, env="PORT")
23+
workers: int = Field(default=1, env="WORKERS")
24+
25+
# Database configuration
26+
database_url: str = Field(
27+
default="postgresql://taskprovision:password@localhost/taskprovision",
28+
env="DATABASE_URL"
29+
)
30+
redis_url: str = Field(default="redis://localhost:6379/0", env="REDIS_URL")
31+
32+
# Security
33+
secret_key: str = Field(
34+
default="your-secret-key-change-in-production",
35+
env="SECRET_KEY"
36+
)
37+
algorithm: str = Field(default="HS256", env="ALGORITHM")
38+
access_token_expire_minutes: int = Field(default=30, env="ACCESS_TOKEN_EXPIRE_MINUTES")
39+
40+
# AI Services
41+
ollama_base_url: str = Field(default="http://localhost:11434", env="OLLAMA_BASE_URL")
42+
ollama_model: str = Field(default="qwen2.5:1.5b", env="OLLAMA_MODEL")
43+
openai_api_key: Optional[str] = Field(default=None, env="OPENAI_API_KEY")
44+
anthropic_api_key: Optional[str] = Field(default=None, env="ANTHROPIC_API_KEY")
45+
46+
# External Services
47+
github_token: Optional[str] = Field(default=None, env="GITHUB_TOKEN")
48+
stripe_api_key: Optional[str] = Field(default=None, env="STRIPE_API_KEY")
49+
stripe_webhook_secret: Optional[str] = Field(default=None, env="STRIPE_WEBHOOK_SECRET")
50+
51+
# Email configuration
52+
smtp_host: str = Field(default="localhost", env="SMTP_HOST")
53+
smtp_port: int = Field(default=587, env="SMTP_PORT")
54+
smtp_username: Optional[str] = Field(default=None, env="SMTP_USERNAME")
55+
smtp_password: Optional[str] = Field(default=None, env="SMTP_PASSWORD")
56+
smtp_use_tls: bool = Field(default=True, env="SMTP_USE_TLS")
57+
58+
# Monitoring
59+
sentry_dsn: Optional[str] = Field(default=None, env="SENTRY_DSN")
60+
prometheus_enabled: bool = Field(default=True, env="PROMETHEUS_ENABLED")
61+
log_level: str = Field(default="INFO", env="LOG_LEVEL")
62+
63+
# File storage
64+
upload_dir: str = Field(default="./uploads", env="UPLOAD_DIR")
65+
max_file_size: int = Field(default=10 * 1024 * 1024, env="MAX_FILE_SIZE") # 10MB
66+
allowed_file_types: List[str] = Field(
67+
default=["py", "js", "ts", "go", "rs", "java", "cpp", "c", "h"],
68+
env="ALLOWED_FILE_TYPES"
69+
)
70+
71+
# Task management
72+
default_task_timeout: int = Field(default=300, env="DEFAULT_TASK_TIMEOUT") # 5 minutes
73+
max_concurrent_tasks: int = Field(default=10, env="MAX_CONCURRENT_TASKS")
74+
75+
# Code generation
76+
code_generation_timeout: int = Field(default=60, env="CODE_GENERATION_TIMEOUT")
77+
max_code_length: int = Field(default=10000, env="MAX_CODE_LENGTH")
78+
79+
# Quality guard
80+
quality_check_enabled: bool = Field(default=True, env="QUALITY_CHECK_ENABLED")
81+
max_function_length: int = Field(default=50, env="MAX_FUNCTION_LENGTH")
82+
max_complexity: int = Field(default=10, env="MAX_COMPLEXITY")
83+
84+
# Sales automation
85+
lead_generation_enabled: bool = Field(default=True, env="LEAD_GENERATION_ENABLED")
86+
github_mining_enabled: bool = Field(default=True, env="GITHUB_MINING_ENABLED")
87+
email_campaigns_enabled: bool = Field(default=True, env="EMAIL_CAMPAIGNS_ENABLED")
88+
89+
# API rate limiting
90+
rate_limit_per_minute: int = Field(default=60, env="RATE_LIMIT_PER_MINUTE")
91+
burst_limit: int = Field(default=10, env="BURST_LIMIT")
92+
93+
# Cors settings
94+
cors_origins: List[str] = Field(
95+
default=["http://localhost:3000", "http://localhost:8000"],
96+
env="CORS_ORIGINS"
97+
)
98+
99+
class Config:
100+
env_file = ".env"
101+
env_file_encoding = "utf-8"
102+
case_sensitive = False
103+
104+
105+
@lru_cache()
106+
def get_settings() -> Settings:
107+
"""Get cached settings instance"""
108+
return Settings()
109+
110+
111+
def get_database_url() -> str:
112+
"""Get database URL for SQLAlchemy"""
113+
settings = get_settings()
114+
return settings.database_url
115+
116+
117+
def get_redis_url() -> str:
118+
"""Get Redis URL"""
119+
settings = get_settings()
120+
return settings.redis_url
121+
122+
123+
def is_production() -> bool:
124+
"""Check if running in production environment"""
125+
settings = get_settings()
126+
return settings.environment.lower() == "production"
127+
128+
129+
def is_development() -> bool:
130+
"""Check if running in development environment"""
131+
settings = get_settings()
132+
return settings.environment.lower() == "development"
133+
134+
135+
def get_upload_settings() -> dict:
136+
"""Get file upload settings"""
137+
settings = get_settings()
138+
return {
139+
"upload_dir": settings.upload_dir,
140+
"max_file_size": settings.max_file_size,
141+
"allowed_file_types": settings.allowed_file_types,
142+
}
143+
144+
145+
def get_ai_settings() -> dict:
146+
"""Get AI service settings"""
147+
settings = get_settings()
148+
return {
149+
"ollama_base_url": settings.ollama_base_url,
150+
"ollama_model": settings.ollama_model,
151+
"openai_api_key": settings.openai_api_key,
152+
"anthropic_api_key": settings.anthropic_api_key,
153+
}
154+
155+
156+
def get_quality_settings() -> dict:
157+
"""Get quality guard settings"""
158+
settings = get_settings()
159+
return {
160+
"enabled": settings.quality_check_enabled,
161+
"max_function_length": settings.max_function_length,
162+
"max_complexity": settings.max_complexity,
163+
"timeout": settings.code_generation_timeout,
164+
}

0 commit comments

Comments
 (0)