UNPKG

logggai

Version:

AI-powered CLI for transforming your development work into professional content

157 lines 5.34 kB
"use strict"; // TODO: Factoriser prompts, AI, publication, contextes pour post/sync Object.defineProperty(exports, "__esModule", { value: true }); exports.syncProjectFlow = syncProjectFlow; exports.promptForAIEnhance = promptForAIEnhance; exports.promptForPromptStyle = promptForPromptStyle; exports.generateCommitContent = generateCommitContent; exports.handleSocialPublishing = handleSocialPublishing; const inquirer_1 = require("inquirer"); const chalk = require("chalk"); const api_1 = require("./api"); async function syncProjectFlow(options) { // À compléter } async function promptForAIEnhance(commit) { const { useAI } = await inquirer_1.default.prompt([ { type: 'confirm', name: 'useAI', message: 'With AI enhancement for this commit?', default: true } ]); return useAI; } async function promptForPromptStyle() { // Fetch available prompts from API let prompts = []; try { const data = await api_1.apiClient.getPrompts(); prompts = data.prompts || []; } catch (err) { prompts = []; } if (!prompts.length) { return null; } const { promptId } = await inquirer_1.default.prompt([ { type: 'list', name: 'promptId', message: 'Choose AI prompt style:', choices: prompts.map((p) => ({ name: p.name, value: p.id })) } ]); return promptId; } async function generateCommitContent(commit, useAI, promptId) { let content = commit.message; if (useAI && promptId) { // Générer avec AI try { const aiResult = await api_1.apiClient.createPost({ title: commit.message, content: commit.message, useAI: true, promptId }); content = aiResult?.post?.content || commit.message; } catch (err) { console.log(chalk.default.red('AI generation failed, using original message.')); content = commit.message; } } // Harmonisation UX : proposer choix d'édition (inline ou éditeur) const { editMode } = await inquirer_1.default.prompt([ { type: 'list', name: 'editMode', message: 'How would you like to edit the generated content?', choices: [ { name: 'Type directly here', value: 'inline' }, { name: 'Open in editor (nano/vim/VS Code)', value: 'editor' } ], default: 'inline' } ]); let editedContent = content; if (editMode === 'inline') { const { inlineContent } = await inquirer_1.default.prompt([ { type: 'input', name: 'inlineContent', message: 'Edit content:', default: content, validate: (input) => { if (!input.trim()) { return 'Content is required'; } if (input.length > 8000) { return 'Content is too long (max 8k characters)'; } return true; } } ]); editedContent = inlineContent; } else { // Proposer le choix de l'éditeur const { editor } = await inquirer_1.default.prompt([ { type: 'list', name: 'editor', message: 'Choose your editor:', choices: [ { name: 'nano (simple and beginner-friendly)', value: 'nano' }, { name: 'VS Code (if installed)', value: 'code --wait' }, { name: 'vim (advanced)', value: 'vim' }, { name: 'System default', value: null } ], default: 'nano' } ]); // Sauvegarder l'éditeur système original const originalEditor = process.env.EDITOR; if (editor) { process.env.EDITOR = editor; } try { const { editorContent } = await inquirer_1.default.prompt([ { type: 'editor', name: 'editorContent', message: 'Edit generated content (save & close editor to continue):', default: content, validate: (input) => { if (!input.trim()) { return 'Content is required'; } if (input.length > 8000) { return 'Content is too long (max 8k characters)'; } return true; } } ]); editedContent = editorContent; } finally { // Restaurer l'éditeur système original if (originalEditor) { process.env.EDITOR = originalEditor; } else { delete process.env.EDITOR; } } } return editedContent; } async function handleSocialPublishing(postIds) { // À compléter : publication sur intégrations sociales } //# sourceMappingURL=sync-helpers.js.map