UNPKG

shipdeck

Version:

Ship MVPs in 48 hours. Fix bugs in 30 seconds. The command deck for developers who ship.

157 lines (131 loc) 3.7 kB
/** * AppStoreOptimizer Agent * Optimizes app store listings for maximum visibility */ const BaseAgent = require('./base-agent'); const { AnthropicClient } = require('../anthropic/client'); /** * AppStoreOptimizer - Optimizes app store listings for maximum visibility */ class AppStoreOptimizerAgent extends BaseAgent { constructor(config = {}) { super('AppStoreOptimizerAgent', { ...config, description: 'Optimizes app store listings for maximum visibility', version: '1.0.0' }); this.capabilities = ["aso","keywords","conversion","app-store","play-store"]; this.anthropicClient = config.anthropicClient || new AnthropicClient(); } /** * Get agent capabilities * @returns {Array} List of capabilities */ getCapabilities() { return this.capabilities; } /** * Get system prompt for the agent * @returns {string} System prompt */ getSystemPrompt() { return `You are AppStoreOptimizerAgent, an AI agent specialized in aso, keywords, conversion, app-store, play-store. Your core responsibilities: - aso - keywords - conversion - app-store - play-store Always provide practical, production-ready solutions.`; } /** * Execute agent task * @param {Object} task - Task to execute * @param {Object} context - Execution context * @returns {Promise<Object>} Execution result */ async execute(task, context = {}) { try { this.validateTask(task); const systemPrompt = this.getSystemPrompt(); const userPrompt = this.createPrompt(task, context); const response = await this.anthropicClient.createMessage( `${systemPrompt} ${userPrompt}`, { maxTokens: 4096, temperature: 0.7 } ); return this.parseResponse(response, task.type); } catch (error) { this.emit('error', error); throw new Error(`AppStoreOptimizerAgent execution failed: ${error.message}`); } } /** * Create prompt for the task * @param {Object} task - Task object * @param {Object} context - Context object * @returns {string} Generated prompt */ createPrompt(task, context) { const { type, description, requirements = [] } = task; return `Task Type: ${type} Description: ${description} Requirements: ${requirements.join(', ')} Please provide a comprehensive solution.`; } /** * Parse agent response * @param {Object} response - API response * @param {string} type - Task type * @returns {Object} Parsed result */ parseResponse(response, type) { const content = response.content?.[0]?.text || ''; return { success: true, type: type, content: content, timestamp: new Date().toISOString() }; } /** * optimizeListing implementation * @param {Object} params - Method parameters * @returns {Promise<Object>} Method result */ async optimizeListing(params = {}) { const task = { type: 'optimizeListing', ...params }; return this.execute(task); } /** * researchKeywords implementation * @param {Object} params - Method parameters * @returns {Promise<Object>} Method result */ async researchKeywords(params = {}) { const task = { type: 'researchKeywords', ...params }; return this.execute(task); } /** * improveConversion implementation * @param {Object} params - Method parameters * @returns {Promise<Object>} Method result */ async improveConversion(params = {}) { const task = { type: 'improveConversion', ...params }; return this.execute(task); } } module.exports = AppStoreOptimizerAgent;