@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.
|
|
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
|
|
4
|
-
#
|
|
3
|
+
# --- Port Management Utility (Golden V6 - High Precision) ---
|
|
4
|
+
# Tự động quét và 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
|
-
#
|
|
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
|
|
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
|
-
|
|
52
|
+
|
|
53
|
+
# Nạp config cũ
|
|
36
54
|
if [ -f "$ENV_FILE" ]; then
|
|
37
55
|
source "$ENV_FILE"
|
|
38
56
|
fi
|
|
39
57
|
|
|
40
|
-
|
|
41
|
-
|
|
58
|
+
DEFAULT_IDE_START=9555
|
|
59
|
+
IDE_RANGE_END=9655
|
|
60
|
+
BRIDGE_OFFSET=101 # IDE 9555 -> Bridge 9656
|
|
42
61
|
|
|
43
|
-
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
66
|
-
|
|
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 (
|
|
4
|
-
# Dọn dẹp trạm gác
|
|
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 "
|
|
16
|
+
echo " 🛑 SHUTTING DOWN GATEWAY [$BRIDGE_PORT]..."
|
|
17
17
|
echo "════════════════════════════════════════════════════"
|
|
18
18
|
|
|
19
|
-
# 1. Tắt
|
|
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
|
-
|
|
23
|
-
echo "
|
|
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
|
-
#
|
|
31
|
-
echo "[
|
|
32
|
-
|
|
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 gõ lệnh dừng Bot của mình vào đây.
|
|
34
36
|
|
|
35
37
|
echo "════════════════════════════════════════════════════"
|
|
36
|
-
echo "✅
|
|
38
|
+
echo "✅ PROJECT IS IDLE."
|
|
37
39
|
echo "════════════════════════════════════════════════════"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
|
|
3
|
-
# --- Antigravity Unified Receptionist (
|
|
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
|
-
#
|
|
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 "
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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
|
-
#
|
|
52
|
-
echo "[4/4]
|
|
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
|
package/template/stop_bot.sh
CHANGED
|
File without changes
|