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 (
// 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 = "latest"
@@ -44,21 +44,21 @@ func NewImageSelectorWithConfig(registry, version string) *ImageSelector {
// SelectImage returns the appropriate image name for a given language
func (s *ImageSelector) SelectImage(language string) string {
imageMap := map[string]string{
"rust": "rust-dev",
"go": "go-dev",
"golang": "go-dev",
"python": "python-dev",
"py": "python-dev",
"javascript": "node-dev",
"js": "node-dev",
"typescript": "node-dev",
"ts": "node-dev",
"node": "node-dev",
"nodejs": "node-dev",
"java": "java-dev",
"cpp": "cpp-dev",
"c++": "cpp-dev",
"c": "cpp-dev",
"rust": "chorus-rust-dev",
"go": "chorus-go-dev",
"golang": "chorus-go-dev",
"python": "chorus-python-dev",
"py": "chorus-python-dev",
"javascript": "chorus-node-dev",
"js": "chorus-node-dev",
"typescript": "chorus-node-dev",
"ts": "chorus-node-dev",
"node": "chorus-node-dev",
"nodejs": "chorus-node-dev",
"java": "chorus-java-dev",
"cpp": "chorus-cpp-dev",
"c++": "chorus-cpp-dev",
"c": "chorus-cpp-dev",
}
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
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
@@ -202,7 +202,7 @@ func extractLanguageFromModel(modelName string) string {
// GetAvailableImages returns a list of all available development images
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))
for i, img := range images {
@@ -215,40 +215,47 @@ func (s *ImageSelector) GetAvailableImages() []string {
// GetImageInfo returns metadata about a specific image
func (s *ImageSelector) GetImageInfo(imageName string) map[string]string {
infoMap := map[string]map[string]string{
"base": {
"chorus-base": {
"description": "Base Debian development environment with common tools",
"size": "~200MB",
"size": "~643MB",
"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",
"size": "~1.2GB",
"size": "~2.42GB",
"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",
"size": "~600MB",
"size": "~1GB",
"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",
"size": "~800MB",
"size": "~1.07GB",
"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",
"size": "~700MB",
"size": "~982MB",
"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",
"size": "~1.5GB",
"size": "~1.3GB",
"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",
"size": "~900MB",
"size": "~1.63GB",
"tools": "gcc, g++, clang, cmake, ninja, gdb, valgrind",
"registry": "docker.io/anthonyrawlins/chorus-cpp-dev",
},
}