shipdeck
Version:
Ship MVPs in 48 hours. Fix bugs in 30 seconds. The command deck for developers who ship.
157 lines (131 loc) • 3.71 kB
JavaScript
/**
* InstagramCurator Agent
* Manages Instagram visual content and engagement strategies
*/
const BaseAgent = require('./base-agent');
const { AnthropicClient } = require('../anthropic/client');
/**
* InstagramCurator - Manages Instagram visual content and engagement strategies
*/
class InstagramCuratorAgent extends BaseAgent {
constructor(config = {}) {
super('InstagramCuratorAgent', {
...config,
description: 'Manages Instagram visual content and engagement strategies',
version: '1.0.0'
});
this.capabilities = ["instagram","visual-content","stories","reels","engagement"];
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 InstagramCuratorAgent, an AI agent specialized in instagram, visual-content, stories, reels, engagement.
Your core responsibilities:
- instagram
- visual-content
- stories
- reels
- engagement
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(`InstagramCuratorAgent 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()
};
}
/**
* curateContent implementation
* @param {Object} params - Method parameters
* @returns {Promise<Object>} Method result
*/
async curateContent(params = {}) {
const task = {
type: 'curateContent',
...params
};
return this.execute(task);
}
/**
* createStories implementation
* @param {Object} params - Method parameters
* @returns {Promise<Object>} Method result
*/
async createStories(params = {}) {
const task = {
type: 'createStories',
...params
};
return this.execute(task);
}
/**
* buildEngagement implementation
* @param {Object} params - Method parameters
* @returns {Promise<Object>} Method result
*/
async buildEngagement(params = {}) {
const task = {
type: 'buildEngagement',
...params
};
return this.execute(task);
}
}
module.exports = InstagramCuratorAgent;