# @sparesparrow/mcp-prompts-core
Core domain logic for the MCP Prompts Server, implementing clean hexagonal architecture with TypeScript.
## ποΈ Architecture
This package follows the **Hexagonal Architecture** (Ports & Adapters) pattern:
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Core Domain Layer β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Entities β Value Objects β Use Cases β
β β’ Prompt β β’ PromptId β β’ addPrompt β
β β’ Template β β’ Tag β β’ getPrompt β
β β’ Category β β’ TemplateVariableβ β’ listPrompts β
β β’ User β β β’ updatePrompt β
β β β β’ deletePrompt β
β β β β’ applyTemplate β
β β β β’ validatePromptβ
β β β β’ searchPrompts β
β β β β’ getPromptStatsβ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Ports (Interfaces) β
β β’ IPromptRepository β β’ ITemplatingEngine β
β β’ IPromptApplication β β’ IEventPublisher β
β β’ ISecurityValidator β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
## π¦ Package Structure
```
src/
βββ entities/ # Domain entities
β βββ Prompt.ts # Prompt entity with validation
β βββ TemplateVariable.ts # Template variable entity
β βββ PromptSequence.ts # Workflow sequence entity
β βββ Category.ts # Category entity
β βββ User.ts # User entity
βββ value-objects/ # Immutable value objects
β βββ PromptId.ts # UUID v7 prompt identifier
β βββ Tag.ts # Validated tag with regex
β βββ TemplateVariable.ts # Template variable value object
βββ ports/ # Interface definitions
β βββ IPromptRepository.ts # Storage interface
β βββ IPromptApplication.ts # Application interface
β βββ ITemplatingEngine.ts # Template engine interface
β βββ IEventPublisher.ts # Event publishing interface
β βββ ISecurityValidator.ts # Security validation interface
βββ use-cases/ # Business logic
β βββ addPrompt.ts # Add new prompt
β βββ getPromptById.ts # Get prompt by ID
β βββ listPrompts.ts # List prompts with filtering
β βββ updatePrompt.ts # Update existing prompt
β βββ deletePrompt.ts # Delete prompt
β βββ applyTemplate.ts # Apply template variables
β βββ validatePrompt.ts # Validate prompt
β βββ searchPrompts.ts # Search prompts
β βββ getPromptStats.ts # Get prompt statistics
βββ schemas.ts # Zod validation schemas
βββ errors.ts # Custom error classes
βββ config.ts # Configuration management
βββ utils.ts # Utility functions
βββ types/ # Type definitions
βββ index.ts # Main export file
```
## π Quick Start
```typescript
import {
Prompt,
PromptId,
Tag,
TemplateVariable,
validatePrompt,
addPrompt
} from '@sparesparrow/mcp-prompts-core';
// Create a new prompt
const prompt: Prompt = {
id: PromptId.generate().toString(),
name: 'Code Review Assistant',
content: 'Please review this code: {{code}}',
isTemplate: true,
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString(),
version: 1,
description: 'AI assistant for code review',
category: 'development',
tags: [Tag.sanitize('code-review').toString()],
variables: [TemplateVariable.create('code', 'Code to review').toObject()]
};
// Validate the prompt
await validatePrompt(prompt);
```
## π§ Core Features
### Entities
- **Prompt**: Core prompt entity with versioning support
- **TemplateVariable**: Template variable with validation
- **PromptSequence**: Workflow sequence for complex operations
- **Category**: Prompt categorization system
- **User**: User management and authentication
### Value Objects
- **PromptId**: UUID v7 identifier with validation
- **Tag**: Regex-validated tags for categorization
- **TemplateVariable**: Immutable template variable representation
### Use Cases
- **Prompt Management**: CRUD operations for prompts
- **Template System**: Variable substitution and validation
- **Search & Filtering**: Advanced prompt discovery
- **Statistics**: System analytics and reporting
- **Validation**: Comprehensive prompt validation
### Ports
- **IPromptRepository**: Storage abstraction
- **IPromptApplication**: Application service interface
- **ITemplatingEngine**: Template processing interface
- **IEventPublisher**: Event system interface
- **ISecurityValidator**: Security validation interface
## π Requirements
- Node.js >= 20.0.0
- TypeScript >= 5.8.0
- Zod for schema validation
## π§ͺ Testing
```bash
# Run tests
npm test
# Run tests in watch mode
npm run test:watch
# Type checking
npm run typecheck
```
## π Dependencies
- `@sparesparrow/mcp-prompts-contracts`: Shared type definitions
- `@sparesparrow/mcp-prompts-catalog`: Prompt catalog
- `zod`: Schema validation
## π API Reference
### Prompt Entity
```typescript
interface Prompt {
id: string;
name: string;
content: string;
isTemplate: boolean;
createdAt: string;
updatedAt: string;
version: number;
description?: string;
category?: string;
metadata?: Record<string, unknown>;
tags?: string[];
variables?: (string | TemplateVariable)[];
}
```
### PromptId Value Object
```typescript
class PromptId {
static generate(): PromptId;
static fromString(value: string): PromptId;
static fromName(name: string): PromptId;
static isValid(value: string): boolean;
toString(): string;
equals(other: PromptId): boolean;
}
```
### Validation Functions
```typescript
// Validate prompt
await validatePrompt(prompt: Prompt): Promise<boolean>;
// Validate prompt content for security
validatePromptContent(content: string): boolean;
// Validate template variables
validateTemplateVariables(content: string, variables: TemplateVariable[]): boolean;
```
## π·οΈ Versioning
This package follows [Semantic Versioning](https://semver.org/):
- **Major**: Breaking changes in public API
- **Minor**: New features, backward compatible
- **Patch**: Bug fixes, backward compatible
## π License
MIT License - see [LICENSE](../../LICENSE) for details.
## π€ Contributing
See [CONTRIBUTING.md](../../CONTRIBUTING.md) for contribution guidelines.
## π Related Packages
- `@sparesparrow/mcp-prompts-adapters-file`: File storage adapter
- `@sparesparrow/mcp-prompts-adapters-postgres`: PostgreSQL adapter
- `@sparesparrow/mcp-prompts-adapters-memory`: In-memory adapter
- `@sparesparrow/mcp-prompts-adapters-mcp`: MCP protocol adapter