shipdeck
Version:
Ship MVPs in 48 hours. Fix bugs in 30 seconds. The command deck for developers who ship.
157 lines (131 loc) • 3.6 kB
JavaScript
/**
* StudioCoach Agent
* Provides motivation and team guidance
*/
const BaseAgent = require('./base-agent');
const { AnthropicClient } = require('../anthropic/client');
/**
* StudioCoach - Provides motivation and team guidance
*/
class StudioCoachAgent extends BaseAgent {
constructor(config = {}) {
super('StudioCoachAgent', {
...config,
description: 'Provides motivation and team guidance',
version: '1.0.0'
});
this.capabilities = ["motivation","guidance","coaching","team-building","morale"];
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 StudioCoachAgent, an AI agent specialized in motivation, guidance, coaching, team-building, morale.
Your core responsibilities:
- motivation
- guidance
- coaching
- team-building
- morale
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(`StudioCoachAgent 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()
};
}
/**
* motivateTeam implementation
* @param {Object} params - Method parameters
* @returns {Promise<Object>} Method result
*/
async motivateTeam(params = {}) {
const task = {
type: 'motivateTeam',
...params
};
return this.execute(task);
}
/**
* provideGuidance implementation
* @param {Object} params - Method parameters
* @returns {Promise<Object>} Method result
*/
async provideGuidance(params = {}) {
const task = {
type: 'provideGuidance',
...params
};
return this.execute(task);
}
/**
* buildMorale implementation
* @param {Object} params - Method parameters
* @returns {Promise<Object>} Method result
*/
async buildMorale(params = {}) {
const task = {
type: 'buildMorale',
...params
};
return this.execute(task);
}
}
module.exports = StudioCoachAgent;