feat(toolbox): update Docker configuration and documentation

- Update ToolboxStack/output/toolbox-base/Dockerfile with latest container configurations
- Update ToolboxStack/output/toolbox-base/PROMPT with enhanced AI collaboration instructions
- Update ToolboxStack/output/toolbox-base/README.md with current documentation
- Add ToolboxStack/collab/tool-additions/ directory for additional tool configurations
- Update CloudronStack/output/master-control-script.sh with improved automation logic

These changes enhance the developer workspace configuration and
improve automation workflows across the project.
This commit is contained in:
2025-10-30 08:16:06 -05:00
parent 77e10af05c
commit dd474374d4
5 changed files with 95 additions and 8 deletions

View File

@@ -5,6 +5,8 @@
# It runs three packaging projects in parallel and maintains status tracking
set -e # Exit on any error
set -u # Exit on undefined variables
set -o pipefail # Exit on pipe failures
# Configuration
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
@@ -15,6 +17,7 @@ STATUS_FILE="$SCRIPT_DIR/collab/STATUS.md"
GIT_URL_LIST="$SCRIPT_DIR/collab/GitUrlList.txt"
HUMAN_HELP_DIR="$WORKSPACES_DIR/human-help-required"
MAX_RETRIES=5
LOG_FILE="$WORKSPACES_DIR/packaging.log"
# Docker image prefix
DOCKER_PREFIX="tsysdevstack-cloudron-buildtest-"
@@ -25,6 +28,46 @@ source "$SCRIPT_DIR/package-functions.sh"
# Create necessary directories
mkdir -p "$ARTIFACTS_DIR" "$WORKSPACES_DIR" "$HUMAN_HELP_DIR"
# Function to log messages
log_message() {
local level=$1
local message=$2
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$timestamp] [$level] $message" >> "$LOG_FILE"
}
# Function to perform audit of the packaging process
perform_audit() {
log_message "INFO" "Starting audit process"
# Count total, completed, failed, and in-progress applications
local total_count=$(grep -c "https://" "$GIT_URL_LIST" || echo 0)
local completed_count=$(grep -c "✅ COMPLETE" "$STATUS_FILE" || echo 0)
local failed_count=$(grep -c "🛑 FAILED" "$STATUS_FILE" || echo 0)
local in_progress_count=$(grep -c "🔄 IN PROGRESS" "$STATUS_FILE" || echo 0)
local pending_count=$((total_count - completed_count - failed_count - in_progress_count))
log_message "INFO" "Audit Summary - Total: $total_count, Completed: $completed_count, Failed: $failed_count, In Progress: $in_progress_count, Pending: $pending_count"
# Check for artifacts directory health
local artifact_count=$(find "$ARTIFACTS_DIR" -mindepth 1 -maxdepth 1 -type d | wc -l)
log_message "INFO" "Found $artifact_count artifact directories in $ARTIFACTS_DIR"
# Check for workspace directory health
local workspace_count=$(find "$WORKSPACES_DIR" -mindepth 1 -maxdepth 1 -type d | grep -v "human-help-required\|packaging.log" | wc -l)
log_message "INFO" "Found $workspace_count workspace directories in $WORKSPACES_DIR"
# Check for human help requests
local help_requests=$(find "$HUMAN_HELP_DIR" -mindepth 1 -maxdepth 1 -name "STATUS-HumanHelp-*" | wc -l)
log_message "INFO" "Found $help_requests human help requests in $HUMAN_HELP_DIR"
# Verify Docker images
local docker_images=$(docker images --format "table {{.Repository}}:{{.Tag}}" | grep "$DOCKER_PREFIX" | wc -l)
log_message "INFO" "Found $docker_images Docker images with prefix $DOCKER_PREFIX"
log_message "INFO" "Audit process completed"
}
# Function to update status in STATUS.md
update_status() {
local app_name=$1
@@ -76,7 +119,6 @@ run_packaging_script() {
local username_repo=$(get_username_repo "$url")
local workspace_dir="$WORKSPACES_DIR/$repo_name"
local artifact_dir="$ARTIFACTS_DIR/$repo_name"
local packaging_script="$WORKSPACES_DIR/packaging-$repo_name.sh"
echo "$(date): Starting packaging for $repo_name ($url)" >> "$WORKSPACES_DIR/packaging.log"
@@ -89,11 +131,25 @@ run_packaging_script() {
# Clone repository
if [ ! -d "$workspace_dir/repo" ] || [ -z "$(ls -A "$workspace_dir/repo")" ]; then
echo "Cloning $url to $workspace_dir/repo"
git clone "$url" "$workspace_dir/repo"
if ! git clone "$url" "$workspace_dir/repo"; then
echo "$(date): Failed to clone $url" >> "$WORKSPACES_DIR/packaging.log"
update_status "$repo_name" "🛑 FAILED" "Failed to clone repository"
return 1
fi
else
# Update repository
echo "Updating $url in $workspace_dir/repo"
(cd "$workspace_dir/repo" && git fetch && git reset --hard origin/main 2>/dev/null || git reset --hard origin/master 2>/dev/null || git pull)
if ! (cd "$workspace_dir/repo" && git fetch && git reset --hard origin/main 2>/dev/null || git reset --hard origin/master 2>/dev/null || git pull); then
echo "$(date): Failed to update $url" >> "$WORKSPACES_DIR/packaging.log"
update_status "$repo_name" "🔄 IN PROGRESS" "Repo update failed, will retry with fresh clone"
# Remove the repo and try to clone again
rm -rf "$workspace_dir/repo"
if ! git clone "$url" "$workspace_dir/repo"; then
echo "$(date): Failed to re-clone $url after update failure" >> "$WORKSPACES_DIR/packaging.log"
update_status "$repo_name" "🛑 FAILED" "Failed to update or re-clone repository"
return 1
fi
fi
fi
# Attempt packaging with retries
@@ -103,21 +159,31 @@ run_packaging_script() {
while [ $attempt -le $MAX_RETRIES ] && [ $success -eq 0 ]; do
echo "$(date): Attempt $attempt/$MAX_RETRIES for $repo_name" >> "$WORKSPACES_DIR/packaging.log"
# Run the packaging process (this would call the specific packaging function)
if package_application "$repo_name" "$username_repo" "$workspace_dir" "$artifact_dir"; then
# Capture the output and error of the packaging function
if package_application "$repo_name" "$username_repo" "$workspace_dir" "$artifact_dir" 2>"$workspace_dir/error.log"; then
success=1
update_status "$repo_name" "✅ COMPLETE" "Packaged successfully on attempt $attempt"
echo "$(date): Successfully packaged $repo_name on attempt $attempt" >> "$WORKSPACES_DIR/packaging.log"
else
echo "$(date): Failed to package $repo_name on attempt $attempt" >> "$WORKSPACES_DIR/packaging.log"
cat "$workspace_dir/error.log" >> "$WORKSPACES_DIR/packaging.log"
((attempt++))
fi
done
if [ $success -eq 0 ]; then
# Mark as failed and create human help request
update_status "$repo_name" "🛑 FAILED" "Failed after $MAX_RETRIES attempts"
touch "$HUMAN_HELP_DIR/STATUS-HumanHelp-$repo_name"
# Mark as failed and create human help request with more detailed information
local error_details=$(cat "$workspace_dir/error.log" | head -20 | sed 's/"/\\"/g' | tr '\n' ' ')
update_status "$repo_name" "🛑 FAILED" "Failed after $MAX_RETRIES attempts. Error: $error_details"
# Create a detailed human help file
cat > "$HUMAN_HELP_DIR/STATUS-HumanHelp-$repo_name" << EOF
Application: $repo_name
URL: $url
Issue: Failed to package after $MAX_RETRIES attempts
Date: $(date)
Error Details:
$(cat "$workspace_dir/error.log")
EOF
echo "$(date): Marked $repo_name for human help after $MAX_RETRIES failed attempts" >> "$WORKSPACES_DIR/packaging.log"
fi
}