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.
- package/dist/commands/add.d.ts +3 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +125 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/capture-prompts.d.ts +3 -0
- package/dist/commands/capture-prompts.d.ts.map +1 -0
- package/dist/commands/capture-prompts.js +137 -0
- package/dist/commands/capture-prompts.js.map +1 -0
- package/dist/commands/commit.d.ts +3 -0
- package/dist/commands/commit.d.ts.map +1 -0
- package/dist/commands/commit.js +132 -0
- package/dist/commands/commit.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +113 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/install.d.ts +3 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +182 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/pull.d.ts +3 -0
- package/dist/commands/pull.d.ts.map +1 -0
- package/dist/commands/pull.js +99 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/push.d.ts +3 -0
- package/dist/commands/push.d.ts.map +1 -0
- package/dist/commands/push.js +142 -0
- package/dist/commands/push.js.map +1 -0
- package/dist/commands/session.d.ts +3 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +179 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/set.d.ts +3 -0
- package/dist/commands/set.d.ts.map +1 -0
- package/dist/commands/set.js +134 -0
- package/dist/commands/set.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +79 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/ai-capture.d.ts +21 -0
- package/dist/lib/ai-capture.d.ts.map +1 -0
- package/dist/lib/ai-capture.js +242 -0
- package/dist/lib/ai-capture.js.map +1 -0
- package/dist/lib/cloud-service.d.ts +26 -0
- package/dist/lib/cloud-service.d.ts.map +1 -0
- package/dist/lib/cloud-service.js +200 -0
- package/dist/lib/cloud-service.js.map +1 -0
- package/dist/lib/cursor-conversation-capture.d.ts +10 -0
- package/dist/lib/cursor-conversation-capture.d.ts.map +1 -0
- package/dist/lib/cursor-conversation-capture.js +117 -0
- package/dist/lib/cursor-conversation-capture.js.map +1 -0
- package/dist/lib/prompt-capture-manager.d.ts +33 -0
- package/dist/lib/prompt-capture-manager.d.ts.map +1 -0
- package/dist/lib/prompt-capture-manager.js +178 -0
- package/dist/lib/prompt-capture-manager.js.map +1 -0
- package/dist/lib/vibehub-manager.d.ts +172 -0
- package/dist/lib/vibehub-manager.d.ts.map +1 -0
- package/dist/lib/vibehub-manager.js +855 -0
- package/dist/lib/vibehub-manager.js.map +1 -0
- package/dist/src/commands/set.d.ts +3 -0
- package/dist/src/commands/set.d.ts.map +1 -0
- package/dist/src/commands/set.js +125 -0
- package/dist/src/commands/set.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface PromptEntry {
|
|
2
|
+
id: string;
|
|
3
|
+
text: string;
|
|
4
|
+
timestamp: number;
|
|
5
|
+
timestamp_iso: string;
|
|
6
|
+
source: 'cursor-database' | 'manual-entry';
|
|
7
|
+
workspace_id?: string;
|
|
8
|
+
metadata?: Record<string, any>;
|
|
9
|
+
}
|
|
10
|
+
export interface PromptsData {
|
|
11
|
+
version: string;
|
|
12
|
+
created_at: string;
|
|
13
|
+
last_updated: string;
|
|
14
|
+
total_prompts: number;
|
|
15
|
+
prompts: PromptEntry[];
|
|
16
|
+
}
|
|
17
|
+
export declare class PromptCaptureManager {
|
|
18
|
+
private promptsFilePath;
|
|
19
|
+
constructor(workspacePath: string);
|
|
20
|
+
initialize(): Promise<void>;
|
|
21
|
+
loadPrompts(): Promise<PromptsData>;
|
|
22
|
+
savePrompts(data: PromptsData): Promise<void>;
|
|
23
|
+
addPrompt(prompt: Omit<PromptEntry, 'id' | 'timestamp_iso'>): Promise<string>;
|
|
24
|
+
captureAllPromptsFromCursor(captureFromAllWorkspaces?: boolean): Promise<number>;
|
|
25
|
+
private capturePromptsFromDatabase;
|
|
26
|
+
private getCursorDataPath;
|
|
27
|
+
private generateId;
|
|
28
|
+
getRecentPrompts(limit?: number): Promise<PromptEntry[]>;
|
|
29
|
+
getPromptsByDateRange(startDate: Date, endDate: Date): Promise<PromptEntry[]>;
|
|
30
|
+
searchPrompts(query: string): Promise<PromptEntry[]>;
|
|
31
|
+
private findCurrentWorkspace;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=prompt-capture-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-capture-manager.d.ts","sourceRoot":"","sources":["../../src/lib/prompt-capture-manager.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,iBAAiB,GAAG,cAAc,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,eAAe,CAAS;gBAEpB,aAAa,EAAE,MAAM;IAI3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAKnC,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,eAAe,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAe7E,2BAA2B,CAAC,wBAAwB,GAAE,OAAe,GAAG,OAAO,CAAC,MAAM,CAAC;YAwD/E,0BAA0B;IA2CxC,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,UAAU;IAIZ,gBAAgB,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAO5D,qBAAqB,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAQ7E,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAQ5C,oBAAoB;CAsBnC"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import os from 'os';
|
|
4
|
+
export class PromptCaptureManager {
|
|
5
|
+
constructor(workspacePath) {
|
|
6
|
+
this.promptsFilePath = path.join(workspacePath, '.vibehub', 'sessions', 'prompts.json');
|
|
7
|
+
}
|
|
8
|
+
async initialize() {
|
|
9
|
+
// Ensure the sessions directory exists
|
|
10
|
+
const sessionsDir = path.dirname(this.promptsFilePath);
|
|
11
|
+
await fs.ensureDir(sessionsDir);
|
|
12
|
+
// Create prompts.json if it doesn't exist
|
|
13
|
+
if (!await fs.pathExists(this.promptsFilePath)) {
|
|
14
|
+
const initialData = {
|
|
15
|
+
version: "1.0",
|
|
16
|
+
created_at: new Date().toISOString(),
|
|
17
|
+
last_updated: new Date().toISOString(),
|
|
18
|
+
total_prompts: 0,
|
|
19
|
+
prompts: []
|
|
20
|
+
};
|
|
21
|
+
await fs.writeJson(this.promptsFilePath, initialData, { spaces: 2 });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async loadPrompts() {
|
|
25
|
+
await this.initialize();
|
|
26
|
+
return await fs.readJson(this.promptsFilePath);
|
|
27
|
+
}
|
|
28
|
+
async savePrompts(data) {
|
|
29
|
+
data.last_updated = new Date().toISOString();
|
|
30
|
+
data.total_prompts = data.prompts.length;
|
|
31
|
+
await fs.writeJson(this.promptsFilePath, data, { spaces: 2 });
|
|
32
|
+
}
|
|
33
|
+
async addPrompt(prompt) {
|
|
34
|
+
const data = await this.loadPrompts();
|
|
35
|
+
const newPrompt = {
|
|
36
|
+
...prompt,
|
|
37
|
+
id: this.generateId(),
|
|
38
|
+
timestamp_iso: new Date(prompt.timestamp).toISOString()
|
|
39
|
+
};
|
|
40
|
+
data.prompts.push(newPrompt);
|
|
41
|
+
await this.savePrompts(data);
|
|
42
|
+
return newPrompt.id;
|
|
43
|
+
}
|
|
44
|
+
async captureAllPromptsFromCursor(captureFromAllWorkspaces = false) {
|
|
45
|
+
try {
|
|
46
|
+
console.log('🤖 Capturing all prompts from Cursor...');
|
|
47
|
+
const cursorPath = this.getCursorDataPath();
|
|
48
|
+
if (!await fs.pathExists(cursorPath)) {
|
|
49
|
+
console.log('❌ Cursor path does not exist');
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
const workspaces = await fs.readdir(cursorPath);
|
|
53
|
+
console.log(`Found ${workspaces.length} workspaces`);
|
|
54
|
+
let totalCaptured = 0;
|
|
55
|
+
const existingData = await this.loadPrompts();
|
|
56
|
+
const existingPromptTexts = new Set(existingData.prompts.map(p => p.text));
|
|
57
|
+
// Find current workspace
|
|
58
|
+
const currentWorkspace = await this.findCurrentWorkspace(workspaces, cursorPath);
|
|
59
|
+
if (currentWorkspace) {
|
|
60
|
+
console.log(`Current workspace: ${currentWorkspace}`);
|
|
61
|
+
}
|
|
62
|
+
for (const workspace of workspaces) {
|
|
63
|
+
const activeDbPath = path.join(cursorPath, workspace, 'state.vscdb');
|
|
64
|
+
if (await fs.pathExists(activeDbPath)) {
|
|
65
|
+
// Only capture from current workspace unless explicitly capturing from all
|
|
66
|
+
if (captureFromAllWorkspaces || workspace === currentWorkspace) {
|
|
67
|
+
const captured = await this.capturePromptsFromDatabase(activeDbPath, workspace, existingPromptTexts);
|
|
68
|
+
totalCaptured += captured;
|
|
69
|
+
if (workspace === currentWorkspace) {
|
|
70
|
+
console.log(`✅ Captured ${captured} prompts from current workspace`);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
console.log(`📦 Captured ${captured} prompts from workspace ${workspace}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (totalCaptured > 0) {
|
|
79
|
+
console.log(`✅ Captured ${totalCaptured} new prompts`);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
console.log('ℹ️ No new prompts found to capture');
|
|
83
|
+
}
|
|
84
|
+
return totalCaptured;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
console.error('Error capturing prompts from Cursor:', error);
|
|
88
|
+
return 0;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async capturePromptsFromDatabase(dbPath, workspaceId, existingPromptTexts) {
|
|
92
|
+
try {
|
|
93
|
+
const Database = (await import('better-sqlite3')).default;
|
|
94
|
+
const db = new Database(dbPath);
|
|
95
|
+
const promptsResult = db.prepare("SELECT value FROM ItemTable WHERE key = 'aiService.prompts'").get();
|
|
96
|
+
if (!promptsResult) {
|
|
97
|
+
return 0;
|
|
98
|
+
}
|
|
99
|
+
const prompts = JSON.parse(promptsResult.value);
|
|
100
|
+
let captured = 0;
|
|
101
|
+
for (const prompt of prompts) {
|
|
102
|
+
if (prompt.text && !existingPromptTexts.has(prompt.text)) {
|
|
103
|
+
await this.addPrompt({
|
|
104
|
+
text: prompt.text,
|
|
105
|
+
timestamp: prompt.unixMs || Date.now(),
|
|
106
|
+
source: 'cursor-database',
|
|
107
|
+
workspace_id: workspaceId,
|
|
108
|
+
metadata: {
|
|
109
|
+
commandType: prompt.commandType,
|
|
110
|
+
index: prompt.index
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
existingPromptTexts.add(prompt.text);
|
|
114
|
+
captured++;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return captured;
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
console.error(`Error parsing database ${dbPath}:`, error);
|
|
121
|
+
return 0;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
getCursorDataPath() {
|
|
125
|
+
const platform = os.platform();
|
|
126
|
+
const homeDir = os.homedir();
|
|
127
|
+
if (platform === 'darwin') {
|
|
128
|
+
return path.join(homeDir, 'Library', 'Application Support', 'Cursor', 'User', 'workspaceStorage');
|
|
129
|
+
}
|
|
130
|
+
else if (platform === 'win32') {
|
|
131
|
+
return path.join(homeDir, 'AppData', 'Roaming', 'Cursor', 'User', 'workspaceStorage');
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
return path.join(homeDir, '.config', 'Cursor', 'User', 'workspaceStorage');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
generateId() {
|
|
138
|
+
return `prompt_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
139
|
+
}
|
|
140
|
+
async getRecentPrompts(limit = 10) {
|
|
141
|
+
const data = await this.loadPrompts();
|
|
142
|
+
return data.prompts
|
|
143
|
+
.sort((a, b) => b.timestamp - a.timestamp)
|
|
144
|
+
.slice(0, limit);
|
|
145
|
+
}
|
|
146
|
+
async getPromptsByDateRange(startDate, endDate) {
|
|
147
|
+
const data = await this.loadPrompts();
|
|
148
|
+
return data.prompts.filter(prompt => {
|
|
149
|
+
const promptDate = new Date(prompt.timestamp);
|
|
150
|
+
return promptDate >= startDate && promptDate <= endDate;
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
async searchPrompts(query) {
|
|
154
|
+
const data = await this.loadPrompts();
|
|
155
|
+
const lowerQuery = query.toLowerCase();
|
|
156
|
+
return data.prompts.filter(prompt => prompt.text.toLowerCase().includes(lowerQuery));
|
|
157
|
+
}
|
|
158
|
+
async findCurrentWorkspace(workspaces, cursorPath) {
|
|
159
|
+
const currentDir = process.cwd();
|
|
160
|
+
for (const workspace of workspaces) {
|
|
161
|
+
const workspaceJsonPath = path.join(cursorPath, workspace, 'workspace.json');
|
|
162
|
+
if (await fs.pathExists(workspaceJsonPath)) {
|
|
163
|
+
try {
|
|
164
|
+
const workspaceData = await fs.readJson(workspaceJsonPath);
|
|
165
|
+
const workspaceFolder = workspaceData.folder?.replace('file://', '');
|
|
166
|
+
if (workspaceFolder && currentDir.startsWith(workspaceFolder)) {
|
|
167
|
+
return workspace;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
// Continue to next workspace if this one fails
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=prompt-capture-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-capture-manager.js","sourceRoot":"","sources":["../../src/lib/prompt-capture-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
export interface VibeHubConfig {
|
|
2
|
+
projectId: string;
|
|
3
|
+
projectName: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
localPath: string;
|
|
6
|
+
createdAt: string;
|
|
7
|
+
lastUpdated: string;
|
|
8
|
+
version: string;
|
|
9
|
+
author: {
|
|
10
|
+
name: string;
|
|
11
|
+
email: string;
|
|
12
|
+
};
|
|
13
|
+
config: {
|
|
14
|
+
autoSync: boolean;
|
|
15
|
+
capturePrompts: boolean;
|
|
16
|
+
workspaceTracking: boolean;
|
|
17
|
+
};
|
|
18
|
+
workspace?: {
|
|
19
|
+
cursorWorkspaceId: string | null;
|
|
20
|
+
cursorWorkspacePath: string | null;
|
|
21
|
+
isActive: boolean;
|
|
22
|
+
createdAt: string;
|
|
23
|
+
lastAccessed: string;
|
|
24
|
+
};
|
|
25
|
+
cloud?: {
|
|
26
|
+
projectUrl: string;
|
|
27
|
+
apiUrl: string;
|
|
28
|
+
userEmail: string;
|
|
29
|
+
token?: string;
|
|
30
|
+
};
|
|
31
|
+
lastSync?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface VibeHubSession {
|
|
34
|
+
id: string;
|
|
35
|
+
timestamp: string;
|
|
36
|
+
prompt: string;
|
|
37
|
+
response: string;
|
|
38
|
+
files: string[];
|
|
39
|
+
metadata: Record<string, any>;
|
|
40
|
+
}
|
|
41
|
+
export interface VibeHubCommit {
|
|
42
|
+
id: string;
|
|
43
|
+
timestamp: string;
|
|
44
|
+
message: string;
|
|
45
|
+
author: string;
|
|
46
|
+
sessionId?: string;
|
|
47
|
+
files: string[];
|
|
48
|
+
changes: Record<string, any>;
|
|
49
|
+
}
|
|
50
|
+
export interface PushRequest {
|
|
51
|
+
projectId: string;
|
|
52
|
+
commits: VibeHubCommit[];
|
|
53
|
+
sessions: VibeHubSession[];
|
|
54
|
+
force?: boolean;
|
|
55
|
+
}
|
|
56
|
+
export interface PullRequest {
|
|
57
|
+
projectId: string;
|
|
58
|
+
lastSync?: string;
|
|
59
|
+
force?: boolean;
|
|
60
|
+
}
|
|
61
|
+
export interface SyncResponse {
|
|
62
|
+
commits: VibeHubCommit[];
|
|
63
|
+
sessions: VibeHubSession[];
|
|
64
|
+
conflicts?: any[];
|
|
65
|
+
lastSync: string;
|
|
66
|
+
}
|
|
67
|
+
export declare class VibeHubManager {
|
|
68
|
+
private repoPath;
|
|
69
|
+
private configPath;
|
|
70
|
+
private sessionsPath;
|
|
71
|
+
private commitsPath;
|
|
72
|
+
private fileWatchers;
|
|
73
|
+
constructor(repoPath: string);
|
|
74
|
+
isInitialized(): Promise<boolean>;
|
|
75
|
+
init(config: {
|
|
76
|
+
projectName: string;
|
|
77
|
+
description?: string;
|
|
78
|
+
author: string;
|
|
79
|
+
enableAutoSync: boolean;
|
|
80
|
+
}): Promise<void>;
|
|
81
|
+
getConfig(): Promise<VibeHubConfig>;
|
|
82
|
+
updateConfig(updates: Partial<VibeHubConfig>): Promise<void>;
|
|
83
|
+
ensureAuthorInfo(email: string): Promise<void>;
|
|
84
|
+
createSession(session: Omit<VibeHubSession, 'id' | 'timestamp'>): Promise<string>;
|
|
85
|
+
getSession(sessionId: string): Promise<VibeHubSession | null>;
|
|
86
|
+
getAllSessions(): Promise<VibeHubSession[]>;
|
|
87
|
+
createCommit(commit: Omit<VibeHubCommit, 'id' | 'timestamp'>): Promise<string>;
|
|
88
|
+
getCommit(commitId: string): Promise<VibeHubCommit | null>;
|
|
89
|
+
getAllCommits(): Promise<VibeHubCommit[]>;
|
|
90
|
+
private createInitialCommit;
|
|
91
|
+
updateGitignore(): Promise<void>;
|
|
92
|
+
getStatus(): Promise<{
|
|
93
|
+
initialized: boolean;
|
|
94
|
+
config?: VibeHubConfig;
|
|
95
|
+
sessionCount: number;
|
|
96
|
+
commitCount: number;
|
|
97
|
+
lastActivity?: string;
|
|
98
|
+
}>;
|
|
99
|
+
/**
|
|
100
|
+
* Detect and map Cursor workspace to this project
|
|
101
|
+
*/
|
|
102
|
+
private detectAndMapCursorWorkspace;
|
|
103
|
+
/**
|
|
104
|
+
* Get Cursor workspace storage path based on OS
|
|
105
|
+
*/
|
|
106
|
+
private getCursorWorkspaceStoragePath;
|
|
107
|
+
/**
|
|
108
|
+
* Create workspace mapping file
|
|
109
|
+
*/
|
|
110
|
+
private createWorkspaceMapping;
|
|
111
|
+
/**
|
|
112
|
+
* Get git remote URL
|
|
113
|
+
*/
|
|
114
|
+
private getGitRemote;
|
|
115
|
+
/**
|
|
116
|
+
* Get current git branch
|
|
117
|
+
*/
|
|
118
|
+
private getGitBranch;
|
|
119
|
+
/**
|
|
120
|
+
* Extract prompts and generations from Cursor workspace
|
|
121
|
+
*/
|
|
122
|
+
private extractPromptsAndGenerations;
|
|
123
|
+
/**
|
|
124
|
+
* Store prompts in sessions directory
|
|
125
|
+
*/
|
|
126
|
+
private storePrompts;
|
|
127
|
+
/**
|
|
128
|
+
* Store generations in exports directory
|
|
129
|
+
*/
|
|
130
|
+
private storeGenerations;
|
|
131
|
+
/**
|
|
132
|
+
* Generate CSV with prompts and timestamps
|
|
133
|
+
*/
|
|
134
|
+
private generatePromptsCsv;
|
|
135
|
+
/**
|
|
136
|
+
* Update vibehub.json with workspace information
|
|
137
|
+
*/
|
|
138
|
+
private updateVibehubConfigWithWorkspace;
|
|
139
|
+
/**
|
|
140
|
+
* Start real-time file watching for auto-sync (background service)
|
|
141
|
+
*/
|
|
142
|
+
private startWorkspaceWatching;
|
|
143
|
+
/**
|
|
144
|
+
* Create a background watcher script
|
|
145
|
+
*/
|
|
146
|
+
private createBackgroundWatcherScript;
|
|
147
|
+
/**
|
|
148
|
+
* Start the background process
|
|
149
|
+
*/
|
|
150
|
+
private startBackgroundProcess;
|
|
151
|
+
/**
|
|
152
|
+
* Log messages to a file for background operations
|
|
153
|
+
*/
|
|
154
|
+
private logToFile;
|
|
155
|
+
/**
|
|
156
|
+
* Sync new data from Cursor workspace
|
|
157
|
+
*/
|
|
158
|
+
private syncNewData;
|
|
159
|
+
/**
|
|
160
|
+
* Stop file watching for a workspace
|
|
161
|
+
*/
|
|
162
|
+
stopWorkspaceWatching(workspaceId: string): Promise<void>;
|
|
163
|
+
/**
|
|
164
|
+
* Manual sync method
|
|
165
|
+
*/
|
|
166
|
+
syncWorkspace(workspaceId: string): Promise<void>;
|
|
167
|
+
/**
|
|
168
|
+
* Stop all file watchers
|
|
169
|
+
*/
|
|
170
|
+
stopAllWatching(): Promise<void>;
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=vibehub-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vibehub-manager.d.ts","sourceRoot":"","sources":["../../src/lib/vibehub-manager.ts"],"names":[],"mappings":"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"}
|