UNPKG

@growthub/compiler-core

Version:

Core decomposition engine and orchestration logic for Growthub Marketing OS

855 lines (849 loc) 29.3 kB
/* @growthub/compiler-core - Core decomposition engine and orchestration logic */ "use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var src_exports = {}; __export(src_exports, { AuthValidationSchema: () => AuthValidationSchema, CSISchema: () => CSISchema, DecompositionEventSchema: () => DecompositionEventSchema, KVLockValidationSchema: () => KVLockValidationSchema, MessageMetadataSchema: () => MessageMetadataSchema, OrchestrationRequestSchema: () => OrchestrationRequestSchema, PACKAGE_INFO: () => PACKAGE_INFO, PreInitValidationSchema: () => PreInitValidationSchema, analyzeThreadState: () => analyzeThreadState, areDependenciesSatisfied: () => areDependenciesSatisfied, calculateDecompositionProgress: () => calculateDecompositionProgress, calculateOrchestrationProgress: () => calculateOrchestrationProgress, calculateStepProgress: () => calculateStepProgress, combineValidationResults: () => combineValidationResults, createCSI: () => createCSI, createCSIFromSteps: () => createCSIFromSteps, createContentGenerationSteps: () => createContentGenerationSteps, createDecompositionStep: () => createDecompositionStep, createOrchestrationError: () => createOrchestrationError, createOrchestrationStep: () => createOrchestrationStep, createStepMetadata: () => createStepMetadata, createValidationError: () => createValidationError, createVersionedMetadata: () => createVersionedMetadata, decompositionStructuredOutput: () => decompositionStructuredOutput, extractStatusFromMetadata: () => extractStatusFromMetadata, generateOrchestrationId: () => generateOrchestrationId, getCurrentDecompositionStep: () => getCurrentDecompositionStep, getNextExecutableSteps: () => getNextExecutableSteps, getOrchestrationStatus: () => getOrchestrationStatus, isCSIComplete: () => isCSIComplete, isDecompositionComplete: () => isDecompositionComplete, isOrchestrationComplete: () => isOrchestrationComplete, mergeCSIMetadata: () => mergeCSIMetadata, transformBrandContext: () => transformBrandContext, updateCSI: () => updateCSI, updateDecompositionStep: () => updateDecompositionStep, updateOrchestrationStep: () => updateOrchestrationStep, validateAuth: () => validateAuth, validateCSI: () => validateCSI, validateDecompositionEvent: () => validateDecompositionEvent, validateKVLock: () => validateKVLock, validateMessageMetadata: () => validateMessageMetadata, validateOrchestrationRequest: () => validateOrchestrationRequest, validatePreInit: () => validatePreInit, validatePrompt: () => validatePrompt, validateReferenceImages: () => validateReferenceImages, validateThreadId: () => validateThreadId, validateUserId: () => validateUserId }); module.exports = __toCommonJS(src_exports); // src/decomposition.ts var import_zod = require("zod"); var DecompositionEventSchema = import_zod.z.object({ threadId: import_zod.z.string().uuid(), userId: import_zod.z.string().min(1), agentType: import_zod.z.enum(["CONTENT_GENERATION_AGENT", "TEXT_ANALYSIS_AGENT"]), prompt: import_zod.z.string().min(1), context: import_zod.z.object({ brandKit: import_zod.z.object({ id: import_zod.z.string(), brand_name: import_zod.z.string(), colors: import_zod.z.object({ primary: import_zod.z.string().optional(), secondary: import_zod.z.string().optional(), accent: import_zod.z.string().optional(), neutral: import_zod.z.string().optional() }).optional(), messaging: import_zod.z.string().optional() }), referenceImages: import_zod.z.array(import_zod.z.object({ url: import_zod.z.string(), type: import_zod.z.string(), description: import_zod.z.string() })).default([]) }) }); var decompositionStructuredOutput = { type: "json_schema", json_schema: { name: "decomposition_event", strict: true, schema: { type: "object", properties: { threadId: { type: "string", format: "uuid" }, userId: { type: "string", minLength: 1 }, agentType: { type: "string", enum: ["CONTENT_GENERATION_AGENT", "TEXT_ANALYSIS_AGENT"] }, prompt: { type: "string", minLength: 1 }, context: { type: "object", properties: { brandKit: { type: "object", properties: { id: { type: "string" }, brand_name: { type: "string" }, colors: { type: "object", properties: { primary: { type: "string" }, secondary: { type: "string" }, accent: { type: "string" }, neutral: { type: "string" } }, required: ["primary", "secondary", "accent", "neutral"], additionalProperties: false }, messaging: { type: "string" } }, required: ["id", "brand_name", "colors", "messaging"], additionalProperties: false }, referenceImages: { type: "array", items: { type: "object", properties: { url: { type: "string" }, type: { type: "string" }, description: { type: "string" } }, required: ["url", "type", "description"], additionalProperties: false } } }, required: ["brandKit", "referenceImages"], additionalProperties: false } }, required: ["threadId", "userId", "agentType", "prompt", "context"], additionalProperties: false } } }; function transformBrandContext(context) { return { brand_name: context.brandKit.brand_name, colors: context.brandKit.colors ? Object.values(context.brandKit.colors).filter(Boolean) : [], messaging: context.brandKit.messaging || null, referenceImages: context.referenceImages }; } function validateDecompositionEvent(data) { return DecompositionEventSchema.parse(data); } function createDecompositionStep(stepName, stepType, metadata) { return { stepName, stepType, status: "pending", metadata, timestamp: (/* @__PURE__ */ new Date()).toISOString() }; } function updateDecompositionStep(step, status, result, metadata) { return { ...step, status, result, metadata: { ...step.metadata, ...metadata }, timestamp: (/* @__PURE__ */ new Date()).toISOString() }; } function calculateDecompositionProgress(steps) { if (steps.length === 0) return 0; const completedSteps = steps.filter((step) => step.status === "completed").length; return Math.round(completedSteps / steps.length * 100); } function isDecompositionComplete(steps) { return steps.length > 0 && steps.every( (step) => step.status === "completed" || step.status === "failed" ); } function getCurrentDecompositionStep(steps) { return steps.find((step) => step.status === "running") || steps.find((step) => step.status === "pending") || null; } // src/orchestration.ts var import_zod2 = require("zod"); var OrchestrationRequestSchema = import_zod2.z.object({ threadId: import_zod2.z.string().uuid(), userId: import_zod2.z.string().min(1), agentType: import_zod2.z.enum(["CONTENT_GENERATION_AGENT", "TEXT_ANALYSIS_AGENT"]), prompt: import_zod2.z.string().min(1), brandContext: import_zod2.z.object({ brand_name: import_zod2.z.string(), colors: import_zod2.z.array(import_zod2.z.string()).default([]), messaging: import_zod2.z.string().nullable(), referenceImages: import_zod2.z.array(import_zod2.z.object({ url: import_zod2.z.string(), type: import_zod2.z.string(), description: import_zod2.z.string() })).default([]) }), executionPriority: import_zod2.z.enum(["low", "normal", "high"]).default("normal"), maxRetries: import_zod2.z.number().int().min(0).max(3).default(1), metadata: import_zod2.z.record(import_zod2.z.any()).optional() }); function createOrchestrationStep(stepId, stepName, stepType, dependencies = []) { return { stepId, stepName, stepType, status: "pending", progress: 0, dependencies, metadata: { startedAt: (/* @__PURE__ */ new Date()).toISOString(), retryCount: 0 } }; } function updateOrchestrationStep(step, status, progress, result, metadata) { const updatedStep = { ...step, status, progress, result, metadata: { ...step.metadata, ...metadata } }; if (status === "completed" || status === "failed") { updatedStep.metadata.completedAt = (/* @__PURE__ */ new Date()).toISOString(); if (step.metadata?.startedAt) { const duration = Date.now() - new Date(step.metadata.startedAt).getTime(); updatedStep.metadata.duration = duration; } } return updatedStep; } function areDependenciesSatisfied(step, allSteps) { if (!step.dependencies || step.dependencies.length === 0) { return true; } return step.dependencies.every((depId) => { const depStep = allSteps.find((s) => s.stepId === depId); return depStep?.status === "completed"; }); } function getNextExecutableSteps(steps) { return steps.filter( (step) => step.status === "pending" && areDependenciesSatisfied(step, steps) ); } function calculateOrchestrationProgress(steps) { if (steps.length === 0) return 0; const totalProgress = steps.reduce((sum, step) => sum + step.progress, 0); return Math.round(totalProgress / steps.length); } function isOrchestrationComplete(steps) { return steps.length > 0 && steps.every( (step) => step.status === "completed" || step.status === "failed" || step.status === "skipped" ); } function getOrchestrationStatus(steps) { if (steps.length === 0) return "pending"; const hasRunning = steps.some((step) => step.status === "running"); if (hasRunning) return "running"; const hasFailed = steps.some((step) => step.status === "failed"); if (hasFailed) return "failed"; const allComplete = steps.every( (step) => step.status === "completed" || step.status === "skipped" ); if (allComplete) return "completed"; return "pending"; } function createCSIFromSteps(steps) { const completedSteps = steps.filter((step) => step.status === "completed").map((step) => step.stepName); const currentStep = steps.find((step) => step.status === "running"); const progress = calculateOrchestrationProgress(steps); return { completedSteps, currentProgress: progress, totalSteps: steps.length, currentStep: currentStep?.stepName || "pending", metadata: { timestamp: (/* @__PURE__ */ new Date()).toISOString(), stepsStatus: steps.map((step) => ({ stepName: step.stepName, status: step.status, progress: step.progress })) } }; } function validateOrchestrationRequest(data) { return OrchestrationRequestSchema.parse(data); } function generateOrchestrationId(userId, threadId) { const timestamp = Date.now(); return `orch_${userId.slice(0, 8)}_${threadId.slice(0, 8)}_${timestamp}`; } function createContentGenerationSteps() { return [ createOrchestrationStep("intent_analysis", "Intent Analysis", "analysis"), createOrchestrationStep("brand_analysis", "Brand Analysis", "analysis", ["intent_analysis"]), createOrchestrationStep("complexity_assessment", "Complexity Assessment", "analysis", ["intent_analysis", "brand_analysis"]), createOrchestrationStep("execution_planning", "Execution Planning", "coordination", ["complexity_assessment"]), createOrchestrationStep("content_generation", "Content Generation", "execution", ["execution_planning"]), createOrchestrationStep("finalization", "Finalization", "completion", ["content_generation"]) ]; } function createOrchestrationError(message, code, retry = false, details) { return { message, code, retry, ...details && { details } }; } // src/csi.ts var import_zod3 = require("zod"); var CSISchema = import_zod3.z.object({ completedSteps: import_zod3.z.array(import_zod3.z.string()).default([]), currentProgress: import_zod3.z.number().min(0).max(100).default(0), totalSteps: import_zod3.z.number().int().positive().default(4), currentStep: import_zod3.z.string().default("pending"), metadata: import_zod3.z.record(import_zod3.z.any()).optional() }); var MessageMetadataSchema = import_zod3.z.object({ type: import_zod3.z.enum(["agent_step", "system_message", "user_message", "completion"]).default("agent_step"), step: import_zod3.z.string().optional(), status: import_zod3.z.enum(["pending", "running", "completed", "failed", "cancelled"]).default("pending"), progress: import_zod3.z.number().min(0).max(100).default(0), agentType: import_zod3.z.string().optional(), toolName: import_zod3.z.string().optional(), timestamp: import_zod3.z.string().datetime().default(() => (/* @__PURE__ */ new Date()).toISOString()), stepNumber: import_zod3.z.number().int().positive().optional(), totalSteps: import_zod3.z.number().int().positive().optional(), brandContext: import_zod3.z.string().optional(), referenceImages: import_zod3.z.number().int().min(0).optional(), generatedAssets: import_zod3.z.array(import_zod3.z.object({ url: import_zod3.z.string(), type: import_zod3.z.string(), concept: import_zod3.z.string().optional() })).default([]), executionStats: import_zod3.z.object({ apiCalls: import_zod3.z.number().int().min(0).optional(), storageBytes: import_zod3.z.number().int().min(0).optional(), executionTimeMs: import_zod3.z.number().int().min(0).optional() }).optional(), statusVersion: import_zod3.z.number().int().optional(), kvLockReleased: import_zod3.z.boolean().optional(), emissionTimestamp: import_zod3.z.string().datetime().optional() }); function createCSI(currentStep = "pending", totalSteps = 4, metadata) { return { completedSteps: [], currentProgress: 0, totalSteps, currentStep, metadata: { createdAt: (/* @__PURE__ */ new Date()).toISOString(), ...metadata } }; } function updateCSI(csi, completedStep, newCurrentStep, metadata) { const completedSteps = [...csi.completedSteps, completedStep]; const progress = Math.round(completedSteps.length / csi.totalSteps * 100); return { ...csi, completedSteps, currentProgress: progress, currentStep: newCurrentStep, metadata: { ...csi.metadata, ...metadata, updatedAt: (/* @__PURE__ */ new Date()).toISOString() } }; } function isCSIComplete(csi) { return csi.currentProgress >= 100 || csi.completedSteps.length >= csi.totalSteps || csi.currentStep === "completed"; } function extractStatusFromMetadata(metadata) { if (!metadata) return "PENDING"; if (metadata.status === "completed" && (metadata.step === "final_completion" || metadata.step === "enhanced_completion")) { return "COMPLETED"; } if (metadata.status === "failed" || metadata.status === "cancelled") { return metadata.status.toUpperCase(); } if (metadata.status === "running") return "RUNNING"; return "PENDING"; } function createStepMetadata(stepName, agentType, stepNumber, totalSteps, toolName, additionalMetadata = {}) { return { type: "agent_step", step: stepName, status: "pending", progress: Math.round(stepNumber / totalSteps * 100), agentType, toolName, timestamp: (/* @__PURE__ */ new Date()).toISOString(), stepNumber, totalSteps, generatedAssets: [], ...additionalMetadata }; } function analyzeThreadState(threadMessages) { const hasRunningSteps = threadMessages.some( (msg) => msg.status === "running" || msg.status === "pending" ); const hasFinalCompletion = threadMessages.some( (msg) => (msg.step === "final_completion" || msg.step === "enhanced_completion") && msg.status === "completed" ); const progressValues = threadMessages.map((msg) => msg.progress || 0).filter((progress) => progress > 0); const currentProgress = progressValues.length > 0 ? Math.max(...progressValues) : 0; const completedSteps = threadMessages.filter( (msg) => msg.status === "completed" ).length; const totalStepsValues = threadMessages.map((msg) => msg.totalSteps).filter(Boolean); const totalSteps = totalStepsValues.length > 0 ? Math.max(...totalStepsValues) : 4; let executionStatus = "PENDING"; if (hasFinalCompletion) { executionStatus = "COMPLETED"; } else if (hasRunningSteps) { executionStatus = "RUNNING"; } return { hasRunningSteps, hasFinalCompletion, shouldSwitchToHistorical: hasFinalCompletion, shouldEnableRealtime: !hasFinalCompletion, executionStatus, currentProgress, completedSteps, totalSteps }; } function createVersionedMetadata(step, status, progress, additionalData = {}) { return { type: "agent_step", step, status, progress, timestamp: (/* @__PURE__ */ new Date()).toISOString(), statusVersion: Date.now(), emissionTimestamp: (/* @__PURE__ */ new Date()).toISOString(), generatedAssets: [], ...additionalData }; } function validateCSI(data) { return CSISchema.parse(data); } function validateMessageMetadata(data) { return MessageMetadataSchema.parse(data); } function mergeCSIMetadata(existing, updates) { return { ...existing, ...updates, completedSteps: updates.completedSteps || existing.completedSteps, metadata: { ...existing.metadata, ...updates.metadata, updatedAt: (/* @__PURE__ */ new Date()).toISOString() } }; } function calculateStepProgress(stepNumber, totalSteps, isCompleted = false) { if (isCompleted) { return Math.round(stepNumber / totalSteps * 100); } return Math.round((stepNumber - 0.1) / totalSteps * 100); } // src/validation.ts var import_zod4 = require("zod"); var PreInitValidationSchema = import_zod4.z.object({ userId: import_zod4.z.string().uuid("Invalid user ID format"), threadId: import_zod4.z.string().uuid("Invalid thread ID format"), runId: import_zod4.z.string().uuid("Invalid run ID format").optional(), prompt: import_zod4.z.string().min(1, "Prompt cannot be empty").max(2e3, "Prompt too long"), brandKitId: import_zod4.z.string().uuid("Invalid brand kit ID"), agentType: import_zod4.z.enum(["CONTENT_GENERATION_AGENT", "TEXT_ANALYSIS_AGENT"]), creativeCount: import_zod4.z.number().int().min(1).max(10).default(1), referenceImages: import_zod4.z.array(import_zod4.z.object({ url: import_zod4.z.string().url("Invalid reference image URL"), type: import_zod4.z.string().min(1), description: import_zod4.z.string().min(1) })).max(5, "Too many reference images").default([]), executionPriority: import_zod4.z.enum(["low", "normal", "high"]).default("normal"), maxRetries: import_zod4.z.number().int().min(0).max(3).default(1) }); var KVLockValidationSchema = import_zod4.z.object({ userId: import_zod4.z.string().uuid(), threadId: import_zod4.z.string().uuid(), lockKey: import_zod4.z.string().min(1), ttl: import_zod4.z.number().int().positive().default(9e5), // 15 minutes metadata: import_zod4.z.object({ runId: import_zod4.z.string().uuid(), lockAcquired: import_zod4.z.number().int().positive(), processId: import_zod4.z.string().optional(), expiresAt: import_zod4.z.string().datetime().optional() }) }); var AuthValidationSchema = import_zod4.z.object({ userId: import_zod4.z.string().uuid(), hasSession: import_zod4.z.boolean(), hasToken: import_zod4.z.boolean(), isAdmin: import_zod4.z.boolean().default(false), tokenLength: import_zod4.z.number().int().positive().optional(), sessionCookieFound: import_zod4.z.boolean().default(false), jwtValid: import_zod4.z.boolean().default(false) }); function validatePreInit(data) { const startTime = performance.now(); try { const validatedData = PreInitValidationSchema.parse(data); const duration = performance.now() - startTime; return { success: true, data: validatedData, metadata: { validatedAt: (/* @__PURE__ */ new Date()).toISOString(), validationDuration: Math.round(duration), validator: "PreInitValidationSchema" } }; } catch (error) { const duration = performance.now() - startTime; if (error instanceof import_zod4.z.ZodError) { return { success: false, errors: error.errors.map((err) => ({ field: err.path.join("."), message: err.message, code: err.code, severity: "error" })), metadata: { validatedAt: (/* @__PURE__ */ new Date()).toISOString(), validationDuration: Math.round(duration), validator: "PreInitValidationSchema" } }; } return { success: false, errors: [{ field: "unknown", message: "Unknown validation error", code: "UNKNOWN_ERROR", severity: "error" }] }; } } function validateKVLock(data) { const startTime = performance.now(); try { const validatedData = KVLockValidationSchema.parse(data); const duration = performance.now() - startTime; return { success: true, data: validatedData, metadata: { validatedAt: (/* @__PURE__ */ new Date()).toISOString(), validationDuration: Math.round(duration), validator: "KVLockValidationSchema" } }; } catch (error) { const duration = performance.now() - startTime; if (error instanceof import_zod4.z.ZodError) { return { success: false, errors: error.errors.map((err) => ({ field: err.path.join("."), message: err.message, code: err.code, severity: "error" })), metadata: { validatedAt: (/* @__PURE__ */ new Date()).toISOString(), validationDuration: Math.round(duration), validator: "KVLockValidationSchema" } }; } return { success: false, errors: [{ field: "unknown", message: "KV lock validation failed", code: "KV_VALIDATION_ERROR", severity: "error" }] }; } } function validateAuth(data) { const startTime = performance.now(); try { const validatedData = AuthValidationSchema.parse(data); const duration = performance.now() - startTime; const warnings = []; if (!validatedData.hasSession && !validatedData.hasToken) { warnings.push("No session or token found - authentication may be invalid"); } if (validatedData.hasToken && !validatedData.jwtValid) { warnings.push("Token present but JWT validation failed"); } return { success: true, data: validatedData, warnings: warnings.length > 0 ? warnings : void 0, metadata: { validatedAt: (/* @__PURE__ */ new Date()).toISOString(), validationDuration: Math.round(duration), validator: "AuthValidationSchema" } }; } catch (error) { const duration = performance.now() - startTime; if (error instanceof import_zod4.z.ZodError) { return { success: false, errors: error.errors.map((err) => ({ field: err.path.join("."), message: err.message, code: err.code, severity: "error" })), metadata: { validatedAt: (/* @__PURE__ */ new Date()).toISOString(), validationDuration: Math.round(duration), validator: "AuthValidationSchema" } }; } return { success: false, errors: [{ field: "auth", message: "Authentication validation failed", code: "AUTH_VALIDATION_ERROR", severity: "error" }] }; } } function validateThreadId(threadId) { return import_zod4.z.string().uuid().safeParse(threadId).success; } function validateUserId(userId) { return import_zod4.z.string().uuid().safeParse(userId).success; } function validatePrompt(prompt) { try { const validatedPrompt = import_zod4.z.string().min(1, "Prompt cannot be empty").max(2e3, "Prompt exceeds maximum length").parse(prompt); return { success: true, data: validatedPrompt }; } catch (error) { if (error instanceof import_zod4.z.ZodError) { return { success: false, errors: error.errors.map((err) => ({ field: "prompt", message: err.message, code: err.code, severity: "error" })) }; } return { success: false, errors: [{ field: "prompt", message: "Invalid prompt format", code: "PROMPT_VALIDATION_ERROR", severity: "error" }] }; } } function validateReferenceImages(images) { try { const schema = import_zod4.z.array(import_zod4.z.object({ url: import_zod4.z.string().url("Invalid image URL"), type: import_zod4.z.string().min(1, "Image type required"), description: import_zod4.z.string().min(1, "Image description required") })).max(5, "Maximum 5 reference images allowed"); const validatedImages = schema.parse(images); return { success: true, data: validatedImages }; } catch (error) { if (error instanceof import_zod4.z.ZodError) { return { success: false, errors: error.errors.map((err) => ({ field: `referenceImages.${err.path.join(".")}`, message: err.message, code: err.code, severity: "error" })) }; } return { success: false, errors: [{ field: "referenceImages", message: "Reference images validation failed", code: "IMAGES_VALIDATION_ERROR", severity: "error" }] }; } } function createValidationError(field, message, code, severity = "error", context) { return { field, message, code, severity, context }; } function combineValidationResults(...results) { const allErrors = []; const allWarnings = []; const allData = []; let allSuccessful = true; for (const result of results) { if (!result.success) { allSuccessful = false; if (result.errors) { allErrors.push(...result.errors); } } else if (result.data !== void 0) { allData.push(result.data); } if (result.warnings) { allWarnings.push(...result.warnings); } } return { success: allSuccessful, data: allSuccessful ? allData : void 0, errors: allErrors.length > 0 ? allErrors : void 0, warnings: allWarnings.length > 0 ? allWarnings : void 0, metadata: { validatedAt: (/* @__PURE__ */ new Date()).toISOString(), validationDuration: 0, validator: "combined" } }; } // src/index.ts var PACKAGE_INFO = { name: "@growthub/compiler-core", version: "1.0.0", description: "Core decomposition engine and orchestration logic for Growthub Marketing OS", patterns: [ "AT-03 Decomposition Engine", "CSI Coordination", "Pre-Init Validation", "Orchestration Patterns", "Thread State Management" ], compliance: "AT-03 PROD STABLE" }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { AuthValidationSchema, CSISchema, DecompositionEventSchema, KVLockValidationSchema, MessageMetadataSchema, OrchestrationRequestSchema, PACKAGE_INFO, PreInitValidationSchema, analyzeThreadState, areDependenciesSatisfied, calculateDecompositionProgress, calculateOrchestrationProgress, calculateStepProgress, combineValidationResults, createCSI, createCSIFromSteps, createContentGenerationSteps, createDecompositionStep, createOrchestrationError, createOrchestrationStep, createStepMetadata, createValidationError, createVersionedMetadata, decompositionStructuredOutput, extractStatusFromMetadata, generateOrchestrationId, getCurrentDecompositionStep, getNextExecutableSteps, getOrchestrationStatus, isCSIComplete, isDecompositionComplete, isOrchestrationComplete, mergeCSIMetadata, transformBrandContext, updateCSI, updateDecompositionStep, updateOrchestrationStep, validateAuth, validateCSI, validateDecompositionEvent, validateKVLock, validateMessageMetadata, validateOrchestrationRequest, validatePreInit, validatePrompt, validateReferenceImages, validateThreadId, validateUserId }); //# sourceMappingURL=index.cjs.map