ai-patterns
Version:
Production-ready TypeScript patterns to build solid and robust AI applications. Retry logic, circuit breakers, rate limiting, human-in-the-loop escalation, prompt versioning, response validation, context window management, and more—all with complete type
150 lines • 12.2 kB
JavaScript
;
/**
* ai-patterns - Battle-tested TypeScript patterns for building robust AI workflows
* @author Serge KOKOUA
* @version 1.0.0
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ModelCost = exports.InMemoryCostStorage = exports.createCostTracker = exports.costTracking = exports.VariantAssignmentStrategy = exports.InMemoryAssignmentStorage = exports.abTest = exports.compose = exports.conditionalBranch = exports.deadLetterQueue = exports.memoize = exports.throttle = exports.defineThrottle = exports.debounce = exports.defineDebounce = exports.bulkhead = exports.defineBulkhead = exports.fallback = exports.startGlobalIdempotencyCleanup = exports.stopGlobalIdempotencyCleanup = exports.resetGlobalIdempotencyStore = exports.Idempotent = exports.idempotent = exports.Idempotency = exports.InMemoryReflectionStorage = exports.reflectionLoop = exports.ContextStrategy = exports.createAISummarizer = exports.smartContextWindow = exports.CommonEscalationRules = exports.humanInTheLoop = exports.HumanInTheLoop = exports.executeSaga = exports.Saga = exports.fanOut = exports.rateLimiter = exports.defineRateLimiter = exports.RateLimiter = exports.circuitBreaker = exports.defineCircuitBreaker = exports.CircuitBreaker = exports.combineSignals = exports.createTimeoutSignal = exports.timeout = exports.RetryPredicates = exports.retry = exports.InMemoryKeyValueStorage = exports.InMemoryStorage = exports.StorageNamespace = exports.GlobalStorage = void 0;
exports.VERSION = exports.validateResponse = exports.InMemoryPromptVersionStorage = exports.versionedPrompt = void 0;
exports.resetGlobalStorage = resetGlobalStorage;
// ===== All Types =====
__exportStar(require("./types"), exports);
// ===== Common Utilities =====
var storage_1 = require("./common/storage");
Object.defineProperty(exports, "GlobalStorage", { enumerable: true, get: function () { return storage_1.GlobalStorage; } });
Object.defineProperty(exports, "StorageNamespace", { enumerable: true, get: function () { return storage_1.StorageNamespace; } });
// Legacy exports for backward compatibility
Object.defineProperty(exports, "InMemoryStorage", { enumerable: true, get: function () { return storage_1.InMemoryStorage; } });
Object.defineProperty(exports, "InMemoryKeyValueStorage", { enumerable: true, get: function () { return storage_1.InMemoryKeyValueStorage; } });
// Import for helper function
const storage_2 = require("./common/storage");
/**
* Reset global storage for testing
*/
async function resetGlobalStorage() {
await storage_2.GlobalStorage.clearAll();
}
// ===== Resilience Patterns =====
// Retry Pattern
var retry_1 = require("./resilience/retry");
Object.defineProperty(exports, "retry", { enumerable: true, get: function () { return retry_1.retry; } });
Object.defineProperty(exports, "RetryPredicates", { enumerable: true, get: function () { return retry_1.RetryPredicates; } });
// Timeout Pattern
var timeout_1 = require("./resilience/timeout");
Object.defineProperty(exports, "timeout", { enumerable: true, get: function () { return timeout_1.timeout; } });
Object.defineProperty(exports, "createTimeoutSignal", { enumerable: true, get: function () { return timeout_1.createTimeoutSignal; } });
Object.defineProperty(exports, "combineSignals", { enumerable: true, get: function () { return timeout_1.combineSignals; } });
// Circuit Breaker Pattern
var circuit_breaker_1 = require("./resilience/circuit-breaker");
Object.defineProperty(exports, "CircuitBreaker", { enumerable: true, get: function () { return circuit_breaker_1.CircuitBreaker; } });
Object.defineProperty(exports, "defineCircuitBreaker", { enumerable: true, get: function () { return circuit_breaker_1.defineCircuitBreaker; } });
Object.defineProperty(exports, "circuitBreaker", { enumerable: true, get: function () { return circuit_breaker_1.circuitBreaker; } });
// ===== Rate Limiting =====
// Rate Limiter Pattern
var rate_limiter_1 = require("./rate-limiting/rate-limiter");
Object.defineProperty(exports, "RateLimiter", { enumerable: true, get: function () { return rate_limiter_1.RateLimiter; } });
Object.defineProperty(exports, "defineRateLimiter", { enumerable: true, get: function () { return rate_limiter_1.defineRateLimiter; } });
Object.defineProperty(exports, "rateLimiter", { enumerable: true, get: function () { return rate_limiter_1.rateLimiter; } });
// ===== Orchestration Patterns =====
// Fan-Out Pattern
var fan_out_1 = require("./orchestration/fan-out");
Object.defineProperty(exports, "fanOut", { enumerable: true, get: function () { return fan_out_1.fanOut; } });
// Saga Pattern
var saga_1 = require("./orchestration/saga");
Object.defineProperty(exports, "Saga", { enumerable: true, get: function () { return saga_1.Saga; } });
Object.defineProperty(exports, "executeSaga", { enumerable: true, get: function () { return saga_1.executeSaga; } });
// ===== AI Patterns =====
// Human-in-the-Loop Pattern
var human_in_the_loop_1 = require("./ai/human-in-the-loop");
Object.defineProperty(exports, "HumanInTheLoop", { enumerable: true, get: function () { return human_in_the_loop_1.HumanInTheLoop; } });
Object.defineProperty(exports, "humanInTheLoop", { enumerable: true, get: function () { return human_in_the_loop_1.humanInTheLoop; } });
Object.defineProperty(exports, "CommonEscalationRules", { enumerable: true, get: function () { return human_in_the_loop_1.CommonEscalationRules; } });
// Smart Context Window Pattern
var context_window_1 = require("./ai/context-window");
Object.defineProperty(exports, "smartContextWindow", { enumerable: true, get: function () { return context_window_1.smartContextWindow; } });
Object.defineProperty(exports, "createAISummarizer", { enumerable: true, get: function () { return context_window_1.createAISummarizer; } });
var context_window_2 = require("./types/context-window");
Object.defineProperty(exports, "ContextStrategy", { enumerable: true, get: function () { return context_window_2.ContextStrategy; } });
// Reflection Loop Pattern
var reflection_loop_1 = require("./ai/reflection-loop");
Object.defineProperty(exports, "reflectionLoop", { enumerable: true, get: function () { return reflection_loop_1.reflectionLoop; } });
Object.defineProperty(exports, "InMemoryReflectionStorage", { enumerable: true, get: function () { return reflection_loop_1.InMemoryReflectionStorage; } });
// ===== Consistency Patterns =====
// Idempotency Pattern
var idempotency_1 = require("./consistency/idempotency");
Object.defineProperty(exports, "Idempotency", { enumerable: true, get: function () { return idempotency_1.Idempotency; } });
Object.defineProperty(exports, "idempotent", { enumerable: true, get: function () { return idempotency_1.idempotent; } });
Object.defineProperty(exports, "Idempotent", { enumerable: true, get: function () { return idempotency_1.Idempotent; } });
Object.defineProperty(exports, "resetGlobalIdempotencyStore", { enumerable: true, get: function () { return idempotency_1.resetGlobalIdempotencyStore; } });
Object.defineProperty(exports, "stopGlobalIdempotencyCleanup", { enumerable: true, get: function () { return idempotency_1.stopGlobalIdempotencyCleanup; } });
Object.defineProperty(exports, "startGlobalIdempotencyCleanup", { enumerable: true, get: function () { return idempotency_1.startGlobalIdempotencyCleanup; } });
// ===== New Resilience Patterns =====
// Fallback Pattern
var fallback_1 = require("./resilience/fallback");
Object.defineProperty(exports, "fallback", { enumerable: true, get: function () { return fallback_1.fallback; } });
// Bulkhead Pattern
var bulkhead_1 = require("./resilience/bulkhead");
Object.defineProperty(exports, "defineBulkhead", { enumerable: true, get: function () { return bulkhead_1.defineBulkhead; } });
Object.defineProperty(exports, "bulkhead", { enumerable: true, get: function () { return bulkhead_1.bulkhead; } });
// ===== Timing Patterns =====
var debounce_1 = require("./timing/debounce");
Object.defineProperty(exports, "defineDebounce", { enumerable: true, get: function () { return debounce_1.defineDebounce; } });
Object.defineProperty(exports, "debounce", { enumerable: true, get: function () { return debounce_1.debounce; } });
var throttle_1 = require("./timing/throttle");
Object.defineProperty(exports, "defineThrottle", { enumerable: true, get: function () { return throttle_1.defineThrottle; } });
Object.defineProperty(exports, "throttle", { enumerable: true, get: function () { return throttle_1.throttle; } });
// ===== Caching Patterns =====
var memoize_1 = require("./caching/memoize");
Object.defineProperty(exports, "memoize", { enumerable: true, get: function () { return memoize_1.memoize; } });
// ===== Queue Patterns =====
var dead_letter_queue_1 = require("./queuing/dead-letter-queue");
Object.defineProperty(exports, "deadLetterQueue", { enumerable: true, get: function () { return dead_letter_queue_1.deadLetterQueue; } });
// ===== Orchestration Patterns (Additional) =====
var conditional_branch_1 = require("./orchestration/conditional-branch");
Object.defineProperty(exports, "conditionalBranch", { enumerable: true, get: function () { return conditional_branch_1.conditionalBranch; } });
// ===== Composition =====
var compose_1 = require("./composition/compose");
Object.defineProperty(exports, "compose", { enumerable: true, get: function () { return compose_1.compose; } });
// Middleware adapters for composition
__exportStar(require("./composition/middleware"), exports);
// ===== Experimentation Patterns =====
// A/B Testing Pattern
var ab_test_1 = require("./experimentation/ab-test");
Object.defineProperty(exports, "abTest", { enumerable: true, get: function () { return ab_test_1.abTest; } });
Object.defineProperty(exports, "InMemoryAssignmentStorage", { enumerable: true, get: function () { return ab_test_1.InMemoryAssignmentStorage; } });
var ab_test_2 = require("./types/ab-test");
Object.defineProperty(exports, "VariantAssignmentStrategy", { enumerable: true, get: function () { return ab_test_2.VariantAssignmentStrategy; } });
// ===== Monitoring Patterns =====
// Cost Tracking Pattern
var cost_tracking_1 = require("./monitoring/cost-tracking");
Object.defineProperty(exports, "costTracking", { enumerable: true, get: function () { return cost_tracking_1.costTracking; } });
Object.defineProperty(exports, "createCostTracker", { enumerable: true, get: function () { return cost_tracking_1.createCostTracker; } });
Object.defineProperty(exports, "InMemoryCostStorage", { enumerable: true, get: function () { return cost_tracking_1.InMemoryCostStorage; } });
var cost_tracking_2 = require("./types/cost-tracking");
Object.defineProperty(exports, "ModelCost", { enumerable: true, get: function () { return cost_tracking_2.ModelCost; } });
// Prompt Versioning Pattern
var prompt_versioning_1 = require("./experimentation/prompt-versioning");
Object.defineProperty(exports, "versionedPrompt", { enumerable: true, get: function () { return prompt_versioning_1.versionedPrompt; } });
Object.defineProperty(exports, "InMemoryPromptVersionStorage", { enumerable: true, get: function () { return prompt_versioning_1.InMemoryPromptVersionStorage; } });
// ===== Validation Patterns =====
// Response Validation Pattern
var response_validation_1 = require("./validation/response-validation");
Object.defineProperty(exports, "validateResponse", { enumerable: true, get: function () { return response_validation_1.validateResponse; } });
// ===== Version =====
exports.VERSION = "1.0.0";
//# sourceMappingURL=index.js.map