## DevLoop - Closed-Loop Development System - Orchestrator for plan → build → test → analyze cycle - Gemini planning via OpenCode CLI - Claude implementation via CLI bridge - Playwright browser testing integration - Test runner with API, filesystem, and browser tests - Persistent state in .devloop/ directory - CLI tool: tools/devloop_cli.py Usage: python tools/devloop_cli.py start 'Create new feature' python tools/devloop_cli.py plan 'Fix bug in X' python tools/devloop_cli.py test --study support_arm python tools/devloop_cli.py browser --level full ## HTML Reports (optimization_engine/reporting/) - Interactive Plotly-based reports - Convergence plot, Pareto front, parallel coordinates - Parameter importance analysis - Self-contained HTML (offline-capable) - Tailwind CSS styling ## Playwright E2E Tests - Home page tests - Test results in test-results/ ## LAC Knowledge Base Updates - Session insights (failures, workarounds, patterns) - Optimization memory for arm support study
69 lines
1.9 KiB
Python
69 lines
1.9 KiB
Python
"""
|
|
Atomizer DevLoop - Closed-Loop Development System
|
|
|
|
This module provides autonomous development cycle capabilities:
|
|
1. Gemini Pro for strategic planning and analysis
|
|
2. Claude Code (Opus 4.5) for implementation
|
|
3. Dashboard testing for verification
|
|
4. LAC integration for persistent learning
|
|
|
|
The DevLoop orchestrates the full cycle:
|
|
PLAN (Gemini) -> BUILD (Claude) -> TEST (Dashboard) -> ANALYZE (Gemini) -> FIX (Claude) -> VERIFY
|
|
|
|
Example usage:
|
|
from optimization_engine.devloop import DevLoopOrchestrator
|
|
|
|
orchestrator = DevLoopOrchestrator()
|
|
result = await orchestrator.run_development_cycle(
|
|
objective="Create support_arm optimization study"
|
|
)
|
|
"""
|
|
|
|
|
|
# Lazy imports to avoid circular dependencies
|
|
def __getattr__(name):
|
|
if name == "DevLoopOrchestrator":
|
|
from .orchestrator import DevLoopOrchestrator
|
|
|
|
return DevLoopOrchestrator
|
|
elif name == "LoopPhase":
|
|
from .orchestrator import LoopPhase
|
|
|
|
return LoopPhase
|
|
elif name == "LoopState":
|
|
from .orchestrator import LoopState
|
|
|
|
return LoopState
|
|
elif name == "DashboardTestRunner":
|
|
from .test_runner import DashboardTestRunner
|
|
|
|
return DashboardTestRunner
|
|
elif name == "TestScenario":
|
|
from .test_runner import TestScenario
|
|
|
|
return TestScenario
|
|
elif name == "GeminiPlanner":
|
|
from .planning import GeminiPlanner
|
|
|
|
return GeminiPlanner
|
|
elif name == "ProblemAnalyzer":
|
|
from .analyzer import ProblemAnalyzer
|
|
|
|
return ProblemAnalyzer
|
|
elif name == "ClaudeCodeBridge":
|
|
from .claude_bridge import ClaudeCodeBridge
|
|
|
|
return ClaudeCodeBridge
|
|
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
|
|
|
|
__all__ = [
|
|
"DevLoopOrchestrator",
|
|
"LoopPhase",
|
|
"LoopState",
|
|
"DashboardTestRunner",
|
|
"TestScenario",
|
|
"GeminiPlanner",
|
|
"ProblemAnalyzer",
|
|
]
|