vibehub-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 (69) hide show
  1. package/dist/commands/add.d.ts +3 -0
  2. package/dist/commands/add.d.ts.map +1 -0
  3. package/dist/commands/add.js +125 -0
  4. package/dist/commands/add.js.map +1 -0
  5. package/dist/commands/capture-prompts.d.ts +3 -0
  6. package/dist/commands/capture-prompts.d.ts.map +1 -0
  7. package/dist/commands/capture-prompts.js +137 -0
  8. package/dist/commands/capture-prompts.js.map +1 -0
  9. package/dist/commands/commit.d.ts +3 -0
  10. package/dist/commands/commit.d.ts.map +1 -0
  11. package/dist/commands/commit.js +132 -0
  12. package/dist/commands/commit.js.map +1 -0
  13. package/dist/commands/init.d.ts +3 -0
  14. package/dist/commands/init.d.ts.map +1 -0
  15. package/dist/commands/init.js +113 -0
  16. package/dist/commands/init.js.map +1 -0
  17. package/dist/commands/install.d.ts +3 -0
  18. package/dist/commands/install.d.ts.map +1 -0
  19. package/dist/commands/install.js +182 -0
  20. package/dist/commands/install.js.map +1 -0
  21. package/dist/commands/pull.d.ts +3 -0
  22. package/dist/commands/pull.d.ts.map +1 -0
  23. package/dist/commands/pull.js +99 -0
  24. package/dist/commands/pull.js.map +1 -0
  25. package/dist/commands/push.d.ts +3 -0
  26. package/dist/commands/push.d.ts.map +1 -0
  27. package/dist/commands/push.js +142 -0
  28. package/dist/commands/push.js.map +1 -0
  29. package/dist/commands/session.d.ts +3 -0
  30. package/dist/commands/session.d.ts.map +1 -0
  31. package/dist/commands/session.js +179 -0
  32. package/dist/commands/session.js.map +1 -0
  33. package/dist/commands/set.d.ts +3 -0
  34. package/dist/commands/set.d.ts.map +1 -0
  35. package/dist/commands/set.js +134 -0
  36. package/dist/commands/set.js.map +1 -0
  37. package/dist/commands/status.d.ts +3 -0
  38. package/dist/commands/status.d.ts.map +1 -0
  39. package/dist/commands/status.js +79 -0
  40. package/dist/commands/status.js.map +1 -0
  41. package/dist/index.d.ts +3 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +44 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/lib/ai-capture.d.ts +21 -0
  46. package/dist/lib/ai-capture.d.ts.map +1 -0
  47. package/dist/lib/ai-capture.js +242 -0
  48. package/dist/lib/ai-capture.js.map +1 -0
  49. package/dist/lib/cloud-service.d.ts +26 -0
  50. package/dist/lib/cloud-service.d.ts.map +1 -0
  51. package/dist/lib/cloud-service.js +200 -0
  52. package/dist/lib/cloud-service.js.map +1 -0
  53. package/dist/lib/cursor-conversation-capture.d.ts +10 -0
  54. package/dist/lib/cursor-conversation-capture.d.ts.map +1 -0
  55. package/dist/lib/cursor-conversation-capture.js +117 -0
  56. package/dist/lib/cursor-conversation-capture.js.map +1 -0
  57. package/dist/lib/prompt-capture-manager.d.ts +33 -0
  58. package/dist/lib/prompt-capture-manager.d.ts.map +1 -0
  59. package/dist/lib/prompt-capture-manager.js +178 -0
  60. package/dist/lib/prompt-capture-manager.js.map +1 -0
  61. package/dist/lib/vibehub-manager.d.ts +172 -0
  62. package/dist/lib/vibehub-manager.d.ts.map +1 -0
  63. package/dist/lib/vibehub-manager.js +855 -0
  64. package/dist/lib/vibehub-manager.js.map +1 -0
  65. package/dist/src/commands/set.d.ts +3 -0
  66. package/dist/src/commands/set.d.ts.map +1 -0
  67. package/dist/src/commands/set.js +125 -0
  68. package/dist/src/commands/set.js.map +1 -0
  69. package/package.json +53 -0
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const addCommand: Command;
3
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,UAAU,SA2GnB,CAAC"}
@@ -0,0 +1,125 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import fs from 'fs-extra';
4
+ import path from 'path';
5
+ import { VibeHubManager } from '../lib/vibehub-manager.js';
6
+ export const addCommand = new Command('add')
7
+ .description('Add files to staging area for commit')
8
+ .argument('[files...]', 'Files to add (default: all files)')
9
+ .option('-A, --all', 'Add all files')
10
+ .option('-u, --update', 'Update already tracked files')
11
+ .action(async (files, options) => {
12
+ try {
13
+ console.log(chalk.blue('šŸ“ Adding files to staging area...\n'));
14
+ // Check if we're in a VibeHub repository
15
+ const vibehubDir = path.join(process.cwd(), '.vibehub');
16
+ if (!await fs.pathExists(vibehubDir)) {
17
+ console.error(chalk.red('āŒ Not a VibeHub repository. Run "vibe init" first.'));
18
+ process.exit(1);
19
+ }
20
+ // Initialize VibeHub manager
21
+ const vibehubManager = new VibeHubManager(process.cwd());
22
+ // Determine which files to add
23
+ let filesToAdd = [];
24
+ if (options.all || files.length === 0) {
25
+ // Add all files in the current directory (excluding .vibehub)
26
+ const allFiles = await getAllFiles(process.cwd());
27
+ filesToAdd = allFiles.filter(file => !file.startsWith('.vibehub/'));
28
+ }
29
+ else {
30
+ // Add specific files
31
+ filesToAdd = files;
32
+ }
33
+ // Validate files exist
34
+ const existingFiles = [];
35
+ const missingFiles = [];
36
+ for (const file of filesToAdd) {
37
+ const filePath = path.resolve(file);
38
+ if (await fs.pathExists(filePath)) {
39
+ existingFiles.push(file);
40
+ }
41
+ else {
42
+ missingFiles.push(file);
43
+ }
44
+ }
45
+ if (missingFiles.length > 0) {
46
+ console.error(chalk.red('āŒ Some files not found:'));
47
+ missingFiles.forEach(file => console.error(chalk.red(` - ${file}`)));
48
+ process.exit(1);
49
+ }
50
+ // Add files to staging area
51
+ const stagingPath = path.join(vibehubDir, 'staging');
52
+ await fs.ensureDir(stagingPath);
53
+ const addedFiles = [];
54
+ for (const file of existingFiles) {
55
+ const filePath = path.resolve(file);
56
+ const relativePath = path.relative(process.cwd(), filePath);
57
+ const stagingFilePath = path.join(stagingPath, relativePath);
58
+ // Create directory structure in staging
59
+ await fs.ensureDir(path.dirname(stagingFilePath));
60
+ // Copy file to staging
61
+ await fs.copy(filePath, stagingFilePath);
62
+ addedFiles.push(relativePath);
63
+ }
64
+ // Save staging information
65
+ const stagingInfo = {
66
+ files: addedFiles,
67
+ timestamp: new Date().toISOString(),
68
+ totalFiles: addedFiles.length
69
+ };
70
+ await fs.writeJson(path.join(stagingPath, 'staging.json'), stagingInfo, { spaces: 2 });
71
+ // Sync prompts and generations from Cursor workspace
72
+ console.log(chalk.blue('\nšŸ”„ Syncing Cursor workspace data...'));
73
+ try {
74
+ const config = await vibehubManager.getConfig();
75
+ const workspaceId = config.workspace?.cursorWorkspaceId;
76
+ if (workspaceId) {
77
+ await vibehubManager.syncWorkspace(workspaceId);
78
+ console.log(chalk.green('āœ… Cursor workspace synced successfully'));
79
+ }
80
+ else {
81
+ console.log(chalk.yellow('āš ļø No Cursor workspace found to sync'));
82
+ }
83
+ }
84
+ catch (syncError) {
85
+ console.log(chalk.yellow('āš ļø Could not sync Cursor workspace:', syncError instanceof Error ? syncError.message : 'Unknown error'));
86
+ }
87
+ // Display results
88
+ console.log(chalk.green(`\nāœ… Added ${addedFiles.length} file(s) to staging area:`));
89
+ addedFiles.forEach(file => {
90
+ console.log(chalk.gray(` + ${file}`));
91
+ });
92
+ console.log(chalk.blue('\nšŸ’” Next steps:'));
93
+ console.log(chalk.gray(' vibe commit -m "your commit message"'));
94
+ console.log(chalk.gray(' vibe push'));
95
+ }
96
+ catch (error) {
97
+ console.error(chalk.red('āŒ Failed to add files:'), error instanceof Error ? error.message : 'Unknown error');
98
+ process.exit(1);
99
+ }
100
+ });
101
+ // Helper function to get all files in a directory recursively
102
+ async function getAllFiles(dir, baseDir = dir) {
103
+ const files = [];
104
+ const items = await fs.readdir(dir);
105
+ for (const item of items) {
106
+ const fullPath = path.join(dir, item);
107
+ const relativePath = path.relative(baseDir, fullPath);
108
+ const stat = await fs.stat(fullPath);
109
+ if (stat.isDirectory()) {
110
+ // Skip .vibehub directory
111
+ if (item === '.vibehub')
112
+ continue;
113
+ // Skip node_modules and other common ignore directories
114
+ if (['node_modules', '.git', '.DS_Store'].includes(item))
115
+ continue;
116
+ const subFiles = await getAllFiles(fullPath, baseDir);
117
+ files.push(...subFiles);
118
+ }
119
+ else {
120
+ files.push(relativePath);
121
+ }
122
+ }
123
+ return files;
124
+ }
125
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const capturePromptsCommand: Command;
3
+ //# sourceMappingURL=capture-prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-prompts.d.ts","sourceRoot":"","sources":["../../src/commands/capture-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,qBAAqB,SAuC9B,CAAC"}
@@ -0,0 +1,137 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { PromptCaptureManager } from '../lib/prompt-capture-manager.js';
4
+ import inquirer from 'inquirer';
5
+ export const capturePromptsCommand = new Command('capture-prompts')
6
+ .description('Capture all prompts from Cursor and store them in prompts.json')
7
+ .option('-a, --all', 'Capture all prompts from all Cursor workspaces')
8
+ .option('-r, --recent <number>', 'Show recent prompts')
9
+ .option('-s, --search <query>', 'Search prompts by text')
10
+ .option('-d, --date-range <start,end>', 'Filter prompts by date range (YYYY-MM-DD,YYYY-MM-DD)')
11
+ .option('-m, --manual', 'Manually add a prompt')
12
+ .action(async (options) => {
13
+ const cwd = process.cwd();
14
+ const promptManager = new PromptCaptureManager(cwd);
15
+ try {
16
+ if (options.manual) {
17
+ await handleManualPrompt(promptManager);
18
+ return;
19
+ }
20
+ if (options.search) {
21
+ await handleSearchPrompts(promptManager, options.search);
22
+ return;
23
+ }
24
+ if (options.dateRange) {
25
+ await handleDateRangePrompts(promptManager, options.dateRange);
26
+ return;
27
+ }
28
+ if (options.recent !== undefined) {
29
+ await handleRecentPrompts(promptManager, parseInt(options.recent) || 10);
30
+ return;
31
+ }
32
+ // Default action: capture all prompts
33
+ await handleCaptureAllPrompts(promptManager, options.all);
34
+ }
35
+ catch (error) {
36
+ console.error(chalk.red('Error:'), error);
37
+ process.exit(1);
38
+ }
39
+ });
40
+ async function handleCaptureAllPrompts(promptManager, captureAll) {
41
+ console.log(chalk.blue('šŸ¤– Capturing prompts from Cursor...\n'));
42
+ const captured = await promptManager.captureAllPromptsFromCursor(captureAll);
43
+ if (captured > 0) {
44
+ console.log(chalk.green(`\nāœ… Successfully captured ${captured} new prompts!`));
45
+ }
46
+ else {
47
+ console.log(chalk.yellow('\nā„¹ļø No new prompts found to capture.'));
48
+ }
49
+ // Show summary
50
+ const data = await promptManager.loadPrompts();
51
+ console.log(chalk.blue(`\nšŸ“Š Total prompts stored: ${data.total_prompts}`));
52
+ console.log(chalk.gray(`Last updated: ${data.last_updated}`));
53
+ }
54
+ async function handleManualPrompt(promptManager) {
55
+ console.log(chalk.blue('āœļø Manually adding a prompt...\n'));
56
+ const answers = await inquirer.prompt([
57
+ {
58
+ type: 'input',
59
+ name: 'text',
60
+ message: 'Enter the prompt text:',
61
+ validate: (input) => {
62
+ if (!input.trim()) {
63
+ return 'Prompt text cannot be empty';
64
+ }
65
+ return true;
66
+ }
67
+ },
68
+ {
69
+ type: 'input',
70
+ name: 'timestamp',
71
+ message: 'Enter timestamp (leave empty for current time):',
72
+ default: Date.now().toString()
73
+ }
74
+ ]);
75
+ const timestamp = parseInt(answers.timestamp) || Date.now();
76
+ const promptId = await promptManager.addPrompt({
77
+ text: answers.text.trim(),
78
+ timestamp,
79
+ source: 'manual-entry'
80
+ });
81
+ console.log(chalk.green(`\nāœ… Prompt added successfully!`));
82
+ console.log(chalk.cyan(`Prompt ID: ${promptId}`));
83
+ console.log(chalk.gray(`Timestamp: ${new Date(timestamp).toISOString()}`));
84
+ }
85
+ async function handleSearchPrompts(promptManager, query) {
86
+ console.log(chalk.blue(`šŸ” Searching prompts for: "${query}"\n`));
87
+ const results = await promptManager.searchPrompts(query);
88
+ if (results.length === 0) {
89
+ console.log(chalk.yellow('No prompts found matching your search.'));
90
+ return;
91
+ }
92
+ console.log(chalk.green(`Found ${results.length} matching prompts:\n`));
93
+ results.forEach((prompt, index) => {
94
+ console.log(chalk.cyan(`${index + 1}. [${prompt.timestamp_iso}]`));
95
+ console.log(chalk.white(prompt.text));
96
+ console.log(chalk.gray(`Source: ${prompt.source} | ID: ${prompt.id}\n`));
97
+ });
98
+ }
99
+ async function handleDateRangePrompts(promptManager, dateRange) {
100
+ const [startStr, endStr] = dateRange.split(',');
101
+ if (!startStr || !endStr) {
102
+ console.log(chalk.red('Invalid date range format. Use: YYYY-MM-DD,YYYY-MM-DD'));
103
+ return;
104
+ }
105
+ const startDate = new Date(startStr);
106
+ const endDate = new Date(endStr);
107
+ if (isNaN(startDate.getTime()) || isNaN(endDate.getTime())) {
108
+ console.log(chalk.red('Invalid date format. Use: YYYY-MM-DD'));
109
+ return;
110
+ }
111
+ console.log(chalk.blue(`šŸ“… Showing prompts from ${startStr} to ${endStr}\n`));
112
+ const results = await promptManager.getPromptsByDateRange(startDate, endDate);
113
+ if (results.length === 0) {
114
+ console.log(chalk.yellow('No prompts found in the specified date range.'));
115
+ return;
116
+ }
117
+ console.log(chalk.green(`Found ${results.length} prompts in date range:\n`));
118
+ results.forEach((prompt, index) => {
119
+ console.log(chalk.cyan(`${index + 1}. [${prompt.timestamp_iso}]`));
120
+ console.log(chalk.white(prompt.text));
121
+ console.log(chalk.gray(`Source: ${prompt.source} | ID: ${prompt.id}\n`));
122
+ });
123
+ }
124
+ async function handleRecentPrompts(promptManager, limit) {
125
+ console.log(chalk.blue(`šŸ“‹ Showing ${limit} most recent prompts:\n`));
126
+ const results = await promptManager.getRecentPrompts(limit);
127
+ if (results.length === 0) {
128
+ console.log(chalk.yellow('No prompts found.'));
129
+ return;
130
+ }
131
+ results.forEach((prompt, index) => {
132
+ console.log(chalk.cyan(`${index + 1}. [${prompt.timestamp_iso}]`));
133
+ console.log(chalk.white(prompt.text));
134
+ console.log(chalk.gray(`Source: ${prompt.source} | ID: ${prompt.id}\n`));
135
+ });
136
+ }
137
+ //# sourceMappingURL=capture-prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-prompts.js","sourceRoot":"","sources":["../../src/commands/capture-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,OAAO,CAAC,iBAAiB,CAAC;KAChE,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,WAAW,EAAE,gDAAgD,CAAC;KACrE,MAAM,CAAC,uBAAuB,EAAE,qBAAqB,CAAC;KACtD,MAAM,CAAC,sBAAsB,EAAE,wBAAwB,CAAC;KACxD,MAAM,CAAC,8BAA8B,EAAE,sDAAsD,CAAC;KAC9F,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,aAAa,GAAG,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,kBAAkB,CAAC,aAAa,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,sBAAsB,CAAC,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,mBAAmB,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QAED,sCAAsC;QACtC,MAAM,uBAAuB,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAE5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,KAAK,UAAU,uBAAuB,CAAC,aAAmC,EAAE,UAAmB;IAC7F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;IAEjE,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;IAE7E,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,QAAQ,eAAe,CAAC,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,eAAe;IACf,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,aAAmC;IACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAE5D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACpC;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,wBAAwB;YACjC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;oBAClB,OAAO,6BAA6B,CAAC;gBACvC,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,iDAAiD;YAC1D,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;SAC/B;KACF,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAE5D,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC;QAC7C,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;QACzB,SAAS;QACT,MAAM,EAAE,cAAc;KACvB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,aAAmC,EAAE,KAAa;IACnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,KAAK,KAAK,CAAC,CAAC,CAAC;IAElE,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAEzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,OAAO,CAAC,MAAM,sBAAsB,CAAC,CAAC,CAAC;IAExE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,UAAU,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,aAAmC,EAAE,SAAiB;IAC1F,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEhD,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IAEjC,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,QAAQ,OAAO,MAAM,IAAI,CAAC,CAAC,CAAC;IAE9E,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAE9E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,OAAO,CAAC,MAAM,2BAA2B,CAAC,CAAC,CAAC;IAE7E,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,UAAU,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,aAAmC,EAAE,KAAa;IACnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,yBAAyB,CAAC,CAAC,CAAC;IAEtE,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAE5D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,UAAU,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const commitCommand: Command;
3
+ //# sourceMappingURL=commit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,aAAa,SA0ItB,CAAC"}
@@ -0,0 +1,132 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import inquirer from 'inquirer';
4
+ import fs from 'fs-extra';
5
+ import path from 'path';
6
+ import { VibeHubManager } from '../lib/vibehub-manager.js';
7
+ import { AICapture } from '../lib/ai-capture.js';
8
+ import { PromptCaptureManager } from '../lib/prompt-capture-manager.js';
9
+ export const commitCommand = new Command('commit')
10
+ .description('Create a new commit with AI session context')
11
+ .option('-m, --message <message>', 'Commit message')
12
+ .option('-s, --session <sessionId>', 'Link to specific AI session')
13
+ .option('-a, --author <author>', 'Override author email')
14
+ .option('--no-ai-capture', 'Skip automatic AI session capture')
15
+ .option('--no-prompt-capture', 'Skip automatic prompt capture')
16
+ .action(async (options) => {
17
+ const cwd = process.cwd();
18
+ const vibehubManager = new VibeHubManager(cwd);
19
+ try {
20
+ const status = await vibehubManager.getStatus();
21
+ if (!status.initialized) {
22
+ console.log(chalk.red('āŒ Not a VibeHub repository'));
23
+ console.log(chalk.blue('Run ') + chalk.cyan('vibe init') + chalk.blue(' to initialize a new repository'));
24
+ return;
25
+ }
26
+ const config = status.config;
27
+ // Get commit message
28
+ let message = options.message;
29
+ if (!message) {
30
+ const answer = await inquirer.prompt([
31
+ {
32
+ type: 'input',
33
+ name: 'message',
34
+ message: 'Commit message:',
35
+ validate: (input) => {
36
+ if (!input.trim()) {
37
+ return 'Commit message cannot be empty';
38
+ }
39
+ return true;
40
+ }
41
+ }
42
+ ]);
43
+ message = answer.message;
44
+ }
45
+ // Get author from config or options
46
+ const repoConfig = await vibehubManager.getConfig();
47
+ const author = options.author || repoConfig.author?.name || 'Unknown';
48
+ // Capture prompts if enabled
49
+ let capturedPrompts = 0;
50
+ if (options.promptCapture !== false) {
51
+ console.log(chalk.blue('šŸ“ Capturing prompts...'));
52
+ const promptManager = new PromptCaptureManager(cwd);
53
+ capturedPrompts = await promptManager.captureAllPromptsFromCursor();
54
+ if (capturedPrompts > 0) {
55
+ console.log(chalk.green(`āœ… Captured ${capturedPrompts} new prompts`));
56
+ }
57
+ }
58
+ // Try to capture recent AI conversation
59
+ const aiCapture = new AICapture(process.cwd());
60
+ const conversation = await aiCapture.captureRecentConversation();
61
+ let sessionId = null;
62
+ if (conversation) {
63
+ console.log(chalk.green('āœ… Found recent AI conversation'));
64
+ console.log(chalk.gray(`Prompt: ${conversation.prompt.substring(0, 80)}...`));
65
+ // Create a session in the local VibeHub repository
66
+ const vibehubManager = new VibeHubManager(process.cwd());
67
+ sessionId = await vibehubManager.createSession({
68
+ prompt: conversation.prompt,
69
+ response: '', // No response for now
70
+ files: [],
71
+ metadata: {
72
+ source: 'cursor-database',
73
+ capturedAt: new Date().toISOString(),
74
+ timestamp: conversation.timestamp
75
+ }
76
+ });
77
+ }
78
+ else {
79
+ console.log(chalk.yellow('āš ļø No recent AI conversation found - proceeding without session linking'));
80
+ // No manual prompts - just proceed without a session
81
+ }
82
+ // Read files from staging area
83
+ const stagingPath = path.join(cwd, '.vibehub', 'staging');
84
+ const stagingInfoPath = path.join(stagingPath, 'staging.json');
85
+ let files = [];
86
+ let changes = {};
87
+ if (await fs.pathExists(stagingInfoPath)) {
88
+ try {
89
+ const stagingInfo = await fs.readJson(stagingInfoPath);
90
+ files = stagingInfo.files || [];
91
+ // Read file contents for changes tracking
92
+ for (const file of files) {
93
+ const filePath = path.join(stagingPath, file);
94
+ if (await fs.pathExists(filePath)) {
95
+ const content = await fs.readFile(filePath, 'utf-8');
96
+ changes[file] = {
97
+ content,
98
+ size: content.length,
99
+ lastModified: new Date().toISOString()
100
+ };
101
+ }
102
+ }
103
+ }
104
+ catch (error) {
105
+ console.log(chalk.yellow('āš ļø Warning: Could not read staging info, proceeding with empty files'));
106
+ }
107
+ }
108
+ // Create the commit
109
+ const commitId = await vibehubManager.createCommit({
110
+ message,
111
+ author,
112
+ sessionId: sessionId || undefined,
113
+ files: files,
114
+ changes: changes
115
+ });
116
+ console.log(chalk.green('\nāœ… Commit created successfully!'));
117
+ console.log(chalk.white('Commit ID: ') + chalk.cyan(commitId));
118
+ console.log(chalk.white('Message: ') + chalk.gray(message));
119
+ console.log(chalk.white('Author: ') + chalk.gray(author));
120
+ console.log(chalk.white('Files: ') + chalk.gray(files.length));
121
+ if (capturedPrompts > 0) {
122
+ console.log(chalk.white('Prompts Captured: ') + chalk.cyan(capturedPrompts));
123
+ }
124
+ if (sessionId) {
125
+ console.log(chalk.white('Linked Session: ') + chalk.cyan(sessionId));
126
+ }
127
+ }
128
+ catch (error) {
129
+ console.error(chalk.red('Failed to create commit:'), error);
130
+ }
131
+ });
132
+ //# sourceMappingURL=commit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const initCommand: Command;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,eAAO,MAAM,WAAW,SA4GpB,CAAC"}
@@ -0,0 +1,113 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import inquirer from 'inquirer';
4
+ import path from 'path';
5
+ import { fileURLToPath } from 'url';
6
+ import { VibeHubManager } from '../lib/vibehub-manager.js';
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = path.dirname(__filename);
9
+ export const initCommand = new Command('init')
10
+ .description('Initialize a new VibeHub repository')
11
+ .option('-f, --force', 'Force initialization even if .vibehub already exists')
12
+ .option('-q, --quiet', 'Suppress output')
13
+ .action(async (options) => {
14
+ const cwd = process.cwd();
15
+ const vibehubManager = new VibeHubManager(cwd);
16
+ try {
17
+ // Check if already initialized
18
+ if (await vibehubManager.isInitialized() && !options.force) {
19
+ if (!options.quiet) {
20
+ console.log(chalk.yellow('VibeHub repository already exists in this directory.'));
21
+ console.log(chalk.yellow('Use --force to reinitialize.'));
22
+ }
23
+ return;
24
+ }
25
+ // Interactive setup
26
+ if (!options.quiet) {
27
+ console.log(chalk.blue('šŸš€ Initializing VibeHub repository...\n'));
28
+ }
29
+ let answers;
30
+ if (options.quiet) {
31
+ // Use default values for non-interactive mode
32
+ answers = {
33
+ projectName: path.basename(cwd),
34
+ description: '',
35
+ author: process.env.USER_EMAIL || 'user@example.com',
36
+ enableAutoSync: true,
37
+ createGitignore: true
38
+ };
39
+ }
40
+ else {
41
+ answers = await inquirer.prompt([
42
+ {
43
+ type: 'input',
44
+ name: 'projectName',
45
+ message: 'Project name:',
46
+ default: path.basename(cwd),
47
+ validate: (input) => {
48
+ if (!input.trim()) {
49
+ return 'Project name cannot be empty';
50
+ }
51
+ return true;
52
+ }
53
+ },
54
+ {
55
+ type: 'input',
56
+ name: 'description',
57
+ message: 'Project description (optional):',
58
+ default: ''
59
+ },
60
+ {
61
+ type: 'input',
62
+ name: 'author',
63
+ message: 'Author email:',
64
+ default: process.env.USER_EMAIL || '',
65
+ validate: (input) => {
66
+ if (!input.trim()) {
67
+ return 'Author email is required';
68
+ }
69
+ if (!input.includes('@')) {
70
+ return 'Please enter a valid email address';
71
+ }
72
+ return true;
73
+ }
74
+ },
75
+ {
76
+ type: 'confirm',
77
+ name: 'enableAutoSync',
78
+ message: 'Enable automatic sync with VibeHub cloud?',
79
+ default: true
80
+ },
81
+ {
82
+ type: 'confirm',
83
+ name: 'createGitignore',
84
+ message: 'Add .vibehub to .gitignore?',
85
+ default: true
86
+ }
87
+ ]);
88
+ }
89
+ // Initialize the repository
90
+ await vibehubManager.init({
91
+ projectName: answers.projectName,
92
+ description: answers.description,
93
+ author: answers.author,
94
+ enableAutoSync: answers.enableAutoSync
95
+ });
96
+ // Update .gitignore if requested
97
+ if (answers.createGitignore) {
98
+ await vibehubManager.updateGitignore();
99
+ }
100
+ if (!options.quiet) {
101
+ console.log(chalk.green('\nāœ… VibeHub repository initialized successfully!'));
102
+ console.log(chalk.blue('\nNext steps:'));
103
+ console.log(chalk.white(' • Run ') + chalk.cyan('vibe status') + chalk.white(' to see repository status'));
104
+ console.log(chalk.white(' • Run ') + chalk.cyan('vibe commit') + chalk.white(' to create your first commit'));
105
+ console.log(chalk.white(' • Visit ') + chalk.cyan('https://vibehub.dev') + chalk.white(' to view your project'));
106
+ }
107
+ }
108
+ catch (error) {
109
+ console.error(chalk.red('Failed to initialize VibeHub repository:'), error);
110
+ process.exit(1);
111
+ }
112
+ });
113
+ //# 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
+ import { Command } from 'commander';
2
+ export declare const installCommand: Command;
3
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,cAAc,SA4LvB,CAAC"}