viberadar 0.2.0 → 0.2.1
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/init/prompt-builder.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/init/prompt-builder.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAyHD,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CA6BlE;AAwCD,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CA0FzD"}
|
|
@@ -37,13 +37,27 @@ exports.buildSnapshot = buildSnapshot;
|
|
|
37
37
|
exports.buildPrompt = buildPrompt;
|
|
38
38
|
const fs = __importStar(require("fs"));
|
|
39
39
|
const path = __importStar(require("path"));
|
|
40
|
-
// ───
|
|
41
|
-
const
|
|
40
|
+
// ─── Директории которые не несут бизнес-смысла для агента ─────────────────────
|
|
41
|
+
const IGNORE_BUILD = new Set([
|
|
42
42
|
'node_modules', 'dist', 'build', '.git', '.next', 'coverage',
|
|
43
|
-
'.nyc_output', '__pycache__', '.venv', '.turbo', '.cache',
|
|
43
|
+
'.nyc_output', '__pycache__', '.venv', '.turbo', '.cache', '.idea',
|
|
44
|
+
'.vscode', 'playwright-report', 'test-results',
|
|
45
|
+
]);
|
|
46
|
+
// Папки с документацией/артефактами — показываем в дереве но не углубляемся
|
|
47
|
+
const IGNORE_DEEP = new Set([
|
|
48
|
+
'migrations', 'Releases', 'Backlog', 'attached_assets', 'temp',
|
|
49
|
+
'grant-start-AI', 'initdb', 'pdfFonts', 'fonts', 'public',
|
|
50
|
+
'Confluence', 'test-cases', 'user-guide', 'docs',
|
|
51
|
+
]);
|
|
52
|
+
// Шаблонные имена пакетов — заменяем на имя папки
|
|
53
|
+
const TEMPLATE_NAMES = new Set([
|
|
54
|
+
'rest-express', 'my-app', 'app', 'project', 'starter', 'template',
|
|
55
|
+
'nextjs-app', 'vite-app', 'react-app', 'express-app', 'node-app',
|
|
56
|
+
'backend', 'frontend', 'fullstack', 'monorepo', 'webapp',
|
|
44
57
|
]);
|
|
58
|
+
// ─── Сканирование структуры проекта ───────────────────────────────────────────
|
|
45
59
|
function buildDirTree(dir, prefix = '', depth = 0) {
|
|
46
|
-
if (depth >
|
|
60
|
+
if (depth > 3)
|
|
47
61
|
return '';
|
|
48
62
|
let result = '';
|
|
49
63
|
let entries;
|
|
@@ -54,7 +68,7 @@ function buildDirTree(dir, prefix = '', depth = 0) {
|
|
|
54
68
|
return '';
|
|
55
69
|
}
|
|
56
70
|
const filtered = entries
|
|
57
|
-
.filter(e => !
|
|
71
|
+
.filter(e => !IGNORE_BUILD.has(e.name) && !e.name.startsWith('.'))
|
|
58
72
|
.sort((a, b) => {
|
|
59
73
|
if (a.isDirectory() && !b.isDirectory())
|
|
60
74
|
return -1;
|
|
@@ -62,13 +76,13 @@ function buildDirTree(dir, prefix = '', depth = 0) {
|
|
|
62
76
|
return 1;
|
|
63
77
|
return a.name.localeCompare(b.name);
|
|
64
78
|
})
|
|
65
|
-
.slice(0,
|
|
79
|
+
.slice(0, 25);
|
|
66
80
|
filtered.forEach((entry, i) => {
|
|
67
81
|
const isLast = i === filtered.length - 1;
|
|
68
82
|
const connector = isLast ? '└── ' : '├── ';
|
|
69
83
|
const childPrefix = isLast ? ' ' : '│ ';
|
|
70
84
|
result += `${prefix}${connector}${entry.name}${entry.isDirectory() ? '/' : ''}\n`;
|
|
71
|
-
if (entry.isDirectory()) {
|
|
85
|
+
if (entry.isDirectory() && !IGNORE_DEEP.has(entry.name)) {
|
|
72
86
|
result += buildDirTree(path.join(dir, entry.name), prefix + childPrefix, depth + 1);
|
|
73
87
|
}
|
|
74
88
|
});
|
|
@@ -87,7 +101,7 @@ function collectFiles(dir, pattern, limit = 50) {
|
|
|
87
101
|
return;
|
|
88
102
|
}
|
|
89
103
|
for (const e of entries) {
|
|
90
|
-
if (
|
|
104
|
+
if (IGNORE_BUILD.has(e.name) || e.name.startsWith('.'))
|
|
91
105
|
continue;
|
|
92
106
|
const full = path.join(d, e.name);
|
|
93
107
|
if (e.isDirectory())
|
|
@@ -100,10 +114,7 @@ function collectFiles(dir, pattern, limit = 50) {
|
|
|
100
114
|
return results;
|
|
101
115
|
}
|
|
102
116
|
function detectTechStack(pkg) {
|
|
103
|
-
const deps = {
|
|
104
|
-
...pkg.dependencies,
|
|
105
|
-
...pkg.devDependencies,
|
|
106
|
-
};
|
|
117
|
+
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
107
118
|
const stack = [];
|
|
108
119
|
const checks = [
|
|
109
120
|
['react', 'React'],
|
|
@@ -130,6 +141,24 @@ function detectTechStack(pkg) {
|
|
|
130
141
|
}
|
|
131
142
|
return stack;
|
|
132
143
|
}
|
|
144
|
+
function resolveProjectName(packageJson, projectRoot) {
|
|
145
|
+
const pkgName = packageJson.name || '';
|
|
146
|
+
// Если имя выглядит как шаблонное — берём имя папки
|
|
147
|
+
if (!pkgName || TEMPLATE_NAMES.has(pkgName.toLowerCase())) {
|
|
148
|
+
return path.basename(projectRoot);
|
|
149
|
+
}
|
|
150
|
+
return pkgName;
|
|
151
|
+
}
|
|
152
|
+
function filterScripts(scripts) {
|
|
153
|
+
// Показываем только ключевые скрипты, не засоряем промпт CI-командами
|
|
154
|
+
const KEY_SCRIPTS = ['dev', 'start', 'build', 'test', 'test:e2e', 'lint'];
|
|
155
|
+
const result = {};
|
|
156
|
+
for (const key of KEY_SCRIPTS) {
|
|
157
|
+
if (scripts[key])
|
|
158
|
+
result[key] = scripts[key];
|
|
159
|
+
}
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
133
162
|
function buildSnapshot(projectRoot) {
|
|
134
163
|
const pkgPath = path.join(projectRoot, 'package.json');
|
|
135
164
|
let packageJson = {};
|
|
@@ -146,7 +175,7 @@ function buildSnapshot(projectRoot) {
|
|
|
146
175
|
.map(f => path.relative(projectRoot, f));
|
|
147
176
|
const allFiles = collectFiles(projectRoot, /\.(tsx?|jsx?)$/, 500);
|
|
148
177
|
return {
|
|
149
|
-
name: packageJson
|
|
178
|
+
name: resolveProjectName(packageJson, projectRoot),
|
|
150
179
|
projectRoot,
|
|
151
180
|
packageJson,
|
|
152
181
|
dirTree: buildDirTree(projectRoot),
|
|
@@ -159,18 +188,45 @@ function buildSnapshot(projectRoot) {
|
|
|
159
188
|
};
|
|
160
189
|
}
|
|
161
190
|
// ─── Шаблон промпта ────────────────────────────────────────────────────────────
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
'
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
191
|
+
const CONFIG_EXAMPLE = JSON.stringify({
|
|
192
|
+
version: '1',
|
|
193
|
+
features: {
|
|
194
|
+
auth: {
|
|
195
|
+
label: 'Авторизация',
|
|
196
|
+
description: 'Вход, регистрация, восстановление пароля, OAuth',
|
|
197
|
+
include: ['**/auth*', '**/login*', '**/register*', '**/password*'],
|
|
198
|
+
color: '#f85149',
|
|
199
|
+
},
|
|
200
|
+
chat: {
|
|
201
|
+
label: 'Чаты с AI',
|
|
202
|
+
description: 'Диалог с AI-ассистентом, история сообщений, стриминг',
|
|
203
|
+
include: ['**/chat*', '**/Chat*', '**/message*'],
|
|
204
|
+
color: '#58a6ff',
|
|
205
|
+
},
|
|
206
|
+
skills: {
|
|
207
|
+
label: 'Навыки',
|
|
208
|
+
description: 'Создание и настройка AI-агентов с кастомными инструкциями',
|
|
209
|
+
include: ['**/skill*', '**/Skill*'],
|
|
210
|
+
color: '#d2a8ff',
|
|
172
211
|
},
|
|
173
|
-
|
|
212
|
+
'knowledge-base': {
|
|
213
|
+
label: 'Базы знаний',
|
|
214
|
+
description: 'Загрузка документов, индексация, RAG-поиск',
|
|
215
|
+
include: ['**/knowledge*', '**/Knowledge*', '**/rag*', '**/indexing*'],
|
|
216
|
+
color: '#3fb950',
|
|
217
|
+
},
|
|
218
|
+
admin: {
|
|
219
|
+
label: 'Админ-панель',
|
|
220
|
+
description: 'Управление пользователями, тарифами, провайдерами',
|
|
221
|
+
include: ['**/admin*', '**/Admin*'],
|
|
222
|
+
color: '#e3b341',
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
}, null, 2);
|
|
226
|
+
function buildPrompt(snap) {
|
|
227
|
+
const scripts = snap.packageJson.scripts
|
|
228
|
+
? filterScripts(snap.packageJson.scripts)
|
|
229
|
+
: {};
|
|
174
230
|
return `# VibeRadar — Настройка карты фич проекта
|
|
175
231
|
|
|
176
232
|
## Контекст
|
|
@@ -187,22 +243,22 @@ VibeRadar — инструмент для визуализации архите
|
|
|
187
243
|
**Стек:** ${snap.techStack.length > 0 ? snap.techStack.join(', ') : 'не определён'}
|
|
188
244
|
**Всего исходных файлов:** ${snap.totalFiles}
|
|
189
245
|
|
|
190
|
-
### Структура
|
|
246
|
+
### Структура папок (упрощённая, без node_modules/dist/docs):
|
|
191
247
|
\`\`\`
|
|
192
248
|
${snap.name}/
|
|
193
249
|
${snap.dirTree}\`\`\`
|
|
194
250
|
|
|
195
|
-
${snap.pageFiles.length > 0 ? `###
|
|
251
|
+
${snap.pageFiles.length > 0 ? `### Страницы / UI-компоненты верхнего уровня:
|
|
196
252
|
${snap.pageFiles.map(f => `- ${f}`).join('\n')}
|
|
197
253
|
` : ''}
|
|
198
|
-
${snap.routeFiles.length > 0 ? `###
|
|
254
|
+
${snap.routeFiles.length > 0 ? `### Серверные роуты / API:
|
|
199
255
|
${snap.routeFiles.map(f => `- ${f}`).join('\n')}
|
|
200
256
|
` : ''}
|
|
201
|
-
${snap.testFiles.length > 0 ? `###
|
|
257
|
+
${snap.testFiles.length > 0 ? `### Тест-файлы (первые 30):
|
|
202
258
|
${snap.testFiles.map(f => `- ${f}`).join('\n')}
|
|
203
259
|
` : ''}
|
|
204
|
-
${
|
|
205
|
-
${Object.entries(
|
|
260
|
+
${Object.keys(scripts).length > 0 ? `### Ключевые скрипты:
|
|
261
|
+
${Object.entries(scripts).map(([k, v]) => `- \`${k}\`: ${v}`).join('\n')}
|
|
206
262
|
` : ''}
|
|
207
263
|
|
|
208
264
|
---
|
|
@@ -210,50 +266,51 @@ ${Object.entries(snap.packageJson.scripts).map(([k, v]) => `- ${k}: ${v}`).join(
|
|
|
210
266
|
## Твоя задача
|
|
211
267
|
|
|
212
268
|
### Шаг 1 — Анализ
|
|
213
|
-
Изучи структуру проекта. Определи **бизнес-фичи** — не технические
|
|
214
|
-
|
|
269
|
+
Изучи структуру проекта. Определи **бизнес-фичи** — не технические слои.
|
|
270
|
+
|
|
271
|
+
✅ Хорошие фичи (что видит пользователь, что можно сломать изолированно):
|
|
272
|
+
"Авторизация", "Чаты с AI", "Навыки", "Базы знаний", "Файлы", "Биллинг", "Интеграции", "Админ-панель"
|
|
215
273
|
|
|
216
|
-
|
|
217
|
-
|
|
274
|
+
❌ Плохие фичи (технические абстракции):
|
|
275
|
+
"Components", "Utils", "Helpers", "Common", "Shared", "Services"
|
|
218
276
|
|
|
219
|
-
### Шаг 2 —
|
|
220
|
-
|
|
221
|
-
Не
|
|
277
|
+
### Шаг 2 — Уточняющие вопросы
|
|
278
|
+
**ОБЯЗАТЕЛЬНО** задай вопросы по неочевидным модулям прежде чем генерировать конфиг.
|
|
279
|
+
Не угадывай назначение — лучше 3–5 вопросов, чем неточный результат.
|
|
222
280
|
|
|
223
|
-
|
|
224
|
-
-
|
|
225
|
-
-
|
|
226
|
-
-
|
|
281
|
+
Спрашивай если видишь:
|
|
282
|
+
- Папки с неочевидным названием (например \`actions/\`, \`canvas/\`, \`guards/\`)
|
|
283
|
+
- Модули которые могут быть как фичей, так и внутренней системой
|
|
284
|
+
- Несколько похожих папок (например \`skills/\` и \`agents/\`)
|
|
227
285
|
|
|
228
286
|
### Шаг 3 — Генерация конфига
|
|
229
|
-
После
|
|
287
|
+
После получения ответов создай файл \`viberadar.config.json\` в корне проекта.
|
|
230
288
|
|
|
231
|
-
|
|
232
|
-
-
|
|
289
|
+
**Правила:**
|
|
290
|
+
- Оптимально **10–20 фич** — не дроби слишком мелко, не объединяй несвязанное
|
|
233
291
|
- Каждая фича — понятное бизнес-название на русском или английском
|
|
234
|
-
- Паттерны в \`include\` — glob
|
|
235
|
-
- Один файл может попадать в несколько фич
|
|
236
|
-
-
|
|
292
|
+
- Паттерны в \`include\` — glob относительно корня проекта, учитывай и клиент и сервер
|
|
293
|
+
- Один файл может попадать в несколько фич — это нормально
|
|
294
|
+
- Не создавай фичу "other" или "misc"
|
|
237
295
|
|
|
238
|
-
|
|
296
|
+
**Пример готового конфига** (для похожего AI-проекта):
|
|
239
297
|
\`\`\`json
|
|
240
|
-
${
|
|
298
|
+
${CONFIG_EXAMPLE}
|
|
241
299
|
\`\`\`
|
|
242
300
|
|
|
243
|
-
|
|
244
|
-
\`#58a6ff\`
|
|
245
|
-
\`#
|
|
246
|
-
\`#39d353\` (лайм), \`#79c0ff\` (голубой), \`#ff7b72\` (коралловый)
|
|
301
|
+
**Цвета** (используй разные для каждой фичи):
|
|
302
|
+
\`#58a6ff\` синий · \`#3fb950\` зелёный · \`#d2a8ff\` фиолетовый · \`#ffa657\` оранжевый
|
|
303
|
+
\`#f85149\` красный · \`#e3b341\` жёлтый · \`#39d353\` лайм · \`#79c0ff\` голубой · \`#ff7b72\` коралловый
|
|
247
304
|
|
|
248
305
|
---
|
|
249
306
|
|
|
250
|
-
##
|
|
307
|
+
## Порядок ответа
|
|
251
308
|
|
|
252
|
-
1.
|
|
253
|
-
2.
|
|
254
|
-
3.
|
|
309
|
+
1. **Сначала** — уточняющие вопросы (если есть неясности)
|
|
310
|
+
2. **После ответов** — создай \`viberadar.config.json\`
|
|
311
|
+
3. **Кратко** — объясни логику разбивки на фичи
|
|
255
312
|
|
|
256
|
-
Начинай с
|
|
313
|
+
Начинай с вопросов.
|
|
257
314
|
`;
|
|
258
315
|
}
|
|
259
316
|
//# sourceMappingURL=prompt-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/init/prompt-builder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/init/prompt-builder.ts"],"names":[],"mappings":"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"}
|