UNPKG

aiwg

Version:

Cognitive architecture for AI-augmented software development with structured memory, ensemble validation, and closed-loop correction. FAIR-aligned artifacts, 84% cost reduction via human-in-the-loop, standards adopted by 100+ organizations.

441 lines (343 loc) 12.7 kB
# AgentSmith Implementation Summary ## Overview AgentSmith is a tool for generating custom agents with platform-aware deployment, following the 10 Golden Rules from the Agent Design Bible. ## Files Created ### Core Implementation | File | Purpose | Lines | |------|---------|-------| | `types.ts` | Type definitions for agent generation | 120 | | `generator.ts` | Agent generation engine with 10 Golden Rules | 520 | | `index.ts` | Module exports | 15 | ### Documentation | File | Purpose | |------|---------| | `README.md` | Complete usage guide with API reference | | `examples.ts` | 10 usage examples covering common patterns | | `cli-integration-example.md` | CLI integration guide | | `IMPLEMENTATION.md` | This file | ### Tests | File | Purpose | Tests | |------|---------|-------| | `test/unit/smiths/agentsmith/generator.test.ts` | Comprehensive test suite | 25 tests | ## Architecture ### Template System AgentSmith provides 4 templates following the 10 Golden Rules: ```typescript const TEMPLATE_CONFIGS: Record<AgentTemplate, TemplateConfig> = { simple: { modelTier: 'haiku', tools: ['Read', 'Write'], maxTools: 2, canDelegate: false, readOnly: false, }, complex: { modelTier: 'sonnet', tools: ['Read', 'Write', 'Grep'], maxTools: 3, canDelegate: false, readOnly: false, }, orchestrator: { modelTier: 'opus', tools: ['Task'], maxTools: 1, canDelegate: true, readOnly: true, }, validator: { modelTier: 'sonnet', tools: ['Read', 'Grep'], maxTools: 2, canDelegate: false, readOnly: true, }, }; ``` ### Agent Generation Flow ``` User Options → Validate → Select Template → Build Structure → Generate Content ↓ Transform for Platform ↓ Determine Path ↓ Return GeneratedAgent ``` ### Platform Transformations AgentSmith uses `AgentPackager` from `src/agents/agent-packager.ts` to transform agents for each platform: | Platform | Format | Extension | |----------|--------|-----------| | claude | YAML frontmatter + Markdown | `.md` | | cursor | JSON | `.json` | | codex | YAML with `agent_name` + Markdown | `.md` | | factory | Claude format (transformed by deployment scripts) | `.md` | | windsurf | Plain Markdown (no YAML) | `.md` | | generic | Minimal YAML + Markdown | `.md` | ### 10 Golden Rules Enforcement AgentSmith automatically enforces the 10 Golden Rules: 1. **Single Responsibility**: Limits responsibilities to 5 max 2. **Minimal Tools**: Enforces 0-3 tools based on template 3. **Explicit I/O**: Generates clear input/output specifications 4. **Grounding**: Includes "Verify inputs" and "Ground before acting" workflow steps 5. **Uncertainty**: Adds "Handle uncertainty" workflow step 6. **Context Scope**: Defines scope boundaries in constraints 7. **Recovery**: Workflow includes error handling patterns 8. **Model Tier**: Auto-selects model based on task complexity 9. **Parallel Ready**: All agents safe for concurrent execution 10. **Observable**: Generates clear output format specifications ## Key Features ### Template-Based Generation Users select from 4 templates optimized for different use cases: - Simple: Single-purpose tasks - Complex: Analysis and decision-making - Orchestrator: Multi-agent coordination - Validator: Quality checks (read-only) ### Natural Language Guidance AgentSmith extracts structured information from natural language guidance: ```typescript guidance: ` Expert in OWASP Top 10, SQL injection, XSS. Must scan for vulnerabilities and hardcoded secrets. Should flag severity levels: critical, high, medium, low. Example: Detect "SELECT * WHERE id=" + userId as SQL injection. Output format: JSON report with CVE references. ` ``` Extracted: - **Expertise**: OWASP Top 10, SQL injection, XSS - **Responsibilities**: scan for vulnerabilities, flag severity levels - **Examples**: SQL injection detection pattern - **Output Format**: JSON report with CVE references ### Model Tier Selection Auto-selected by template, overridable by user: - Simple → haiku (fast, efficient) - Complex → sonnet (balanced reasoning) - Orchestrator → opus (complex coordination) - Validator → sonnet (analysis) ### Tool Constraints Enforces minimal tool usage (Golden Rule #2): - Simple: Max 2 tools - Complex: Max 3 tools - Orchestrator: Exactly 1 tool (Task only) - Validator: Max 2 tools (read-only) ## Usage Examples ### Basic Generation ```typescript const generator = new AgentGenerator(); const agent = await generator.generateAgent({ name: 'security-scanner', description: 'Scans code for security vulnerabilities', template: 'validator', platform: 'claude', projectPath: '/path/to/project', }); await generator.deployAgent(agent); ``` ### With Guidance ```typescript const agent = await generator.generateAgent({ name: 'api-documenter', description: 'Generates API documentation', template: 'simple', platform: 'cursor', projectPath: '/path/to/project', guidance: ` Expert in JSDoc and OpenAPI. Must parse function signatures and extract types. Output: Markdown with endpoints, parameters, responses. `, }); ``` ### Custom Tools ```typescript const agent = await generator.generateAgent({ name: 'dependency-checker', description: 'Checks for outdated dependencies', template: 'simple', tools: ['Read', 'Bash'], // Override default platform: 'claude', projectPath: '/path/to/project', }); ``` ### Dry Run ```typescript const agent = await generator.generateAgent({ name: 'preview-agent', description: 'Preview agent', platform: 'claude', projectPath: '/path/to/project', dryRun: true, // No file writing }); console.log(agent.content); // Preview generated content ``` ## Testing Comprehensive test suite with 25 tests covering: - Template generation (simple, complex, orchestrator, validator) - Model tier selection and overrides - Tool selection and validation - Guidance extraction (expertise, responsibilities, examples) - Platform transformations (Claude, Cursor, Codex, Windsurf) - Deployment path resolution - Input validation (name format, description length) - Category and version metadata - File system operations (deployment, directory creation) - Dry run mode All tests passing: ``` ✓ test/unit/smiths/agentsmith/generator.test.ts (25 tests) 38ms ``` ## Integration Points ### With Existing AIWG Systems 1. **AgentPackager** (`src/agents/agent-packager.ts`): Platform transformations 2. **Platform Types** (`src/agents/types.ts`): Platform definitions 3. **Model Selection** (`src/models/`): Model tier mapping 4. **Smiths Ecosystem** (`src/smiths/index.ts`): Unified smiths exports ### Future CLI Integration AgentSmith is ready for CLI integration via `aiwg -generate-agent` command: ```bash aiwg -generate-agent \ --name security-scanner \ --description "Scans code for vulnerabilities" \ --template validator \ --platform claude \ --guidance "Expert in OWASP. Must flag SQL injection, XSS." ``` See `cli-integration-example.md` for complete CLI implementation guide. ## Validation ### Input Validation - Agent name must be kebab-case (`/^[a-z0-9-]+$/`) - Description must be at least 10 characters - Custom tools cannot exceed template max (Golden Rule #2) - Platform must be valid - Project path must be provided ### Output Validation Generated agents include: - YAML frontmatter with metadata (platform-specific) - Title and description - Expertise section (extracted from guidance) - Responsibilities section (max 5, Golden Rule #1) - Workflow steps (including grounding and uncertainty handling) - Output format specification - Constraints list - 10 Golden Rules compliance note ## Deployment Paths | Platform | Default Path | Format | |----------|--------------|--------| | claude | `.claude/agents/` | YAML + MD | | cursor | `.cursor/agents/` | JSON | | codex | `.codex/agents/` | YAML + MD | | copilot | `.github/agents/` | MD | | factory | `.factory/droids/` | YAML + MD | | generic | `agents/` | Minimal YAML + MD | | windsurf | `.windsurf/agents/` | Plain MD | ## Error Handling AgentSmith provides clear error messages for: - Invalid agent name format - Description too short - Too many tools for template - Missing required options - Invalid platform - File system errors during deployment ## Performance Agent generation is fast and lightweight: - No external API calls - Pure TypeScript implementation - Minimal dependencies (only AgentPackager) - Average generation time: <100ms ## Extensibility ### Adding New Templates ```typescript const TEMPLATE_CONFIGS: Record<AgentTemplate, TemplateConfig> = { // ... existing templates 'custom-template': { modelTier: 'sonnet', tools: ['Read', 'Write'], maxTools: 2, canDelegate: false, readOnly: false, description: 'Custom template description', }, }; ``` ### Custom Guidance Extraction Add new extraction patterns in `extractExpertise()` or `extractResponsibilities()`: ```typescript private extractExpertise(guidance: string | undefined): string[] { const patterns = [ /expert in (.+?)(?:\.|,|$)/gi, /knowledge of (.+?)(?:\.|,|$)/gi, /specializes in (.+?)(?:\.|,|$)/gi, // New pattern ]; // ... } ``` ## Limitations 1. **Static generation**: No LLM calls - uses templates and extraction patterns 2. **English only**: Guidance parsing optimized for English 3. **No agent validation**: Generated agents not validated against actual platform requirements 4. **No interactive mode**: CLI interactive mode not yet implemented ## Future Enhancements 1. **Interactive mode**: Guided prompts for agent creation 2. **LLM-enhanced generation**: Optional LLM call for advanced agent customization 3. **Agent validation**: Pre-deployment validation against platform requirements 4. **Template marketplace**: Community-contributed templates 5. **Batch generation**: Generate multiple agents from specification file 6. **Agent evolution**: Update existing agents with new capabilities 7. **Multi-language support**: Internationalization for guidance parsing ## Dependencies ### Direct Dependencies - `src/agents/agent-packager.ts` - Platform transformations - `src/agents/types.ts` - Platform type definitions - Node.js `fs/promises` - File system operations - Node.js `path` - Path manipulation ### Peer Dependencies - `vitest` - Testing framework (dev) - `typescript` - Type checking (dev) ## Files Modified 1. `/home/manitcor/.local/share/ai-writing-guide/src/smiths/index.ts` - Added AgentSmith exports - Added `AGENTSMITH_DIR` constant ## TypeScript Compliance All files pass TypeScript strict mode checks: - No type errors - No unused variables - Proper type exports (aliased Platform to avoid conflicts) ## Test Coverage 25 tests covering all major functionality: - Template generation (4 tests) - Model/tool selection (3 tests) - Guidance extraction (2 tests) - Platform transformations (5 tests) - Path resolution (2 tests) - Input validation (2 tests) - Metadata handling (1 test) - Deployment operations (2 tests) - Template listing (2 tests) - Dry run mode (1 test) - Multi-platform generation (1 test) ## Maintenance ### Code Quality - Well-documented with TSDoc comments - Clear separation of concerns - Single responsibility per method - Type-safe throughout - Error handling with meaningful messages ### Documentation - Comprehensive README with API reference - 10 usage examples - CLI integration guide - Implementation summary (this file) - Inline code comments ## Conclusion AgentSmith is production-ready for generating custom agents following the 10 Golden Rules. It integrates seamlessly with the existing AIWG ecosystem and is ready for CLI integration via `aiwg -generate-agent`. Key achievements: - ✅ 4 template types with auto-configured models and tools - ✅ Natural language guidance extraction - ✅ Platform-aware transformations (6 platforms) - ✅ 10 Golden Rules automatic enforcement - ✅ Comprehensive test suite (25 tests, 100% passing) - ✅ TypeScript strict mode compliant - ✅ Ready for CLI integration - ✅ Well-documented with examples AgentSmith demonstrates the power of template-based agent generation with principled constraints, making it easy for users to create high-quality, well-designed agents without needing deep expertise in agent architecture.