UNPKG

@graphteon/juricode

Version:

We are forging the future with lines of digital steel

262 lines 11.6 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.deleteConversation = exports.getConversationDetails = exports.listConversations = exports.createConversation = void 0; const p = __importStar(require("@clack/prompts")); const chalk_1 = __importDefault(require("chalk")); const boxen_1 = __importDefault(require("boxen")); const conversation_1 = require("../api/conversation"); const git_1 = require("../api/git"); const getStatusColor = (status) => { switch (status.toLowerCase()) { case 'completed': return chalk_1.default.green(status); case 'active': return chalk_1.default.yellow(status); case 'failed': return chalk_1.default.red(status); default: return chalk_1.default.white(status); } }; const createConversation = async () => { const gitService = new git_1.GitService(); p.intro('Create a new conversation'); const s = p.spinner(); s.start('Loading repositories'); try { const repos = await gitService.getUserRepositories(); s.stop('Repositories loaded'); const repository = await p.select({ message: 'Select a repository', options: [ { label: 'No repository (start empty conversation)', value: '' }, ...repos.map(repo => ({ label: repo.full_name, value: repo.full_name })) ] }); if (p.isCancel(repository)) { p.cancel('Operation cancelled'); return; } let selectedBranch; if (repository) { s.start('Loading branches'); try { const branches = await gitService.getRepositoryBranches(repository); s.stop('Branches loaded'); const branch = await p.select({ message: 'Select a branch', options: branches.map(branch => ({ label: branch.name, value: branch.name })) }); if (p.isCancel(branch)) { p.cancel('Operation cancelled'); return; } selectedBranch = branch; } catch (error) { p.log.error('Failed to load branches'); p.log.error(error instanceof Error ? error.message : 'Unknown error'); return; } } const message = await p.text({ message: 'Enter initial message (optional)', }); if (p.isCancel(message)) { p.cancel('Operation cancelled'); return; } s.start('Creating conversation'); try { const conversationService = new conversation_1.ConversationService(); const conversation = await conversationService.createConversation({ repository: repository || undefined, git_provider: 'github', selected_branch: selectedBranch, initial_user_msg: message || undefined }); s.stop('Conversation created successfully'); console.log((0, boxen_1.default)(`ID: ${chalk_1.default.cyan(conversation.conversation_id)} Title: ${chalk_1.default.white(conversation.title)} Status: ${getStatusColor(conversation.status)} Repository: ${chalk_1.default.yellow(conversation.repository || 'N/A')} Branch: ${chalk_1.default.yellow(conversation.selected_branch || 'N/A')} Created At: ${chalk_1.default.gray(new Date(conversation.created_at).toLocaleString())}`, { padding: 1, borderColor: 'green' })); p.outro('Conversation created successfully!'); } catch (error) { p.log.error('Failed to create conversation'); p.log.error(error instanceof Error ? error.message : 'Unknown error'); } } catch (error) { p.log.error('Failed to load repositories'); p.log.error(error instanceof Error ? error.message : 'Unknown error'); } }; exports.createConversation = createConversation; const listConversations = async () => { p.intro('List conversations'); const s = p.spinner(); s.start('Fetching conversations'); try { const conversationService = new conversation_1.ConversationService(); const conversations = await conversationService.getConversations(); s.stop('Conversations fetched'); if (conversations.length === 0) { p.log.warn('No conversations found'); p.outro('No conversations available'); return; } console.log((0, boxen_1.default)(chalk_1.default.white(`Found ${conversations.length} conversation(s)`), { padding: 1, margin: { top: 1 }, borderColor: 'blue' })); conversations.forEach(conversation => { console.log((0, boxen_1.default)(`ID: ${chalk_1.default.cyan(conversation.conversation_id)} Title: ${chalk_1.default.white(conversation.title)} Status: ${getStatusColor(conversation.status)} Repository: ${chalk_1.default.yellow(conversation.repository || 'N/A')} Branch: ${chalk_1.default.yellow(conversation.selected_branch || 'N/A')} Created: ${chalk_1.default.gray(new Date(conversation.created_at).toLocaleString())}`, { padding: 1, margin: { top: 0, bottom: 1 }, borderColor: conversation.status === 'completed' ? 'green' : 'blue', borderStyle: conversation.status === 'completed' ? 'double' : 'single' })); }); p.outro('All conversations listed successfully!'); } catch (error) { s.stop('Failed to fetch conversations'); p.log.error('Failed to fetch conversations'); p.log.error(error instanceof Error ? error.message : 'Unknown error'); } }; exports.listConversations = listConversations; const getConversationDetails = async () => { p.intro('Get conversation details'); const conversationId = await p.text({ message: 'Enter conversation ID', validate: (input) => input.length === 0 ? 'Conversation ID is required' : undefined }); if (p.isCancel(conversationId)) { p.cancel('Operation cancelled'); return; } const s = p.spinner(); s.start('Fetching conversation details'); try { const conversationService = new conversation_1.ConversationService(); const conversation = await conversationService.getConversation(conversationId); if (!conversation) { s.stop('Conversation not found'); p.log.error('Conversation not found'); return; } s.stop('Conversation details fetched'); console.log((0, boxen_1.default)(`ID: ${chalk_1.default.cyan(conversation.conversation_id)} Title: ${chalk_1.default.white(conversation.title)} Status: ${getStatusColor(conversation.status)} Repository: ${chalk_1.default.yellow(conversation.repository || 'N/A')} Branch: ${chalk_1.default.yellow(conversation.selected_branch || 'N/A')} Created At: ${chalk_1.default.gray(new Date(conversation.created_at).toLocaleString())} Updated At: ${chalk_1.default.gray(new Date(conversation.updated_at).toLocaleString())}`, { padding: 1, borderColor: 'cyan' })); if (conversation.repository) { s.start('Fetching git changes'); try { const gitService = new git_1.GitService(); const changes = await gitService.getGitChanges(conversation.conversation_id); s.stop('Git changes fetched'); if (changes.length > 0) { console.log((0, boxen_1.default)(chalk_1.default.white('Git Changes:') + '\n' + changes.map(change => `${change.status === 'modified' ? chalk_1.default.yellow('M') : change.status === 'added' ? chalk_1.default.green('A') : change.status === 'deleted' ? chalk_1.default.red('D') : chalk_1.default.white('?')} ${change.path}`).join('\n'), { padding: 1, borderColor: 'yellow', margin: { top: 1 } })); } else { p.log.info('No git changes found'); } } catch (error) { s.stop('Failed to fetch git changes'); p.log.error('Failed to fetch git changes'); p.log.error(error instanceof Error ? error.message : 'Unknown error'); } } p.outro('Details fetched successfully!'); } catch (error) { s.stop('Failed to fetch conversation details'); p.log.error('Failed to fetch conversation details'); p.log.error(error instanceof Error ? error.message : 'Unknown error'); } }; exports.getConversationDetails = getConversationDetails; const deleteConversation = async () => { p.intro('Delete conversation'); const conversationId = await p.text({ message: 'Enter conversation ID to delete', validate: (input) => input.length === 0 ? 'Conversation ID is required' : undefined }); if (p.isCancel(conversationId)) { p.cancel('Operation cancelled'); return; } const shouldProceed = await p.confirm({ message: chalk_1.default.red('Are you sure you want to delete this conversation? This action cannot be undone.'), initialValue: false, }); if (p.isCancel(shouldProceed) || !shouldProceed) { p.cancel('Operation cancelled'); return; } const s = p.spinner(); s.start('Deleting conversation'); try { const conversationService = new conversation_1.ConversationService(); await conversationService.deleteConversation(conversationId); s.stop('Conversation deleted'); p.outro('Conversation deleted successfully!'); } catch (error) { s.stop('Failed to delete conversation'); p.log.error('Failed to delete conversation'); p.log.error(error instanceof Error ? error.message : 'Unknown error'); } }; exports.deleteConversation = deleteConversation; //# sourceMappingURL=conversation.js.map