@mrtrinhvn/ag-kit 1.1.9 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrtrinhvn/ag-kit",
3
- "version": "1.1.9",
3
+ "version": "1.2.0",
4
4
  "description": "Antigravity Kit Base Framework - Generic Agentic AI Programming Core",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -32,4 +32,4 @@
32
32
  "commander": "^14.0.3",
33
33
  "inquirer": "^8.2.5"
34
34
  }
35
- }
35
+ }
@@ -1,11 +1,13 @@
1
1
  #!/bin/bash
2
2
 
3
- # --- Port Management Utility (Golden V4) ---
4
- # Finds free ports and updates .env to ensure consistent project-wide communication.
3
+ # --- Port Management Utility (Golden V6 - High Precision) ---
4
+ # Tự động quét thu nạp cổng IDE theo từng dự án.
5
+ # Đảm bảo "Chính chủ" mới dùng, "Người lạ" thì né.
5
6
 
6
7
  ENV_FILE=".env"
8
+ PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
7
9
 
8
- # Logic tìm cổng trống
10
+ # 1. Tìm cổng trống dựa trên netstat
9
11
  function find_free_port() {
10
12
  local port=$1
11
13
  while netstat -atn | grep -q ":$port "; do
@@ -14,13 +16,11 @@ function find_free_port() {
14
16
  echo $port
15
17
  }
16
18
 
17
- # Cập nhật hoặc thêm cổng vào .env
19
+ # 2. Cập nhật .env (Dùng sed tương thích đa hệ điều hành)
18
20
  function update_env_port() {
19
21
  local key=$1
20
22
  local value=$2
21
-
22
23
  if grep -q "^${key}=" "$ENV_FILE"; then
23
- # OS-compatible sed (Linux/macOS)
24
24
  if [[ "$OSTYPE" == "darwin"* ]]; then
25
25
  sed -i '' "s/^${key}=.*/${key}=${value}/" "$ENV_FILE"
26
26
  else
@@ -31,37 +31,75 @@ function update_env_port() {
31
31
  fi
32
32
  }
33
33
 
34
+ # 3. Quét dải cổng để tìm IDE của chính dự án này
35
+ function scan_project_ide() {
36
+ local start_p=$1
37
+ local end_p=$2
38
+ for ((p=start_p; p<=end_p; p++)); do
39
+ if netstat -atn | grep -q ":$p "; then
40
+ # Kiểm tra xem có đúng là IDE của dự án này đang ở cổng p không
41
+ if curl -s "http://127.0.0.1:$p/json" | grep -q "$PROJECT_DIR" > /dev/null 2>&1; then
42
+ echo $p
43
+ return 0
44
+ fi
45
+ fi
46
+ done
47
+ echo ""
48
+ return 1
49
+ }
50
+
34
51
  # --- Main Logic ---
35
- # 1. Đọc cổng hiện tại
52
+
53
+ # Nạp config cũ
36
54
  if [ -f "$ENV_FILE" ]; then
37
55
  source "$ENV_FILE"
38
56
  fi
39
57
 
40
- ORIGINAL_IDE_PORT=${IDE_PORT:-9555}
41
- ORIGINAL_BRIDGE_PORT=${BRIDGE_PORT:-9556}
58
+ DEFAULT_IDE_START=9555
59
+ IDE_RANGE_END=9655
60
+ BRIDGE_OFFSET=101 # IDE 9555 -> Bridge 9656
42
61
 
43
- # 2. Kiểm tra xung đột (IDE_PORT)
44
- # Nếu cổng IDE bận, và không phải là do IDE của chính dự án này chiếm giữ (kiểm tra qua /json endpoint)
45
- PORT_TAKEN=false
46
- if netstat -atn | grep -q ":$ORIGINAL_IDE_PORT "; then
47
- # Kiểm tra xem folder dự án hiện tại có nằm trong danh sách tab/window của IDE không
48
- if ! curl -s "http://127.0.0.1:$ORIGINAL_IDE_PORT/json" | grep -q "$PROJECT_DIR" > /dev/null 2>&1; then
49
- PORT_TAKEN=true
50
- fi
51
- fi
62
+ CURRENT_CONFIG_IDE=${IDE_PORT:-$DEFAULT_IDE_START}
52
63
 
53
- if [ "$PORT_TAKEN" = true ]; then
54
- echo "⚠️ Xung đột PORT phaát hieện! Đang tìm cổng mới..."
55
- NEW_IDE_PORT=$(find_free_port $ORIGINAL_IDE_PORT)
56
- NEW_BRIDGE_PORT=$(find_free_port $((NEW_IDE_PORT + 1)))
57
-
58
- update_env_port "IDE_PORT" "$NEW_IDE_PORT"
59
- update_env_port "BRIDGE_PORT" "$NEW_BRIDGE_PORT"
64
+ echo "🔍 Đang rà soát "Brain Portal" (Dải 100 cổng) cho dự án: $(basename "$PROJECT_DIR")..."
65
+
66
+ # Bước 1: Quét xem có IDE nào đang mở dự án này không (Dải 9555 - 9655)
67
+ FOUND_PORT=$(scan_project_ide $DEFAULT_IDE_START $IDE_RANGE_END)
68
+
69
+ if [ ! -z "$FOUND_PORT" ]; then
70
+ echo " Phát hiện IDE đang chạy tại cổng: $FOUND_PORT"
71
+ export IDE_PORT=$FOUND_PORT
72
+ export BRIDGE_PORT=$((FOUND_PORT + BRIDGE_OFFSET))
60
73
 
61
- echo "✅ Đã cập nhật .env: IDE_PORT=$NEW_IDE_PORT, BRIDGE_PORT=$NEW_BRIDGE_PORT"
62
- export IDE_PORT=$NEW_IDE_PORT
63
- export BRIDGE_PORT=$NEW_BRIDGE_PORT
74
+ # Cập nhật .env nếu có thay đổi
75
+ if [ "$FOUND_PORT" != "$CURRENT_CONFIG_IDE" ]; then
76
+ echo "📝 Cập nhật cổng mới vào .env..."
77
+ update_env_port "IDE_PORT" "$FOUND_PORT"
78
+ update_env_port "BRIDGE_PORT" "$BRIDGE_PORT"
79
+ fi
64
80
  else
65
- export IDE_PORT=$ORIGINAL_IDE_PORT
66
- export BRIDGE_PORT=$ORIGINAL_BRIDGE_PORT
81
+ # Bước 2: Không thấy IDE cũ, kiểm tra cổng trong .env có bị "người lạ" chiếm không
82
+ echo "❓ Không tìm thấy IDE đang chạy. Tiến hành rà soát cổng khả dụng..."
83
+
84
+ # Nếu cổng hiện tại bị "người lạ" chiếm
85
+ if netstat -atn | grep -q ":$CURRENT_CONFIG_IDE "; then
86
+ echo "⚠️ Cổng mặc định $CURRENT_CONFIG_IDE đã bị dự án khác chiếm."
87
+ # Tìm IDE trống trong dải
88
+ FREE_IDE=$(find_free_port $DEFAULT_IDE_START)
89
+ FREE_BRIDGE=$(find_free_port $((FREE_IDE + BRIDGE_OFFSET)))
90
+
91
+ echo "🚀 Đã phân bổ cặp cổng trống mới: IDE=$FREE_IDE, BRIDGE=$FREE_BRIDGE"
92
+ update_env_port "IDE_PORT" "$FREE_IDE"
93
+ update_env_port "BRIDGE_PORT" "$FREE_BRIDGE"
94
+
95
+ export IDE_PORT=$FREE_IDE
96
+ export BRIDGE_PORT=$FREE_BRIDGE
97
+ else
98
+ # Cổng trong .env vẫn trống, dùng luôn
99
+ export IDE_PORT=$CURRENT_CONFIG_IDE
100
+ # Đảm bảo BRIDGE_PORT tương ứng
101
+ export BRIDGE_PORT=$((CURRENT_CONFIG_IDE + BRIDGE_OFFSET))
102
+ update_env_port "BRIDGE_PORT" "$BRIDGE_PORT"
103
+ echo "✅ Sử dụng cổng cấu hình: $IDE_PORT (Bridge: $BRIDGE_PORT)"
104
+ fi
67
105
  fi
@@ -1,7 +1,7 @@
1
1
  #!/bin/bash
2
2
 
3
- # --- Antigravity Unified Shutdown (Agent-Defined V3) ---
4
- # Dọn dẹp trạm gác theo Port Isolation.
3
+ # --- Antigravity Unified Shutdown (Golden V6 - High Precision) ---
4
+ # Dọn dẹp trạm gác Agentic.
5
5
 
6
6
  PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
7
7
  cd "$PROJECT_DIR"
@@ -13,25 +13,27 @@ fi
13
13
  BRIDGE_PORT=${BRIDGE_PORT:-9556}
14
14
 
15
15
  echo "════════════════════════════════════════════════════"
16
- echo " 🚑 SHUTTING DOWN GATEWAY [$BRIDGE_PORT]..."
16
+ echo " 🛑 SHUTTING DOWN GATEWAY [$BRIDGE_PORT]..."
17
17
  echo "════════════════════════════════════════════════════"
18
18
 
19
- # 1. Tắt Portal Bridge (HUD)
19
+ # 1. Tắt Sentinel Monitor
20
+ SENTINEL_PID_FILE=".sentinel_${BRIDGE_PORT}.pid"
21
+ if [ -f "$SENTINEL_PID_FILE" ]; then
22
+ kill $(cat "$SENTINEL_PID_FILE") 2>/dev/null && rm "$SENTINEL_PID_FILE"
23
+ echo "✅ Sentinel stopped."
24
+ fi
25
+
26
+ # 2. Tắt Portal Bridge
20
27
  BRIDGE_PID_FILE=".portal_bridge_${BRIDGE_PORT}.pid"
21
28
  if [ -f "$BRIDGE_PID_FILE" ]; then
22
- PID=$(cat "$BRIDGE_PID_FILE")
23
- echo "[1/2] 🧪 Stopping Portal Bridge [$BRIDGE_PORT] (PID: $PID)..."
24
- kill $PID 2>/dev/null && rm "$BRIDGE_PID_FILE"
25
- echo " ✅ Bridge stopped."
26
- else
27
- echo "[1/2] 🧪 Portal Bridge on port $BRIDGE_PORT not running."
29
+ kill $(cat "$BRIDGE_PID_FILE") 2>/dev/null && rm "$BRIDGE_PID_FILE"
30
+ echo " HUD Bridge stopped."
28
31
  fi
29
32
 
30
- # 2. Tắt Docker Backend (Bot)
31
- echo "[2/2] 🤖 Stopping Receptionist (Docker)..."
32
- docker compose -f docker-compose.dev.yml stop ck-backend-dev
33
- echo " ✅ Bot stopped."
33
+ # 3. Tắt Bot (Tùy chỉnh theo dự án)
34
+ # echo "[3/3] 🤖 Stopping Bot..."
35
+ # [TEMPLATE_NOTE]: Sếp hãy lệnh dừng Bot của mình vào đây.
34
36
 
35
37
  echo "════════════════════════════════════════════════════"
36
- echo "✅ SYSTEM IDLE."
38
+ echo "✅ PROJECT IS IDLE."
37
39
  echo "════════════════════════════════════════════════════"
@@ -1,6 +1,6 @@
1
1
  #!/bin/bash
2
2
 
3
- # --- Antigravity Unified Receptionist (Agent-Defined V4) ---
3
+ # --- Antigravity Unified Receptionist (Golden V6 - High Precision) ---
4
4
  # Trạm gác hợp nhất: Bot + Portal Bridge (HUD) + Monitor Dashboard.
5
5
  # Hỗ trợ Đa dự án & Tự động xử lý Cổng (Smart Port Orchestration).
6
6
 
@@ -20,16 +20,23 @@ echo "════════════════════════
20
20
  echo " 🚑 AGENTIC GATEWAY - PORTAL [$BRIDGE_PORT]"
21
21
  echo "════════════════════════════════════════════════════"
22
22
 
23
- # 1. Kiểm tra Cổng IDE (CDP)
23
+ # 2. Kiểm tra/Khởi động IDE (CDP)
24
24
  echo -n "[1/4] 🛰️ Checking IDE Portal (Port $IDE_PORT)... "
25
25
  if curl -s http://127.0.0.1:$IDE_PORT/json/version > /dev/null; then
26
26
  echo "✅ READY."
27
27
  else
28
28
  echo "❌ NOT FOUND."
29
- echo " 👉 Please start Antigravity in Debug mode on port $IDE_PORT"
29
+ echo " 🚀 Launching Antigravity with CDP on port $IDE_PORT..."
30
+ nohup antigravity --remote-debugging-port=$IDE_PORT "$PROJECT_DIR" > /dev/null 2>&1 &
31
+ sleep 3
32
+ if curl -s http://127.0.0.1:$IDE_PORT/json/version > /dev/null; then
33
+ echo " ✅ IDE Launched successfully."
34
+ else
35
+ echo " ⚠️ Could not launch IDE automatically. Please open it manually."
36
+ fi
30
37
  fi
31
38
 
32
- # 2. Khởi động Portal Bridge (HUD Injector)
39
+ # 3. Khởi động Portal Bridge (HUD Injector)
33
40
  echo "[2/4] 🧪 Injected Golden HUD Bridge... "
34
41
  BRIDGE_PID_FILE=".portal_bridge_${BRIDGE_PORT}.pid"
35
42
 
@@ -42,12 +49,37 @@ nohup node scripts/ag_portal_bridge.js > ".portal_bridge_${BRIDGE_PORT}.log" 2>&
42
49
  echo $! > "$BRIDGE_PID_FILE"
43
50
  echo " ✅ Bridge running (PID: $(cat "$BRIDGE_PID_FILE") on Port $BRIDGE_PORT)"
44
51
 
45
- # 3. Khởi động Bot (Tùy chỉnh theo dự án)
52
+ # 4. Khởi động Bot (Tùy chỉnh theo dự án)
46
53
  echo "[3/4] 🤖 Waking up Agent Bot... "
47
54
  # [TEMPLATE_NOTE]: Sếp hãy gõ lệnh khởi động Bot của mình vào đây.
48
- # Ví dụ: docker compose up -d (nếu dùng docker) hoặc npx tsx src/index.ts (nếu dùng local)
49
55
  echo " ⚠️ Vui lòng cấu hình lệnh khởi động Bot trong .agent/scripts/receptionist_up.sh"
50
56
 
51
- # 4. Monitor
52
- echo "[4/4] 📊 Ready."
57
+ # 5. Sentinel Monitor (Giám sát Trí não)
58
+ echo "[4/4] 🛡️ Sentinel Active: Auto-shutdown if IDE connection lost."
59
+ SENTINEL_PID_FILE=".sentinel_${BRIDGE_PORT}.pid"
60
+
61
+ function start_sentinel() {
62
+ (
63
+ local fail_count=0
64
+ while true; do
65
+ sleep 30
66
+ if ! curl -s "http://127.0.0.1:$IDE_PORT/json" | grep -q "$PROJECT_DIR" > /dev/null 2>&1; then
67
+ fail_count=$((fail_count + 1))
68
+ if [ $fail_count -ge 3 ]; then
69
+ echo "$(date): ⚠️ IDE Lost. Auto-shutting down project..." >> .sentinel_crash.log
70
+ bash .agent/scripts/receptionist_down.sh
71
+ exit 0
72
+ fi
73
+ else
74
+ fail_count=0
75
+ fi
76
+ done
77
+ ) &
78
+ echo $! > "$SENTINEL_PID_FILE"
79
+ }
80
+ start_sentinel
81
+
82
+ # Monitor
53
83
  echo "----------------------------------------------------"
84
+ echo "✅ SYNC COMPLETE. PORTAL IS BROADCASTING."
85
+ # tail -f interaction_final.log
package/template/start.sh CHANGED
File without changes
File without changes