@vibecompany/247-cli 0.1.0 → 0.2.2

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 (70) hide show
  1. package/agent/dist/db/environments.d.ts +65 -0
  2. package/agent/dist/db/environments.d.ts.map +1 -0
  3. package/agent/dist/db/environments.js +243 -0
  4. package/agent/dist/db/environments.js.map +1 -0
  5. package/agent/dist/db/history.d.ts +37 -0
  6. package/agent/dist/db/history.d.ts.map +1 -0
  7. package/agent/dist/db/history.js +98 -0
  8. package/agent/dist/db/history.js.map +1 -0
  9. package/agent/dist/db/index.d.ts +37 -0
  10. package/agent/dist/db/index.d.ts.map +1 -0
  11. package/agent/dist/db/index.js +225 -0
  12. package/agent/dist/db/index.js.map +1 -0
  13. package/agent/dist/db/schema.d.ts +70 -0
  14. package/agent/dist/db/schema.d.ts.map +1 -0
  15. package/agent/dist/db/schema.js +79 -0
  16. package/agent/dist/db/schema.js.map +1 -0
  17. package/agent/dist/db/sessions.d.ts +75 -0
  18. package/agent/dist/db/sessions.d.ts.map +1 -0
  19. package/agent/dist/db/sessions.js +244 -0
  20. package/agent/dist/db/sessions.js.map +1 -0
  21. package/agent/dist/editor.d.ts +18 -0
  22. package/agent/dist/editor.d.ts.map +1 -0
  23. package/agent/dist/editor.js +220 -0
  24. package/agent/dist/editor.js.map +1 -0
  25. package/agent/dist/environments.d.ts +59 -0
  26. package/agent/dist/environments.d.ts.map +1 -0
  27. package/agent/dist/environments.js +229 -0
  28. package/agent/dist/environments.js.map +1 -0
  29. package/agent/dist/git.d.ts +39 -0
  30. package/agent/dist/git.d.ts.map +1 -0
  31. package/agent/dist/git.js +436 -0
  32. package/agent/dist/git.js.map +1 -0
  33. package/agent/dist/index.d.ts +2 -0
  34. package/agent/dist/index.d.ts.map +1 -0
  35. package/agent/dist/index.js +17 -0
  36. package/agent/dist/index.js.map +1 -0
  37. package/agent/dist/server.d.ts +2 -0
  38. package/agent/dist/server.d.ts.map +1 -0
  39. package/agent/dist/server.js +1062 -0
  40. package/agent/dist/server.js.map +1 -0
  41. package/agent/dist/terminal.d.ts +14 -0
  42. package/agent/dist/terminal.d.ts.map +1 -0
  43. package/agent/dist/terminal.js +115 -0
  44. package/agent/dist/terminal.js.map +1 -0
  45. package/dist/commands/init.d.ts.map +1 -1
  46. package/dist/commands/init.js +25 -14
  47. package/dist/commands/init.js.map +1 -1
  48. package/dist/commands/profile.d.ts +3 -0
  49. package/dist/commands/profile.d.ts.map +1 -0
  50. package/dist/commands/profile.js +156 -0
  51. package/dist/commands/profile.js.map +1 -0
  52. package/dist/commands/start.d.ts.map +1 -1
  53. package/dist/commands/start.js +21 -10
  54. package/dist/commands/start.js.map +1 -1
  55. package/dist/index.d.ts +3 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +6 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/lib/config.d.ts +30 -5
  60. package/dist/lib/config.d.ts.map +1 -1
  61. package/dist/lib/config.js +85 -12
  62. package/dist/lib/config.js.map +1 -1
  63. package/dist/lib/process.d.ts +2 -1
  64. package/dist/lib/process.d.ts.map +1 -1
  65. package/dist/lib/process.js +10 -4
  66. package/dist/lib/process.js.map +1 -1
  67. package/hooks/.claude-plugin/plugin.json +5 -0
  68. package/hooks/hooks/hooks.json +61 -0
  69. package/hooks/scripts/notify-status.sh +89 -0
  70. package/package.json +22 -5
@@ -0,0 +1,436 @@
1
+ import { exec } from 'child_process';
2
+ import { promisify } from 'util';
3
+ import * as fs from 'fs/promises';
4
+ import * as path from 'path';
5
+ import { spawn } from 'child_process';
6
+ const execAsync = promisify(exec);
7
+ // Check if a directory is a git repository
8
+ export async function isGitRepo(projectPath) {
9
+ try {
10
+ const gitDir = path.join(projectPath, '.git');
11
+ const stat = await fs.stat(gitDir);
12
+ return stat.isDirectory();
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ }
18
+ // Get git status for all files in a project
19
+ export async function getGitStatus(projectPath) {
20
+ const statusMap = new Map();
21
+ // Check if it's a git repo
22
+ if (!(await isGitRepo(projectPath))) {
23
+ return statusMap;
24
+ }
25
+ try {
26
+ // git status --porcelain returns: XY filename
27
+ // X = staged status, Y = working tree status
28
+ const { stdout } = await execAsync('git status --porcelain', {
29
+ cwd: projectPath,
30
+ timeout: 10000,
31
+ });
32
+ const lines = stdout.trim().split('\n').filter(Boolean);
33
+ for (const line of lines) {
34
+ if (line.length < 4)
35
+ continue;
36
+ const statusCode = line.substring(0, 2).trim();
37
+ const filePath = line.substring(3);
38
+ // Determine status from git code
39
+ // M = modified, A = added, D = deleted, ?? = untracked, UU = conflicted
40
+ let status;
41
+ switch (statusCode) {
42
+ case 'M':
43
+ case 'MM':
44
+ case 'AM':
45
+ status = 'modified';
46
+ break;
47
+ case 'A':
48
+ status = 'added';
49
+ break;
50
+ case 'D':
51
+ case 'AD':
52
+ status = 'deleted';
53
+ break;
54
+ case '??':
55
+ status = 'untracked';
56
+ break;
57
+ case 'UU':
58
+ case 'AA':
59
+ case 'DD':
60
+ status = 'conflicted';
61
+ break;
62
+ default:
63
+ status = 'modified';
64
+ }
65
+ statusMap.set(filePath, status);
66
+ }
67
+ }
68
+ catch (err) {
69
+ console.error(`[Git] Failed to get status for ${projectPath}:`, err.message);
70
+ }
71
+ return statusMap;
72
+ }
73
+ // Check if a path should be ignored (node_modules, .git, etc.)
74
+ function shouldIgnore(name, isDir) {
75
+ const ignoredDirs = [
76
+ 'node_modules',
77
+ '.git',
78
+ '.next',
79
+ 'dist',
80
+ 'build',
81
+ '.turbo',
82
+ 'coverage',
83
+ '.vscode',
84
+ '.idea',
85
+ ];
86
+ const ignoredFiles = [
87
+ '.DS_Store',
88
+ 'Thumbs.db',
89
+ '*.log',
90
+ ];
91
+ if (isDir && ignoredDirs.includes(name)) {
92
+ return true;
93
+ }
94
+ if (!isDir && ignoredFiles.includes(name)) {
95
+ return true;
96
+ }
97
+ return false;
98
+ }
99
+ // Get file extension for syntax highlighting
100
+ function getFileExtension(filename) {
101
+ const parts = filename.split('.');
102
+ if (parts.length > 1) {
103
+ return parts[parts.length - 1].toLowerCase();
104
+ }
105
+ return '';
106
+ }
107
+ // Recursively build file tree
108
+ async function buildFileTree(dirPath, relativePath, gitStatus) {
109
+ const nodes = [];
110
+ try {
111
+ const entries = await fs.readdir(dirPath, { withFileTypes: true });
112
+ // Sort: directories first, then files, both alphabetically
113
+ const sortedEntries = entries.sort((a, b) => {
114
+ if (a.isDirectory() && !b.isDirectory())
115
+ return -1;
116
+ if (!a.isDirectory() && b.isDirectory())
117
+ return 1;
118
+ return a.name.localeCompare(b.name, undefined, { numeric: true });
119
+ });
120
+ for (const entry of sortedEntries) {
121
+ if (shouldIgnore(entry.name, entry.isDirectory())) {
122
+ continue;
123
+ }
124
+ const entryRelativePath = relativePath ? `${relativePath}/${entry.name}` : entry.name;
125
+ const entryFullPath = path.join(dirPath, entry.name);
126
+ if (entry.isDirectory()) {
127
+ // Recursively process directory
128
+ const children = await buildFileTree(entryFullPath, entryRelativePath, gitStatus);
129
+ // Skip empty directories that aren't in git
130
+ if (children.length === 0 && !gitStatus.has(entryRelativePath + '/')) {
131
+ continue;
132
+ }
133
+ // Directory status is derived from children (most "significant" status)
134
+ const dirStatus = getDirectoryStatus(entryRelativePath, gitStatus, children);
135
+ nodes.push({
136
+ path: entryRelativePath,
137
+ name: entry.name,
138
+ type: 'directory',
139
+ status: dirStatus,
140
+ children,
141
+ });
142
+ }
143
+ else {
144
+ // File node
145
+ nodes.push({
146
+ path: entryRelativePath,
147
+ name: entry.name,
148
+ type: 'file',
149
+ status: gitStatus.get(entryRelativePath),
150
+ extension: getFileExtension(entry.name),
151
+ });
152
+ }
153
+ }
154
+ }
155
+ catch (err) {
156
+ console.error(`[Git] Failed to read directory ${dirPath}:`, err.message);
157
+ }
158
+ return nodes;
159
+ }
160
+ // Determine directory status based on its contents
161
+ function getDirectoryStatus(dirPath, gitStatus, children) {
162
+ // Check if directory itself has a status (e.g., deleted)
163
+ const dirWithSlash = dirPath + '/';
164
+ if (gitStatus.has(dirWithSlash)) {
165
+ return gitStatus.get(dirWithSlash);
166
+ }
167
+ // Check children for status (priority: conflicted > modified > added > deleted > untracked)
168
+ const statusPriority = ['conflicted', 'modified', 'added', 'deleted', 'untracked'];
169
+ for (const status of statusPriority) {
170
+ const hasChildWithStatus = children.some(child => {
171
+ if (child.status === status)
172
+ return true;
173
+ if (child.children) {
174
+ return child.children.some(c => c.status === status);
175
+ }
176
+ return false;
177
+ });
178
+ if (hasChildWithStatus)
179
+ return status;
180
+ }
181
+ return undefined;
182
+ }
183
+ // List all files in a project as a tree
184
+ export async function listFiles(projectPath) {
185
+ // Get git status first
186
+ const gitStatus = await getGitStatus(projectPath);
187
+ // Build file tree
188
+ const tree = await buildFileTree(projectPath, '', gitStatus);
189
+ return tree;
190
+ }
191
+ // Get file content for preview
192
+ export async function getFileContent(projectPath, filePath) {
193
+ const fullPath = path.join(projectPath, filePath);
194
+ try {
195
+ const stats = await fs.stat(fullPath);
196
+ // Check if file is too large (>1MB)
197
+ if (stats.size > 1024 * 1024) {
198
+ return {
199
+ content: '// File too large to preview (>1MB)',
200
+ encoding: 'utf-8',
201
+ size: stats.size,
202
+ isBinary: false,
203
+ };
204
+ }
205
+ // Try to read as text
206
+ const buffer = await fs.readFile(fullPath);
207
+ // Check for binary files (null bytes common in binaries)
208
+ if (buffer.includes(0)) {
209
+ return {
210
+ content: '// Binary file - cannot preview',
211
+ encoding: 'utf-8',
212
+ size: stats.size,
213
+ isBinary: true,
214
+ };
215
+ }
216
+ // Convert to string
217
+ const content = buffer.toString('utf-8');
218
+ return {
219
+ content,
220
+ encoding: 'utf-8',
221
+ size: stats.size,
222
+ isBinary: false,
223
+ };
224
+ }
225
+ catch (err) {
226
+ throw new Error(`Failed to read file: ${err.message}`);
227
+ }
228
+ }
229
+ // Open a file in the local editor (VS Code, Cursor, etc.)
230
+ export async function openFileInEditor(projectPath, filePath) {
231
+ const fullPath = path.join(projectPath, filePath);
232
+ // Check file exists
233
+ try {
234
+ await fs.access(fullPath);
235
+ }
236
+ catch {
237
+ return {
238
+ success: false,
239
+ error: 'File not found',
240
+ };
241
+ }
242
+ // Try different editors in order of preference
243
+ const editors = [
244
+ { cmd: 'cursor', args: ['--goto'] },
245
+ { cmd: 'code', args: ['--goto'] },
246
+ { cmd: 'code', args: [] }, // Fallback without --goto
247
+ { cmd: 'subl', args: [] },
248
+ { cmd: 'vim', args: [] },
249
+ ];
250
+ for (const editor of editors) {
251
+ try {
252
+ // Check if editor is available
253
+ await execAsync(`which ${editor.cmd}`, { timeout: 1000 });
254
+ // Open file using spawn (detached)
255
+ const args = [...editor.args, fullPath];
256
+ spawn(editor.cmd, args, {
257
+ cwd: projectPath,
258
+ stdio: 'ignore',
259
+ detached: true,
260
+ }).unref();
261
+ return {
262
+ success: true,
263
+ command: editor.cmd,
264
+ };
265
+ }
266
+ catch {
267
+ // Editor not available, try next
268
+ continue;
269
+ }
270
+ }
271
+ return {
272
+ success: false,
273
+ error: 'No suitable editor found (install VS Code, Cursor, or Sublime Text)',
274
+ };
275
+ }
276
+ // Get summary of changes
277
+ export async function getChangesSummary(projectPath) {
278
+ const gitStatus = await getGitStatus(projectPath);
279
+ const summary = {
280
+ modified: 0,
281
+ added: 0,
282
+ deleted: 0,
283
+ untracked: 0,
284
+ conflicted: 0,
285
+ };
286
+ for (const status of gitStatus.values()) {
287
+ switch (status) {
288
+ case 'modified':
289
+ summary.modified++;
290
+ break;
291
+ case 'added':
292
+ summary.added++;
293
+ break;
294
+ case 'deleted':
295
+ summary.deleted++;
296
+ break;
297
+ case 'untracked':
298
+ summary.untracked++;
299
+ break;
300
+ case 'conflicted':
301
+ summary.conflicted++;
302
+ break;
303
+ }
304
+ }
305
+ return summary;
306
+ }
307
+ // Validate git URL to prevent injection attacks
308
+ function isValidGitUrl(url) {
309
+ // Allow common git URL formats
310
+ const patterns = [
311
+ // HTTPS URLs
312
+ /^https?:\/\/[\w.-]+\/[\w.-]+\/[\w.-]+(?:\.git)?$/,
313
+ // SSH URLs (git@host:user/repo)
314
+ /^git@[\w.-]+:[\w.-]+\/[\w.-]+(?:\.git)?$/,
315
+ // GitHub shorthand
316
+ /^[\w.-]+\/[\w.-]+$/,
317
+ ];
318
+ return patterns.some(pattern => pattern.test(url));
319
+ }
320
+ // Extract project name from git URL
321
+ export function extractProjectName(url) {
322
+ // Remove trailing .git if present
323
+ let cleanUrl = url.replace(/\.git$/, '');
324
+ // Handle different URL formats
325
+ if (cleanUrl.includes(':') && !cleanUrl.includes('://')) {
326
+ // SSH format: git@github.com:user/repo
327
+ cleanUrl = cleanUrl.split(':').pop() || '';
328
+ }
329
+ else if (cleanUrl.includes('://')) {
330
+ // HTTPS format: https://github.com/user/repo
331
+ cleanUrl = cleanUrl.split('/').slice(-2).join('/');
332
+ }
333
+ // Get the last part (repo name)
334
+ const parts = cleanUrl.split('/');
335
+ return parts[parts.length - 1] || 'cloned-repo';
336
+ }
337
+ // Validate project name
338
+ function isValidProjectName(name) {
339
+ // Allow alphanumeric, hyphens, underscores, dots
340
+ return /^[\w.-]+$/.test(name) && name.length > 0 && name.length <= 100;
341
+ }
342
+ // Clone a git repository
343
+ export async function cloneRepo(repoUrl, basePath, projectName) {
344
+ // Validate URL
345
+ if (!isValidGitUrl(repoUrl)) {
346
+ return {
347
+ success: false,
348
+ projectName: '',
349
+ path: '',
350
+ error: 'Invalid git URL format',
351
+ };
352
+ }
353
+ // Determine project name
354
+ const finalProjectName = projectName || extractProjectName(repoUrl);
355
+ // Validate project name
356
+ if (!isValidProjectName(finalProjectName)) {
357
+ return {
358
+ success: false,
359
+ projectName: finalProjectName,
360
+ path: '',
361
+ error: 'Invalid project name (use alphanumeric, hyphens, underscores)',
362
+ };
363
+ }
364
+ // Resolve paths
365
+ const resolvedBasePath = basePath.replace('~', process.env.HOME || '');
366
+ const targetPath = path.join(resolvedBasePath, finalProjectName);
367
+ // Check if directory already exists
368
+ try {
369
+ await fs.access(targetPath);
370
+ return {
371
+ success: false,
372
+ projectName: finalProjectName,
373
+ path: targetPath,
374
+ error: `Directory already exists: ${finalProjectName}`,
375
+ };
376
+ }
377
+ catch {
378
+ // Directory doesn't exist, good to proceed
379
+ }
380
+ // Run git clone
381
+ try {
382
+ console.log(`[Git] Cloning ${repoUrl} to ${targetPath}...`);
383
+ // Use SSH if available, otherwise HTTPS
384
+ // The git command will use the user's SSH keys automatically
385
+ const { stderr } = await execAsync(`git clone "${repoUrl}" "${targetPath}"`, {
386
+ cwd: resolvedBasePath,
387
+ timeout: 300000, // 5 minute timeout for large repos
388
+ });
389
+ // Check for any errors in stderr (git outputs progress to stderr)
390
+ if (stderr && stderr.includes('fatal:')) {
391
+ throw new Error(stderr);
392
+ }
393
+ console.log(`[Git] Successfully cloned ${repoUrl}`);
394
+ return {
395
+ success: true,
396
+ projectName: finalProjectName,
397
+ path: targetPath,
398
+ };
399
+ }
400
+ catch (err) {
401
+ const error = err;
402
+ console.error(`[Git] Clone failed:`, error.message);
403
+ // Clean up partial clone if it exists
404
+ try {
405
+ await fs.rm(targetPath, { recursive: true, force: true });
406
+ }
407
+ catch {
408
+ // Ignore cleanup errors
409
+ }
410
+ // Parse common error messages
411
+ let errorMessage = 'Clone failed';
412
+ const errOutput = error.stderr || error.message || '';
413
+ if (errOutput.includes('Permission denied')) {
414
+ errorMessage = 'Permission denied - check SSH keys or use HTTPS URL';
415
+ }
416
+ else if (errOutput.includes('Repository not found')) {
417
+ errorMessage = 'Repository not found - check URL and access permissions';
418
+ }
419
+ else if (errOutput.includes('Authentication failed')) {
420
+ errorMessage = 'Authentication failed - check credentials';
421
+ }
422
+ else if (errOutput.includes('Could not resolve host')) {
423
+ errorMessage = 'Could not resolve host - check network connection';
424
+ }
425
+ else if (error.message) {
426
+ errorMessage = error.message;
427
+ }
428
+ return {
429
+ success: false,
430
+ projectName: finalProjectName,
431
+ path: targetPath,
432
+ error: errorMessage,
433
+ };
434
+ }
435
+ }
436
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { createServer } from './server.js';
2
+ import config from '../config.json' with { type: 'json' };
3
+ const PORT = config.agent?.port || 4678;
4
+ async function main() {
5
+ console.log(`Starting 247 Agent for ${config.machine.name}...`);
6
+ const server = await createServer();
7
+ server.listen(PORT, () => {
8
+ console.log(`\nšŸš€ Agent running on http://localhost:${PORT}`);
9
+ console.log(`šŸ“” Connect your dashboard to: ws://localhost:${PORT}`);
10
+ console.log(`\nšŸ’” For remote access, use one of these options:`);
11
+ console.log(` • Tailscale Funnel: tailscale funnel --bg --https=${PORT}`);
12
+ console.log(` • Cloudflare Tunnel: cloudflared tunnel --url http://localhost:${PORT}`);
13
+ console.log(` • SSH tunnel: ssh -L ${PORT}:localhost:${PORT} user@remote\n`);
14
+ });
15
+ }
16
+ main().catch(console.error);
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,MAAM,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAE1D,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC;AAExC,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;IAEpC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACvB,OAAO,CAAC,GAAG,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,gDAAgD,IAAI,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,wDAAwD,IAAI,EAAE,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,qEAAqE,IAAI,EAAE,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,cAAc,IAAI,gBAAgB,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function createServer(): Promise<import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>>;
2
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AA4KA,wBAAsB,YAAY,gHAqlCjC"}