vg-coder-cli 2.0.30 → 2.0.32

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.
Files changed (40) hide show
  1. package/ARCHITECTURE.md +255 -0
  2. package/README.md +0 -11
  3. package/change.sh +0 -0
  4. package/dist/vg-coder-bundle.js +42 -0
  5. package/gulpfile.js +111 -0
  6. package/package.json +19 -11
  7. package/scripts/postinstall.js +13 -3
  8. package/src/index.js +28 -220
  9. package/src/server/api-server.js +120 -428
  10. package/src/server/views/css/bubble.css +81 -0
  11. package/src/server/views/css/code-viewer.css +58 -0
  12. package/src/server/views/css/terminal.css +59 -155
  13. package/src/server/views/dashboard.css +78 -678
  14. package/src/server/views/dashboard.html +39 -278
  15. package/src/server/views/js/api.js +2 -22
  16. package/src/server/views/js/config.js +27 -15
  17. package/src/server/views/js/event-protocol.js +263 -0
  18. package/src/server/views/js/features/bubble-features/index.js +125 -0
  19. package/src/server/views/js/features/bubble-features/paste-run-feature.js +16 -0
  20. package/src/server/views/js/features/bubble-features/terminal-feature.js +16 -0
  21. package/src/server/views/js/features/bubble.js +175 -0
  22. package/src/server/views/js/features/code-viewer.js +90 -0
  23. package/src/server/views/js/features/commands.js +34 -81
  24. package/src/server/views/js/features/editor-tabs.js +19 -46
  25. package/src/server/views/js/features/git-view.js +63 -81
  26. package/src/server/views/js/features/iframe-manager.js +3 -97
  27. package/src/server/views/js/features/monaco-manager.js +19 -39
  28. package/src/server/views/js/features/project-switcher.js +7 -63
  29. package/src/server/views/js/features/resize.js +5 -16
  30. package/src/server/views/js/features/structure.js +38 -106
  31. package/src/server/views/js/features/terminal.js +102 -418
  32. package/src/server/views/js/handlers.js +60 -43
  33. package/src/server/views/js/main.js +75 -179
  34. package/src/server/views/js/shadow-entry.js +21 -0
  35. package/src/server/views/js/utils.js +48 -28
  36. package/src/server/views/vg-coder/_metadata/generated_indexed_rulesets/_ruleset1 +0 -0
  37. package/src/server/views/vg-coder/controller.js +33 -258
  38. package/vetgo-auto/chrome/src/utils/injector-script.ts +33 -258
  39. package/vetgo-auto/vg-coder.zip +0 -0
  40. package/src/server/views/dashboard.js +0 -457
@@ -0,0 +1,255 @@
1
+ # VG Coder - Project Architecture Guide
2
+
3
+ Tài liệu này giải thích cách thức hoạt động của hệ thống VG Coder, vai trò của từng thành phần và cách để một lập trình viên mới bắt đầu phát triển tính năng.
4
+
5
+ ---
6
+
7
+ ## 1. Tổng quan hệ thống (System Overview)
8
+
9
+ VG Coder là một bộ công cụ hỗ trợ lập trình bằng AI, hoạt động dựa trên sự kết hợp của 3 thành phần chính:
10
+
11
+ 1. **CLI / API Server (Node.js/Express):** Chạy dưới máy cục bộ (Localhost:6868). Nhiệm vụ: Quét mã nguồn, đếm token, thực thi lệnh Terminal và quản lý file.
12
+ 2. **Frontend Dashboard (HTML/CSS/JS):** Giao diện người dùng. Được build thành một file duy nhất (`vg-coder-bundle.js`).
13
+ 3. **Browser Extension:** "Cầu nối" giúp nhúng Dashboard trực tiếp vào các trang web AI (ChatGPT, Claude) bằng công nghệ **Shadow DOM**.
14
+
15
+ ## 2. Sơ đồ luồng (Flow Diagrams)
16
+
17
+ ### A. Luồng khởi tạo (Initialization Flow)
18
+ Khi bạn chạy `vg start` và mở trang ChatGPT:
19
+
20
+ ```mermaid
21
+ sequenceDiagram
22
+ participant U as User
23
+ participant S as Local Server (6868)
24
+ participant E as Browser Extension
25
+ participant P as AI Page (ChatGPT)
26
+ participant D as Shadow DOM Dashboard
27
+
28
+ U->>S: Chạy lệnh `vg start`
29
+ U->>P: Truy cập chatgpt.com
30
+ E->>P: Kiểm tra Domain AI
31
+ E->>S: Fetch `dist/vg-coder-bundle.js`
32
+ S-->>E: Trả về toàn bộ Code Dashboard
33
+ E->>P: Tạo Shadow Root & Inject Bundle
34
+ P->>D: Dashboard hiển thị (Bong bóng 🚀)
35
+ ```
36
+
37
+ ### B. Luồng thực thi tính năng (Feature Execution)
38
+ Ví dụ khi người dùng nhấn nút "Execute Bash":
39
+
40
+ ```mermaid
41
+ graph LR
42
+ A[Giao diện Dashboard] -- Click Run --> B[utils.js: getById]
43
+ B -- Lấy nội dung --> C[api.js: fetch]
44
+ C -- POST /api/execute --> D[Server: Express Route]
45
+ D -- Chạy shell --> E[BashExecutor]
46
+ E -- Trả về stdout --> D
47
+ D -- JSON response --> C
48
+ C -- Hiển thị --> F[Dashboard: Response Area]
49
+ ```
50
+
51
+ ---
52
+
53
+ ## 3. Các thành phần chi tiết
54
+
55
+ ### 📂 Server (`src/server/`)
56
+ * **`api-server.js`**: Định nghĩa các điểm cuối (Endpoints) cho UI gọi vào.
57
+ * **`project-manager.js`**: Quản lý việc chạy nhiều dự án cùng lúc (Leader/Follower).
58
+ * **`terminal-manager.js`**: Sử dụng `node-pty` để tạo các session Terminal thực trên máy tính.
59
+
60
+ ### 📂 Frontend (`src/server/views/`)
61
+ Đây là nơi bạn phát triển tính năng mới.
62
+ * **`js/features/`**: Mỗi tính năng (Git, Terminal, Tree View) nằm trong một file riêng.
63
+ * **`js/utils.js`**: Chứa các helper quan trọng. **Lưu ý:** Tuyệt đối không dùng `document.getElementById`, phải dùng `getById()` vì App chạy trong Shadow DOM.
64
+ * **`js/shadow-entry.js`**: Điểm vào (Entry point) để kết nối Dashboard với môi trường Shadow DOM của Extension.
65
+
66
+ ### 📦 Build System (`gulpfile.js`)
67
+ Do Extension không thể tải từng file JS/CSS lẻ từ Localhost vì lý do bảo mật (CORS/CSP), Gulp sẽ:
68
+ 1. Gom tất cả CSS thành một chuỗi.
69
+ 2. Nén HTML thành một chuỗi.
70
+ 3. Bundle toàn bộ JS bằng Webpack.
71
+ 4. Đóng gói tất cả vào file `dist/vg-coder-bundle.js`.
72
+
73
+ ---
74
+
75
+ ## 4. Event Protocol & Feature System
76
+
77
+ VG Coder sử dụng **Event-Driven Architecture** để quản lý giao tiếp giữa các component, đặc biệt là bubble menu features. Hệ thống này cho phép:
78
+ - ✅ Tách biệt UI và logic xử lý
79
+ - ✅ Thêm features mới mà không cần sửa code cũ
80
+ - ✅ Giao tiếp cross-context (window, shadow-root, iframe)
81
+ - ✅ Test features độc lập
82
+
83
+ ### Thành phần chính
84
+
85
+ #### 1. Event Protocol (`event-protocol.js`)
86
+
87
+ Định nghĩa giao thức event chuẩn:
88
+
89
+ ```javascript
90
+ // Event format
91
+ {
92
+ type: 'vg:paste-run', // Event type
93
+ source: 'bubble-menu', // Source component
94
+ target: 'handlers', // Target component
95
+ payload: { /* data */ }, // Event data
96
+ timestamp: 1234567890, // Timestamp
97
+ context: 'shadow-root' // Execution context
98
+ }
99
+ ```
100
+
101
+ **Event Types:**
102
+ - `vg:paste-run` - Paste & Run from Clipboard
103
+ - `vg:terminal-new` - Open New Terminal
104
+ - `vg:terminal-execute` - Execute command in terminal
105
+
106
+ #### 2. Event Dispatcher
107
+
108
+ `EventDispatcher` class quản lý event registration và dispatching:
109
+
110
+ ```javascript
111
+ import { globalDispatcher, EVENT_TYPES } from './event-protocol.js';
112
+
113
+ // Register listener
114
+ globalDispatcher.on(EVENT_TYPES.PASTE_RUN, async (event) => {
115
+ console.log('Event received:', event);
116
+ // Handle event
117
+ });
118
+
119
+ // Dispatch event
120
+ globalDispatcher.dispatch({
121
+ type: EVENT_TYPES.PASTE_RUN,
122
+ source: 'bubble-menu',
123
+ target: 'handlers',
124
+ payload: { /* data */ }
125
+ });
126
+ ```
127
+
128
+ #### 3. Feature Registry (`features/bubble-features/`)
129
+
130
+ Quản lý bubble menu features:
131
+
132
+ ```javascript
133
+ // Feature structure
134
+ {
135
+ id: 'paste-run',
136
+ icon: '📋',
137
+ label: 'Paste & Run from Clipboard',
138
+ tooltip: 'Paste & Run from Clipboard',
139
+ eventType: EVENT_TYPES.PASTE_RUN,
140
+ permissions: ['clipboard-read'],
141
+ enabled: true,
142
+ order: 1
143
+ }
144
+ ```
145
+
146
+ ### Cách thêm Bubble Menu Feature mới
147
+
148
+ **Bước 1:** Tạo event type mới trong `event-protocol.js`:
149
+
150
+ ```javascript
151
+ export const EVENT_TYPES = {
152
+ // Existing types...
153
+ MY_FEATURE: 'vg:my-feature', // New event type
154
+ };
155
+ ```
156
+
157
+ **Bước 2:** Tạo feature definition (`features/bubble-features/my-feature.js`):
158
+
159
+ ```javascript
160
+ import { EVENT_TYPES } from '../../event-protocol.js';
161
+
162
+ export const MyFeature = {
163
+ id: 'my-feature',
164
+ icon: '⚡',
165
+ label: 'My Feature',
166
+ tooltip: 'Do something cool',
167
+ eventType: EVENT_TYPES.MY_FEATURE,
168
+ permissions: [],
169
+ enabled: true,
170
+ order: 3,
171
+ };
172
+ ```
173
+
174
+ **Bước 3:** Register feature trong `features/bubble-features/index.js`:
175
+
176
+ ```javascript
177
+ import { MyFeature } from './my-feature.js';
178
+
179
+ // Register
180
+ featureRegistry.register(MyFeature);
181
+ ```
182
+
183
+ **Bước 4:** Add event handler trong `handlers.js`:
184
+
185
+ ```javascript
186
+ export function initEventHandlers() {
187
+ // Existing handlers...
188
+
189
+ // My Feature handler
190
+ globalDispatcher.on(EVENT_TYPES.MY_FEATURE, (event) => {
191
+ console.log('[Handlers] My Feature event:', event);
192
+ // Implement your logic here
193
+ });
194
+ }
195
+ ```
196
+
197
+ **Bước 5:** Build và test:
198
+
199
+ ```bash
200
+ npm run build
201
+ vg start
202
+ ```
203
+
204
+ Feature sẽ tự động xuất hiện trong bubble menu! 🎉
205
+
206
+ ### Debug Event System
207
+
208
+ Sử dụng browser console để debug:
209
+
210
+ ```javascript
211
+ // Enable debug mode
212
+ window.__VG_EVENT_DISPATCHER__.setDebug(true);
213
+
214
+ // View registered features
215
+ console.log(window.__VG_FEATURE_REGISTRY__.getFeatures());
216
+
217
+ // View event history
218
+ console.log(window.__VG_EVENT_DISPATCHER__.getHistory());
219
+
220
+ // Test dispatch manually
221
+ window.__VG_EVENT_DISPATCHER__.dispatch({
222
+ type: 'vg:paste-run',
223
+ source: 'test',
224
+ target: 'handlers',
225
+ payload: {}
226
+ });
227
+ ```
228
+
229
+ ---
230
+
231
+ ## 5. Hướng dẫn phát triển tính năng mới
232
+
233
+ Nếu bạn muốn thêm tính năng mới (Ví dụ: "Database Manager"):
234
+
235
+ 1. **Backend:** Thêm Route vào `src/server/api-server.js` để xử lý logic phía máy tính.
236
+ 2. **Frontend Markup:** Thêm HTML vào `src/server/views/dashboard.html`.
237
+ 3. **Frontend Style:** Tạo file `src/server/views/css/db-manager.css`.
238
+ 4. **Frontend Logic:**
239
+ * Tạo `src/server/views/js/features/db-manager.js`.
240
+ * Dùng `import { getById } from '../utils.js'` để lấy element.
241
+ * Gán hàm vào `window` nếu cần gọi từ HTML (ví dụ: `window.openDB = ...`).
242
+ 5. **Đăng ký:** Import và khởi tạo trong `src/server/views/js/main.js`.
243
+ 6. **Build:** Chạy `npm run build` để cập nhật file bundle.
244
+
245
+ ---
246
+
247
+ ## 6. Các quy tắc "Sống còn" cho người mới
248
+
249
+ 1. **Shadow DOM Context:** Dashboard không thể thấy biến của trang web (ChatGPT) và ngược lại. Mọi thao tác DOM của Dashboard phải qua `getById()` hoặc `qs()`.
250
+ 2. **API Base:** Luôn sử dụng biến `API_BASE` từ `config.js` khi dùng `fetch`. Nó tự động nhận diện khi nào cần gọi về `localhost:6868`.
251
+ 3. **Z-Index:** Bong bóng 🚀 có z-index là `2147483647` để luôn nằm trên cùng. Các modal của bạn nên có z-index thấp hơn mức này một chút.
252
+ 4. **No Stdin in Terminal:** Do Shadow DOM chặn một số sự kiện bàn phím, Terminal được thiết kế theo kiểu "Input riêng - Output riêng".
253
+
254
+ ---
255
+ Tài liệu này được cập nhật vào tháng 12/2025.
package/README.md CHANGED
@@ -40,12 +40,6 @@ npm install -g vg-coder-cli
40
40
  npm install vg-coder-cli
41
41
  ```
42
42
 
43
- ### Từ Source
44
- ```bash
45
- git clone https://github.com/tinhthanh/vg-coder-cli.git
46
- cd vg-coder-cli
47
- npm install
48
- ```
49
43
 
50
44
  ## 🚀 Sử dụng
51
45
 
@@ -339,11 +333,6 @@ npm run push
339
333
 
340
334
  MIT License - xem file [LICENSE](LICENSE) để biết thêm chi tiết.
341
335
 
342
- ## 🔗 Links
343
-
344
- - **GitHub**: https://github.com/tinhthanh/vg-coder-cli
345
- - **NPM**: https://www.npmjs.com/package/vg-coder-cli
346
- - **Issues**: https://github.com/tinhthanh/vg-coder-cli/issues
347
336
 
348
337
  ## 📊 Version History
349
338
 
package/change.sh ADDED
File without changes