@getvibeguard/cli 1.0.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/README.md +166 -0
- package/dashboard/dist/assets/Tableau10-B-NsZVaP.js +1 -0
- package/dashboard/dist/assets/arc-CZ1oDkm-.js +1 -0
- package/dashboard/dist/assets/array-BKyUJesY.js +1 -0
- package/dashboard/dist/assets/blockDiagram-c4efeb88-BLITAZDl.js +118 -0
- package/dashboard/dist/assets/c4Diagram-c83219d4-DErNj891.js +10 -0
- package/dashboard/dist/assets/channel-sWBGOq9p.js +1 -0
- package/dashboard/dist/assets/classDiagram-beda092f-Bj8IB6RW.js +2 -0
- package/dashboard/dist/assets/classDiagram-v2-2358418a-BZtd2g5W.js +2 -0
- package/dashboard/dist/assets/clone-DtEyH3ya.js +1 -0
- package/dashboard/dist/assets/createText-1719965b-DkNrTk-5.js +7 -0
- package/dashboard/dist/assets/edges-96097737-CYxl0j3g.js +4 -0
- package/dashboard/dist/assets/erDiagram-0228fc6a-ClEp9Atg.js +51 -0
- package/dashboard/dist/assets/flowDb-c6c81e3f-ClDJCJwu.js +10 -0
- package/dashboard/dist/assets/flowDiagram-50d868cf-DYxwClWS.js +4 -0
- package/dashboard/dist/assets/flowDiagram-v2-4f6560a1-D7vEnO1T.js +1 -0
- package/dashboard/dist/assets/flowchart-elk-definition-6af322e1-C-wX1mNx.js +139 -0
- package/dashboard/dist/assets/ganttDiagram-a2739b55-DTeLavAj.js +257 -0
- package/dashboard/dist/assets/gitGraphDiagram-82fe8481-ClxNoYya.js +70 -0
- package/dashboard/dist/assets/graph-CT-F3Got.js +1 -0
- package/dashboard/dist/assets/index-5325376f-C-jTCYZA.js +1 -0
- package/dashboard/dist/assets/index-CvYvquQR.js +283 -0
- package/dashboard/dist/assets/index-n43poL1x.css +1 -0
- package/dashboard/dist/assets/infoDiagram-8eee0895-Zljudo5L.js +7 -0
- package/dashboard/dist/assets/init-Gi6I4Gst.js +1 -0
- package/dashboard/dist/assets/journeyDiagram-c64418c1-DXzTbuum.js +139 -0
- package/dashboard/dist/assets/katex-Cu_Erd72.js +261 -0
- package/dashboard/dist/assets/layout-CVO3EizT.js +1 -0
- package/dashboard/dist/assets/line-CIgln-0z.js +1 -0
- package/dashboard/dist/assets/linear-bmIUMQqg.js +1 -0
- package/dashboard/dist/assets/mindmap-definition-8da855dc-BDLTNZYk.js +425 -0
- package/dashboard/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dashboard/dist/assets/path-CbwjOpE9.js +1 -0
- package/dashboard/dist/assets/pieDiagram-a8764435-DtcOKNPc.js +35 -0
- package/dashboard/dist/assets/quadrantDiagram-1e28029f-zoSI_Ltf.js +7 -0
- package/dashboard/dist/assets/requirementDiagram-08caed73-TsQZ9lTB.js +52 -0
- package/dashboard/dist/assets/sankeyDiagram-a04cb91d-DE5ciDwD.js +8 -0
- package/dashboard/dist/assets/sequenceDiagram-c5b8d532-DhabPb2n.js +122 -0
- package/dashboard/dist/assets/stateDiagram-1ecb1508-Bg2q_YNx.js +1 -0
- package/dashboard/dist/assets/stateDiagram-v2-c2b004d7-Bs5iRjYB.js +1 -0
- package/dashboard/dist/assets/styles-b4e223ce-DchmAmav.js +160 -0
- package/dashboard/dist/assets/styles-ca3715f6-Bu5zjaDx.js +207 -0
- package/dashboard/dist/assets/styles-d45a18b0-jCaD8baR.js +116 -0
- package/dashboard/dist/assets/svgDrawCommon-b86b1483-BrYVGY4c.js +1 -0
- package/dashboard/dist/assets/timeline-definition-faaaa080--sq0bTHe.js +61 -0
- package/dashboard/dist/assets/xychartDiagram-f5964ef8-ByvzN0uj.js +7 -0
- package/dashboard/dist/index.html +22 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +641 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/dashboard.d.ts +2 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +184 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +501 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +602 -0
- package/dist/index.js.map +1 -0
- package/dist/librarian/autofix.d.ts +34 -0
- package/dist/librarian/autofix.d.ts.map +1 -0
- package/dist/librarian/autofix.js +369 -0
- package/dist/librarian/autofix.js.map +1 -0
- package/dist/librarian/heartbeat.d.ts +38 -0
- package/dist/librarian/heartbeat.d.ts.map +1 -0
- package/dist/librarian/heartbeat.js +98 -0
- package/dist/librarian/heartbeat.js.map +1 -0
- package/dist/librarian/initializer.d.ts +41 -0
- package/dist/librarian/initializer.d.ts.map +1 -0
- package/dist/librarian/initializer.js +202 -0
- package/dist/librarian/initializer.js.map +1 -0
- package/dist/librarian/memory-manager.d.ts +37 -0
- package/dist/librarian/memory-manager.d.ts.map +1 -0
- package/dist/librarian/memory-manager.js +205 -0
- package/dist/librarian/memory-manager.js.map +1 -0
- package/dist/librarian/oracle.d.ts +51 -0
- package/dist/librarian/oracle.d.ts.map +1 -0
- package/dist/librarian/oracle.js +235 -0
- package/dist/librarian/oracle.js.map +1 -0
- package/dist/librarian/summarizer.d.ts +19 -0
- package/dist/librarian/summarizer.d.ts.map +1 -0
- package/dist/librarian/summarizer.js +175 -0
- package/dist/librarian/summarizer.js.map +1 -0
- package/dist/librarian/watcher.d.ts +51 -0
- package/dist/librarian/watcher.d.ts.map +1 -0
- package/dist/librarian/watcher.js +189 -0
- package/dist/librarian/watcher.js.map +1 -0
- package/dist/mcp-server.d.ts +10 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +879 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/services/token-tracker.d.ts +58 -0
- package/dist/services/token-tracker.d.ts.map +1 -0
- package/dist/services/token-tracker.js +178 -0
- package/dist/services/token-tracker.js.map +1 -0
- package/dist/utils/chunker.d.ts +5 -0
- package/dist/utils/chunker.d.ts.map +1 -0
- package/dist/utils/chunker.js +121 -0
- package/dist/utils/chunker.js.map +1 -0
- package/dist/utils/config-manager.d.ts +65 -0
- package/dist/utils/config-manager.d.ts.map +1 -0
- package/dist/utils/config-manager.js +243 -0
- package/dist/utils/config-manager.js.map +1 -0
- package/dist/utils/config.d.ts +46 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +171 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/diff-cleaner.d.ts +13 -0
- package/dist/utils/diff-cleaner.d.ts.map +1 -0
- package/dist/utils/diff-cleaner.js +80 -0
- package/dist/utils/diff-cleaner.js.map +1 -0
- package/dist/utils/git.d.ts +71 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +285 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/llm.d.ts +30 -0
- package/dist/utils/llm.d.ts.map +1 -0
- package/dist/utils/llm.js +308 -0
- package/dist/utils/llm.js.map +1 -0
- package/dist/utils/pricing.d.ts +47 -0
- package/dist/utils/pricing.d.ts.map +1 -0
- package/dist/utils/pricing.js +171 -0
- package/dist/utils/pricing.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,501 @@
|
|
|
1
|
+
import * as fs from 'fs/promises';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import { ConfigManager } from '../utils/config-manager.js';
|
|
5
|
+
import { Initializer } from '../librarian/initializer.js';
|
|
6
|
+
import { MemoryManager } from '../librarian/memory-manager.js';
|
|
7
|
+
/**
|
|
8
|
+
* Show branding with ASCII logo
|
|
9
|
+
*/
|
|
10
|
+
function showBranding() {
|
|
11
|
+
console.log('Welcome to VibeGuard! Let\'s set up your project.\n');
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Step 1: Provider Setup
|
|
15
|
+
*/
|
|
16
|
+
async function stepProviderSetup() {
|
|
17
|
+
const providers = [
|
|
18
|
+
{ name: 'Google (Gemini)', value: 'google' },
|
|
19
|
+
{ name: 'OpenAI (GPT-4)', value: 'openai' },
|
|
20
|
+
{ name: 'Anthropic (Claude)', value: 'anthropic' },
|
|
21
|
+
];
|
|
22
|
+
const { provider } = await inquirer.prompt([
|
|
23
|
+
{
|
|
24
|
+
type: 'list',
|
|
25
|
+
name: 'provider',
|
|
26
|
+
message: 'Which LLM provider would you like to use?',
|
|
27
|
+
choices: providers,
|
|
28
|
+
default: 'google',
|
|
29
|
+
},
|
|
30
|
+
]);
|
|
31
|
+
// Check if API key exists
|
|
32
|
+
let apiKey = await ConfigManager.getApiKey(provider);
|
|
33
|
+
if (!apiKey) {
|
|
34
|
+
// Prompt for API key
|
|
35
|
+
const keyName = provider === 'google' ? 'GEMINI_API_KEY' :
|
|
36
|
+
provider === 'openai' ? 'OPENAI_API_KEY' :
|
|
37
|
+
'ANTHROPIC_API_KEY';
|
|
38
|
+
const { apiKeyInput, saveToGlobal } = await inquirer.prompt([
|
|
39
|
+
{
|
|
40
|
+
type: 'password',
|
|
41
|
+
name: 'apiKeyInput',
|
|
42
|
+
message: `Enter your ${keyName}:`,
|
|
43
|
+
validate: (input) => {
|
|
44
|
+
if (!input || input.trim().length === 0) {
|
|
45
|
+
return 'API key cannot be empty';
|
|
46
|
+
}
|
|
47
|
+
return true;
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
type: 'confirm',
|
|
52
|
+
name: 'saveToGlobal',
|
|
53
|
+
message: 'Save this API key to global config (~/.vibeguard/config.json)?',
|
|
54
|
+
default: true,
|
|
55
|
+
},
|
|
56
|
+
]);
|
|
57
|
+
// Save to global config if requested
|
|
58
|
+
if (saveToGlobal) {
|
|
59
|
+
try {
|
|
60
|
+
const globalConfig = await ConfigManager.loadGlobalConfig() || {};
|
|
61
|
+
if (provider === 'google') {
|
|
62
|
+
globalConfig.geminiApiKey = apiKeyInput;
|
|
63
|
+
}
|
|
64
|
+
else if (provider === 'openai') {
|
|
65
|
+
globalConfig.openaiApiKey = apiKeyInput;
|
|
66
|
+
}
|
|
67
|
+
else if (provider === 'anthropic') {
|
|
68
|
+
globalConfig.anthropicApiKey = apiKeyInput;
|
|
69
|
+
}
|
|
70
|
+
const configPath = ConfigManager.getGlobalConfigPath();
|
|
71
|
+
await ConfigManager.saveGlobalConfig(globalConfig);
|
|
72
|
+
// Verify the file was actually created
|
|
73
|
+
let verified = false;
|
|
74
|
+
try {
|
|
75
|
+
const verifyConfig = await ConfigManager.loadGlobalConfig();
|
|
76
|
+
if (verifyConfig &&
|
|
77
|
+
((provider === 'google' && verifyConfig.geminiApiKey) ||
|
|
78
|
+
(provider === 'openai' && verifyConfig.openaiApiKey) ||
|
|
79
|
+
(provider === 'anthropic' && verifyConfig.anthropicApiKey))) {
|
|
80
|
+
verified = true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (verifyError) {
|
|
84
|
+
// Verification failed, but file write might still have succeeded
|
|
85
|
+
}
|
|
86
|
+
if (verified) {
|
|
87
|
+
console.log(`ā
API key saved successfully to global config`);
|
|
88
|
+
console.log(` Location: ${configPath}\n`);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
console.error(`ā ļø Warning: Config file may not have been saved correctly.`);
|
|
92
|
+
console.error(` Expected location: ${configPath}`);
|
|
93
|
+
console.error(` Please check if the file exists and contains your API key.\n`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
console.error(`ā Failed to save API key to global config: ${error.message || error}`);
|
|
98
|
+
console.error(`Config path: ${ConfigManager.getGlobalConfigPath()}`);
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
// Set as environment variable for this session
|
|
104
|
+
if (provider === 'google') {
|
|
105
|
+
process.env.GEMINI_API_KEY = apiKeyInput;
|
|
106
|
+
}
|
|
107
|
+
else if (provider === 'openai') {
|
|
108
|
+
process.env.OPENAI_API_KEY = apiKeyInput;
|
|
109
|
+
}
|
|
110
|
+
else if (provider === 'anthropic') {
|
|
111
|
+
process.env.ANTHROPIC_API_KEY = apiKeyInput;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
apiKey = apiKeyInput;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
console.log(`ā
Using existing API key for ${provider}\n`);
|
|
118
|
+
}
|
|
119
|
+
return provider;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Step 2: Model Profile Selection
|
|
123
|
+
*/
|
|
124
|
+
async function stepModelProfile() {
|
|
125
|
+
const { profile } = await inquirer.prompt([
|
|
126
|
+
{
|
|
127
|
+
type: 'list',
|
|
128
|
+
name: 'profile',
|
|
129
|
+
message: 'Choose your "Vibe" (Model Profile):',
|
|
130
|
+
choices: [
|
|
131
|
+
{
|
|
132
|
+
name: 'Economy - Uses Flash models for everything (Cheapest)',
|
|
133
|
+
value: 'Economy',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
name: 'Balanced - Flash for Summaries, Pro for Oracle/Auto-Fix (Recommended)',
|
|
137
|
+
value: 'Balanced',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: 'High-IQ - Uses Pro/Opus for everything (Most Accurate)',
|
|
141
|
+
value: 'High-IQ',
|
|
142
|
+
},
|
|
143
|
+
],
|
|
144
|
+
default: 'Balanced',
|
|
145
|
+
},
|
|
146
|
+
]);
|
|
147
|
+
return profile;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Step 3: Project Soul
|
|
151
|
+
*/
|
|
152
|
+
async function stepProjectSoul() {
|
|
153
|
+
const { projectSoul } = await inquirer.prompt([
|
|
154
|
+
{
|
|
155
|
+
type: 'input',
|
|
156
|
+
name: 'projectSoul',
|
|
157
|
+
message: 'Describe your project in 2 sentences (Project Soul):',
|
|
158
|
+
validate: (input) => {
|
|
159
|
+
if (!input || input.trim().length < 20) {
|
|
160
|
+
return 'Please provide at least 20 characters describing your project';
|
|
161
|
+
}
|
|
162
|
+
return true;
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
]);
|
|
166
|
+
return projectSoul.trim();
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Check if .vibeguard folder exists and offer update
|
|
170
|
+
*/
|
|
171
|
+
async function checkExistingConfig() {
|
|
172
|
+
const exists = await ConfigManager.localConfigExists();
|
|
173
|
+
if (exists) {
|
|
174
|
+
const { update } = await inquirer.prompt([
|
|
175
|
+
{
|
|
176
|
+
type: 'confirm',
|
|
177
|
+
name: 'update',
|
|
178
|
+
message: '.vibeguard folder already exists. Update settings?',
|
|
179
|
+
default: true,
|
|
180
|
+
},
|
|
181
|
+
]);
|
|
182
|
+
return update;
|
|
183
|
+
}
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Check for existing .mdc files and handle version conflicts
|
|
188
|
+
*/
|
|
189
|
+
async function checkExistingMdcFiles(repoPath) {
|
|
190
|
+
const rulesDir = path.join(repoPath, '.cursor', 'rules');
|
|
191
|
+
const governancePath = path.join(rulesDir, 'governance.mdc');
|
|
192
|
+
const visualizerPath = path.join(rulesDir, 'visualizer.mdc');
|
|
193
|
+
let hasExisting = false;
|
|
194
|
+
try {
|
|
195
|
+
await fs.access(governancePath);
|
|
196
|
+
hasExisting = true;
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
// File doesn't exist
|
|
200
|
+
}
|
|
201
|
+
try {
|
|
202
|
+
await fs.access(visualizerPath);
|
|
203
|
+
hasExisting = true;
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
// File doesn't exist
|
|
207
|
+
}
|
|
208
|
+
if (!hasExisting) {
|
|
209
|
+
return { hasExisting: false, shouldUpdate: true };
|
|
210
|
+
}
|
|
211
|
+
// Check if files contain version info or are from a different version
|
|
212
|
+
// For now, we'll prompt the user
|
|
213
|
+
const { update } = await inquirer.prompt([
|
|
214
|
+
{
|
|
215
|
+
type: 'confirm',
|
|
216
|
+
name: 'update',
|
|
217
|
+
message: 'Existing .mdc files found in .cursor/rules/. Update to latest version?',
|
|
218
|
+
default: true,
|
|
219
|
+
},
|
|
220
|
+
]);
|
|
221
|
+
return { hasExisting: true, shouldUpdate: update };
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Generate governance.mdc cursor rule
|
|
225
|
+
*/
|
|
226
|
+
async function generateGovernanceRule(repoPath) {
|
|
227
|
+
const rulesDir = path.join(repoPath, '.cursor', 'rules');
|
|
228
|
+
await fs.mkdir(rulesDir, { recursive: true });
|
|
229
|
+
const governanceContent = `# VibeGuard Governance Rules
|
|
230
|
+
|
|
231
|
+
**Always Apply** | **Globs:** \`src/**/*\`
|
|
232
|
+
|
|
233
|
+
## Core Protocol
|
|
234
|
+
|
|
235
|
+
Before any task:
|
|
236
|
+
1. Call \`get_core_context\` to refresh project memory and architecture understanding.
|
|
237
|
+
2. Read \`DIAGRAM.md\` to map component dependencies and relationships.
|
|
238
|
+
3. Respect the "Pinned Files" logic from PROJECT_MEMORY.md; do not propose changes that contradict pinned file requirements without explicitly mentioning the conflict.
|
|
239
|
+
|
|
240
|
+
During task execution:
|
|
241
|
+
- Follow the architectural patterns established in DIAGRAM.md.
|
|
242
|
+
- Maintain consistency with existing code structure and conventions.
|
|
243
|
+
|
|
244
|
+
After completing a task:
|
|
245
|
+
1. Use \`update_project_memory\` to record the change.
|
|
246
|
+
2. Group related changes into a single "Atomic Update" entry in Recent Decisions.
|
|
247
|
+
3. If modifying architecture, consider whether DIAGRAM.md needs regeneration (run \`vibeguard visualize\`).
|
|
248
|
+
|
|
249
|
+
## Memory Management
|
|
250
|
+
|
|
251
|
+
- **Atomic Updates**: Group logically related changes into single entries (e.g., "Added X feature with Y and Z components").
|
|
252
|
+
- **Pruning Logic**: If Recent Decisions exceeds 15 entries, summarize the oldest 5 into a single "Legacy Decisions" bullet point before adding new ones.
|
|
253
|
+
- **Section Appending**: Use \`update_project_memory\` with the appropriate section name to maintain organized memory structure.
|
|
254
|
+
|
|
255
|
+
## Conflict Resolution
|
|
256
|
+
|
|
257
|
+
If proposed changes contradict:
|
|
258
|
+
- Pinned Files logic ā Mention the conflict explicitly and explain why the change is necessary.
|
|
259
|
+
- Existing architecture in DIAGRAM.md ā Consider updating the diagram if the change is intentional.
|
|
260
|
+
- Recent Decisions ā Reference the conflicting decision and explain the evolution.
|
|
261
|
+
|
|
262
|
+
## Safety
|
|
263
|
+
|
|
264
|
+
Do not propose changes that would:
|
|
265
|
+
- Break existing functionality without explicit user approval.
|
|
266
|
+
- Violate the project's architectural boundaries without discussion.
|
|
267
|
+
- Overwrite or ignore Pinned Files without acknowledgment.
|
|
268
|
+
`;
|
|
269
|
+
await fs.writeFile(path.join(rulesDir, 'governance.mdc'), governanceContent, 'utf-8');
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Generate visualizer.mdc cursor rule
|
|
273
|
+
*/
|
|
274
|
+
async function generateVisualizerRule(repoPath) {
|
|
275
|
+
const rulesDir = path.join(repoPath, '.cursor', 'rules');
|
|
276
|
+
await fs.mkdir(rulesDir, { recursive: true });
|
|
277
|
+
const visualizerContent = `# VibeGuard Visual Soul Styling Rules
|
|
278
|
+
|
|
279
|
+
**Apply Intelligently** | **Globs:** \`DIAGRAM.md\`
|
|
280
|
+
|
|
281
|
+
## Staleness Check Protocol
|
|
282
|
+
|
|
283
|
+
Before calling \`get_core_context\` or reading DIAGRAM.md:
|
|
284
|
+
1. Check if files in \`src/\` directory are newer than \`DIAGRAM.md\`.
|
|
285
|
+
2. If stale (src/ is newer), automatically run \`vibeguard visualize\` to regenerate the diagram.
|
|
286
|
+
3. Wait for diagram regeneration to complete before proceeding with context retrieval.
|
|
287
|
+
|
|
288
|
+
This ensures architecture diagrams are always up-to-date with the codebase.
|
|
289
|
+
|
|
290
|
+
## Mermaid Diagram Styling
|
|
291
|
+
|
|
292
|
+
When generating or updating DIAGRAM.md, apply the following styling rules:
|
|
293
|
+
|
|
294
|
+
### Color Scheme
|
|
295
|
+
- **Internal Logic**: Light Green (#e8f5e9) - Use for internal components, services, and business logic.
|
|
296
|
+
- **External Services**: Light Blue (#e1f5fe) - Use for APIs, external integrations, and third-party services.
|
|
297
|
+
- **Persistence/Storage**: Soft Amber (#fff8e1) - Use for databases, file systems, and data storage.
|
|
298
|
+
|
|
299
|
+
### Layout Rules
|
|
300
|
+
- **Overall Direction**: Use \`direction TB\` (Top-Bottom) for the main diagram flow.
|
|
301
|
+
- **Subgraphs**: Use \`direction LR\` (Left-Right) for subgraph layouts to improve readability.
|
|
302
|
+
- **Class Definitions**: Apply classDef for consistent styling across similar node types.
|
|
303
|
+
|
|
304
|
+
### Syntax Validation
|
|
305
|
+
|
|
306
|
+
Before writing DIAGRAM.md:
|
|
307
|
+
1. Ensure all Mermaid syntax is valid (balanced brackets, closed subgraphs).
|
|
308
|
+
2. Test that the diagram renders correctly.
|
|
309
|
+
3. If syntax errors are detected, fix immediately before saving.
|
|
310
|
+
|
|
311
|
+
### Example Structure
|
|
312
|
+
|
|
313
|
+
\`\`\`mermaid
|
|
314
|
+
flowchart TB
|
|
315
|
+
classDef internal fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
|
|
316
|
+
classDef external fill:#e1f5fe,stroke:#0288d1,stroke-width:2px
|
|
317
|
+
classDef storage fill:#fff8e1,stroke:#f57c00,stroke-width:2px
|
|
318
|
+
|
|
319
|
+
subgraph ExternalServices [External Services]
|
|
320
|
+
API[External API]
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
subgraph InternalLogic [Internal Logic]
|
|
324
|
+
Service[Core Service]
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
subgraph Persistence [Storage]
|
|
328
|
+
DB[(Database)]
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
class API external
|
|
332
|
+
class Service internal
|
|
333
|
+
class DB storage
|
|
334
|
+
\`\`\`
|
|
335
|
+
`;
|
|
336
|
+
await fs.writeFile(path.join(rulesDir, 'visualizer.mdc'), visualizerContent, 'utf-8');
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Handle legacy .cursorrules migration
|
|
340
|
+
*/
|
|
341
|
+
async function migrateLegacyCursorRules(repoPath) {
|
|
342
|
+
const legacyRulesPath = path.join(repoPath, '.cursorrules');
|
|
343
|
+
try {
|
|
344
|
+
await fs.access(legacyRulesPath);
|
|
345
|
+
// Legacy file exists, rename it
|
|
346
|
+
const backupPath = path.join(repoPath, '.cursorrules.bak');
|
|
347
|
+
await fs.rename(legacyRulesPath, backupPath);
|
|
348
|
+
console.log('ā
Migrated legacy .cursorrules to .cursorrules.bak');
|
|
349
|
+
console.log(' VibeGuard now uses .cursor/rules/*.mdc format for better organization.\n');
|
|
350
|
+
}
|
|
351
|
+
catch {
|
|
352
|
+
// File doesn't exist, nothing to migrate
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Main init command handler
|
|
357
|
+
*/
|
|
358
|
+
export async function handleInit() {
|
|
359
|
+
try {
|
|
360
|
+
// Step 0: Show branding
|
|
361
|
+
showBranding();
|
|
362
|
+
// Check if config exists
|
|
363
|
+
const shouldProceed = await checkExistingConfig();
|
|
364
|
+
if (!shouldProceed) {
|
|
365
|
+
console.log('Initialization cancelled.');
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
368
|
+
// Step 1: Provider Setup
|
|
369
|
+
console.log('š” Step 1: Provider Setup\n');
|
|
370
|
+
const provider = await stepProviderSetup();
|
|
371
|
+
// Step 2: Model Profile
|
|
372
|
+
console.log('ā” Step 2: Model Profile\n');
|
|
373
|
+
const profile = await stepModelProfile();
|
|
374
|
+
// Step 3: Project Soul
|
|
375
|
+
console.log('š« Step 3: Project Soul\n');
|
|
376
|
+
const projectSoul = await stepProjectSoul();
|
|
377
|
+
// Save local config
|
|
378
|
+
const localConfig = {
|
|
379
|
+
provider,
|
|
380
|
+
profile,
|
|
381
|
+
};
|
|
382
|
+
await ConfigManager.saveLocalConfig(localConfig);
|
|
383
|
+
console.log('\nā
Configuration saved to .vibeguard/settings.json\n');
|
|
384
|
+
// Step 3.5: Generate Cursor Rules
|
|
385
|
+
console.log('āļø Step 3.5: Generating Cursor Rules...\n');
|
|
386
|
+
const repoPath = process.cwd();
|
|
387
|
+
// Migrate legacy .cursorrules if exists
|
|
388
|
+
await migrateLegacyCursorRules(repoPath);
|
|
389
|
+
// Check for existing .mdc files and handle version conflicts
|
|
390
|
+
const { hasExisting, shouldUpdate } = await checkExistingMdcFiles(repoPath);
|
|
391
|
+
if (hasExisting && !shouldUpdate) {
|
|
392
|
+
console.log('āļø Skipping .mdc file generation (existing files preserved)\n');
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
if (hasExisting) {
|
|
396
|
+
console.log('š Updating existing .mdc files to latest version...\n');
|
|
397
|
+
}
|
|
398
|
+
// Generate governance and visualizer rules
|
|
399
|
+
await generateGovernanceRule(repoPath);
|
|
400
|
+
await generateVisualizerRule(repoPath);
|
|
401
|
+
console.log('ā
Cursor rules generated in .cursor/rules/\n');
|
|
402
|
+
}
|
|
403
|
+
// Step 4: Initialize PROJECT_MEMORY.md
|
|
404
|
+
console.log('š Step 4: Initializing PROJECT_MEMORY.md...\n');
|
|
405
|
+
const initializer = new Initializer(repoPath);
|
|
406
|
+
const memoryManager = new MemoryManager(repoPath);
|
|
407
|
+
// Check if PROJECT_MEMORY.md exists
|
|
408
|
+
let existingMemory = '';
|
|
409
|
+
let memoryExists = false;
|
|
410
|
+
try {
|
|
411
|
+
existingMemory = await memoryManager.readMemory();
|
|
412
|
+
memoryExists = existingMemory.length > 0;
|
|
413
|
+
}
|
|
414
|
+
catch {
|
|
415
|
+
// File doesn't exist, that's fine
|
|
416
|
+
}
|
|
417
|
+
if (memoryExists && existingMemory.includes('## Project Soul')) {
|
|
418
|
+
// Update Project Soul section using MemoryManager's appendToSection
|
|
419
|
+
// First, we need to replace the existing Project Soul content
|
|
420
|
+
const lines = existingMemory.split('\n');
|
|
421
|
+
const updatedLines = [];
|
|
422
|
+
let inProjectSoul = false;
|
|
423
|
+
let projectSoulEnded = false;
|
|
424
|
+
for (let i = 0; i < lines.length; i++) {
|
|
425
|
+
const line = lines[i];
|
|
426
|
+
if (line.trim() === '## Project Soul') {
|
|
427
|
+
inProjectSoul = true;
|
|
428
|
+
updatedLines.push(line);
|
|
429
|
+
updatedLines.push(''); // Blank line after header
|
|
430
|
+
updatedLines.push(projectSoul);
|
|
431
|
+
continue;
|
|
432
|
+
}
|
|
433
|
+
if (inProjectSoul && !projectSoulEnded) {
|
|
434
|
+
// Skip old content until we hit the next section
|
|
435
|
+
if (line.trim().startsWith('## ')) {
|
|
436
|
+
projectSoulEnded = true;
|
|
437
|
+
updatedLines.push(''); // Blank line before next section
|
|
438
|
+
updatedLines.push(line);
|
|
439
|
+
}
|
|
440
|
+
// Skip old content
|
|
441
|
+
continue;
|
|
442
|
+
}
|
|
443
|
+
updatedLines.push(line);
|
|
444
|
+
}
|
|
445
|
+
await memoryManager.writeMemory(updatedLines.join('\n'));
|
|
446
|
+
console.log('ā
Updated PROJECT_MEMORY.md with new Project Soul\n');
|
|
447
|
+
}
|
|
448
|
+
else {
|
|
449
|
+
// Run full initialization
|
|
450
|
+
await initializer.initialize();
|
|
451
|
+
// If we have a Project Soul from the wizard, update it
|
|
452
|
+
if (projectSoul) {
|
|
453
|
+
try {
|
|
454
|
+
const currentMemory = await memoryManager.readMemory();
|
|
455
|
+
if (currentMemory.includes('## Project Soul')) {
|
|
456
|
+
// Replace Project Soul section
|
|
457
|
+
const lines = currentMemory.split('\n');
|
|
458
|
+
const updatedLines = [];
|
|
459
|
+
let inProjectSoul = false;
|
|
460
|
+
let projectSoulEnded = false;
|
|
461
|
+
for (let i = 0; i < lines.length; i++) {
|
|
462
|
+
const line = lines[i];
|
|
463
|
+
if (line.trim() === '## Project Soul') {
|
|
464
|
+
inProjectSoul = true;
|
|
465
|
+
updatedLines.push(line);
|
|
466
|
+
updatedLines.push(''); // Blank line after header
|
|
467
|
+
updatedLines.push(projectSoul);
|
|
468
|
+
continue;
|
|
469
|
+
}
|
|
470
|
+
if (inProjectSoul && !projectSoulEnded) {
|
|
471
|
+
if (line.trim().startsWith('## ')) {
|
|
472
|
+
projectSoulEnded = true;
|
|
473
|
+
updatedLines.push(''); // Blank line before next section
|
|
474
|
+
updatedLines.push(line);
|
|
475
|
+
}
|
|
476
|
+
continue;
|
|
477
|
+
}
|
|
478
|
+
updatedLines.push(line);
|
|
479
|
+
}
|
|
480
|
+
await memoryManager.writeMemory(updatedLines.join('\n'));
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
catch (error) {
|
|
484
|
+
// If update fails, that's okay - the initializer already created the file
|
|
485
|
+
console.warn('Note: Could not update Project Soul, but initialization completed successfully.');
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
console.log('ā
PROJECT_MEMORY.md initialized\n');
|
|
489
|
+
}
|
|
490
|
+
console.log('š Initialization complete!');
|
|
491
|
+
console.log('\nNext steps:');
|
|
492
|
+
console.log(' ⢠Run `vibeguard watch` to start monitoring your repository');
|
|
493
|
+
console.log(' ⢠Run `vibeguard dashboard` to view the visual dashboard');
|
|
494
|
+
console.log(' ⢠Run `vibeguard check` to verify your setup\n');
|
|
495
|
+
}
|
|
496
|
+
catch (error) {
|
|
497
|
+
console.error('\nā Initialization failed:', error.message || error);
|
|
498
|
+
process.exit(1);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|