vg-coder-cli 2.0.9 → 2.0.11
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/DEVELOPMENT.md +95 -0
- package/README.md +19 -0
- package/SYSTEM_PROMPT.md +157 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +206 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +206 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +210 -0
- package/coverage/lcov-report/src/detectors/index.html +116 -0
- package/coverage/lcov-report/src/detectors/project-detector.js.html +1084 -0
- package/coverage/lcov-report/src/exporter/html-exporter.js.html +2839 -0
- package/coverage/lcov-report/src/exporter/index.html +116 -0
- package/coverage/lcov-report/src/ignore/ignore-manager.js.html +979 -0
- package/coverage/lcov-report/src/ignore/index.html +116 -0
- package/coverage/lcov-report/src/index.html +116 -0
- package/coverage/lcov-report/src/index.js.html +928 -0
- package/coverage/lcov-report/src/scanner/file-scanner.js.html +1903 -0
- package/coverage/lcov-report/src/scanner/index.html +116 -0
- package/coverage/lcov-report/src/tokenizer/index.html +116 -0
- package/coverage/lcov-report/src/tokenizer/token-manager.js.html +1252 -0
- package/coverage/lcov-report/src/utils/helpers.js.html +469 -0
- package/coverage/lcov-report/src/utils/index.html +116 -0
- package/coverage/lcov.info +1396 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/coverage/src/detectors/index.html +116 -0
- package/coverage/src/detectors/project-detector.js.html +1084 -0
- package/coverage/src/exporter/html-exporter.js.html +2839 -0
- package/coverage/src/exporter/index.html +116 -0
- package/coverage/src/ignore/ignore-manager.js.html +979 -0
- package/coverage/src/ignore/index.html +116 -0
- package/coverage/src/index.html +116 -0
- package/coverage/src/index.js.html +928 -0
- package/coverage/src/scanner/file-scanner.js.html +1903 -0
- package/coverage/src/scanner/index.html +116 -0
- package/coverage/src/tokenizer/index.html +116 -0
- package/coverage/src/tokenizer/token-manager.js.html +1252 -0
- package/coverage/src/utils/helpers.js.html +469 -0
- package/coverage/src/utils/index.html +116 -0
- package/jest.config.js +16 -0
- package/package.json +5 -3
- package/scripts/build.js +40 -0
- package/src/server/api-server.js +15 -0
- package/src/server/views/css/iframe.css +84 -0
- package/src/server/views/css/structure.css +63 -37
- package/src/server/views/dashboard.css +127 -310
- package/src/server/views/dashboard.html +165 -119
- package/src/server/views/js/features/iframe-manager.js +56 -0
- package/src/server/views/js/main.js +64 -0
- package/src/server/views/vg-coder/assets/icon128.png +0 -0
- package/src/server/views/vg-coder/assets/icon16.png +0 -0
- package/src/server/views/vg-coder/assets/icon48.png +0 -0
- package/src/server/views/vg-coder/background.js +2 -0
- package/src/server/views/vg-coder/background.js.LICENSE.txt +118 -0
- package/src/server/views/vg-coder/controller.js +1 -0
- package/src/server/views/vg-coder/manifest.json +58 -0
- package/src/server/views/vg-coder/options.css +164 -0
- package/src/server/views/vg-coder/options.html +48 -0
- package/src/server/views/vg-coder/options.js +1 -0
- package/src/server/views/vg-coder/rules.json +23 -0
- package/vg-coder-cli-2.0.11.tgz +0 -0
- package/vg-coder.zip +0 -0
- package/vg-coder-cli-2.0.8.tgz +0 -0
- package/vg-coder-cli-2.0.9.tgz +0 -0
package/scripts/build.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const AdmZip = require('adm-zip');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const fs = require('fs-extra');
|
|
4
|
+
|
|
5
|
+
async function build() {
|
|
6
|
+
try {
|
|
7
|
+
const rootDir = path.resolve(__dirname, '..');
|
|
8
|
+
const zipPath = path.join(rootDir, 'vg-coder.zip');
|
|
9
|
+
const targetDir = path.join(rootDir, 'src', 'server', 'views', 'vg-coder');
|
|
10
|
+
|
|
11
|
+
console.log('🏗️ Starting build process...');
|
|
12
|
+
|
|
13
|
+
// 1. Check if zip exists
|
|
14
|
+
if (!fs.existsSync(zipPath)) {
|
|
15
|
+
console.error('⚠️ vg-coder.zip not found at root. Skipping extension extraction.');
|
|
16
|
+
// We don't exit 1 here to allow build to continue if zip is missing in dev
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// 2. Clean old directory
|
|
21
|
+
if (fs.existsSync(targetDir)) {
|
|
22
|
+
console.log('🧹 Cleaning old extension directory...');
|
|
23
|
+
fs.removeSync(targetDir);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// 3. Unzip
|
|
27
|
+
console.log('📦 Unzipping vg-coder.zip...');
|
|
28
|
+
const zip = new AdmZip(zipPath);
|
|
29
|
+
zip.extractAllTo(targetDir, true);
|
|
30
|
+
|
|
31
|
+
console.log(`✅ Extension extracted to: ${targetDir}`);
|
|
32
|
+
console.log('🚀 Build completed successfully!');
|
|
33
|
+
|
|
34
|
+
} catch (error) {
|
|
35
|
+
console.error('❌ Build failed:', error);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
build();
|
package/src/server/api-server.js
CHANGED
|
@@ -60,6 +60,21 @@ class ApiServer {
|
|
|
60
60
|
});
|
|
61
61
|
});
|
|
62
62
|
|
|
63
|
+
// NEW: Get Extension Path
|
|
64
|
+
this.app.get('/api/extension-path', (req, res) => {
|
|
65
|
+
try {
|
|
66
|
+
const extensionPath = path.join(__dirname, 'views', 'vg-coder');
|
|
67
|
+
const exists = fs.existsSync(extensionPath);
|
|
68
|
+
|
|
69
|
+
res.json({
|
|
70
|
+
path: extensionPath,
|
|
71
|
+
exists: exists
|
|
72
|
+
});
|
|
73
|
+
} catch (error) {
|
|
74
|
+
res.status(500).json({ error: error.message });
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
|
|
63
78
|
// Analyze endpoint - returns project.txt file
|
|
64
79
|
this.app.post('/api/analyze', async (req, res) => {
|
|
65
80
|
try {
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/* Right Panel Layout */
|
|
2
|
+
.right-panel {
|
|
3
|
+
flex: 1;
|
|
4
|
+
height: 100%;
|
|
5
|
+
background: #fff;
|
|
6
|
+
position: relative;
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/* AI Header Styles */
|
|
12
|
+
.ai-header {
|
|
13
|
+
height: 50px;
|
|
14
|
+
background: var(--ios-bg);
|
|
15
|
+
border-bottom: 1px solid var(--ios-separator);
|
|
16
|
+
display: flex;
|
|
17
|
+
align-items: center;
|
|
18
|
+
padding: 0 15px;
|
|
19
|
+
gap: 10px;
|
|
20
|
+
justify-content: space-between;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.ai-select-group {
|
|
24
|
+
display: flex;
|
|
25
|
+
align-items: center;
|
|
26
|
+
gap: 10px;
|
|
27
|
+
flex: 1;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.ai-select {
|
|
31
|
+
padding: 6px 12px;
|
|
32
|
+
border-radius: 8px;
|
|
33
|
+
border: 1px solid var(--ios-separator);
|
|
34
|
+
background: var(--ios-card);
|
|
35
|
+
color: var(--text-primary);
|
|
36
|
+
font-size: 13px;
|
|
37
|
+
font-weight: 500;
|
|
38
|
+
min-width: 200px;
|
|
39
|
+
outline: none;
|
|
40
|
+
cursor: pointer;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* Iframe Container */
|
|
44
|
+
.ai-iframe-container {
|
|
45
|
+
flex: 1;
|
|
46
|
+
position: relative;
|
|
47
|
+
width: 100%;
|
|
48
|
+
background: #fff;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.right-panel iframe {
|
|
52
|
+
width: 100%;
|
|
53
|
+
height: 100%;
|
|
54
|
+
border: none;
|
|
55
|
+
position: relative;
|
|
56
|
+
z-index: 2;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* Placeholder underneath iframe */
|
|
60
|
+
.iframe-placeholder {
|
|
61
|
+
position: absolute;
|
|
62
|
+
top: 50%;
|
|
63
|
+
left: 50%;
|
|
64
|
+
transform: translate(-50%, -50%);
|
|
65
|
+
text-align: center;
|
|
66
|
+
color: var(--text-secondary);
|
|
67
|
+
z-index: 1;
|
|
68
|
+
width: 100%;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.link-fallback {
|
|
72
|
+
color: var(--ios-blue);
|
|
73
|
+
text-decoration: none;
|
|
74
|
+
margin-top: 10px;
|
|
75
|
+
display: inline-block;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* Mobile Responsive adjustment for right panel */
|
|
79
|
+
@media (max-width: 768px) {
|
|
80
|
+
.right-panel {
|
|
81
|
+
flex: 1;
|
|
82
|
+
height: 50vh;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -1,74 +1,83 @@
|
|
|
1
|
-
/* Tree View Styles */
|
|
1
|
+
/* Tree View Styles Compact */
|
|
2
2
|
.tree-container {
|
|
3
|
-
margin-top:
|
|
3
|
+
margin-top: 15px;
|
|
4
4
|
background: var(--ios-input-bg);
|
|
5
|
-
border-radius:
|
|
5
|
+
border-radius: 8px;
|
|
6
6
|
overflow: hidden;
|
|
7
|
-
border: 1px solid rgba(0,0,0,0.05);
|
|
7
|
+
border: 1px solid rgba(0, 0, 0, 0.05);
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
.tree-header {
|
|
11
|
-
padding: 12px
|
|
12
|
-
background: rgba(0,0,0,0.03);
|
|
13
|
-
border-bottom: 1px solid rgba(0,0,0,0.05);
|
|
11
|
+
padding: 8px 12px;
|
|
12
|
+
background: rgba(0, 0, 0, 0.03);
|
|
13
|
+
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
|
|
14
14
|
font-weight: 600;
|
|
15
15
|
display: flex;
|
|
16
16
|
justify-content: space-between;
|
|
17
17
|
align-items: center;
|
|
18
18
|
color: var(--text-primary);
|
|
19
|
+
font-size: 12px;
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
.tree-content {
|
|
22
|
-
padding:
|
|
23
|
+
padding: 5px;
|
|
23
24
|
font-family: 'SF Mono', 'Menlo', monospace;
|
|
24
|
-
font-size:
|
|
25
|
+
font-size: 11px;
|
|
26
|
+
/* Smaller tree font */
|
|
25
27
|
overflow-x: auto;
|
|
28
|
+
max-height: 400px;
|
|
29
|
+
overflow-y: auto;
|
|
26
30
|
}
|
|
27
31
|
|
|
28
32
|
.tree-ul {
|
|
29
33
|
list-style: none;
|
|
30
|
-
padding-left:
|
|
34
|
+
padding-left: 16px;
|
|
35
|
+
/* Reduced indentation */
|
|
31
36
|
margin: 0;
|
|
32
37
|
border-left: 1px solid var(--ios-separator);
|
|
33
38
|
}
|
|
34
39
|
|
|
35
40
|
/* Root level shouldn't have border */
|
|
36
|
-
.tree-content
|
|
41
|
+
.tree-content>.tree-ul {
|
|
37
42
|
border-left: none;
|
|
38
43
|
padding-left: 0;
|
|
39
44
|
}
|
|
40
45
|
|
|
41
46
|
.tree-li {
|
|
42
|
-
margin:
|
|
47
|
+
margin: 1px 0;
|
|
48
|
+
/* Compact spacing */
|
|
43
49
|
position: relative;
|
|
44
50
|
}
|
|
45
51
|
|
|
46
52
|
.tree-item-row {
|
|
47
53
|
display: flex;
|
|
48
54
|
align-items: center;
|
|
49
|
-
padding:
|
|
50
|
-
|
|
55
|
+
padding: 2px 6px;
|
|
56
|
+
/* Compact row padding */
|
|
57
|
+
border-radius: 4px;
|
|
51
58
|
cursor: pointer;
|
|
52
59
|
transition: background 0.1s;
|
|
60
|
+
line-height: 1.2;
|
|
53
61
|
}
|
|
54
62
|
|
|
55
63
|
.tree-item-row:hover {
|
|
56
|
-
background: rgba(0,0,0,0.05);
|
|
64
|
+
background: rgba(0, 0, 0, 0.05);
|
|
57
65
|
}
|
|
58
66
|
|
|
59
67
|
/* Checkbox Style */
|
|
60
68
|
.tree-checkbox {
|
|
61
|
-
margin-right:
|
|
69
|
+
margin-right: 6px;
|
|
62
70
|
cursor: pointer;
|
|
63
|
-
width:
|
|
64
|
-
|
|
71
|
+
width: 14px;
|
|
72
|
+
/* Smaller checkbox */
|
|
73
|
+
height: 14px;
|
|
65
74
|
accent-color: var(--ios-blue);
|
|
66
75
|
}
|
|
67
76
|
|
|
68
77
|
.tree-icon {
|
|
69
|
-
margin-right:
|
|
70
|
-
font-size:
|
|
71
|
-
width:
|
|
78
|
+
margin-right: 6px;
|
|
79
|
+
font-size: 12px;
|
|
80
|
+
width: 14px;
|
|
72
81
|
text-align: center;
|
|
73
82
|
}
|
|
74
83
|
|
|
@@ -77,46 +86,63 @@
|
|
|
77
86
|
white-space: nowrap;
|
|
78
87
|
overflow: hidden;
|
|
79
88
|
text-overflow: ellipsis;
|
|
80
|
-
margin-right:
|
|
89
|
+
margin-right: 8px;
|
|
81
90
|
color: var(--text-primary);
|
|
82
91
|
}
|
|
83
92
|
|
|
84
93
|
/* Token Badges */
|
|
85
94
|
.token-badge {
|
|
86
|
-
font-size:
|
|
87
|
-
|
|
88
|
-
|
|
95
|
+
font-size: 9px;
|
|
96
|
+
/* Very small badge */
|
|
97
|
+
padding: 1px 4px;
|
|
98
|
+
border-radius: 3px;
|
|
89
99
|
font-weight: 600;
|
|
90
|
-
min-width:
|
|
100
|
+
min-width: 30px;
|
|
91
101
|
text-align: center;
|
|
92
102
|
}
|
|
93
103
|
|
|
94
|
-
.token-low {
|
|
95
|
-
|
|
96
|
-
|
|
104
|
+
.token-low {
|
|
105
|
+
background: rgba(52, 199, 89, 0.15);
|
|
106
|
+
color: var(--ios-green);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* < 2k */
|
|
110
|
+
.token-med {
|
|
111
|
+
background: rgba(255, 149, 0, 0.15);
|
|
112
|
+
color: #FF9500;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* 2k - 5k */
|
|
116
|
+
.token-high {
|
|
117
|
+
background: rgba(255, 59, 48, 0.15);
|
|
118
|
+
color: var(--ios-red);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/* > 5k */
|
|
97
122
|
|
|
98
123
|
/* Folder toggle states */
|
|
99
|
-
.tree-li
|
|
100
|
-
display: block;
|
|
124
|
+
.tree-li>.tree-ul {
|
|
125
|
+
display: block;
|
|
126
|
+
/* Default expanded */
|
|
101
127
|
}
|
|
102
128
|
|
|
103
|
-
.tree-li.collapsed
|
|
129
|
+
.tree-li.collapsed>.tree-ul {
|
|
104
130
|
display: none;
|
|
105
131
|
}
|
|
106
132
|
|
|
107
133
|
.arrow {
|
|
108
134
|
display: inline-block;
|
|
109
|
-
width:
|
|
110
|
-
font-size:
|
|
135
|
+
width: 10px;
|
|
136
|
+
font-size: 8px;
|
|
111
137
|
color: var(--text-secondary);
|
|
112
138
|
transition: transform 0.2s;
|
|
113
|
-
margin-right:
|
|
139
|
+
margin-right: 2px;
|
|
114
140
|
}
|
|
115
141
|
|
|
116
|
-
.tree-li.collapsed
|
|
142
|
+
.tree-li.collapsed>.tree-item-row .arrow {
|
|
117
143
|
transform: rotate(-90deg);
|
|
118
144
|
}
|
|
119
145
|
|
|
120
146
|
.tree-li:not(.has-children) .arrow {
|
|
121
147
|
visibility: hidden;
|
|
122
|
-
}
|
|
148
|
+
}
|