shipdeck
Version:
Ship MVPs in 48 hours. Fix bugs in 30 seconds. The command deck for developers who ship.
156 lines (130 loc) • 3.71 kB
JavaScript
/**
* RedditCommunityBuilder Agent
* Builds authentic Reddit community presence
*/
const BaseAgent = require('./base-agent');
const { AnthropicClient } = require('../anthropic/client');
/**
* RedditCommunityBuilder - Builds authentic Reddit community presence
*/
class RedditCommunityBuilderAgent extends BaseAgent {
constructor(config = {}) {
super('RedditCommunityBuilderAgent', {
...config,
description: 'Builds authentic Reddit community presence',
version: '1.0.0'
});
this.capabilities = ["reddit","community","authentic-engagement","value-first"];
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 RedditCommunityBuilderAgent, an AI agent specialized in reddit, community, authentic-engagement, value-first.
Your core responsibilities:
- reddit
- community
- authentic-engagement
- value-first
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(`RedditCommunityBuilderAgent 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()
};
}
/**
* buildCommunity implementation
* @param {Object} params - Method parameters
* @returns {Promise<Object>} Method result
*/
async buildCommunity(params = {}) {
const task = {
type: 'buildCommunity',
...params
};
return this.execute(task);
}
/**
* provideValue implementation
* @param {Object} params - Method parameters
* @returns {Promise<Object>} Method result
*/
async provideValue(params = {}) {
const task = {
type: 'provideValue',
...params
};
return this.execute(task);
}
/**
* engageAuthentically implementation
* @param {Object} params - Method parameters
* @returns {Promise<Object>} Method result
*/
async engageAuthentically(params = {}) {
const task = {
type: 'engageAuthentically',
...params
};
return this.execute(task);
}
}
module.exports = RedditCommunityBuilderAgent;