@burdenoff/vibe-agent 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/.env.example +8 -0
- package/LICENSE +22 -0
- package/README.md +290 -0
- package/dist/app.d.ts +15 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +445 -0
- package/dist/app.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1043 -0
- package/dist/cli.js.map +1 -0
- package/dist/db/schema.d.ts +145 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +536 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/ModuleAuth.d.ts +61 -0
- package/dist/middleware/ModuleAuth.d.ts.map +1 -0
- package/dist/middleware/ModuleAuth.js +220 -0
- package/dist/middleware/ModuleAuth.js.map +1 -0
- package/dist/middleware/auth.d.ts +3 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +11 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/migrations/remove-notes-prompts.d.ts +13 -0
- package/dist/migrations/remove-notes-prompts.d.ts.map +1 -0
- package/dist/migrations/remove-notes-prompts.js +148 -0
- package/dist/migrations/remove-notes-prompts.js.map +1 -0
- package/dist/routes/bookmarks.d.ts +3 -0
- package/dist/routes/bookmarks.d.ts.map +1 -0
- package/dist/routes/bookmarks.js +186 -0
- package/dist/routes/bookmarks.js.map +1 -0
- package/dist/routes/config.d.ts +3 -0
- package/dist/routes/config.d.ts.map +1 -0
- package/dist/routes/config.js +108 -0
- package/dist/routes/config.js.map +1 -0
- package/dist/routes/files.d.ts +3 -0
- package/dist/routes/files.d.ts.map +1 -0
- package/dist/routes/files.js +471 -0
- package/dist/routes/files.js.map +1 -0
- package/dist/routes/git.d.ts +3 -0
- package/dist/routes/git.d.ts.map +1 -0
- package/dist/routes/git.js +498 -0
- package/dist/routes/git.js.map +1 -0
- package/dist/routes/moduleRegistry.d.ts +41 -0
- package/dist/routes/moduleRegistry.d.ts.map +1 -0
- package/dist/routes/moduleRegistry.js +356 -0
- package/dist/routes/moduleRegistry.js.map +1 -0
- package/dist/routes/notifications.d.ts +3 -0
- package/dist/routes/notifications.d.ts.map +1 -0
- package/dist/routes/notifications.js +250 -0
- package/dist/routes/notifications.js.map +1 -0
- package/dist/routes/port-forward.d.ts +3 -0
- package/dist/routes/port-forward.d.ts.map +1 -0
- package/dist/routes/port-forward.js +205 -0
- package/dist/routes/port-forward.js.map +1 -0
- package/dist/routes/projects.d.ts +3 -0
- package/dist/routes/projects.d.ts.map +1 -0
- package/dist/routes/projects.js +442 -0
- package/dist/routes/projects.js.map +1 -0
- package/dist/routes/ssh.d.ts +3 -0
- package/dist/routes/ssh.d.ts.map +1 -0
- package/dist/routes/ssh.js +192 -0
- package/dist/routes/ssh.js.map +1 -0
- package/dist/routes/tasks.d.ts +3 -0
- package/dist/routes/tasks.d.ts.map +1 -0
- package/dist/routes/tasks.js +183 -0
- package/dist/routes/tasks.js.map +1 -0
- package/dist/routes/tmux.d.ts +3 -0
- package/dist/routes/tmux.d.ts.map +1 -0
- package/dist/routes/tmux.js +1191 -0
- package/dist/routes/tmux.js.map +1 -0
- package/dist/routes/tunnel.d.ts +25 -0
- package/dist/routes/tunnel.d.ts.map +1 -0
- package/dist/routes/tunnel.js +449 -0
- package/dist/routes/tunnel.js.map +1 -0
- package/dist/services/ModulePermissions.d.ts +100 -0
- package/dist/services/ModulePermissions.d.ts.map +1 -0
- package/dist/services/ModulePermissions.js +312 -0
- package/dist/services/ModulePermissions.js.map +1 -0
- package/dist/services/ModuleRegistryService.d.ts +152 -0
- package/dist/services/ModuleRegistryService.d.ts.map +1 -0
- package/dist/services/ModuleRegistryService.js +522 -0
- package/dist/services/ModuleRegistryService.js.map +1 -0
- package/dist/services/agent.service.d.ts +19 -0
- package/dist/services/agent.service.d.ts.map +1 -0
- package/dist/services/agent.service.js +88 -0
- package/dist/services/agent.service.js.map +1 -0
- package/dist/services/bootstrap.d.ts +22 -0
- package/dist/services/bootstrap.d.ts.map +1 -0
- package/dist/services/bootstrap.js +206 -0
- package/dist/services/bootstrap.js.map +1 -0
- package/dist/services/service-manager.d.ts +50 -0
- package/dist/services/service-manager.d.ts.map +1 -0
- package/dist/services/service-manager.js +382 -0
- package/dist/services/service-manager.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
import { spawn, exec } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
import { homedir } from 'os';
|
|
6
|
+
import psTree from 'ps-tree';
|
|
7
|
+
import ora from 'ora';
|
|
8
|
+
const execAsync = promisify(exec);
|
|
9
|
+
const psTreeAsync = promisify(psTree);
|
|
10
|
+
export class ServiceManager {
|
|
11
|
+
registryPath;
|
|
12
|
+
logsDir;
|
|
13
|
+
constructor() {
|
|
14
|
+
const configDir = join(homedir(), '.vibecontrols');
|
|
15
|
+
this.registryPath = join(configDir, 'agents.json');
|
|
16
|
+
this.logsDir = join(configDir, 'logs');
|
|
17
|
+
// Ensure directories exist
|
|
18
|
+
mkdirSync(configDir, { recursive: true });
|
|
19
|
+
mkdirSync(this.logsDir, { recursive: true });
|
|
20
|
+
}
|
|
21
|
+
async startDaemon(config) {
|
|
22
|
+
const spinner = ora(`Starting agent '${config.name}'...`).start();
|
|
23
|
+
try {
|
|
24
|
+
// Check if already running
|
|
25
|
+
const existing = await this.findProcessByName(config.name);
|
|
26
|
+
if (existing && existing.status === 'running') {
|
|
27
|
+
spinner.warn(`Agent '${config.name}' is already running on port ${existing.port}`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
// Create log file
|
|
31
|
+
const logFile = join(this.logsDir, `${config.name}.log`);
|
|
32
|
+
// Spawn the process
|
|
33
|
+
const child = spawn(process.execPath, [
|
|
34
|
+
join(process.cwd(), 'dist/index.js')
|
|
35
|
+
], {
|
|
36
|
+
detached: true,
|
|
37
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
38
|
+
env: {
|
|
39
|
+
...process.env,
|
|
40
|
+
PORT: config.port.toString(),
|
|
41
|
+
DB_PATH: config.dbPath,
|
|
42
|
+
NODE_ENV: 'production'
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
// Redirect output to log file
|
|
46
|
+
if (child.stdout) {
|
|
47
|
+
child.stdout.on('data', (data) => {
|
|
48
|
+
const timestamp = new Date().toISOString();
|
|
49
|
+
const logEntry = `[${timestamp}] ${data.toString()}`;
|
|
50
|
+
this.appendToLog(config.name, logEntry);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
if (child.stderr) {
|
|
54
|
+
child.stderr.on('data', (data) => {
|
|
55
|
+
const timestamp = new Date().toISOString();
|
|
56
|
+
const logEntry = `[${timestamp}] ERROR: ${data.toString()}`;
|
|
57
|
+
this.appendToLog(config.name, logEntry);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
// Unreference the child process
|
|
61
|
+
child.unref();
|
|
62
|
+
// Wait a moment to ensure the process started
|
|
63
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
64
|
+
// Check if process is still running
|
|
65
|
+
const isRunning = await this.isProcessRunning(child.pid);
|
|
66
|
+
if (!isRunning) {
|
|
67
|
+
spinner.fail(`Failed to start agent '${config.name}'`);
|
|
68
|
+
throw new Error('Process failed to start');
|
|
69
|
+
}
|
|
70
|
+
// Save process info
|
|
71
|
+
await this.saveProcessInfo(config.name, child.pid, config);
|
|
72
|
+
spinner.succeed(`🚀 Agent '${config.name}' started successfully (PID: ${child.pid}, Port: ${config.port})`);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
spinner.fail(`Failed to start agent '${config.name}'`);
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async stop(name) {
|
|
80
|
+
const spinner = ora(`Stopping agent '${name}'...`).start();
|
|
81
|
+
try {
|
|
82
|
+
const agentProcess = await this.findProcessByName(name);
|
|
83
|
+
if (!agentProcess || agentProcess.status !== 'running') {
|
|
84
|
+
spinner.warn(`Agent '${name}' is not running`);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
// Send SIGTERM
|
|
88
|
+
try {
|
|
89
|
+
process.kill(agentProcess.pid, 'SIGTERM');
|
|
90
|
+
// Wait for graceful shutdown
|
|
91
|
+
await new Promise(resolve => setTimeout(resolve, 3000));
|
|
92
|
+
// Check if still running
|
|
93
|
+
const stillRunning = await this.isProcessRunning(agentProcess.pid);
|
|
94
|
+
if (stillRunning) {
|
|
95
|
+
// Force kill if still running
|
|
96
|
+
process.kill(agentProcess.pid, 'SIGKILL');
|
|
97
|
+
}
|
|
98
|
+
// Update registry
|
|
99
|
+
await this.updateProcessStatus(name, 'stopped');
|
|
100
|
+
spinner.succeed(`✅ Agent '${name}' stopped successfully`);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
spinner.fail(`Failed to stop agent '${name}'`);
|
|
104
|
+
throw error;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
spinner.fail(`Failed to stop agent '${name}'`);
|
|
109
|
+
throw error;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
async restart(name, config) {
|
|
113
|
+
const spinner = ora(`Restarting agent '${name}'...`).start();
|
|
114
|
+
try {
|
|
115
|
+
// Stop if running
|
|
116
|
+
const existing = await this.findProcessByName(name);
|
|
117
|
+
if (existing && existing.status === 'running') {
|
|
118
|
+
spinner.text = `Stopping agent '${name}'...`;
|
|
119
|
+
await this.stop(name);
|
|
120
|
+
}
|
|
121
|
+
// Start with new config
|
|
122
|
+
spinner.text = `Starting agent '${name}'...`;
|
|
123
|
+
await this.startDaemon(config);
|
|
124
|
+
spinner.succeed(`🔄 Agent '${name}' restarted successfully`);
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
spinner.fail(`Failed to restart agent '${name}'`);
|
|
128
|
+
throw error;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async stopAll() {
|
|
132
|
+
const spinner = ora('Stopping all agents...').start();
|
|
133
|
+
try {
|
|
134
|
+
const processes = await this.getRunningProcesses();
|
|
135
|
+
if (processes.length === 0) {
|
|
136
|
+
spinner.warn('No running agents found');
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
// Stop all processes
|
|
140
|
+
for (const process of processes) {
|
|
141
|
+
await this.stop(process.name);
|
|
142
|
+
}
|
|
143
|
+
spinner.succeed(`✅ Stopped ${processes.length} agent(s)`);
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
spinner.fail('Failed to stop all agents');
|
|
147
|
+
throw error;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
async kill(name) {
|
|
151
|
+
const spinner = ora(`Force killing agent '${name}'...`).start();
|
|
152
|
+
try {
|
|
153
|
+
const agentProcess = await this.findProcessByName(name);
|
|
154
|
+
if (!agentProcess || agentProcess.status !== 'running') {
|
|
155
|
+
spinner.warn(`Agent '${name}' is not running`);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
// Force kill
|
|
159
|
+
await this.killProcessTree(agentProcess.pid);
|
|
160
|
+
// Update registry
|
|
161
|
+
await this.updateProcessStatus(name, 'stopped');
|
|
162
|
+
spinner.succeed(`💀 Agent '${name}' killed successfully`);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
spinner.fail(`Failed to kill agent '${name}'`);
|
|
166
|
+
throw error;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
async killAll() {
|
|
170
|
+
const spinner = ora('Force killing all agents...').start();
|
|
171
|
+
try {
|
|
172
|
+
const processes = await this.getRunningProcesses();
|
|
173
|
+
if (processes.length === 0) {
|
|
174
|
+
spinner.warn('No running agents found');
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
// Kill all processes
|
|
178
|
+
for (const process of processes) {
|
|
179
|
+
await this.kill(process.name);
|
|
180
|
+
}
|
|
181
|
+
spinner.succeed(`💀 Killed ${processes.length} agent(s)`);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
spinner.fail('Failed to kill all agents');
|
|
185
|
+
throw error;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
async getStatus(name) {
|
|
189
|
+
const process = await this.findProcessByName(name);
|
|
190
|
+
return process;
|
|
191
|
+
}
|
|
192
|
+
async getStatusAll() {
|
|
193
|
+
const registry = await this.loadRegistry();
|
|
194
|
+
const processes = [];
|
|
195
|
+
for (const processInfo of registry) {
|
|
196
|
+
const isRunning = await this.isProcessRunning(processInfo.pid);
|
|
197
|
+
processes.push({
|
|
198
|
+
...processInfo,
|
|
199
|
+
status: isRunning ? 'running' : 'stopped'
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
return processes;
|
|
203
|
+
}
|
|
204
|
+
async listInstances() {
|
|
205
|
+
return await this.getStatusAll();
|
|
206
|
+
}
|
|
207
|
+
async showLogs(name, options) {
|
|
208
|
+
const logFile = join(this.logsDir, `${name}.log`);
|
|
209
|
+
if (!existsSync(logFile)) {
|
|
210
|
+
console.log(`No logs found for agent '${name}'`);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
if (options.follow) {
|
|
214
|
+
// Follow logs (simplified implementation)
|
|
215
|
+
const { spawn } = await import('child_process');
|
|
216
|
+
const tail = spawn('tail', ['-f', '-n', options.tail.toString(), logFile]);
|
|
217
|
+
tail.stdout?.on('data', (data) => {
|
|
218
|
+
process.stdout.write(data);
|
|
219
|
+
});
|
|
220
|
+
tail.stderr?.on('data', (data) => {
|
|
221
|
+
process.stderr.write(data);
|
|
222
|
+
});
|
|
223
|
+
// Handle Ctrl+C
|
|
224
|
+
process.on('SIGINT', () => {
|
|
225
|
+
tail.kill();
|
|
226
|
+
process.exit(0);
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
// Show last N lines
|
|
231
|
+
try {
|
|
232
|
+
const { stdout } = await execAsync(`tail -n ${options.tail} "${logFile}"`);
|
|
233
|
+
console.log(stdout);
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
console.error('Failed to read logs:', error);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
async checkHealth(name) {
|
|
241
|
+
const process = await this.findProcessByName(name);
|
|
242
|
+
if (!process || process.status !== 'running') {
|
|
243
|
+
return { healthy: false, details: { error: 'Process not running' } };
|
|
244
|
+
}
|
|
245
|
+
try {
|
|
246
|
+
// Make HTTP request to health endpoint
|
|
247
|
+
const response = await fetch(`http://localhost:${process.port}/health`);
|
|
248
|
+
const data = await response.json();
|
|
249
|
+
return {
|
|
250
|
+
healthy: response.ok,
|
|
251
|
+
details: data
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
return {
|
|
256
|
+
healthy: false,
|
|
257
|
+
details: { error: 'Health check failed', message: error.message }
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
async checkHealthAll() {
|
|
262
|
+
const processes = await this.getRunningProcesses();
|
|
263
|
+
const health = {};
|
|
264
|
+
for (const process of processes) {
|
|
265
|
+
health[process.name] = await this.checkHealth(process.name);
|
|
266
|
+
}
|
|
267
|
+
return health;
|
|
268
|
+
}
|
|
269
|
+
async setConfig(key, value) {
|
|
270
|
+
// Implementation for setting global configuration
|
|
271
|
+
const configFile = join(homedir(), '.vibecontrols', 'config.json');
|
|
272
|
+
let config = {};
|
|
273
|
+
if (existsSync(configFile)) {
|
|
274
|
+
config = JSON.parse(readFileSync(configFile, 'utf8'));
|
|
275
|
+
}
|
|
276
|
+
config[key] = value;
|
|
277
|
+
writeFileSync(configFile, JSON.stringify(config, null, 2));
|
|
278
|
+
}
|
|
279
|
+
async getConfig(key) {
|
|
280
|
+
const configFile = join(homedir(), '.vibecontrols', 'config.json');
|
|
281
|
+
if (!existsSync(configFile)) {
|
|
282
|
+
return key ? undefined : {};
|
|
283
|
+
}
|
|
284
|
+
const config = JSON.parse(readFileSync(configFile, 'utf8'));
|
|
285
|
+
return key ? config[key] : config;
|
|
286
|
+
}
|
|
287
|
+
// Private helper methods
|
|
288
|
+
async loadRegistry() {
|
|
289
|
+
if (!existsSync(this.registryPath)) {
|
|
290
|
+
return [];
|
|
291
|
+
}
|
|
292
|
+
try {
|
|
293
|
+
const data = readFileSync(this.registryPath, 'utf8');
|
|
294
|
+
return JSON.parse(data);
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
console.warn('Failed to load registry:', error);
|
|
298
|
+
return [];
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
async saveRegistry(processes) {
|
|
302
|
+
writeFileSync(this.registryPath, JSON.stringify(processes, null, 2));
|
|
303
|
+
}
|
|
304
|
+
async saveProcessInfo(name, pid, config) {
|
|
305
|
+
const registry = await this.loadRegistry();
|
|
306
|
+
// Remove existing entry with same name
|
|
307
|
+
const filtered = registry.filter(p => p.name !== name);
|
|
308
|
+
// Add new entry
|
|
309
|
+
const processInfo = {
|
|
310
|
+
name,
|
|
311
|
+
pid,
|
|
312
|
+
port: config.port,
|
|
313
|
+
config,
|
|
314
|
+
startTime: new Date().toISOString(),
|
|
315
|
+
status: 'running'
|
|
316
|
+
};
|
|
317
|
+
filtered.push(processInfo);
|
|
318
|
+
await this.saveRegistry(filtered);
|
|
319
|
+
}
|
|
320
|
+
async updateProcessStatus(name, status) {
|
|
321
|
+
const registry = await this.loadRegistry();
|
|
322
|
+
const process = registry.find(p => p.name === name);
|
|
323
|
+
if (process) {
|
|
324
|
+
process.status = status;
|
|
325
|
+
await this.saveRegistry(registry);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
async findProcessByName(name) {
|
|
329
|
+
const registry = await this.loadRegistry();
|
|
330
|
+
const process = registry.find(p => p.name === name);
|
|
331
|
+
if (!process) {
|
|
332
|
+
return null;
|
|
333
|
+
}
|
|
334
|
+
// Update status based on actual process state
|
|
335
|
+
const isRunning = await this.isProcessRunning(process.pid);
|
|
336
|
+
process.status = isRunning ? 'running' : 'stopped';
|
|
337
|
+
return process;
|
|
338
|
+
}
|
|
339
|
+
async getRunningProcesses() {
|
|
340
|
+
const processes = await this.getStatusAll();
|
|
341
|
+
return processes.filter(p => p.status === 'running');
|
|
342
|
+
}
|
|
343
|
+
async isProcessRunning(pid) {
|
|
344
|
+
try {
|
|
345
|
+
// Use kill with signal 0 to check if process exists
|
|
346
|
+
process.kill(pid, 0);
|
|
347
|
+
return true;
|
|
348
|
+
}
|
|
349
|
+
catch (error) {
|
|
350
|
+
return false;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
async killProcessTree(pid) {
|
|
354
|
+
try {
|
|
355
|
+
const children = await psTreeAsync(pid);
|
|
356
|
+
// Kill all child processes first
|
|
357
|
+
for (const child of children) {
|
|
358
|
+
try {
|
|
359
|
+
process.kill(parseInt(child.PID), 'SIGKILL');
|
|
360
|
+
}
|
|
361
|
+
catch (error) {
|
|
362
|
+
// Ignore errors for processes that might already be dead
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
// Kill the main process
|
|
366
|
+
process.kill(pid, 'SIGKILL');
|
|
367
|
+
}
|
|
368
|
+
catch (error) {
|
|
369
|
+
// Process might already be dead
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
appendToLog(name, data) {
|
|
373
|
+
const logFile = join(this.logsDir, `${name}.log`);
|
|
374
|
+
try {
|
|
375
|
+
writeFileSync(logFile, data, { flag: 'a' });
|
|
376
|
+
}
|
|
377
|
+
catch (error) {
|
|
378
|
+
console.error('Failed to write to log file:', error);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
//# sourceMappingURL=service-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-manager.js","sourceRoot":"","sources":["../../src/services/service-manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@burdenoff/vibe-agent",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"main": "./dist/index.js",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"vibe": "./dist/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"engines": {
|
|
10
|
+
"node": ">=18.0.0"
|
|
11
|
+
},
|
|
12
|
+
"scripts": {
|
|
13
|
+
"dev": "node --watch --experimental-specifier-resolution=node ./dist/index.js",
|
|
14
|
+
"dev:ts": "npx tsx --watch ./src/index.ts",
|
|
15
|
+
"start": "node ./dist/index.js",
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"lint": "eslint ./src",
|
|
18
|
+
"lint:fix": "eslint ./src --fix",
|
|
19
|
+
"format": "npx prettier . --write",
|
|
20
|
+
"format:check": "npx prettier . --check",
|
|
21
|
+
"type:check": "tsc --noEmit",
|
|
22
|
+
"test": "node --test tests/**/*.test.ts 2>/dev/null || echo 'Tests skipped'",
|
|
23
|
+
"db:clean": "node ./dist/scripts/clean-database.js",
|
|
24
|
+
"db:migrate": "node ./dist/migrations/remove-notes-prompts.js",
|
|
25
|
+
"prepublishOnly": "npm run build",
|
|
26
|
+
"clean": "rimraf dist coverage",
|
|
27
|
+
"prebuild": "npm run clean",
|
|
28
|
+
"postbuild": "echo 'Build completed successfully'",
|
|
29
|
+
"sanity": "npm run format:check && npm run lint && npm run type:check && npm run build"
|
|
30
|
+
},
|
|
31
|
+
"keywords": [
|
|
32
|
+
"vibecontrols",
|
|
33
|
+
"vibe",
|
|
34
|
+
"agent",
|
|
35
|
+
"task-runner",
|
|
36
|
+
"terminal",
|
|
37
|
+
"tmux",
|
|
38
|
+
"ssh",
|
|
39
|
+
"tunnel",
|
|
40
|
+
"cloudflared",
|
|
41
|
+
"cli",
|
|
42
|
+
"devtools",
|
|
43
|
+
"remote-development"
|
|
44
|
+
],
|
|
45
|
+
"author": {
|
|
46
|
+
"name": "Vignesh T.V",
|
|
47
|
+
"email": "vignesh@burdenoff.com",
|
|
48
|
+
"url": "https://github.com/tvvignesh"
|
|
49
|
+
},
|
|
50
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
51
|
+
"description": "VibeControls Agent CLI - Remote development environment management with terminal multiplexing, SSH, tunnels, and port forwarding",
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"@fastify/cors": "^11.0.1",
|
|
54
|
+
"@fastify/helmet": "^13.0.1",
|
|
55
|
+
"@fastify/http-proxy": "^11.4.1",
|
|
56
|
+
"better-sqlite3": "^11.10.0",
|
|
57
|
+
"chokidar": "^4.0.3",
|
|
58
|
+
"commander": "^14.0.0",
|
|
59
|
+
"dotenv": "^16.6.1",
|
|
60
|
+
"fastify": "^5.4.0",
|
|
61
|
+
"jsonwebtoken": "^9.0.2",
|
|
62
|
+
"ora": "^8.2.0",
|
|
63
|
+
"ps-tree": "^1.2.0",
|
|
64
|
+
"socket.io": "^4.8.1",
|
|
65
|
+
"ssh2": "^1.16.0",
|
|
66
|
+
"uuid": "^11.1.0"
|
|
67
|
+
},
|
|
68
|
+
"devDependencies": {
|
|
69
|
+
"@eslint/js": "^9.30.1",
|
|
70
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
71
|
+
"@types/jsonwebtoken": "^9.0.10",
|
|
72
|
+
"@types/node": "^24.0.11",
|
|
73
|
+
"@types/ps-tree": "^1.1.6",
|
|
74
|
+
"@types/ssh2": "^1.15.5",
|
|
75
|
+
"@types/uuid": "^10.0.0",
|
|
76
|
+
"@types/ws": "^8.18.1",
|
|
77
|
+
"eslint": "^9.30.1",
|
|
78
|
+
"globals": "^16.3.0",
|
|
79
|
+
"prettier": "^3.6.2",
|
|
80
|
+
"rimraf": "^6.0.1",
|
|
81
|
+
"typescript": "^5.8.3",
|
|
82
|
+
"typescript-eslint": "^8.36.0"
|
|
83
|
+
},
|
|
84
|
+
"trustedDependencies": [
|
|
85
|
+
"better-sqlite3",
|
|
86
|
+
"cpu-features",
|
|
87
|
+
"ssh2"
|
|
88
|
+
],
|
|
89
|
+
"repository": {
|
|
90
|
+
"type": "git",
|
|
91
|
+
"url": "https://github.com/algoshred/vibecontrols-agent.git"
|
|
92
|
+
},
|
|
93
|
+
"bugs": {
|
|
94
|
+
"url": "https://github.com/algoshred/vibecontrols-agent/issues"
|
|
95
|
+
},
|
|
96
|
+
"homepage": "https://vibecontrols.com",
|
|
97
|
+
"publishConfig": {
|
|
98
|
+
"access": "public",
|
|
99
|
+
"registry": "https://registry.npmjs.org/"
|
|
100
|
+
},
|
|
101
|
+
"files": [
|
|
102
|
+
"dist/**/*",
|
|
103
|
+
"README.md",
|
|
104
|
+
"LICENSE",
|
|
105
|
+
".env.example"
|
|
106
|
+
]
|
|
107
|
+
}
|