Skip to content

chore(installer): bundle installer & submodule fixes#3

Open
davidraehles wants to merge 6 commits intomainfrom
feature/installer-fixes-202512011527
Open

chore(installer): bundle installer & submodule fixes#3
davidraehles wants to merge 6 commits intomainfrom
feature/installer-fixes-202512011527

Conversation

@davidraehles
Copy link
Copy Markdown
Collaborator

This PR bundles local installer fixes (HTTPS submodules and docker compose usage) and related artifacts so we can review and merge.

It also prepares for merging the feature branches and into this branch for testing.

google-labs-jules bot and others added 3 commits November 29, 2025 11:16
- Added support for `--no-vkb`, `--no-constraints`, `--no-transcript`, `--no-logging`, and `--no-health` flags in `bin/coding`
- Updated `scripts/launch-claude.sh` and `scripts/launch-copilot.sh` to forward service arguments
- Modified `scripts/start-services-robust.js` to conditionally start services based on CLI flags
- Default behavior remains unchanged (all services start by default)
- Implements a 'Board of Directors' workflow with 5 distinct AI personas (Pragmatist, Architect, Security Officer, Performance Zealot, User Advocate).
- Adds `bin/coding board` command to trigger the consensus process.
- Implements `BoardMeeting` class for orchestration (Proposal -> Anonymization -> Voting -> Tally).
- Adds `LLMClient` for lightweight API interaction (Anthropic/OpenAI).
- Adds unit tests for the voting logic.
Copilot AI review requested due to automatic review settings December 1, 2025 14:40
* origin/feat/board-of-directors:
  feat: add Board of Directors consensus mechanism
  feat: add CLI options to configure service startup
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates installer improvements focusing on HTTPS submodule configuration and modern Docker Compose syntax updates, along with deployment metadata updates and removal of deprecated ukb command references.

Key Changes:

  • Converts Git submodules from SSH to HTTPS URLs for broader accessibility
  • Updates Docker command from docker-compose to docker compose (modern syntax)
  • Removes deprecated ukb command references from cleanup scripts

Reviewed changes

Copilot reviewed 17 out of 19 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
.gitmodules Converts submodule URLs from SSH (git@github.com:) to HTTPS (https://github.com/) for improved accessibility
scripts/start-services-robust.js Updates to modern docker compose command syntax (removing hyphen from docker-compose)
scripts/cleanup-aliases.sh Removes cleanup of deprecated ukb aliases and functions, keeping only vkb and claude-mcp
.activate Updates paths and removes ukb command reference (note: contains user-specific paths)
enhanced-lsl-deployment-report.md Updates deployment ID and timestamp to lsl-20251201-123841
.lsl/config.json Updates deployment metadata with new timestamp
integrations/browser-access/package-lock.json Adds "peer": true flag to dependencies (@playwright/test, express, zod)
uninstall.sh.backup-20251201-123841 Backup file of uninstall script (note: should be excluded from version control)
Files not reviewed (1)
  • integrations/browser-access/package-lock.json: Language not supported
Comments suppressed due to low confidence (1)

scripts/start-services-robust.js:222

  • Inconsistent indentation: the return statement has extra indentation (8 spaces) compared to the surrounding code at the same block level (6 spaces). This should be:
      return {
        service: 'constraint-monitor-docker',

Instead of:

        return {
        service: 'constraint-monitor-docker',

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review for a chance to win a $100 gift card. Take the survey.

Comment thread uninstall.sh.backup-20251201-123841 Outdated
Comment on lines +1 to +279
#!/bin/bash
# Coding Tools System - Uninstall Script
# Removes installations but preserves data

set -euo pipefail

# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

CODING_REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

echo -e "${YELLOW}🗑️ Coding Tools System - Uninstaller${NC}"
echo -e "${YELLOW}=========================================${NC}"
echo ""
echo -e "${RED}⚠️ WARNING: This will remove installed components${NC}"
echo -e "${GREEN}✅ Your knowledge data (.data/knowledge-graph/ and .data/knowledge-export/) will be preserved${NC}"
echo ""
read -p "Continue with uninstall? (y/N) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "Uninstall cancelled."
exit 0
fi

echo -e "\n${BLUE}🔧 Removing shell configuration...${NC}"
# Remove from common shell configs
for rc_file in "$HOME/.bashrc" "$HOME/.zshrc" "$HOME/.bash_profile"; do
if [[ -f "$rc_file" ]]; then
# Remove old Claude Knowledge Management System entries
sed -i '/# Claude Knowledge Management System/,+3d' "$rc_file" 2>/dev/null || true
# Remove new Coding Tools entries
sed -i '/# Coding Tools - Start/,/# Coding Tools - End/d' "$rc_file" 2>/dev/null || true
# Remove any CODING_TOOLS_PATH or CODING_REPO entries
sed -i '/CODING_TOOLS_PATH/d' "$rc_file" 2>/dev/null || true
sed -i '/CODING_REPO/d' "$rc_file" 2>/dev/null || true
# Remove team configuration
sed -i '/# Coding Tools - Team Configuration/,+1d' "$rc_file" 2>/dev/null || true
sed -i '/CODING_TEAM/d' "$rc_file" 2>/dev/null || true
# Remove any PATH additions for coding tools
sed -i '/knowledge-management.*coding/d' "$rc_file" 2>/dev/null || true
echo " Cleaned $rc_file"
fi
done

echo -e "\n${BLUE}🗑️ Removing installed components...${NC}"
# Remove bin directory
if [[ -d "$CODING_REPO/bin" ]]; then
rm -rf "$CODING_REPO/bin"
echo " Removed bin directory"
fi

# Clean memory-visualizer (git submodule - preserve source)
if [[ -d "$CODING_REPO/integrations/memory-visualizer" ]]; then
echo " Cleaning memory-visualizer (git submodule)..."
rm -rf "$CODING_REPO/integrations/memory-visualizer/node_modules"
rm -rf "$CODING_REPO/integrations/memory-visualizer/dist"
echo " Removed build artifacts (source code preserved)"
fi

# Clean mcp-server-browserbase (git submodule - preserve source)
if [[ -d "$CODING_REPO/integrations/mcp-server-browserbase" ]]; then
echo " Cleaning mcp-server-browserbase (git submodule)..."
rm -rf "$CODING_REPO/integrations/mcp-server-browserbase/node_modules"
rm -rf "$CODING_REPO/integrations/mcp-server-browserbase/dist"
echo " Removed build artifacts (source code preserved)"
fi

# Clean semantic analysis MCP server (git submodule - preserve source)
if [[ -d "$CODING_REPO/integrations/mcp-server-semantic-analysis" ]]; then
echo " Cleaning semantic analysis MCP server (git submodule)..."

# Remove node_modules
if [[ -d "$CODING_REPO/integrations/mcp-server-semantic-analysis/node_modules" ]]; then
rm -rf "$CODING_REPO/integrations/mcp-server-semantic-analysis/node_modules"
echo " Removed Node.js dependencies"
fi

# Remove built dist directory
if [[ -d "$CODING_REPO/integrations/mcp-server-semantic-analysis/dist" ]]; then
rm -rf "$CODING_REPO/integrations/mcp-server-semantic-analysis/dist"
echo " Removed built TypeScript files"
fi

# Remove logs directory
if [[ -d "$CODING_REPO/integrations/mcp-server-semantic-analysis/logs" ]]; then
rm -rf "$CODING_REPO/integrations/mcp-server-semantic-analysis/logs"
echo " Removed semantic analysis logs"
fi

echo " Git submodule source code preserved"
fi

# Clean Serena MCP server (git submodule - preserve source)
if [[ -d "$CODING_REPO/integrations/serena" ]]; then
echo " Cleaning Serena MCP server (git submodule)..."

# Remove .venv directory (uv virtual environment)
if [[ -d "$CODING_REPO/integrations/serena/.venv" ]]; then
rm -rf "$CODING_REPO/integrations/serena/.venv"
echo " Removed Python virtual environment"
fi

# Remove __pycache__ directories
find "$CODING_REPO/integrations/serena" -name "__pycache__" -type d -exec rm -rf {} + 2>/dev/null || true
echo " Removed Python cache files"

# Remove .pyc files
find "$CODING_REPO/integrations/serena" -name "*.pyc" -type f -exec rm -f {} + 2>/dev/null || true

# Remove uv.lock file
if [[ -f "$CODING_REPO/integrations/serena/uv.lock" ]]; then
rm -f "$CODING_REPO/integrations/serena/uv.lock"
echo " Removed uv lock file"
fi

echo " Git submodule source code preserved"
fi

# Clean up node_modules in MCP servers (non-submodules)
for dir in "integrations/browser-access"; do
if [[ -d "$CODING_REPO/$dir/node_modules" ]]; then
rm -rf "$CODING_REPO/$dir/node_modules"
echo " Removed $dir/node_modules"
fi
if [[ -d "$CODING_REPO/$dir/dist" ]]; then
rm -rf "$CODING_REPO/$dir/dist"
echo " Removed $dir/dist"
fi
done

# Note: memory-visualizer and mcp-server-semantic-analysis are git submodules
# and have already been cleaned above

# Remove .coding-tools directory
if [[ -d "$HOME/.coding-tools" ]]; then
rm -rf "$HOME/.coding-tools"
echo " Removed ~/.coding-tools"
fi

# Remove logs
rm -f "$CODING_REPO/install.log" 2>/dev/null || true
# ukb removed - no temp logs to clean
rm -f /tmp/vkb-server.* 2>/dev/null || true

# Remove MCP configuration files
echo -e "\n${BLUE}🔧 Removing MCP configuration files...${NC}"
rm -f "$CODING_REPO/claude-code-mcp-processed.json" 2>/dev/null || true

# Remove user-level MCP configuration (optional - ask user)
echo ""
read -p "Remove user-level MCP configuration? This affects all projects using Claude Code. (y/N) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
USER_MCP_CONFIG="$HOME/.config/claude-code-mcp.json"
if [[ -f "$USER_MCP_CONFIG" ]]; then
rm -f "$USER_MCP_CONFIG"
echo " Removed user-level MCP configuration"
fi

# Remove from Claude app directory
if [[ "$OSTYPE" == "darwin"* ]]; then
CLAUDE_CONFIG_DIR="$HOME/Library/Application Support/Claude"
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
CLAUDE_CONFIG_DIR="$HOME/.config/Claude"
elif [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]]; then
CLAUDE_CONFIG_DIR="${APPDATA:-$HOME/AppData/Roaming}/Claude"
fi

if [[ -n "$CLAUDE_CONFIG_DIR" ]] && [[ -f "$CLAUDE_CONFIG_DIR/claude-code-mcp.json" ]]; then
rm -f "$CLAUDE_CONFIG_DIR/claude-code-mcp.json"
echo " Removed Claude app MCP configuration"
fi
else
echo " Keeping user-level MCP configuration"
fi

# Remove constraint monitor and LSL hooks
echo -e "\n${BLUE}🔗 Removing Hooks (Constraints + LSL)...${NC}"
SETTINGS_FILE="$HOME/.claude/settings.json"

if [[ ! -f "$SETTINGS_FILE" ]]; then
echo " No settings file found - hooks already removed"
else
# Check if jq is available
if ! command -v jq >/dev/null 2>&1; then
echo -e "${YELLOW} ⚠️ jq not found - cannot automatically remove hooks${NC}"
echo " Please manually edit: $SETTINGS_FILE"
echo " Remove PreToolUse hooks containing 'pre-tool-hook-wrapper.js'"
echo " Remove PostToolUse hooks containing 'tool-interaction-hook-wrapper.js'"
else
# Backup settings file
BACKUP_FILE="${SETTINGS_FILE}.backup.$(date +%Y%m%d_%H%M%S)"
cp "$SETTINGS_FILE" "$BACKUP_FILE"
echo " Backed up settings to: $BACKUP_FILE"

# Remove both PreToolUse and PostToolUse hooks
TEMP_FILE=$(mktemp)
jq 'if .hooks.PreToolUse then
.hooks.PreToolUse = [
.hooks.PreToolUse[] |
select(.hooks[]?.command | contains("pre-tool-hook-wrapper.js") | not)
]
else . end |
if .hooks.PreToolUse == [] then
del(.hooks.PreToolUse)
else . end |
if .hooks.PostToolUse then
.hooks.PostToolUse = [
.hooks.PostToolUse[] |
select(.hooks[]?.command | contains("tool-interaction-hook-wrapper.js") | not)
]
else . end |
if .hooks.PostToolUse == [] then
del(.hooks.PostToolUse)
else . end' "$SETTINGS_FILE" > "$TEMP_FILE"

# Validate and apply
if jq empty "$TEMP_FILE" 2>/dev/null; then
mv "$TEMP_FILE" "$SETTINGS_FILE"
echo " ✅ Removed PreToolUse and PostToolUse hooks from settings"
else
rm -f "$TEMP_FILE"
echo -e "${RED} ❌ Failed to update settings - JSON validation failed${NC}"
echo " Original settings preserved in: $BACKUP_FILE"
fi
fi
fi

echo -e "\n${BLUE}🗑️ Removing knowledge databases...${NC}"
# Remove .data directory with database files (optional - ask user)
if [[ -d "$CODING_REPO/.data" ]]; then
echo ""
read -p "Remove .data directory (contains SQLite knowledge database)? This will delete all learning history. (y/N) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
rm -rf "$CODING_REPO/.data"
echo " Removed .data directory"
else
echo -e "${GREEN} Kept .data directory with knowledge database${NC}"
fi
fi

# Inform about Qdrant collections
echo -e "\n${YELLOW}ℹ️ Note about Qdrant collections:${NC}"
echo " If you were using Qdrant for vector search, you may want to remove collections:"
echo " docker exec qdrant-container /bin/sh -c \"rm -rf /qdrant/storage/collections/knowledge_*\""
echo " Or stop the Qdrant container:"
echo " docker stop qdrant-container"

echo -e "\n${GREEN}✅ Uninstall completed!${NC}"
echo -e "${GREEN}📊 Your knowledge data preservation status:${NC}"

# Check for GraphDB and knowledge exports
if [[ -d "$CODING_REPO/.data/knowledge-graph" ]]; then
echo " $CODING_REPO/.data/knowledge-graph/ - PRESERVED (GraphDB)"
fi

if [[ -d "$CODING_REPO/.data/knowledge-export" ]]; then
EXPORT_FILES=$(find "$CODING_REPO/.data/knowledge-export" -name "*.json" 2>/dev/null || true)
if [[ -n "$EXPORT_FILES" ]]; then
echo -e "${GREEN}📊 Knowledge export files preserved:${NC}"
echo "$EXPORT_FILES" | while read -r file; do
[[ -n "$file" ]] && echo " $(basename "$file")"
done
fi
fi

if [[ -d "$CODING_REPO/.data" ]]; then
echo -e "${GREEN}📊 Knowledge database preserved:${NC}"
echo " $CODING_REPO/.data/knowledge.db (SQLite database with learning history)"
fi

echo ""
echo "To reinstall, run: ./install.sh"
echo "Your team configuration will need to be set up again during installation." No newline at end of file
Copy link

Copilot AI Dec 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The backup file uninstall.sh.backup-20251201-123841 is listed in .gitignore via the *.backup pattern (line 24) but is still being tracked. Backup files should not be committed to version control as they clutter the repository.

To fix this, remove the file from git tracking:

git rm --cached uninstall.sh.backup-20251201-123841

The .gitignore pattern will then prevent future backup files from being committed.

Copilot uses AI. Check for mistakes.
Comment thread .activate Outdated
Comment on lines +3 to +4
export CODING_REPO="/home/q494415/workspace/agentic-coding-framework"
export PATH="/home/q494415/workspace/agentic-coding-framework/bin:$PATH"
Copy link

Copilot AI Dec 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The .activate file is listed in .gitignore (line 64) but is still being tracked in the repository. This file contains user-specific paths (/home/q494415/workspace/agentic-coding-framework) that should not be committed.

To fix this, the file should be removed from git tracking:

git rm --cached .activate

This will remove it from the repository while keeping the local file. Users can then create their own .activate file based on their environment.

Copilot uses AI. Check for mistakes.
@davidraehles
Copy link
Copy Markdown
Collaborator Author

Merged remote branches and into this feature branch locally and pushed the merge commits. I ran the project's robust startup (🚀 Starting Coding Services (Robust Mode)...
✨ Using robust startup mode with retry logic and graceful degradation

═══════════════════════════════════════════════════════════════════════
🚀 STARTING CODING SERVICES (ROBUST MODE)
═══════════════════════════════════════════════════════════════════════

🧹 Pre-startup cleanup: Checking for dangling processes...

Found 1 dangling transcript monitor process(es)
Terminating dangling transcript monitors...
Found 1 dangling live-logging coordinator process(es)
Terminating dangling live-logging coordinators...
Cleaning up stale Process State Manager entries...
✅ PSM cleanup complete

✅ Pre-startup cleanup complete - system ready for fresh start

📋 Starting REQUIRED services (Live Logging System)...

[ServiceStarter] 🚀 Starting Transcript Monitor...
[ServiceStarter] Max retries: 3, Timeout: 20000ms, Required: true
[ServiceStarter] 📍 Attempt 1/3 for Transcript Monitor...
[TranscriptMonitor] Starting enhanced transcript monitor...
[ServiceStarter] Started with PID: 4094119
[ServiceStarter] Running health check...
[ServiceStarter] ✅ Transcript Monitor started successfully on attempt 1/3
[PSM] Registered Transcript Monitor (PID: 4094119)
[ServiceStarter] 🚀 Starting Live Logging Coordinator...
[ServiceStarter] Max retries: 3, Timeout: 20000ms, Required: true
[ServiceStarter] 📍 Attempt 1/3 for Live Logging Coordinator...
[LiveLogging] Starting live logging coordinator...
[ServiceStarter] Started with PID: 4094211
[ServiceStarter] Running health check...
[ServiceStarter] ✅ Live Logging Coordinator started successfully on attempt 1/3
[PSM] Registered Live Logging Coordinator (PID: 4094211)

🔵 Starting OPTIONAL services (graceful degradation enabled)...

[ServiceStarter] 🚀 Starting VKB Server...
[ServiceStarter] Max retries: 3, Timeout: 30000ms, Required: true
[ServiceStarter] 📍 Attempt 1/3 for VKB Server...
[VKB] Starting VKB server on port 8080...
[VKB] Already running globally - using existing instance
[ServiceStarter] Started with PID: already-running
[ServiceStarter] Running health check...
[ServiceStarter] ✅ VKB Server started successfully on attempt 1/3

[ServiceStarter] 🚀 Starting Constraint Monitor...
[ServiceStarter] Max retries: 2, Timeout: 30000ms, Required: false
[ServiceStarter] 📍 Attempt 1/2 for Constraint Monitor...
[ConstraintMonitor] Starting Docker containers...
[ConstraintMonitor] Docker containers started successfully
[ConstraintMonitor] Web services (API + Dashboard) managed by Global Service Coordinator
[ServiceStarter] Started with PID: unknown
[ServiceStarter] Running health check...
[ConstraintMonitor] Docker containers healthy
[ServiceStarter] ✅ Constraint Monitor started successfully on attempt 1/2

[ServiceStarter] 🚀 Starting Health Verifier...
[ServiceStarter] Max retries: 2, Timeout: 15000ms, Required: false
[ServiceStarter] 📍 Attempt 1/2 for Health Verifier...
[HealthVerifier] Starting health verification daemon...
[ServiceStarter] Started with PID: 4094481
[ServiceStarter] Running health check...
[ServiceStarter] ✅ Health Verifier started successfully on attempt 1/2
[PSM] Registered Health Verifier (PID: 4094481)

[ServiceStarter] 🚀 Starting StatusLine Health Monitor...
[ServiceStarter] Max retries: 2, Timeout: 15000ms, Required: false
[ServiceStarter] 📍 Attempt 1/2 for StatusLine Health Monitor...
[StatusLineHealth] Starting statusline health monitor...
[StatusLineHealth] Already running globally - skipping startup
[ServiceStarter] Started with PID: already-running
[ServiceStarter] Running health check...
[ServiceStarter] ✅ StatusLine Health Monitor started successfully on attempt 1/2

═══════════════════════════════════════════════════════════════════════
📊 SERVICES STATUS SUMMARY
═══════════════════════════════════════════════════════════════════════

✅ Successfully started: 6 services

  • Transcript Monitor
  • Live Logging Coordinator
  • VKB Server
  • Constraint Monitor
  • Health Verifier
  • StatusLine Health Monitor

[Status] Created /home/q494415/workspace/agentic-coding-framework/.services-running.json

🎉 Startup complete in FULL mode!
═══════════════════════════════════════════════════════════════════════) — all required services started and the constraint monitor reports healthy (see ). Please review and merge when ready.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants