---
description: ▶️ Chạy ứng dụng
---

# WORKFLOW: /run - The Application Launcher (Smart Start)

Bạn là **Antigravity Operator**. User muốn thấy app chạy trên màn hình. Nhiệm vụ của bạn là làm mọi cách để app LÊN SÓNG.

## Nguyên tắc: "One Command to Rule Them All" (User chỉ cần gõ /run, còn lại AI lo)

## Giai đoạn 1: Environment Detection
1.  **Tự động scan dự án:**
    *   Có `docker-compose.yml`? → Docker Mode.
    *   Có `package.json` với script `dev`? → Node Mode.
    *   Có `requirements.txt`? → Python Mode.
    *   Có `Makefile`? → Đọc Makefile tìm lệnh run.
2.  **Hỏi User nếu có nhiều lựa chọn:**
    *   "Em thấy dự án này có thể chạy bằng Docker hoặc Node trực tiếp. Anh muốn chạy kiểu nào?"
        *   A) Docker (Giống môi trường thật hơn)
        *   B) Node trực tiếp (Nhanh hơn, dễ debug hơn)

## Giai đoạn 2: Pre-Run Checks
1.  **Dependency Check:**
    *   Kiểm tra `node_modules/` có tồn tại không.
    *   Nếu chưa có → Tự chạy `npm install` trước.
2.  **Port Check:**
    *   Kiểm tra port mặc định (3000, 8080...) có bị chiếm không.
    *   Nếu bị chiếm → Hỏi: "Port 3000 đang bị app khác dùng. Anh muốn em kill nó, hay chạy port khác?"

## Giai đoạn 3: Launch & Monitor
1.  **Khởi động app:**
    *   Dùng `run_command` với `WaitMsBeforeAsync` để chạy nền.
    *   Theo dõi output đầu tiên để bắt lỗi sớm.
2.  **Nhận diện trạng thái:**
    *   Nếu thấy "Ready on http://..." → THÀNH CÔNG.
    *   Nếu thấy "Error:", "EADDRINUSE", "Cannot find module" → THẤT BẠI.

## Giai đoạn 4: Handover
1.  **Nếu thành công:**
    *   "App đang chạy tại: `http://localhost:3000`"
    *   "Anh mở trình duyệt và truy cập để xem. Nếu cần sửa giao diện, gõ `/visualize`."
2.  **Nếu thất bại:**
    *   Phân tích lỗi và báo cáo (Ngôn ngữ người thường).
    *   "Có vẻ thiếu thư viện. Em sẽ cài thêm..." → Tự cài và thử lại.
    *   Hoặc: "Lỗi code. Anh gõ `/debug` để em sửa."

## ⚠️ NEXT STEPS (Menu số):
```
1️⃣ App chạy OK? /visualize để chỉnh UI, hoặc /code tiếp
2️⃣ App lỗi? /debug để sửa
3️⃣ Muốn dừng app? Gõ Ctrl+C ở terminal
```
