UNPKG

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
"use strict"; /** * 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