@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.
Files changed (128) hide show
  1. package/README.md +166 -0
  2. package/dashboard/dist/assets/Tableau10-B-NsZVaP.js +1 -0
  3. package/dashboard/dist/assets/arc-CZ1oDkm-.js +1 -0
  4. package/dashboard/dist/assets/array-BKyUJesY.js +1 -0
  5. package/dashboard/dist/assets/blockDiagram-c4efeb88-BLITAZDl.js +118 -0
  6. package/dashboard/dist/assets/c4Diagram-c83219d4-DErNj891.js +10 -0
  7. package/dashboard/dist/assets/channel-sWBGOq9p.js +1 -0
  8. package/dashboard/dist/assets/classDiagram-beda092f-Bj8IB6RW.js +2 -0
  9. package/dashboard/dist/assets/classDiagram-v2-2358418a-BZtd2g5W.js +2 -0
  10. package/dashboard/dist/assets/clone-DtEyH3ya.js +1 -0
  11. package/dashboard/dist/assets/createText-1719965b-DkNrTk-5.js +7 -0
  12. package/dashboard/dist/assets/edges-96097737-CYxl0j3g.js +4 -0
  13. package/dashboard/dist/assets/erDiagram-0228fc6a-ClEp9Atg.js +51 -0
  14. package/dashboard/dist/assets/flowDb-c6c81e3f-ClDJCJwu.js +10 -0
  15. package/dashboard/dist/assets/flowDiagram-50d868cf-DYxwClWS.js +4 -0
  16. package/dashboard/dist/assets/flowDiagram-v2-4f6560a1-D7vEnO1T.js +1 -0
  17. package/dashboard/dist/assets/flowchart-elk-definition-6af322e1-C-wX1mNx.js +139 -0
  18. package/dashboard/dist/assets/ganttDiagram-a2739b55-DTeLavAj.js +257 -0
  19. package/dashboard/dist/assets/gitGraphDiagram-82fe8481-ClxNoYya.js +70 -0
  20. package/dashboard/dist/assets/graph-CT-F3Got.js +1 -0
  21. package/dashboard/dist/assets/index-5325376f-C-jTCYZA.js +1 -0
  22. package/dashboard/dist/assets/index-CvYvquQR.js +283 -0
  23. package/dashboard/dist/assets/index-n43poL1x.css +1 -0
  24. package/dashboard/dist/assets/infoDiagram-8eee0895-Zljudo5L.js +7 -0
  25. package/dashboard/dist/assets/init-Gi6I4Gst.js +1 -0
  26. package/dashboard/dist/assets/journeyDiagram-c64418c1-DXzTbuum.js +139 -0
  27. package/dashboard/dist/assets/katex-Cu_Erd72.js +261 -0
  28. package/dashboard/dist/assets/layout-CVO3EizT.js +1 -0
  29. package/dashboard/dist/assets/line-CIgln-0z.js +1 -0
  30. package/dashboard/dist/assets/linear-bmIUMQqg.js +1 -0
  31. package/dashboard/dist/assets/mindmap-definition-8da855dc-BDLTNZYk.js +425 -0
  32. package/dashboard/dist/assets/ordinal-Cboi1Yqb.js +1 -0
  33. package/dashboard/dist/assets/path-CbwjOpE9.js +1 -0
  34. package/dashboard/dist/assets/pieDiagram-a8764435-DtcOKNPc.js +35 -0
  35. package/dashboard/dist/assets/quadrantDiagram-1e28029f-zoSI_Ltf.js +7 -0
  36. package/dashboard/dist/assets/requirementDiagram-08caed73-TsQZ9lTB.js +52 -0
  37. package/dashboard/dist/assets/sankeyDiagram-a04cb91d-DE5ciDwD.js +8 -0
  38. package/dashboard/dist/assets/sequenceDiagram-c5b8d532-DhabPb2n.js +122 -0
  39. package/dashboard/dist/assets/stateDiagram-1ecb1508-Bg2q_YNx.js +1 -0
  40. package/dashboard/dist/assets/stateDiagram-v2-c2b004d7-Bs5iRjYB.js +1 -0
  41. package/dashboard/dist/assets/styles-b4e223ce-DchmAmav.js +160 -0
  42. package/dashboard/dist/assets/styles-ca3715f6-Bu5zjaDx.js +207 -0
  43. package/dashboard/dist/assets/styles-d45a18b0-jCaD8baR.js +116 -0
  44. package/dashboard/dist/assets/svgDrawCommon-b86b1483-BrYVGY4c.js +1 -0
  45. package/dashboard/dist/assets/timeline-definition-faaaa080--sq0bTHe.js +61 -0
  46. package/dashboard/dist/assets/xychartDiagram-f5964ef8-ByvzN0uj.js +7 -0
  47. package/dashboard/dist/index.html +22 -0
  48. package/dist/cli.d.ts +4 -0
  49. package/dist/cli.d.ts.map +1 -0
  50. package/dist/cli.js +641 -0
  51. package/dist/cli.js.map +1 -0
  52. package/dist/commands/dashboard.d.ts +2 -0
  53. package/dist/commands/dashboard.d.ts.map +1 -0
  54. package/dist/commands/dashboard.js +184 -0
  55. package/dist/commands/dashboard.js.map +1 -0
  56. package/dist/commands/init.d.ts +5 -0
  57. package/dist/commands/init.d.ts.map +1 -0
  58. package/dist/commands/init.js +501 -0
  59. package/dist/commands/init.js.map +1 -0
  60. package/dist/index.d.ts +3 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +602 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/librarian/autofix.d.ts +34 -0
  65. package/dist/librarian/autofix.d.ts.map +1 -0
  66. package/dist/librarian/autofix.js +369 -0
  67. package/dist/librarian/autofix.js.map +1 -0
  68. package/dist/librarian/heartbeat.d.ts +38 -0
  69. package/dist/librarian/heartbeat.d.ts.map +1 -0
  70. package/dist/librarian/heartbeat.js +98 -0
  71. package/dist/librarian/heartbeat.js.map +1 -0
  72. package/dist/librarian/initializer.d.ts +41 -0
  73. package/dist/librarian/initializer.d.ts.map +1 -0
  74. package/dist/librarian/initializer.js +202 -0
  75. package/dist/librarian/initializer.js.map +1 -0
  76. package/dist/librarian/memory-manager.d.ts +37 -0
  77. package/dist/librarian/memory-manager.d.ts.map +1 -0
  78. package/dist/librarian/memory-manager.js +205 -0
  79. package/dist/librarian/memory-manager.js.map +1 -0
  80. package/dist/librarian/oracle.d.ts +51 -0
  81. package/dist/librarian/oracle.d.ts.map +1 -0
  82. package/dist/librarian/oracle.js +235 -0
  83. package/dist/librarian/oracle.js.map +1 -0
  84. package/dist/librarian/summarizer.d.ts +19 -0
  85. package/dist/librarian/summarizer.d.ts.map +1 -0
  86. package/dist/librarian/summarizer.js +175 -0
  87. package/dist/librarian/summarizer.js.map +1 -0
  88. package/dist/librarian/watcher.d.ts +51 -0
  89. package/dist/librarian/watcher.d.ts.map +1 -0
  90. package/dist/librarian/watcher.js +189 -0
  91. package/dist/librarian/watcher.js.map +1 -0
  92. package/dist/mcp-server.d.ts +10 -0
  93. package/dist/mcp-server.d.ts.map +1 -0
  94. package/dist/mcp-server.js +879 -0
  95. package/dist/mcp-server.js.map +1 -0
  96. package/dist/services/token-tracker.d.ts +58 -0
  97. package/dist/services/token-tracker.d.ts.map +1 -0
  98. package/dist/services/token-tracker.js +178 -0
  99. package/dist/services/token-tracker.js.map +1 -0
  100. package/dist/utils/chunker.d.ts +5 -0
  101. package/dist/utils/chunker.d.ts.map +1 -0
  102. package/dist/utils/chunker.js +121 -0
  103. package/dist/utils/chunker.js.map +1 -0
  104. package/dist/utils/config-manager.d.ts +65 -0
  105. package/dist/utils/config-manager.d.ts.map +1 -0
  106. package/dist/utils/config-manager.js +243 -0
  107. package/dist/utils/config-manager.js.map +1 -0
  108. package/dist/utils/config.d.ts +46 -0
  109. package/dist/utils/config.d.ts.map +1 -0
  110. package/dist/utils/config.js +171 -0
  111. package/dist/utils/config.js.map +1 -0
  112. package/dist/utils/diff-cleaner.d.ts +13 -0
  113. package/dist/utils/diff-cleaner.d.ts.map +1 -0
  114. package/dist/utils/diff-cleaner.js +80 -0
  115. package/dist/utils/diff-cleaner.js.map +1 -0
  116. package/dist/utils/git.d.ts +71 -0
  117. package/dist/utils/git.d.ts.map +1 -0
  118. package/dist/utils/git.js +285 -0
  119. package/dist/utils/git.js.map +1 -0
  120. package/dist/utils/llm.d.ts +30 -0
  121. package/dist/utils/llm.d.ts.map +1 -0
  122. package/dist/utils/llm.js +308 -0
  123. package/dist/utils/llm.js.map +1 -0
  124. package/dist/utils/pricing.d.ts +47 -0
  125. package/dist/utils/pricing.d.ts.map +1 -0
  126. package/dist/utils/pricing.js +171 -0
  127. package/dist/utils/pricing.js.map +1 -0
  128. 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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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}