@mrtrinhvn/ag-kit 1.1.4 → 1.1.6

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/README.md CHANGED
@@ -4,8 +4,14 @@ A generic, institutional-grade AI programming framework for automating scaffoldi
4
4
 
5
5
  ## 📦 Quick Start
6
6
 
7
- The best way to inject AG-Kit into any project is via `npx`:
7
+ The best way to inject AG-Kit into any project is via `npx`. Bạn có thể chạy trực tiếp để vào **Menu tương tác**:
8
8
 
9
+ ```bash
10
+ # DASHBOARD - Menu chọn tất cả tác vụ (Khuyên dùng)
11
+ npx @mrtrinhvn/ag-kit@latest
12
+ ```
13
+
14
+ Hoặc chạy các lệnh đơn lẻ:
9
15
  ```bash
10
16
  # 1. Khởi tạo bộ não (Inject .agent folder)
11
17
  npx @mrtrinhvn/ag-kit@latest init
@@ -23,6 +29,7 @@ npx @mrtrinhvn/ag-kit@latest status
23
29
 
24
30
  | Lệnh | Ý nghĩa | Chi tiết |
25
31
  |---|---|---|
32
+ | `ag-kit` | **Dashboard** | (Không tham số) Mở menu chọn tương tác cực kỳ tiện lợi. |
26
33
  | `ag-kit init` | **Khởi tạo** | Cài đặt tủy não `.agent` và tạo file `.env` mẫu. |
27
34
  | `ag-kit check` | **Kiểm tra** | Quét cổng CDP (mặc định 9555), kiểm tra Ollama và AI Models. |
28
35
  | `ag-kit update` | **Cập nhật** | Nâng cấp Agents/Skills/Workflows mới nhất mà không làm mất dữ liệu Ký ức. |
@@ -66,7 +73,8 @@ npx @mrtrinhvn/ag-kit@latest update
66
73
 
67
74
  **1. Lỗi phiên bản không khớp (Version ghosting):**
68
75
  Nếu `status` báo phiên bản cũ hơn bản trên NPM, đó là do cache của `npx` hoặc bạn đã cài global.
69
- - Cách giải quyết: Luôn thêm `@latest` sau tên gói hoặc chạy `sudo npm install -g @mrtrinhvn/ag-kit@latest`.
76
+ - Cách giải quyết: Luôn thêm `@latest` sau tên gói (`npx @mrtrinhvn/ag-kit@latest`) hoặc cập nhật bộ não bằng lệnh `ag-kit update`.
77
+ - Giờ đây, các lệnh `init` và `status` sẽ tự động phát hiện và nhắc bạn chạy `update` nếu phát hiện lệch phiên bản.
70
78
 
71
79
  **2. Lỗi EACCES (Quyền truy cập):**
72
80
  Nếu cài global bị báo lỗi quyền, hãy dùng `npx` (Khuyên dùng) hoặc dùng `sudo`.
package/bin/cli.js CHANGED
@@ -90,7 +90,18 @@ program.command('init')
90
90
  }
91
91
  }
92
92
  } else {
93
- console.log('\x1b[33m⚠️ Thư mục .agent đã tồn tại. Hãy dùng lệnh "update" để cập nhật.\x1b[0m');
93
+ console.log('\x1b[33m⚠️ Thư mục .agent đã tồn tại.\x1b[0m');
94
+ const vPath = path.join(TARGET_AGENT_DIR, '.version');
95
+ if (fs.existsSync(vPath)) {
96
+ const installedVersion = fs.readFileSync(vPath, 'utf-8').trim();
97
+ if (installedVersion !== pkg.version) {
98
+ console.log(`\x1b[35m👉 Phát hiện phiên bản cũ (v${installedVersion}). Hãy dùng lệnh "ag-kit update" để cập nhật lên v${pkg.version}.\x1b[0m`);
99
+ } else {
100
+ console.log('\x1b[34mℹ️ Bạn đang sử dụng phiên bản khớp với bộ công cụ (v${pkg.version}).\x1b[0m');
101
+ }
102
+ } else {
103
+ console.log('\x1b[35m👉 Hãy dùng lệnh "ag-kit update" để đồng bộ cấu trúc mới.\x1b[0m');
104
+ }
94
105
  }
95
106
 
96
107
  console.log('\x1b[35m\n🎉 Hoàn tất! Vui lòng copy luật GEMINI vào file GEMINI.md của dự án nếu chưa có.\x1b[0m');
@@ -127,6 +138,12 @@ program.command('check')
127
138
  .action(async () => {
128
139
  const { execSync } = require('child_process');
129
140
  console.log('\x1b[36m🔍 Đang kiểm tra hệ sinh thái Antigravity...\x1b[0m');
141
+
142
+ if (!fs.existsSync(TARGET_AGENT_DIR)) {
143
+ console.log('\x1b[31m❌ Hệ thống chưa được khởi tạo. Thư mục .agent không tồn tại.\x1b[0m');
144
+ console.log('\x1b[35m👉 Hãy chạy "ag-kit init" trước khi thực hiện kiểm tra này.\x1b[0m');
145
+ return;
146
+ }
130
147
 
131
148
  // 1. Check .env
132
149
  const envPath = path.join(process.cwd(), '.env');
@@ -203,8 +220,9 @@ program.command('status')
203
220
  console.log(`📁 Đường dẫn : ${TARGET_AGENT_DIR}`);
204
221
 
205
222
  const vPath = path.join(TARGET_AGENT_DIR, '.version');
223
+ let installedVersion = '0.0.0';
206
224
  if (fs.existsSync(vPath)) {
207
- const installedVersion = fs.readFileSync(vPath, 'utf-8').trim();
225
+ installedVersion = fs.readFileSync(vPath, 'utf-8').trim();
208
226
  console.log(`🧠 Bản cài đặt : v${installedVersion}`);
209
227
  } else {
210
228
  console.log(`🧠 Bản cài đặt : Không rõ (Legacy)`);
@@ -212,10 +230,41 @@ program.command('status')
212
230
 
213
231
  console.log(`🏷 Bản Tool : v${pkg.version}`);
214
232
 
233
+ if (installedVersion !== pkg.version) {
234
+ console.log('\n\x1b[33m⚠️ CẢNH BÁO: Phiên bản bộ não (.agent) đang lệch với bộ công cụ (ag-kit)!\x1b[0m');
235
+ console.log(`\x1b[35m👉 Hãy chạy "ag-kit update" để đồng bộ ngay.\x1b[0m`);
236
+ }
237
+
215
238
  } else {
216
- console.log('\x1b[31m❌ Trạng thái : Chưa có gì. Gõ "ag-kit init" để Setup.\x1b[0m');
239
+ console.log('\x1b[31m❌ Trạng thái : Chưa có gì.\x1b[0m');
240
+ console.log('\x1b[35m👉 Gõ "ag-kit init" để biến thư mục này thành một Agentic Workspace!\x1b[0m');
217
241
  console.log(`🏷 Bản Tool : v${pkg.version}`);
218
242
  }
219
243
  });
220
244
 
221
- program.parse(process.argv);
245
+
246
+ if (process.argv.length <= 2) {
247
+ const inquirer = require('inquirer');
248
+ console.log('\x1b[35m\n🧠 ANTIGRAVITY KIT - BẢNG ĐIỀU KHIỂN TÁC VỤ\x1b[0m');
249
+ inquirer.prompt([
250
+ {
251
+ type: 'list',
252
+ name: 'action',
253
+ message: 'Chọn một tác vụ để thực hiện:',
254
+ choices: [
255
+ { name: '🚀 Khởi tạo (init) - Cài đặt .agent', value: 'init' },
256
+ { name: '🔄 Cập nhật (update) - Nâng cấp bộ não', value: 'update' },
257
+ { name: '🔍 Kiểm tra (check) - Test môi trường', value: 'check' },
258
+ { name: '📊 Trạng thái (status) - Xem version', value: 'status' },
259
+ new inquirer.Separator(),
260
+ { name: '❌ Thoát', value: 'exit' }
261
+ ]
262
+ }
263
+ ]).then(answers => {
264
+ if (answers.action !== 'exit') {
265
+ program.parse([process.argv[0], process.argv[1], answers.action]);
266
+ }
267
+ });
268
+ } else {
269
+ program.parse(process.argv);
270
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrtrinhvn/ag-kit",
3
- "version": "1.1.4",
3
+ "version": "1.1.6",
4
4
  "description": "Antigravity Kit Base Framework - Generic Agentic AI Programming Core",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -29,6 +29,7 @@
29
29
  "package.json"
30
30
  ],
31
31
  "dependencies": {
32
- "commander": "^14.0.3"
32
+ "commander": "^14.0.3",
33
+ "inquirer": "^8.2.5"
33
34
  }
34
35
  }
@@ -30,6 +30,8 @@ You are the master orchestrator agent. You coordinate multiple specialized agent
30
30
 
31
31
  **Before planning, you MUST verify available runtime tools:**
32
32
  - [ ] **Read `ARCHITECTURE.md`** to see full list of Scripts & Skills
33
+ - [ ] **Check `tele-agentic-standard.md`** for Remote Golden Loop awareness.
34
+ - [ ] **Verify IDE HUD status**: If `ag_portal_bridge.js` is active, use it for real-time reporting.
33
35
  - [ ] **Identify relevant scripts** (e.g., `playwright_runner.py` for web, `security_scan.py` for audit)
34
36
  - [ ] **Plan to EXECUTE** these scripts during the task (do not just read code)
35
37
 
@@ -1,22 +1,22 @@
1
- # Tiết Kiệm Token & Quản Mô Hình (Model & VFS Knowledge)
1
+ # Tiết Kiệm Token & Chiến Lược Mô Hình (Model & VFS)
2
2
 
3
- ## 1. Chế Tiết Kiệm Token
4
- Trong môi trường điều khiển từ xa (Telegram), việc tối ưu hóa token là cực kỳ quan trọng để duy trì hiệu suất và chi phí.
3
+ Tiết kiệm tài nguyên là yếu tố sống còn khi vận hành AI Agentic lâu dài. Hệ thống tuân thủ nghiêm ngặt các nguyên tắc sau:
5
4
 
6
- ### VFS (Virtual File System)
7
- - **Tác dụng**: Giảm 98% lượng token khi khám phá mã nguồn.
8
- - **Cách hoạt động**: Thay đọc toàn bộ file, AI sử dụng công cụ `vfs` để chỉ lấy chữ ký (signatures) của hàm và lớp.
9
- - **Quy tắc**: Phải luôn sử dụng `vfs` trước khi dùng `grep` hoặc đọc file đầy đủ. (Xem `GEMINI.md`).
5
+ ## 1. Giao Thức VFS (Virtual File System)
6
+ Dựa trên sáng kiến [VFS của TrNgTien](https://github.com/TrNgTien/vfs), chúng ta thay đổi cách AI tiếp cận mã nguồn:
7
+ - **Tác dụng**: Giảm lượng token tiêu thụ lên đến **98%** khi khám phá project lớn.
8
+ - **Quyết định**: AI KHÔNG ĐƯỢC đọc toàn bộ file ngay lập tức. Thay vào đó, AI dùng công cụ `vfs` để quét các "chữ ký" (signatures - tên hàm, lớp, kiểu dữ liệu) trước.
9
+ - **Thứ tự thực hiện**: `vfs search` -> `vfs read signature` -> `read file (chỉ vùng code cần thiết)`.
10
10
 
11
- ## 2. Chiến Lược Lựa Chọn Mô Hình (Model Strategy)
12
- Hệ thống sử dụng chế "Phân tầng độ khó" để chọn model:
11
+ ## 2. Phân Tầng Lựa Chọn Mô Hình (Model Hierarchy)
12
+ Hệ thống sử dụng model phù hợp với "độ khó" của bệnh:
13
13
 
14
- | Độ khó | Tác vụ | Mô hình khuyến nghị | do |
14
+ | Cấp độ | Tác vụ | Mô hình khuyến nghị | Ưu điểm |
15
15
  | :--- | :--- | :--- | :--- |
16
- | **Thấp** | Giải thích code, Refactor nhỏ, Chat thông thường | **Ollama (Local)** | Không tốn quota, phản hồi nhanh cho tác vụ đơn giản. |
17
- | **Trung bình** | Fix lỗi, Thêm tính năng mới | **Gemini 3 Flash** | Cân bằng giữa chi phí độ thông minh. |
18
- | **Cao** | Thiết kế kiến trúc, Debug lỗi phức tạp | **Claude 3.5 Sonnet / Gemini 1.5 Pro** | Độ chính xác cao nhất cho các vấn đề hóc búa. |
16
+ | **Sơ cấp** | Giải thích code, Chat hỏi đáp, Refactor nhỏ | **Ollama (Local)** | 0 token cost, Bảo mật, Phản hồi tức thì. |
17
+ | **Trung cấp** | Fix lỗi thông thường, Thêm tính năng đơn giản | **Gemini 3 Flash** | Chi phí thấp, Context window cực lớn. |
18
+ | **Nâng cao** | Thiết kế kiến trúc phức tạp, Debug lỗi logic sâu | **Claude 3.5 Sonnet / Gemini 1.5 Pro** | Độ chính xác khả năng suy luận mạnh nhất. |
19
19
 
20
- ## 3. Tích Hợp Local Model (Ollama)
21
- - Bot kết nối trực tiếp với Ollama API tại `http://localhost:11434`.
22
- - Người dùng thể chọn dùng model local qua lệnh `/model` để "đóng băng" quota Google khi không cần thiết.
20
+ ## 3. Tích Hợp Local LLM (Ollama)
21
+ - Cho phép Bot kết nối trực tiếp với Ollama (thường `http://localhost:11434`).
22
+ - Thường sử dụng các model nhẹ nhưng hiệu quả như `nemotron`, `llama3`, `qwen2.5`.
@@ -0,0 +1,32 @@
1
+ # TIÊU CHUẨN GIAO TIẾP TẬP TRUNG (TELE-AGENTIC STANDARD)
2
+
3
+ Dự án này áp dụng mô hình **Cổng Agentic Hợp Nhất (Unified Agentic Gateway)**, nơi IDE, Bot Telegram và Nhóm Telegram kết nối thành một "Bộ não" duy nhất.
4
+
5
+ ## 📡 KIẾN TRÚC "COMBO VÀNG" (GOLDEN COMBO)
6
+
7
+ Hệ thống được vận hành bởi 3 trụ cột:
8
+ 1. **IDE (Antigravity)**: Đóng vai trò là **Node Tham gia (Participant)**. Không chỉ để gõ code mà còn là Dashboard trực quan.
9
+ 2. **Telegram Bot/Groups**: Đóng vai trò là **Cổng Giao tiếp & Phê duyệt (Gateway)**.
10
+ 3. **CDP Bridge (`ag_portal_bridge.js`)**: Đóng vai trò là **Hệ thần kinh (Nervous System)** kết nối 2 thành phần trên.
11
+
12
+ ### 1. Phân Lập Trí Nhớ Theo Topic (Group Topics)
13
+ Nhóm Telegram được chia thành các Topic để cô lập bối cảnh:
14
+ - **Topic 🔴 Surgery (Phẫu thuật)**: Chuyên dụng cho các lệnh `/heal` và workflow `@brain-surgeon`.
15
+ - **Topic 🟢 Signals (Tín hiệu)**: Hiển thị lệnh mua/bán từ AI.
16
+ - **Topic 🔵 General (Tổng quan)**: Quản trị hệ thống, lệnh `/status`.
17
+
18
+ ### 2. Giao Diện IDE Portal (HUD)
19
+ IDE nạp file `scripts/ag_hud.js` qua CDP để hiển thị:
20
+ - **Gen/WinRate**: Chỉ số tiến hóa của AI Brain.
21
+ - **Stall Alert**: Cảnh báo đỏ khi AI ngừng tiến bộ.
22
+ - **Doctor Call**: Nút bấm kích hoạt Logic tự chữa lành.
23
+
24
+ ## 🛠️ QUY TRÌNH VẬN HÀNH (OPERATIONAL LOOP)
25
+
26
+ 1. **Phát hiện (Detect)**: `LearningService` phát hiện lỗi/stall -> Cập nhật `ai_state.json`.
27
+ 2. **Cảnh báo (Alert)**: Bridge đẩy dữ liệu lên HUD IDE (Cảnh báo đỏ) và Bot gửi tin nhắn Telegram Group.
28
+ 3. **Phê duyệt (Approve)**: Người dùng nhấn nút trên HUD hoặc Telegram Callback.
29
+ 4. **Hành động (Act)**: IDE Agent (Antigravity) tự động kích hoạt workflow `/debug` để sửa code.
30
+
31
+ ---
32
+ *Tham chiếu: .agent/skills/telegram-agentic-gateway*
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: knowledge-management
3
- description: Systems thinking and knowledge retention protocol. MANDATORY for maintaining architectural consistency, recording integration knowledge (API characteristics), and ensuring complete, holistic code updates.
3
+ description: Hệ thống tư duy và giao thức duy trì tri thức (Systems Thinking & Knowledge Retention). MANDATORY cho việc duy trì tính nhất quán của kiến trúc, ghi chép tri thức tích hợp (API characteristics) và đảm bảo cập nhật mã nguồn hoàn chỉnh, đồng bộ. **QUY TẮC TỐI THƯỢNG: Khi cập nhật ag-kit, phải đồng bộ sang thư mục `template/`.**
4
4
  allowed-tools: Read, Write, Glob, Grep
5
5
  ---
6
6
 
@@ -1,23 +1,20 @@
1
1
  ---
2
2
  name: lazy-gravity
3
- description: Cross-platform remote operation patterns for Antigravity, based on the LazyGravity project.
3
+ description: Quản đa dự án phiên làm việc AI từ xa an toàn.
4
4
  ---
5
5
 
6
6
  # Vận Hành Đa Nền Tảng (LazyGravity Patterns)
7
7
 
8
- LazyGravity tập trung vào việc quản lý nhiều dự án phiên làm việc từ xa một cách an toàn linh hoạt.
8
+ Kỹ thuật quản lý và luân chuyển bối cảnh được kế thừa từ dự án [LazyGravity](https://github.com/tokyoweb3/LazyGravity).
9
9
 
10
- ## Các Đặc Điểm Chính
10
+ ## 1. Project & Workspace Discovery
11
+ - **Workspace Scanning**: Tự động duyệt qua `WORKSPACE_DIR` để liệt kê các thư mục dự án con.
12
+ - **Remote Switching**: Lệnh `/project` cho phép User chọn dự án mới. Bot sẽ cập nhật cấu hình và cảnh báo User khởi động lại flow tương ứng.
11
13
 
12
- 1. **Project Discovery**: Tự động quét các thư mục trong Workspace để cho phép người dùng chuyển đổi dự án từ xa qua lệnh `/project`.
13
- 2. **Session Management**: Quản lịch sử hội thoại (Past Conversations), cho phép chọn lại phiên để tiếp tục làm việc.
14
- 3. **Auto-Accept Flow**: Tích hợp chế tự động nhấn "Accept" cho các file edit nếu người dùng bật chế độ `/autoaccept`.
14
+ ## 2. Bảo Mật & Phân Quyền
15
+ - **White-listing**: Chỉ cho phép `ALLOWED_USER_IDS` `ALLOWED_CHAT_IDS` thực hiện các lệnh nhạy cảm như `/heal` hoặc `/kill`.
16
+ - **Auto-Accept Safety**: Tích hợp chế độ `/autoaccept` cho phép tự động nhấn nút "Accept" trong IDE, nhưng yêu cầu giám sát liên tục qua `/screenshot`.
15
17
 
16
- ## Quản Dự Án (Remote Switching)
17
-
18
- - Sử dụng `WorkspaceService` để liệt các thư mục con.
19
- - Khi người dùng chọn dự án, bot sẽ cung cấp thông tin hoặc tự động restart target sang dự án mới (nếu được cấp quyền).
20
-
21
- ## Phân Loại Mô Hình (Model Categorization)
22
- - Phân tách rõ ràng giữa **Cloud Models** (Google Gemini, Claude) và **Local Models** (Ollama).
23
- - Ưu tiên Local Models cho các yêu cầu giải thích hoặc refactor nhỏ để tiết kiệm quota Cloud.
18
+ ## 3. Đồng Bộ Hóa Trạng Thái
19
+ - Đảm bảo trạng thái của IDE (Generating, Idle, Error) luôn được phản ánh kịp thời lên Telegram Group qua Notifications.
20
+ - Sử dụng chế ID ngắn (Short ID Mapping) để quản danh sách Session/File một cách gọn gàng trên giao diện điện thoại.
@@ -1,24 +1,21 @@
1
1
  ---
2
2
  name: remoat-integration
3
- description: Patterns for controlling AI code editors from Telegram, based on the Remoat project.
3
+ description: Kỹ thuật điều khiển AI Editor từ xa qua CDP (Chrome DevTools Protocol).
4
4
  ---
5
5
 
6
- # Kỹ Thuật Điều Khiển Editor Từ Xa (Remoat Integration)
6
+ # Kỹ Thuật Điều Khiển Editor Từ Xa (Remoat Strategy)
7
7
 
8
- Kỹ thuật này cho phép điều khiển Antigravity hoặc bất kỳ Editor nào hỗ trợ CDP (Chrome DevTools Protocol) thông qua Telegram.
8
+ Dựa trên nguyên của dự án [Remoat](https://github.com/optimistengineer/remoat), cho phép biến Antigravity thành một AI hoàn toàn thể điều khiển từ xa.
9
9
 
10
- ## Nguyên Tắc Cốt Lõi (Remoat Strategy)
10
+ ## 1. Giao Thức Kết Nối (CDP Bridge)
11
+ - **Cổng Debug**: Khởi động Editor với tham số `--remote-debugging-port=9555`.
12
+ - **WebSocket Discovery**: Quét danh sách `/json/list` trên localhost để tìm URL WebSocket của `workbench.html`.
11
13
 
12
- 1. **Bridge qua CDP**: Không can thiệp vào mã nguồn của Editor. Sử dụng CDP để Inject Prompt và Monitor Response.
13
- 2. **Single Brain Architecture**: Bot Telegram chỉ đóng vai trò "lễ tân", nhận lệnh chuyển tiếp cho Editor. Editor là "bộ não" thực hiện công việc.
14
- 3. **Wait for Generate**: Sử dụng DOM Observation để biết khi nào AI trong Editor đang suy nghĩ hoặc đã hoàn thành.
14
+ ## 2. Các Thao Tác Chuyên Sâu
15
+ - **Inject Prompt**: Tự động tìm `Chat Input`, focuschèn text, giả lập phím Enter.
16
+ - **Response Monitor**: Quan sát DOM chat để nhận diện khi nào AI bắt đầu/kết thúc trả lời.
17
+ - **Visual Feedback**: Sử dụng `Page.captureScreenshot` để chụp lại giao diện IDE, giúp User quan sát code và lỗi trực quan qua Telegram.
18
+ - **Terminal Control**: Điều khiển terminal của Editor để chạy test hoặc deploy qua lệnh `/cmd`.
15
19
 
16
- ## Các Tập Lệnh Đặc Trưng
17
-
18
- - `/screenshot`: Chụp ảnh màn hình Editor để kiểm tra kết quả trực quan.
19
- - `/stop`: Dừng khẩn cấp quá trình sinh code của AI.
20
- - `/mode`: Chuyển đổi giữa chế độ `fast` (flash models) và `plan` (pro models).
21
-
22
- ## Cấu Hình Hạ Tầng
23
- - Yêu cầu Editor mở cổng debug: `--remote-debugging-port=9555`.
24
- - Sử dụng `.env` để quản lý `IDE_PORT` đồng nhất với script khởi động.
20
+ ## 3. Hệ Thống "Single Brain"
21
+ Bot Telegram không xử lý logic code, nó chỉ là "lễ tân" chuyển tiếp yêu cầu vào Editor. Editor (Antigravity) là thực thể duy nhất nắm giữ bối cảnh và thực thi thay đổi.
@@ -5,83 +5,46 @@ description: Tiêu chuẩn Giao tiếp Telegram (Telegram Gateway) cho các Agen
5
5
 
6
6
  # KỸ NĂNG: XÂY DỰNG TRẠM ĐIỀU HÀNH TELEGRAM (Telegram Agentic Gateway)
7
7
 
8
- Khi User yêu cầu "Tạo kênh giao tiếp Telegram" hoặc "Làm cho dự án này điều khiển được qua Telegram giống Quản Đốc", bạn (AI) phải thiết kế một `TelegramGateway` tuân thủ nghiêm ngặt **Tiêu chuẩn Giao tiếp lõi** dưới đây.
9
-
10
- Một Telegram Gateway chuẩn mực không chỉ bot chat lăng nhăng, mà phải là một **Trạm Chỉ Huy (Command Center)** với các lệnh System-level.
11
-
12
- ---
13
-
14
- ## PHẦN A: BỘ LỆNH QUẢN TRỊ BẢN (Core Management Commands)
15
- Bất kỳ dự án Agentic nào cũng phải 4 lệnh sinh tồn sau:
16
-
17
- 1. **`🚀 /start` (Ping Khởi Động)**
18
- - **Tác dụng:** Kiểm tra kết nối xem Lõi AI của dự án đang thức không. Trả về thông số môi trường hiện tại (Vd: "Bot đang chạy Port 20130, kết nối 9Router ổn định").
19
-
20
- 2. **`📊 /status` (Camera Giám Sát)**
21
- - **Tác dụng:** Liệt kê toàn bộ các Agent (Đặc vụ/Sandbox) ĐANG CHẠY NGẦM trong hệ thống.
22
- - **Giao diện:** Phải trả về Inline Keyboard (Nút bấm) ứng với từng Sandbox để User có thể chọc vào xem Log hoặc Tương tác trực tiếp với Agent đó.
23
-
24
- 3. **`🏭 /spawn <mô_tả>` (Sinh Trực Tiếp Đặc Vụ)**
25
- - **Tác dụng:** Ép hệ thống tách 1 luồng độc lập, đẻ ra 1 Sandbox riêng biệt đi làm cái task `<mô_tả>` ở background, không làm kẹt luồng chat hiện tại của User.
26
-
27
- 4. **`💀 /kill <agent_id>` (Kill-Switch Lệnh Bài Tử thần)**
28
- - **Tác dụng:** Lệnh Tối Cao. Nếu một Sandbox chạy tốn token, bị kẹt (loop), hoặc làm sai định hướng, User gõ lệnh này Hệ thống BẮT BUỘC phải force-kill Process/Thread của Agent đó ngay lập tức để giải phóng RAM.
29
-
30
- ---
31
-
32
- ## PHẦN B: TRÍ NHỚ PHÂN NHIỆM (Topic-Based Memory Isolation)
33
- Khác lập trình Bot thông thường chỉ lấy `chat.id`, một **Agentic Gateway** tiêu chuẩn BẮT BUỘC phải cô lập trí nhớ dựa trên Telegram Topics (Threads).
34
- - Nếu User nhắn trong Group Telegram có tính năng Topics: Phải trích xuất `msg.message_thread_id` để làm định danh Ký ức (Vd: `topic-1234.json`).
35
- - Nếu User nhắn Private: Dùng `chat.id` (Vd: `chat-5678.json`).
36
- - Nhờ vậy, 1 Group Telegram thể hoạt động hệt như 1 cái Trello/Kanban Board: Mỗi Topic là 1 Luồng Công Việc riêng biệt, Agent nhớ chính xác bối cảnh của từng file/lỗi đang thảo luận mà không bị chập cheng trí nhớ (Cross-Topic Hallucination).
37
-
38
- ---
39
-
40
- ## PHẦN C: BỘ LỆNH QUẢN ỨC (Cognitive Management)
41
- Mỗi Topic/Chat trên Telegram sẽ sinh ra 1 File Ký ức lưu Context. Bắt buộc phải có lệnh dọn dẹp cống rãnh:
42
-
43
- 5. **`🧹 /forget` (Hỏa Thiêu Hồ Sơ)**
44
- - **Tác dụng:** Xóa vĩnh viễn File JSON lịch sử chat (Ký ức ngắn hạn) của Topic/Thread hiện tại.
45
- - **CẢNH BÁO TỐI THƯỢNG:** Chỉ được phép xóa file JSON Session. TUYỆT ĐỐI KHÔNG ĐƯỢC thiết kế lệnh `/forget` gọi các hàm xóa Vector Database (Ký ức dài hạn dùng chung của dự án) vì sẽ làm toàn bộ Hệ thống Đại Tướng bị mất trí nhớ!
46
- - **Bảo mật:** lệnh này mang tính phá hủy dữ liệu, **BẮT BUỘC** phải chặn lại bằng Máy Trạng Thái Cấp Phép (Auth-First) yêu cầu nhập `Password` mới được thi hành.
47
-
48
- ---
49
-
50
- ## PHẦN D: BỘ LỆNH TIẾN HÓA CHỮA LÀNH (Self-Healing Mappers)
51
- Để Dự án có thể tự vá lỗi source code của nó (cần kết hợp với skill `mini-antigravity-injection`), Telegram Gateway phải chứa 2 lệnh Cấp Phép Mổ:
52
-
53
- 6. **`🏥 /heal <triệu_chứng>` (Tiền Trảm Hậu Tấu)**
54
- - **Tác dụng:** Bypass bước duyệt phác đồ.
55
- - **Luồng hoạt động:** Nhận lệnh -> Trạng thái chờ Pass -> Nhập Pass đúng -> Cấp quyền (`hasMutationLicense = true`) -> Agent tự tìm Lỗi -> Tự Mổ code -> Tự Test Sandbox -> Tự Hot-reload -> Báo kết quả cuối cùng.
56
-
57
- 7. **`📋 /healplan <triệu_chứng>` (Khám Bệnh Kê Đơn - Tương Tác)**
58
- - **Tác dụng:** Lập phác đồ, cấm chạm vào code thật.
59
- - **Luồng hoạt động:** Nhận lệnh -> Trạng thái chờ Pass -> Nhập Pass đúng -> Agent đi khám bệnh -> Nhả ra Phác Đồ + 2 Nút Bấm `[✅ Proceed]` và `[❌ Cancel]`.
60
- - User có thể chat qua lại để sửa bản Phác đồ ròng rã cả ngày. Lúc nào ưng ý bấm `Proceed`, Hệ thống bốc Context lôi Agent ra chém đè Code!
61
-
62
- ---
63
-
64
- ## PHẦN E: GIAO DIỆN PREMIUM (awesome-grammY Aesthetics)
65
- Một Gateway chuyên nghiệp phải có UI/UX tinh tế:
66
- 1. **Header & Divider**: Sử dụng các thẻ `<b>` và ký tự ngăn cách (e.g. `━━━━━`) để tạo khối thông tin rõ ràng.
67
- 2. **Status Mapping**: Sử dụng emoji trực quan cho trạng thái (✅ Online, 🚨 Offline, 🛡️ Protected).
68
- 3. **Categorized Menus**: Nhóm các nút bấm theo chức năng (Hệ thống, AI, Dự án).
69
- 4. **Short Callback Data**: Vì Telegram giới hạn callback data là 64 bytes, hãy sử dụng `shortIdMap` để lưu trữ Title dài và map chúng với một mã ngắn (e.g. `sess_a1b2`).
70
-
71
- ---
72
-
73
- ## PHẦN F: KIẾN TẠO HẠ TẦNG & HƯỚNG DẪN (User Setup)
74
- Khi triển khai, hãy hướng dẫn User:
75
- 1. **Tạo Nhóm (Group with Topics)**:
76
- - Tạo Group Telegram. Thêm Bot làm Admin.
77
- - Bật **"Topics"** trong cài đặt nhóm.
78
- - Mỗi dự án hoặc tính năng lớn nên là 1 Topic riêng để cô lập ký ức.
79
- 2. **Cấu Hình .env**: Giải thích rõ các token:
80
- - `TELEGRAM_BOT_TOKEN`: Lấy từ @BotFather.
81
- - `ALLOWED_USER_IDS`: Bảo mật, chỉ cho phép chủ nhân điều khiển.
82
- - `IDE_PORT`: Cổng CDP của Antigravity (thường là 9555).
83
-
84
- ---
85
-
86
- ## TỔNG KẾT TRIỂN KHAI
87
- *(Ghi chú cho AI)*: Luôn tích hợp VFS (`GEMINI.md`) để tiết kiệm token khi thực hiện code discovery từ xa thông qua Bot.
8
+ Khi User yêu cầu "Tạo kênh giao tiếp Telegram" hoặc "Làm cho dự án này điều khiển được qua Telegram", bạn (AI) phải thiết kế một `TelegramGateway` chuyên nghiệp, tích hợp tinh hoa từ các dự án **Remoat**, **LazyGravity** và framework **grammY**.
9
+
10
+ ## PHẦN A: BỘ LỆNH QUẢN TRỊ SINH TỒN (Core Management)
11
+ Mọi Gateway phải có các lệnh điều khiển hệ thống sau:
12
+ 1. **`/start`**: Kiểm tra kết nối, trả về thông số Port (CDP) và trạng thái Bot.
13
+ 2. **`/status`**: Liệt kê các Agent/Sandbox đang chạy. Sử dụng Inline Keyboard để tương tác.
14
+ 3. **`/stop`**: Dừng khẩn cấp quá trình AI đang sinh code hoặc thực thi (Sử dụng `Page.stopLoading` qua CDP).
15
+ 4. **`/screenshot`**: Chụp ảnh màn hình IDE (qua CDP `Page.captureScreenshot`) để giám sát trực quan từ xa.
16
+
17
+ ## PHẦN B: TRÍ NHỚ PHÂN NHIỆM (Topic-Based Isolation)
18
+ Bắt buộc phải lập trí nhớ dựa trên **Telegram Topics** (Threads) để chống hiện tượng chập cheng ức:
19
+ - Sử dụng `msg.message_thread_id` làm định danh cho file context (Vd: `topic-123.json`).
20
+ - Mỗi Topic trong Group Telegram tương ứng với một luồng công việc/tính năng riêng biệt.
21
+
22
+ ## PHẦN C: QUẢN HÌNH & TIẾT KIỆM TOKEN (Model Routing)
23
+ Tích hợp chiến lược chuyển đổi model linh hoạt:
24
+ - **`/model`**: Hiển thị menu chọn Model (Cloud vs Local).
25
+ - **Ưu tiên Local**: Sử dụng **Ollama** cho các tác vụ giải thích hoặc refactor nhỏ để bảo vệ quota Cloud.
26
+ - **VFS Integration**: Luôn tuân thủ giao thức **VFS (Virtual File System)** để tiết kiệm 98% token khi đọc code (Cấu hình tại `GEMINI.md`).
27
+
28
+ ## PHẦN D: PHẪU THUẬT NÃO AI (Self-Healing & Multi-Agent)
29
+ Để dự án tự vá lỗi (kết hợp `mini-antigravity-injection`):
30
+ 1. **`/heal`**: Cấp quyền tự mổ (Mutation License).
31
+ 2. **`/healplan`**: Yêu cầu Agent lập phác đồ chữa bệnh và chờ lệnh `Proceed` từ User.
32
+
33
+ ## PHẦN E: GIAO DIỆN PREMIUM (grammY Aesthetics)
34
+ Lấy cảm hứng từ `awesome-grammY`:
35
+ - Sử dụng `<b>`, `━━━━━`, Emoji chuyên nghiệp.
36
+ - **Short Callback Data**: Map ID dài vào `shortIdMap` để bypass giới hạn 64 bytes của Telegram.
37
+
38
+ ## PHẦN F: KIẾN TẠO HẠ TẦNG (Deployment Guide)
39
+ Hướng dẫn User thiết lập:
40
+ 1. **Group with Topics**: Tạo Group, thêm Bot làm Admin, bật tính năng Topics.
41
+ 2. **Environment**: Cấu hình `.env` khớp với `start.sh` `stop_bot.sh`.
42
+ - `IDE_PORT`: Mặc định 9555 (Remote Debugging port).
43
+ - `ALLOWED_USER_IDS`: Danh sách trắng ID người dùng.
44
+
45
+ ---
46
+ **Nguồn tham khảo & Ảnh hưởng:**
47
+ - [Remoat](https://github.com/optimistengineer/remoat) - Remote Command & Control.
48
+ - [LazyGravity](https://github.com/tokyoweb3/LazyGravity) - Multi-project & Session management.
49
+ - [grammY](https://grammy.dev/) - Modern Bot Framework.
50
+ - [VFS](https://github.com/TrNgTien/vfs) - Virtual File System for Token Efficiency.
@@ -0,0 +1,33 @@
1
+ # 🧠 ANTIGRAVITY GATEWAY CONFIGURATION (.env.example)
2
+ # ----------------------------------------------------------
3
+
4
+ # [Hạ Tầng Telegram]
5
+ # Lấy token từ @BotFather
6
+ TELEGRAM_BOT_TOKEN="your_bot_token_here"
7
+
8
+ # ID người dùng được phép điều khiển (Bảo mật - Quan trọng!)
9
+ # Lấy ID qua @userinfobot
10
+ ALLOWED_USER_IDS="123456789,987654321"
11
+
12
+ # ID Chat/Group được phép hoạt động (Để tránh Bot bị kéo vào group lạ)
13
+ ALLOWED_CHAT_IDS="-100123456789"
14
+
15
+ # [Cấu Hình IDE]
16
+ # Cổng Debug của Antigravity (Mặc định là 9555)
17
+ # Phải khớp với tham số --remote-debugging-port khi mở Editor
18
+ IDE_PORT=9555
19
+
20
+ # Tên dự án để Bot tự động tìm kiếm target phù hợp trong CDP
21
+ PROJECT_NAME="ceogravity"
22
+
23
+ # Đường dẫn Workspace cơ sở (Dùng cho lệnh /project của LazyGravity)
24
+ WORKSPACE_DIR="/home/tao/Projects"
25
+
26
+ # [Local AI - Ollama]
27
+ # URL của Ollama server (Mặc định: http://localhost:11434)
28
+ OLLAMA_API_URL="http://localhost:11434"
29
+ OLLAMA_MODEL="nemotron"
30
+
31
+ # [Tùy Chọn Khác]
32
+ LOG_LEVEL="info"
33
+ AUTO_ACCEPT_ENABLED=true
@@ -1,35 +1,35 @@
1
- # 🚀 Antigravity Core Rules
1
+ # 🚀 Antigravity Core Rules (v1.1.5)
2
2
 
3
- > This file defines the core operational rules for the AI Agent in this workspace.
3
+ > File này định nghĩa các quy tắc vận hành cốt lõi cho AI Agent trong Workspace này.
4
4
 
5
5
  ---
6
6
 
7
- ## 🛠️ TOKEN SAVING: VFS PROTOCOL (MANDATORY)
7
+ ## 🛠️ GIAO THỨC TIẾT KIỆM TOKEN: VFS (BẮT BUỘC)
8
8
 
9
- **You MUST use `vfs` for code discovery before using `grep` or reading entire files.**
9
+ **Bạn PHẢI sử dụng `vfs` để khám phá nguồn TRƯỚC KHI sử dụng `grep` hoặc đọc toàn bộ nội dung file.**
10
10
 
11
- ### Why use VFS?
12
- `vfs` extracts logical signatures (functions, classes, types) without reading the bodies. This saves up to 98% of tokens compared to raw file reads.
11
+ ### Tại sao lại dùng VFS?
12
+ Theo tiêu chuẩn [VFS (Virtual File System)](https://github.com/TrNgTien/vfs), việc trích xuất chữ logic (hàm, lớp, kiểu) giúp tiết kiệm đến 98% token so với việc đọc file thô.
13
13
 
14
- ### Usage Protocol
15
- 1. **Locate**: Use `vfs search` or `vfs <path>` to find the logical structure.
16
- 2. **Review**: Analyze the signatures returned by `vfs`.
17
- 3. **Read**: Only read the specific line ranges identified via `vfs`.
14
+ ### Giao thức sử dụng
15
+ 1. **Định vị**: Dùng `vfs search` hoặc `vfs .` để tìm cấu trúc logic.
16
+ 2. **Review**: Phân tích các chữ ký (signatures) được trả về.
17
+ 3. **Đọc**: Chỉ đọc những dải dòng (line ranges) cụ thể đã được xác định qua VFS.
18
18
 
19
- ### Commands
19
+ ### Lệnh thực thi
20
20
  - **CLI**: `vfs . -f <function_name>`
21
- - **MCP**: Use the `vfs` MCP tool if available.
21
+ - **MCP**: Sử dụng công cụ `vfs` nếu sẵn trong bộ skill.
22
22
 
23
23
  ---
24
24
 
25
- ## 🤖 MODEL SELECTION
25
+ ## 🤖 CHIẾN LƯỢC CHỌN MÔ HÌNH (MODEL SELECTION)
26
26
 
27
- - **Simple Tasks**: Prefer local Ollama models (e.g., `nemotron`, `llama3`) to save cloud budget.
28
- - **Complex Tasks**: Use high-tier models (e.g., `Claude 3.5 Sonnet`, `Gemini 1.5 Pro`).
27
+ - **Tác vụ đơn giản**: Ưu tiên sử dụng mô hình Local qua **Ollama** (Vd: `nemotron`, `llama3`) để tiết kiệm chi phí cloud.
28
+ - **Tác vụ phức tạp**: Sử dụng các mô hình cao cấp (Vd: `Claude 3.5 Sonnet`, `Gemini 1.5 Pro`).
29
29
 
30
30
  ---
31
31
 
32
32
  ## 🧹 CLEAN CODE
33
- - Write self-documenting code.
34
- - Avoid over-engineering.
35
- - Follow the patterns defined in `.agent/skills/clean-code`.
33
+ - Viết mã tự giải thích (Self-documenting).
34
+ - Tránh Over-engineering.
35
+ - Tuân thủ các pattern định nghĩa trong `.agent/skills/clean-code`.
@@ -0,0 +1,25 @@
1
+ #!/bin/bash
2
+
3
+ # 🧠 ANTIGRAVITY STARTUP SCRIPT (Standard v1.1.5)
4
+ # --------------------------------------------------
5
+ # Script này khởi động Antigravity Bot với cấu hình từ .env
6
+
7
+ # 1. Load configuration
8
+ if [ -f .env ]; then
9
+ export $(grep -v '^#' .env | xargs)
10
+ else
11
+ echo "❌ Lỗi: Không tìm thấy file .env. Vui lòng tạo từ .env.example"
12
+ exit 1
13
+ fi
14
+
15
+ # 2. Defaults
16
+ IDE_PORT=${IDE_PORT:-9555}
17
+ PROJECT_NAME=${PROJECT_NAME:-"ceogravity"}
18
+
19
+ echo "🚀 Đang khởi động Antigravity Gateway..."
20
+ echo "📂 Dự án: $PROJECT_NAME"
21
+ echo "🔌 Cổng Debug: $IDE_PORT"
22
+
23
+ # 3. Start Bot (Sử dụng tsx để chạy TypeScript trực tiếp)
24
+ # Ghi chú: Đảm bảo Antigravity IDE đã được mở với --remote-debugging-port=$IDE_PORT
25
+ npx tsx src/index.ts
@@ -0,0 +1,17 @@
1
+ #!/bin/bash
2
+
3
+ # 🛑 ANTIGRAVITY STOP SCRIPT (Standard v1.1.5)
4
+ # --------------------------------------------------
5
+
6
+ # Tìm và giết các tiến trình liên quan đến bot
7
+ echo "🛑 Đang dừng Antigravity Gateway..."
8
+
9
+ # Tìm PID của tsx src/index.ts
10
+ PIDS=$(pgrep -f "tsx src/index.ts")
11
+
12
+ if [ -z "$PIDS" ]; then
13
+ echo "⚠️ Không tìm thấy tiến trình Bot đang chạy."
14
+ else
15
+ kill $PIDS
16
+ echo "✅ Đã dừng Bot (PIDs: $PIDS)"
17
+ fi