feat(execution): Add Docker Hub image support and comprehensive documentation

- Updated ImageRegistry to use public Docker Hub (anthonyrawlins namespace)
- Modified image naming: chorus-base, chorus-rust-dev, chorus-go-dev, etc.
- Added Docker Hub URLs and actual image sizes to metadata
- Created comprehensive TaskExecutionEngine.md documentation covering:
  * Complete architecture and implementation details
  * Security isolation layers and threat mitigation
  * Performance characteristics and benchmarks
  * Real-world examples with resource usage metrics
  * Troubleshooting guide and FAQ
  * Comparisons with alternative approaches (SSH, VMs, native)

Images now publicly available at docker.io/anthonyrawlins/chorus-*

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
anthonyrawlins
2025-09-30 13:26:31 +10:00
parent 7469b9c4c1
commit e8d95b3655
2 changed files with 1715 additions and 32 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ import (
const ( const (
// ImageRegistry is the default registry for CHORUS development images // ImageRegistry is the default registry for CHORUS development images
ImageRegistry = "registry.home.deepblack.cloud/chorus" ImageRegistry = "anthonyrawlins"
// ImageVersion is the default version tag to use // ImageVersion is the default version tag to use
ImageVersion = "latest" ImageVersion = "latest"
@@ -44,21 +44,21 @@ func NewImageSelectorWithConfig(registry, version string) *ImageSelector {
// SelectImage returns the appropriate image name for a given language // SelectImage returns the appropriate image name for a given language
func (s *ImageSelector) SelectImage(language string) string { func (s *ImageSelector) SelectImage(language string) string {
imageMap := map[string]string{ imageMap := map[string]string{
"rust": "rust-dev", "rust": "chorus-rust-dev",
"go": "go-dev", "go": "chorus-go-dev",
"golang": "go-dev", "golang": "chorus-go-dev",
"python": "python-dev", "python": "chorus-python-dev",
"py": "python-dev", "py": "chorus-python-dev",
"javascript": "node-dev", "javascript": "chorus-node-dev",
"js": "node-dev", "js": "chorus-node-dev",
"typescript": "node-dev", "typescript": "chorus-node-dev",
"ts": "node-dev", "ts": "chorus-node-dev",
"node": "node-dev", "node": "chorus-node-dev",
"nodejs": "node-dev", "nodejs": "chorus-node-dev",
"java": "java-dev", "java": "chorus-java-dev",
"cpp": "cpp-dev", "cpp": "chorus-cpp-dev",
"c++": "cpp-dev", "c++": "chorus-cpp-dev",
"c": "cpp-dev", "c": "chorus-cpp-dev",
} }
normalizedLang := strings.ToLower(strings.TrimSpace(language)) normalizedLang := strings.ToLower(strings.TrimSpace(language))
@@ -68,7 +68,7 @@ func (s *ImageSelector) SelectImage(language string) string {
} }
// Default to base image if language not recognized // Default to base image if language not recognized
return fmt.Sprintf("%s/base:%s", s.registry, s.version) return fmt.Sprintf("%s/chorus-base:%s", s.registry, s.version)
} }
// DetectLanguage analyzes task context to determine primary programming language // DetectLanguage analyzes task context to determine primary programming language
@@ -202,7 +202,7 @@ func extractLanguageFromModel(modelName string) string {
// GetAvailableImages returns a list of all available development images // GetAvailableImages returns a list of all available development images
func (s *ImageSelector) GetAvailableImages() []string { func (s *ImageSelector) GetAvailableImages() []string {
images := []string{"base", "rust-dev", "go-dev", "python-dev", "node-dev", "java-dev", "cpp-dev"} images := []string{"chorus-base", "chorus-rust-dev", "chorus-go-dev", "chorus-python-dev", "chorus-node-dev", "chorus-java-dev", "chorus-cpp-dev"}
result := make([]string, len(images)) result := make([]string, len(images))
for i, img := range images { for i, img := range images {
@@ -215,40 +215,47 @@ func (s *ImageSelector) GetAvailableImages() []string {
// GetImageInfo returns metadata about a specific image // GetImageInfo returns metadata about a specific image
func (s *ImageSelector) GetImageInfo(imageName string) map[string]string { func (s *ImageSelector) GetImageInfo(imageName string) map[string]string {
infoMap := map[string]map[string]string{ infoMap := map[string]map[string]string{
"base": { "chorus-base": {
"description": "Base Debian development environment with common tools", "description": "Base Debian development environment with common tools",
"size": "~200MB", "size": "~643MB",
"tools": "git, curl, build-essential, vim, jq", "tools": "git, curl, build-essential, vim, jq",
"registry": "docker.io/anthonyrawlins/chorus-base",
}, },
"rust-dev": { "chorus-rust-dev": {
"description": "Rust development environment with cargo and tooling", "description": "Rust development environment with cargo and tooling",
"size": "~1.2GB", "size": "~2.42GB",
"tools": "rustc, cargo, clippy, rustfmt, ripgrep, fd-find", "tools": "rustc, cargo, clippy, rustfmt, ripgrep, fd-find",
"registry": "docker.io/anthonyrawlins/chorus-rust-dev",
}, },
"go-dev": { "chorus-go-dev": {
"description": "Go development environment with standard tooling", "description": "Go development environment with standard tooling",
"size": "~600MB", "size": "~1GB",
"tools": "go1.22, gopls, delve, staticcheck, golangci-lint", "tools": "go1.22, gopls, delve, staticcheck, golangci-lint",
"registry": "docker.io/anthonyrawlins/chorus-go-dev",
}, },
"python-dev": { "chorus-python-dev": {
"description": "Python development environment with modern tooling", "description": "Python development environment with modern tooling",
"size": "~800MB", "size": "~1.07GB",
"tools": "python3.11, uv, ruff, black, pytest, mypy", "tools": "python3.11, uv, ruff, black, pytest, mypy",
"registry": "docker.io/anthonyrawlins/chorus-python-dev",
}, },
"node-dev": { "chorus-node-dev": {
"description": "Node.js development environment with package managers", "description": "Node.js development environment with package managers",
"size": "~700MB", "size": "~982MB",
"tools": "node20, pnpm, yarn, typescript, eslint, prettier", "tools": "node20, pnpm, yarn, typescript, eslint, prettier",
"registry": "docker.io/anthonyrawlins/chorus-node-dev",
}, },
"java-dev": { "chorus-java-dev": {
"description": "Java development environment with build tools", "description": "Java development environment with build tools",
"size": "~1.5GB", "size": "~1.3GB",
"tools": "openjdk-17, maven, gradle", "tools": "openjdk-17, maven, gradle",
"registry": "docker.io/anthonyrawlins/chorus-java-dev",
}, },
"cpp-dev": { "chorus-cpp-dev": {
"description": "C/C++ development environment with compilers and tools", "description": "C/C++ development environment with compilers and tools",
"size": "~900MB", "size": "~1.63GB",
"tools": "gcc, g++, clang, cmake, ninja, gdb, valgrind", "tools": "gcc, g++, clang, cmake, ninja, gdb, valgrind",
"registry": "docker.io/anthonyrawlins/chorus-cpp-dev",
}, },
} }