UNPKG

rawi

Version:

Rawi (راوي) is the developer-friendly AI CLI that brings the power of 11 major AI providers directly to your terminal. With seamless shell integration, persistent conversations, and 200+ specialized prompt templates, Rawi transforms your command line into

1 lines 17 kB
{"version":3,"sources":["/home/mkabumattar/work/withrawi/rawi/dist/chunk-YCKZBQZZ.cjs","../src/cli/commands/act.command.ts"],"names":["createActCommand","actCommand","Command","chalk","options","listActTemplates","listBuiltInTemplates","listCustomTemplates","showActTemplate","createCustomTemplate","editCustomTemplate","deleteCustomTemplate","showActOverview","customTemplates","ActTemplateManager","builtInCount","actTemplates","customCount","table","Table","select","id","input","value","label","category","description","template","error","errorMessage","templateId"],"mappings":"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","file":"/home/mkabumattar/work/withrawi/rawi/dist/chunk-YCKZBQZZ.cjs","sourcesContent":[null,"import {confirm, input, select} from '@inquirer/prompts';\nimport chalk from 'chalk';\nimport Table from 'cli-table3';\nimport {Command} from 'commander';\nimport {actTemplates} from '../../core/templates/act.js';\nimport {ActTemplateManager} from '../../core/templates/act-manager.js';\nimport {\n listActTemplates,\n listBuiltInTemplates,\n listCustomTemplates,\n showActTemplate,\n} from '../../core/templates/utils.js';\n\nexport const createActCommand = (): Command => {\n const actCommand = new Command('act');\n\n actCommand\n .description(\n [\n chalk.bold('Manage act templates for specialized prompts.'),\n '',\n chalk.gray('Create, edit, and use custom act templates.'),\n chalk.gray('View built-in templates and manage your own.'),\n '─'.repeat(80),\n ].join('\\n'),\n )\n .option('-l, --list', chalk.white('List all available act templates'))\n .option('-b, --built-in', chalk.white('List only built-in act templates'))\n .option('-c, --custom', chalk.white('List only custom act templates'))\n .option(\n '-s, --show <template>',\n chalk.white('Show details of a specific act template'),\n )\n .option('--create', chalk.white('Create a new custom act template'))\n .option(\n '--edit <template>',\n chalk.white('Edit an existing custom template'),\n )\n .option('--delete <template>', chalk.white('Delete a custom template'))\n .addHelpText(\n 'after',\n [\n chalk.bold.cyan('\\nExamples:'),\n chalk.gray(\n ' rawi act --list # List all templates',\n ),\n chalk.gray(\n ' rawi act --built-in # List built-in templates',\n ),\n chalk.gray(\n ' rawi act --custom # List custom templates',\n ),\n chalk.gray(\n ' rawi act --show my-template # Show template details',\n ),\n chalk.gray(\n ' rawi act --create # Create new template',\n ),\n chalk.gray(\n ' rawi act --edit my-template # Edit custom template',\n ),\n chalk.gray(\n ' rawi act --delete my-template # Delete custom template',\n ),\n '',\n chalk.bold.cyan('Usage with ask:'),\n chalk.gray(' rawi ask --act <template> \"your question\"'),\n ].join('\\n'),\n )\n .action(async (options) => {\n if (options.list) {\n await listActTemplates();\n return;\n }\n\n if (options.builtIn) {\n await listBuiltInTemplates();\n return;\n }\n\n if (options.custom) {\n await listCustomTemplates();\n return;\n }\n\n if (options.show) {\n await showActTemplate(options.show);\n return;\n }\n\n if (options.create) {\n await createCustomTemplate();\n return;\n }\n\n if (options.edit) {\n await editCustomTemplate(options.edit);\n return;\n }\n\n if (options.delete) {\n await deleteCustomTemplate(options.delete);\n return;\n }\n\n await showActOverview();\n });\n\n return actCommand;\n};\n\nasync function showActOverview(): Promise<void> {\n const manager = new ActTemplateManager();\n const customTemplates = await manager.listCustomTemplates();\n const builtInCount = actTemplates.length;\n const customCount = customTemplates.length;\n\n console.log(chalk.bold.cyan('\\n🎭 Act Templates Overview'));\n console.log();\n\n const table = new Table({\n head: [chalk.cyan('Type'), chalk.cyan('Count'), chalk.cyan('Description')],\n style: {head: ['cyan']},\n colWidths: [12, 8, 50],\n wordWrap: true,\n });\n\n table.push([\n chalk.gray('Built-in'),\n chalk.white(builtInCount.toString()),\n 'Ready-to-use professional templates for various scenarios',\n ]);\n\n table.push([\n chalk.yellow('Custom'),\n chalk.white(customCount.toString()),\n 'Your personalized templates for specific needs',\n ]);\n\n console.log(table.toString());\n console.log();\n\n const choices = [\n {name: '📋 List all templates', value: 'list'},\n {name: '🔧 List built-in templates', value: 'builtin'},\n {name: '📝 List custom templates', value: 'custom'},\n {name: '✨ Create new template', value: 'create'},\n {name: '❌ Exit', value: 'exit'},\n ];\n\n const action = await select({\n message: 'What would you like to do?',\n choices,\n });\n\n switch (action) {\n case 'list':\n await listActTemplates();\n break;\n case 'builtin':\n await listBuiltInTemplates();\n break;\n case 'custom':\n await listCustomTemplates();\n break;\n case 'create':\n await createCustomTemplate();\n break;\n case 'exit':\n break;\n }\n}\n\nasync function createCustomTemplate(): Promise<void> {\n console.log(chalk.bold.cyan('\\n✨ Create Custom Act Template'));\n console.log(\n chalk.gray('Create a personalized template for your specific needs.\\n'),\n );\n\n try {\n const id = await input({\n message: 'Template ID (unique identifier):',\n validate: (value) => {\n if (!value.trim()) return 'ID is required';\n if (!/^[a-z0-9-]+$/.test(value.trim())) {\n return 'ID must contain only lowercase letters, numbers, and hyphens';\n }\n return true;\n },\n });\n\n const label = await input({\n message: 'Template label (display name):',\n validate: (value) => (value.trim() ? true : 'Label is required'),\n });\n\n const category = await input({\n message: 'Category:',\n validate: (value) => (value.trim() ? true : 'Category is required'),\n });\n\n const description = await input({\n message: 'Description:',\n validate: (value) => (value.trim() ? true : 'Description is required'),\n });\n\n console.log(chalk.yellow('\\nTemplate content:'));\n console.log(chalk.dim('Use {userInput} as a placeholder for user input'));\n console.log(chalk.dim('Example: \"Act as a {role}. {userInput}\"\\n'));\n\n const template = await input({\n message: 'Template content:',\n validate: (value) => {\n if (!value.trim()) return 'Template content is required';\n if (!value.includes('{userInput}')) {\n return 'Template must include {userInput} placeholder';\n }\n return true;\n },\n });\n\n const manager = new ActTemplateManager();\n await manager.createTemplate({\n id: id.trim(),\n label: label.trim(),\n category: category.trim(),\n description: description.trim(),\n template: template.trim(),\n });\n\n console.log(chalk.green(`\\n✅ Template '${id}' created successfully!`));\n console.log(chalk.dim(`Usage: rawi ask --act ${id} \"your question\"`));\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'Unknown error';\n console.error(chalk.red(`\\n❌ Error creating template: ${errorMessage}`));\n }\n}\n\nasync function editCustomTemplate(templateId: string): Promise<void> {\n console.log(chalk.bold.cyan(`\\n✏️ Edit Template: ${templateId}`));\n\n try {\n const manager = new ActTemplateManager();\n const existing = await manager.getTemplate(templateId);\n\n if (!existing) {\n console.error(chalk.red(`❌ Template '${templateId}' not found.`));\n return;\n }\n\n if (existing.isBuiltIn) {\n console.error(\n chalk.red(`❌ Cannot edit built-in template '${templateId}'.`),\n );\n console.log(\n chalk.yellow(\n '💡 Create a custom template instead with: rawi act --create',\n ),\n );\n return;\n }\n\n console.log(chalk.gray(`Current values for '${templateId}':\\n`));\n\n const label = await input({\n message: 'Template label:',\n default: existing.label,\n validate: (value) => (value.trim() ? true : 'Label is required'),\n });\n\n const category = await input({\n message: 'Category:',\n default: existing.category,\n validate: (value) => (value.trim() ? true : 'Category is required'),\n });\n\n const description = await input({\n message: 'Description:',\n default: existing.description,\n validate: (value) => (value.trim() ? true : 'Description is required'),\n });\n\n const template = await input({\n message: 'Template content:',\n default: existing.template,\n validate: (value) => {\n if (!value.trim()) return 'Template content is required';\n if (!value.includes('{userInput}')) {\n return 'Template must include {userInput} placeholder';\n }\n return true;\n },\n });\n\n await manager.updateTemplate(templateId, {\n label: label.trim(),\n category: category.trim(),\n description: description.trim(),\n template: template.trim(),\n });\n\n console.log(\n chalk.green(`\\n✅ Template '${templateId}' updated successfully!`),\n );\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'Unknown error';\n console.error(chalk.red(`\\n❌ Error editing template: ${errorMessage}`));\n }\n}\n\nasync function deleteCustomTemplate(templateId: string): Promise<void> {\n console.log(chalk.bold.red(`\\n🗑️ Delete Template: ${templateId}`));\n\n try {\n const manager = new ActTemplateManager();\n const existing = await manager.getTemplate(templateId);\n\n if (!existing) {\n console.error(chalk.red(`❌ Template '${templateId}' not found.`));\n return;\n }\n\n if (existing.isBuiltIn) {\n console.error(\n chalk.red(`❌ Cannot delete built-in template '${templateId}'.`),\n );\n return;\n }\n\n console.log(chalk.yellow(`About to delete template '${templateId}':`));\n console.log(chalk.gray(`Label: ${existing.label}`));\n console.log(chalk.gray(`Category: ${existing.category}`));\n console.log();\n\n const confirmed = await confirm({\n message: 'Are you sure you want to delete this template?',\n default: false,\n });\n\n if (!confirmed) {\n console.log(chalk.gray('Delete cancelled.'));\n return;\n }\n\n await manager.deleteTemplate(templateId);\n console.log(\n chalk.green(`\\n✅ Template '${templateId}' deleted successfully!`),\n );\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'Unknown error';\n console.error(chalk.red(`\\n❌ Error deleting template: ${errorMessage}`));\n }\n}\n"]}