@vfarcic/dot-ai
Version:
Universal Kubernetes application deployment agent with CLI and MCP interfaces
75 lines (74 loc) • 2.83 kB
JavaScript
;
/**
* Core Pattern Operations
*
* Basic operations for creating, validating, and managing organizational patterns
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.validatePattern = validatePattern;
exports.createPattern = createPattern;
exports.serializePattern = serializePattern;
exports.deserializePattern = deserializePattern;
const crypto_1 = require("crypto");
// Simple validation function
function validatePattern(request) {
const errors = [];
if (!request.description || request.description.trim().length === 0) {
errors.push('Pattern description is required');
}
if (!request.triggers || request.triggers.length === 0) {
errors.push('At least one trigger is required');
}
if (request.triggers && request.triggers.some(t => !t || t.trim().length === 0)) {
errors.push('All triggers must be non-empty');
}
if (!request.suggestedResources || request.suggestedResources.length === 0) {
errors.push('At least one suggested resource is required');
}
if (!request.rationale || request.rationale.trim().length === 0) {
errors.push('Pattern rationale is required');
}
if (!request.createdBy || request.createdBy.trim().length === 0) {
errors.push('Pattern creator is required');
}
return errors;
}
// Create a new pattern from request
function createPattern(request) {
// Pre-process request to clean up data before validation
const cleanRequest = {
...request,
description: request.description?.trim() || '',
triggers: request.triggers?.map(t => t?.trim()).filter(t => t && t.length > 0) || [],
rationale: request.rationale?.trim() || '',
createdBy: request.createdBy?.trim() || ''
};
const errors = validatePattern(cleanRequest);
if (errors.length > 0) {
throw new Error(`Pattern validation failed: ${errors.join(', ')}`);
}
return {
id: (0, crypto_1.randomUUID)(),
description: cleanRequest.description,
triggers: cleanRequest.triggers,
suggestedResources: cleanRequest.suggestedResources,
rationale: cleanRequest.rationale,
createdAt: new Date().toISOString(),
createdBy: cleanRequest.createdBy
};
}
// Serialize pattern to JSON
function serializePattern(pattern) {
return JSON.stringify(pattern, null, 2);
}
// Deserialize pattern from JSON
function deserializePattern(json) {
const parsed = JSON.parse(json);
// Basic structure validation
if (!parsed.id || !parsed.description ||
!Array.isArray(parsed.triggers) || !Array.isArray(parsed.suggestedResources) ||
!parsed.rationale || !parsed.createdAt || !parsed.createdBy) {
throw new Error('Invalid pattern JSON structure');
}
return parsed;
}