CLAUDE.md@rabbitmq-agents/archive/v3-demo3-fixed-1 · git:20251211.7a6a589 · 2025-12-11 · sha256 e85840a1b842f32b

CLAUDE.md@rabbitmq-agents/archive/v3-demo3-fixed-1 git:20251211.7a6a589A

Immutable. This exact content is served forever at /api/v1/blob/e85840a1b842f32b.

# CLAUDE.md - System Inspector Demo v5.1.0

## FULL-AUTO INSTRUCTIONS FOR NEW CLAUDE SESSION

**Yeni bir Claude session açıldığında bu dosyayı oku ve aşağıdaki komutları çalıştır:**

### Başlatma (Task 1-5)
```bash
cd /Users/umitkacar/Documents/github-pluginagentmarketplace/claude-collective-intelligence/rabbitmq-agents/demos/demo-3-system-inspector && python3 orchestrator.py
```

### Kapatma (Task Final)
```bash
python3 orchestrator.py --task task_final --load-context
```

**Veya kısa yol:**
```bash
./run.sh           # Başlat
./run.sh shutdown  # Kapat (TODO: eklenecek)
```

---

## Bu Demo Ne Yapar?

Multi-agent terminal orchestration pipeline - Mac dual-monitor setup:

1. **Task 1 - Display Inspector:** Mac'teki tüm ekranları tespit eder
   - Ana ekran (main display) bilgilerini alır
   - Harici ekran (external display) bilgilerini alır
   - Çözünürlük, pozisyon, bağlantı türü gibi detayları toplar

2. **Task 2 - Terminal Setup:** Harici ekrana 3 terminal açar + Window ID capture
   - Harici ekran çözünürlüğünü dinamik olarak kullanır
   - 3 terminal yan yana açar (LEADER, WORKER-1, WORKER-2)
   - **KEY INNOVATION:** Her terminalin Window ID'sini yaratım anında yakalar
   - Window ID'ler değişmez - %100 güvenilir hedefleme!

3. **Task 3 - Screenshot Validator:** Doğrulama screenshot'ı alır
   - Harici ekranın ekran görüntüsünü kaydeder
   - Terminallerin doğru açıldığını doğrular

4. **Task 4 - Claude Launcher:** Her terminalde Claude Code başlatır
   - Window ID ile kesin hedefleme yapar
   - `claude --dangerously-skip-permissions` komutu çalıştırır
   - Her Claude instance için 7 saniye bekleme

5. **Task 5 - Role Prompter:** RabbitMQ rollerini atar
   - Window ID ile her terminale rol-spesifik mesaj gönderir
   - LEADER → Takım Lideri görevi
   - WORKER-1 → Agent görevi
   - WORKER-2 → Worker görevi

6. **Task Final - Safe Shutdown:** (NEW in v5.1.0)
   - `/exit` komutu gönderir (Claude Code kapatır)
   - 5 saniye bekler
   - Terminal penceresini kapatır
   - Window ID ile %100 güvenilir hedefleme

---

## Key Innovation: Window ID Tracking

### Problem
AppleScript ile 3 terminale mesaj gönderirken hangisinin hangisi olduğunu tespit edemiyorduk:
- Window index: Değişiyor (pencereler yeniden sıralandığında)
- Title-based: Claude Code terminal başlıklarını üzerine yazıyor
- X-position: Kırılgan (±50px tolerans)

### Solution: Window ID at Creation Time
```applescript
tell application "Terminal"
    do script ""
    set currentWindowID to id of window 1  -- HEMEN YAKALA!
    -- Bu ID terminal kapatılmadıkça değişmez
end tell
```

### Targeting with Window ID
```applescript
tell application "Terminal"
    set targetWindow to window id 25534  -- KESIN HEDEF!
    set frontmost of targetWindow to true
    -- keystroke message or /exit...
end tell
```

**Result:** %100 güvenilir terminal hedefleme!

---

## Pipeline Architecture

```
==========================================================================
                    SYSTEM INSPECTOR PIPELINE v5.1.0
==========================================================================

 TASK 1           TASK 2              TASK 3           TASK 4           TASK 5
 Display   -----> Terminal    -----> Screenshot -----> Claude   -----> Role
 Inspector        Setup              Validator         Launcher        Prompter
                     |
                     v
              Window ID Capture
              [25534, 25536, 25538]
                     |
                     +------------------+------------------+
                     |                  |                  |
                     v                  v                  v
                  LEADER             WORKER-1           WORKER-2
                  (25534)            (25536)            (25538)
                     |                  |                  |
                     v                  v                  v
              Takim Lideri          Agent              Worker
               gorevi               gorevi             gorevi
                     |                  |                  |
                     +------------------+------------------+
                                       |
                                       v
                                 TASK FINAL
                               Safe Shutdown
                                       |
                     +------------------+------------------+
                     |                  |                  |
                     v                  v                  v
                  /exit              /exit              /exit
                  close              close              close

==========================================================================
```

---

## Dosya Yapısı (v5.1.0)

```
demo-3-system-inspector/
│
├── 🚀 ENTRY POINTS (Giriş Noktaları)
│   ├── orchestrator.py      # ANA SCRIPT - python3 orchestrator.py
│   ├── run.sh               # Shell shortcut - ./run.sh
│   └── CLAUDE.md            # Bu dosya - Yeni session talimatları
│
├── ⚙️ CONFIGURATION (Yapılandırma)
│   └── config/
│       └── workflow.yaml    # Pipeline tanımı v5.1.0, 6 task
│
├── 🔧 TASKS (Pipeline Task'ları)
│   └── tasks/
│       ├── __init__.py              # Task exports
│       ├── base.py                  # BaseTask abstract class
│       ├── display_inspector.py     # Task 1: Ekran tespiti (v1.0.0)
│       ├── terminal_setup.py        # Task 2: Terminal + Window ID (v3.0.0)
│       ├── screenshot_validator.py  # Task 3: Screenshot (v1.0.0)
│       ├── claude_launcher.py       # Task 4: Claude başlatma (v2.0.0)
│       ├── role_prompter.py         # Task 5: Rol atama (v2.0.0)
│       └── task_final.py            # Task Final: Safe shutdown (v1.0.0) NEW!
│
├── 📜 SCRIPTS (Oluşturulan Scriptler)
│   └── scripts/
│       └── setup_terminals.scpt     # Auto-generated AppleScript
│
├── 📸 SCREENSHOTS (Doğrulama - IMMUTABLE)
│   └── screenshots/
│       ├── external_display_WORKED_2.jpg       # Task 2 doğrulama
│       ├── claude_verification_WORKED_2.jpg    # Task 4 doğrulama
│       ├── response_leader_WORKED_2.jpg        # Leader yanıtı
│       ├── response_worker-1_WORKED_2.jpg      # Agent yanıtı
│       ├── response_worker-2_WORKED_2.jpg      # Worker yanıtı
│       └── role_prompter_final_WORKED_2.jpg    # Final doğrulama
│
├── 📊 REPORTS (Raporlar - IMMUTABLE)
│   └── reports/
│       ├── pipeline_report_WORKED_2.json       # Task 1-5 raporu
│       └── shutdown_report_WORKED_2.json       # Task Final raporu
│
├── 📦 ARCHIVE (Önceki WORKED dosyaları)
│   └── archive/
│       ├── screenshots/
│       └── reports/
│
└── 📚 DOCUMENTATION (Dokümantasyon)
    ├── README.md            # Kullanım kılavuzu v5.1.0
    └── WORKFLOW.md          # Detaylı tasarım dokümanı v5.1.0
```

**Note:** `_WORKED_2` dosyaları `chflags uchg` ile immutable işaretlenmiştir.

---

## Role Assignment Messages

| Terminal | Role | Message |
|----------|------|---------|
| LEADER | Takım Lideri | "Sana Takim Lideri gorevi verecegim, RabbitMQ baglantisi yapip gorevini deklare edeceksin, hazir misin?" |
| WORKER-1 | Agent | "Sana Agent gorevi verecegim, RabbitMQ baglantisi yapip gorevini deklare edeceksin, hazir misin?" |
| WORKER-2 | Worker | "Sana Worker gorevi verecegim, RabbitMQ baglantisi yapip gorevini deklare edeceksin, hazir misin?" |

---

## Hızlı Komutlar

```bash
# Tüm pipeline'ı çalıştır (Task 1-5)
python3 orchestrator.py

# Güvenli kapatma (Task Final) - ÖNEMLİ: --load-context gerekli!
python3 orchestrator.py --task task_final --load-context

# Sadece belirli task'ı çalıştır
python3 orchestrator.py --task display_inspector
python3 orchestrator.py --task terminal_setup
python3 orchestrator.py --task screenshot_validator
python3 orchestrator.py --task claude_launcher
python3 orchestrator.py --task role_prompter

# Dry run (planı göster)
python3 orchestrator.py --dry-run

# Task listesi
python3 orchestrator.py --list
```

---

## Timing Configuration

| Parameter | Value | Purpose |
|-----------|-------|---------|
| wait_between_launches | 7s | Claude initialization |
| wait_after_all | 5s | All Claudes ready |
| wait_before_typing | 5s | Claude ready for input |
| wait_after_enter | 10s | Claude response time |
| wait_between_terminals | 7s | Context switch time |
| wait_before_exit | 2s | Before /exit command |
| wait_after_exit | 5s | Claude shutdown time |
| wait_before_close | 2s | Before terminal close |

**Total Pipeline Duration:** ~80 seconds (Task 1-5)
**Total Shutdown Duration:** ~37 seconds (Task Final)
**Total Combined:** ~117 seconds

---

## Context Flow

Tasks share data via context dictionary:

```python
context = {}

# Task 1 adds:
context['displays'] = [...]
context['external_display'] = {...}
context['main_display'] = {...}

# Task 2 adds:
context['terminals'] = [...with window_ids...]
context['window_ids'] = [25534, 25536, 25538]
context['x_offset'] = 1280

# Task 3 adds:
context['screenshot'] = 'external_display_WORKED_2.jpg'

# Task 4 adds:
context['launched_in'] = ['LEADER', 'WORKER-1', 'WORKER-2']

# Task 5 adds:
context['role_assignments'] = {...}

# Task Final adds (via --load-context):
context['closed_count'] = 3
context['shutdown_complete'] = True
```

---

## Verified Evidence

Immutable files (chflags uchg) - WORKED_2:

**Screenshots:**
- `external_display_WORKED_2.jpg` - 3 terminals on external display
- `claude_verification_WORKED_2.jpg` - Claude Code running in all 3
- `response_leader_WORKED_2.jpg` - Leader accepted role
- `response_worker-1_WORKED_2.jpg` - Agent accepted role
- `response_worker-2_WORKED_2.jpg` - Worker accepted role
- `role_prompter_final_WORKED_2.jpg` - Final verification

**Reports:**
- `pipeline_report_WORKED_2.json` - Task 1-5 execution log
- `shutdown_report_WORKED_2.json` - Task Final execution log

**Archive:**
- `archive/screenshots/*_WORKED.jpg` - Previous verified screenshots
- `archive/reports/pipeline_report_WORKED.json` - Previous verified report

---

## Yeni Task Ekleme (Scalability)

1. `tasks/` klasörüne yeni `.py` dosyası ekle
2. `BaseTask`'tan türet
3. `tasks/__init__.py`'a import ekle
4. `config/workflow.yaml`'a task'ı ekle

```python
# tasks/my_task.py
from .base import BaseTask, TaskResult, TaskStatus

class MyTask(BaseTask):
    name = "my_task"
    description = "Does something"

    def execute(self, context):
        # context'ten önceki task'ların çıktılarını al
        terminals = context.get('terminals', [])
        window_ids = context.get('window_ids', [])

        # Window ID ile işlem yap
        for terminal in terminals:
            window_id = terminal.get('window_id')
            # ...

        return TaskResult(
            task_name=self.name,
            status=TaskStatus.SUCCESS,
            data={'result': 'done'}
        )
```

---

**Version:** 5.1.0 (Window ID Tracking + RabbitMQ Role Assignment + Safe Shutdown)
**Status:** WORKING - VERIFIED (WORKED_2)
**Last Updated:** 2025-12-11