@mondaydotcomorg/atp-runtime 0.19.6 → 0.19.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/pause/types.ts","../src/pause/index.ts","../src/metadata/decorators.ts","../src/log/index.ts","../src/llm/replay.ts","../src/llm/callback.ts","../src/llm/index.ts","../src/progress/index.ts","../src/cache/backends.ts","../src/cache/index.ts","../src/utils.ts","../src/approval/handler.ts","../src/approval/index.ts","../src/embedding/utils.ts","../src/embedding/vector-store.ts","../src/embedding/index.ts","../src/metadata/generated.ts","../src/registry.ts","../src/metadata/index.ts"],"names":["CallbackType","LLMOperation","EmbeddingOperation","ApprovalOperation","ToolOperation","PauseExecutionError","Error","type","operation","payload","constructor","name","pauseForCallback","isPauseError","error","RuntimeAPI","description","API_NAME","API_DESCRIPTION","RuntimeMethod","paramDescriptions","target","propertyKey","descriptor","__methods","logger","initializeLogger","config","pinoLevel","level","options","timestamp","pino","stdTimeFunctions","isoTime","formatters","label","redact","paths","censor","pretty","transport","colorize","translateTime","ignore","destination","getLogger","log","info","message","data","l","warn","debug","fatal","child","bindings","childLogger","shutdownLogger","executionStates","Map","MAX_EXECUTION_STATES","operationCounter","CLEANUP_CHECK_INTERVAL","executionContext","AsyncLocalStorage","currentExecutionId","setCurrentExecutionId","executionId","clearCurrentExecutionId","getCurrentState","getStore","autoCleanup","state","get","shouldPauseForClient","replayResults","undefined","callSequenceNumber","apiCallResults","apiResultCache","createdAt","Date","now","set","initializeExecutionState","shouldPause","existingState","runInExecutionContext","fn","run","setPauseForClient","pause","setReplayMode","results","getCallSequenceNumber","nextSequenceNumber","current","getCachedResult","sequenceNumber","has","isReplayMode","storeAPICallResult","record","push","getAPICallResults","clearAPICallResults","setAPIResultCache","cache","getAPIResultFromCache","storeAPIResultInCache","result","cleanupExecutionState","delete","size","entries","Array","from","sort","a","b","toRemove","i","entry","cleanupOldExecutionStates","maxAgeMs","cleaned","age","resetAllExecutionState","clear","getExecutionStateStats","executionIds","keys","oldestAge","newestAge","values","totalStates","oldestStateAge","newestStateAge","clientLLMCallback","setClientLLMCallback","callback","getClientLLMCallback","LLMAPI","call","currentSequence","cachedResult","LLM","CALL","prompt","extract","EXTRACT","schema","classify","CLASSIFY","text","categories","llm","_ts_decorate","progressCallback","setProgressCallback","ProgressAPI","report","fraction","progress","MemoryCacheBackend","NodeCache","stdTTL","defaultTTL","checkperiod","checkPeriod","maxKeys","useClones","key","value","ttl","del","flushAll","RedisCacheBackend","client","connected","then","Redis","default","host","port","password","db","retryStrategy","times","Math","min","lazyConnect","connect","catch","JSON","parse","serialized","stringify","setex","exists","flushdb","cacheBackend","initializeCache","redis","getCacheBackend","CacheAPI","optional","utils","sleep","ms","Promise","resolve","setTimeout","retry","lastError","attempt","maxAttempts","delayMs","parallel","tasks","all","map","task","sequence","approvalHandler","initializeApproval","handler","getApprovalHandler","ApprovalAPI","request","context","APPROVAL","REQUEST","approvalRequest","timeout","timeoutId","timeoutPromise","_","reject","response","race","approval","cosineSimilarity","vec1","vec2","length","dotProduct","norm1","norm2","denominator","sqrt","generateEmbeddingId","index","random","toString","slice","VectorStore","records","queryEmbedding","store","id","embedding","metadata","storeBatch","setQueryEmbedding","search","topK","minSimilarity","filter","matches","Object","similarity","getAll","count","vectorStores","currentVectorStoreExecutionId","setVectorStoreExecutionId","clearVectorStoreExecutionId","initializeVectorStore","clearVectorStore","getVectorStore","EmbeddingAPI","embed","input","isBatch","isArray","texts","ids","vectorStore","EMBEDDING","EMBED","join","query","cachedQueryEmbedding","searchOptions","collection","SEARCH","embedding1","embedding2","GENERATED_METADATA","TYPE_REGISTRY","getAllAPIs","getAPI","find","api","generateRuntimeTypes","apis","filteredApis","requestedApis","clientServices","hasLLM","hasApproval","hasEmbedding","typescript","usedTypes","Set","method","methods","allTypes","returns","params","p","typeMatches","match","forEach","t","add","typeNameMatch","definition","typeName","line","split","param","returnDesc","startsWith","paramStrings","includes","replace"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Callback types that can pause execution\n */\nexport enum CallbackType {\n\tLLM = 'llm',\n\tAPPROVAL = 'approval',\n\tEMBEDDING = 'embedding',\n\tTOOL = 'tool',\n}\n\n/**\n * LLM callback operations\n */\nexport enum LLMOperation {\n\tCALL = 'call',\n\tEXTRACT = 'extract',\n\tCLASSIFY = 'classify',\n}\n\n/**\n * Embedding callback operations\n */\nexport enum EmbeddingOperation {\n\tEMBED = 'embed',\n\tSEARCH = 'search',\n}\n\n/**\n * Approval callback operations\n */\nexport enum ApprovalOperation {\n\tREQUEST = 'request',\n}\n\n/**\n * Tool callback operations\n */\nexport enum ToolOperation {\n\tCALL = 'call',\n}\n\n/**\n * Thrown when execution needs to pause for client callback\n */\nexport class PauseExecutionError extends Error {\n\tpublic readonly type: CallbackType;\n\tpublic readonly operation: string;\n\tpublic readonly payload: Record<string, unknown>;\n\n\tconstructor(type: CallbackType, operation: string, payload: Record<string, unknown>) {\n\t\tsuper(`Execution paused: waiting for ${type}.${operation}`);\n\t\tthis.name = 'PauseExecutionError';\n\t\tthis.type = type;\n\t\tthis.operation = operation;\n\t\tthis.payload = payload;\n\t}\n}\n","import { PauseExecutionError, CallbackType } from './types.js';\n\nexport {\n\tPauseExecutionError,\n\tCallbackType,\n\tLLMOperation,\n\tEmbeddingOperation,\n\tApprovalOperation,\n\tToolOperation,\n} from './types.js';\n\n/**\n * Helper to create pause error\n */\nexport function pauseForCallback(\n\ttype: CallbackType,\n\toperation: string,\n\tpayload: Record<string, unknown>\n): never {\n\tthrow new PauseExecutionError(type, operation, payload);\n}\n\n/**\n * Check if error is a pause request\n */\nexport function isPauseError(error: unknown): error is PauseExecutionError {\n\treturn error instanceof PauseExecutionError;\n}\n","/**\n * Decorator-based metadata system for runtime APIs\n *\n * These decorators are MARKERS ONLY - they don't extract types at runtime.\n * All type extraction happens at BUILD TIME using ts-morph.\n *\n\n/**\n * Class decorator to mark a runtime API\n *\n * This is just a marker - ts-morph extracts all metadata at build time\n */\nexport function RuntimeAPI(name: string, description: string) {\n\treturn function <T extends { new (...args: any[]): {} }>(constructor: T) {\n\t\t(constructor as any).API_NAME = name;\n\t\t(constructor as any).API_DESCRIPTION = description;\n\n\t\treturn constructor;\n\t};\n}\n\n/**\n * Method decorator to mark a runtime method\n *\n * This is just a marker - ts-morph extracts types/params at build time\n * Only the description and optional param descriptions are stored\n */\nexport function RuntimeMethod(\n\tdescription: string,\n\tparamDescriptions?: Record<string, { description?: string; optional?: boolean; type?: string }>\n) {\n\treturn function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n\t\tif (!target.constructor.__methods) {\n\t\t\ttarget.constructor.__methods = {};\n\t\t}\n\n\t\ttarget.constructor.__methods[propertyKey] = {\n\t\t\tdescription,\n\t\t\tparamDescriptions: paramDescriptions || {},\n\t\t};\n\n\t\treturn descriptor;\n\t};\n}\n","import pino from 'pino';\nimport type { LogLevel, LoggerConfig, Logger } from './types.js';\n\nexport type { LogLevel, LoggerConfig, Logger } from './types.js';\n\nlet logger: pino.Logger | null = null;\n\n/**\n * Initializes the logger with configuration\n */\nexport function initializeLogger(config?: LoggerConfig): void {\n\tconst pinoLevel = config?.level === 'none' ? 'silent' : (config?.level ?? 'info');\n\tconst options: pino.LoggerOptions = {\n\t\tlevel: pinoLevel,\n\t\ttimestamp: pino.stdTimeFunctions.isoTime,\n\t\tformatters: {\n\t\t\tlevel: (label) => {\n\t\t\t\treturn { level: label };\n\t\t\t},\n\t\t},\n\t\tredact: {\n\t\t\tpaths: config?.redact ?? ['apiKey', 'password', '*.apiKey', '*.password', 'authorization'],\n\t\t\tcensor: '[REDACTED]',\n\t\t},\n\t};\n\n\tif (config?.pretty) {\n\t\tlogger = pino({\n\t\t\t...options,\n\t\t\ttransport: {\n\t\t\t\ttarget: 'pino-pretty',\n\t\t\t\toptions: {\n\t\t\t\t\tcolorize: true,\n\t\t\t\t\ttranslateTime: 'SYS:standard',\n\t\t\t\t\tignore: 'pid,hostname',\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t} else if (config?.destination && config.destination !== 'stdout') {\n\t\tlogger = pino(options, pino.destination(config.destination));\n\t} else {\n\t\tlogger = pino(options);\n\t}\n}\n\n/**\n * Gets or initializes the logger\n */\nfunction getLogger(): pino.Logger {\n\tif (!logger) {\n\t\tinitializeLogger({ level: 'info', pretty: false });\n\t}\n\treturn logger!;\n}\n\nexport const log: Logger = {\n\t/**\n\t * Logs an informational message\n\t */\n\tinfo(message: string, data?: unknown): void {\n\t\tconst l = getLogger();\n\t\tif (data) {\n\t\t\tl.info(data, message);\n\t\t} else {\n\t\t\tl.info(message);\n\t\t}\n\t},\n\n\t/**\n\t * Logs a warning message\n\t */\n\twarn(message: string, data?: unknown): void {\n\t\tconst l = getLogger();\n\t\tif (data) {\n\t\t\tl.warn(data, message);\n\t\t} else {\n\t\t\tl.warn(message);\n\t\t}\n\t},\n\n\t/**\n\t * Logs an error message\n\t */\n\terror(message: string, data?: unknown): void {\n\t\tconst l = getLogger();\n\t\tif (data) {\n\t\t\tl.error(data, message);\n\t\t} else {\n\t\t\tl.error(message);\n\t\t}\n\t},\n\n\t/**\n\t * Logs a debug message\n\t */\n\tdebug(message: string, data?: unknown): void {\n\t\tconst l = getLogger();\n\t\tif (data) {\n\t\t\tl.debug(data, message);\n\t\t} else {\n\t\t\tl.debug(message);\n\t\t}\n\t},\n\n\t/**\n\t * Logs a fatal error message\n\t */\n\tfatal(message: string, data?: unknown): void {\n\t\tconst l = getLogger();\n\t\tif (data) {\n\t\t\tl.fatal(data, message);\n\t\t} else {\n\t\t\tl.fatal(message);\n\t\t}\n\t},\n\n\t/**\n\t * Creates a child logger with additional context\n\t */\n\tchild(bindings: Record<string, unknown>): typeof log {\n\t\tconst childLogger = getLogger().child(bindings);\n\t\treturn {\n\t\t\tinfo: (message: string, data?: unknown) => {\n\t\t\t\tif (data) {\n\t\t\t\t\tchildLogger.info(data, message);\n\t\t\t\t} else {\n\t\t\t\t\tchildLogger.info(message);\n\t\t\t\t}\n\t\t\t},\n\t\t\twarn: (message: string, data?: unknown) => {\n\t\t\t\tif (data) {\n\t\t\t\t\tchildLogger.warn(data, message);\n\t\t\t\t} else {\n\t\t\t\t\tchildLogger.warn(message);\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: (message: string, data?: unknown) => {\n\t\t\t\tif (data) {\n\t\t\t\t\tchildLogger.error(data, message);\n\t\t\t\t} else {\n\t\t\t\t\tchildLogger.error(message);\n\t\t\t\t}\n\t\t\t},\n\t\t\tdebug: (message: string, data?: unknown) => {\n\t\t\t\tif (data) {\n\t\t\t\t\tchildLogger.debug(data, message);\n\t\t\t\t} else {\n\t\t\t\t\tchildLogger.debug(message);\n\t\t\t\t}\n\t\t\t},\n\t\t\tfatal: (message: string, data?: unknown) => {\n\t\t\t\tif (data) {\n\t\t\t\t\tchildLogger.fatal(data, message);\n\t\t\t\t} else {\n\t\t\t\t\tchildLogger.fatal(message);\n\t\t\t\t}\n\t\t\t},\n\t\t\tchild: log.child,\n\t\t};\n\t},\n};\n\n/**\n * Shuts down the logger (for cleanup in tests)\n */\nexport function shutdownLogger(): void {\n\tlogger = null;\n}\n","import { AsyncLocalStorage } from 'async_hooks';\nimport { log } from '../log/index.js';\n\n/**\n * Execution-scoped state\n */\ninterface APICallRecord {\n\ttype: string;\n\toperation: string;\n\tpayload: unknown;\n\tresult: unknown;\n\ttimestamp: number;\n\tsequenceNumber: number;\n}\n\ninterface ExecutionState {\n\tshouldPauseForClient: boolean;\n\treplayResults: Map<number, unknown> | undefined;\n\tcallSequenceNumber: number;\n\tapiCallResults: APICallRecord[];\n\tapiResultCache: Map<string, unknown> | undefined;\n\tcreatedAt: number;\n}\n\n/**\n * Map of executionId -> ExecutionState\n * Each execution has its own isolated state\n */\nconst executionStates = new Map<string, ExecutionState>();\n\n/**\n * Maximum number of execution states to keep in memory\n * After this limit, old states are automatically cleaned up\n */\nconst MAX_EXECUTION_STATES = 100;\n\n/**\n * Automatic cleanup check counter\n * Every N operations, we check if cleanup is needed\n */\nlet operationCounter = 0;\nconst CLEANUP_CHECK_INTERVAL = 50;\n\n/**\n * AsyncLocalStorage for execution ID - provides proper async context isolation\n * This ensures each async execution chain has its own isolated execution ID\n */\nconst executionContext = new AsyncLocalStorage<string>();\n\n/**\n * Current execution ID - set by runtime API wrappers\n * This is a thread-local variable that's set before each runtime API call\n * and cleared after, providing isolation even when AsyncLocalStorage fails\n */\nlet currentExecutionId: string | null = null;\n\n/**\n * Sets the current execution ID for this call\n * Called by executor before each runtime API invocation\n */\nexport function setCurrentExecutionId(executionId: string): void {\n\tcurrentExecutionId = executionId;\n}\n\n/**\n * Clears the current execution ID after a call\n * Called by executor after each runtime API invocation\n */\nexport function clearCurrentExecutionId(): void {\n\tcurrentExecutionId = null;\n}\n\n/**\n * Gets the current execution state\n * Note: State must be initialized before calling this. Use initializeExecutionState() first.\n */\nfunction getCurrentState(): ExecutionState {\n\tlet executionId = currentExecutionId;\n\n\tif (!executionId) {\n\t\texecutionId = executionContext.getStore() || null;\n\t}\n\n\tif (!executionId) {\n\t\tthrow new Error(\n\t\t\t'No execution context set. Executor must call setCurrentExecutionId() before runtime API calls.'\n\t\t);\n\t}\n\n\t// Automatic cleanup check (every N operations)\n\toperationCounter++;\n\tif (operationCounter >= CLEANUP_CHECK_INTERVAL) {\n\t\toperationCounter = 0;\n\t\tautoCleanup();\n\t}\n\n\tlet state = executionStates.get(executionId);\n\tif (!state) {\n\t\t// State should have been initialized explicitly at execution start\n\t\t// Create it now with a safe default to prevent crashes\n\t\tlog.warn('State not initialized, creating with default. This should not happen.', {\n\t\t\texecutionId,\n\t\t});\n\t\tstate = {\n\t\t\tshouldPauseForClient: false,\n\t\t\treplayResults: undefined,\n\t\t\tcallSequenceNumber: 0,\n\t\t\tapiCallResults: [],\n\t\t\tapiResultCache: undefined,\n\t\t\tcreatedAt: Date.now(),\n\t\t};\n\t\texecutionStates.set(executionId, state);\n\t}\n\treturn state;\n}\n\n/**\n * Initialize execution state with correct values at execution start\n * This must be called before any state access to ensure correct pause mode\n */\nexport function initializeExecutionState(shouldPause: boolean): void {\n\tconst executionId = currentExecutionId || executionContext.getStore();\n\tif (!executionId) {\n\t\tthrow new Error(\n\t\t\t'No execution context set. Executor must call setCurrentExecutionId() before initializeExecutionState().'\n\t\t);\n\t}\n\n\tconst existingState = executionStates.get(executionId);\n\tif (existingState) {\n\t\texistingState.shouldPauseForClient = shouldPause;\n\t\tif (!existingState.apiCallResults) {\n\t\t\texistingState.apiCallResults = [];\n\t\t}\n\t\tif (!existingState.apiResultCache) {\n\t\t\texistingState.apiResultCache = undefined;\n\t\t}\n\t\treturn;\n\t}\n\n\tconst state: ExecutionState = {\n\t\tshouldPauseForClient: shouldPause,\n\t\treplayResults: undefined,\n\t\tcallSequenceNumber: 0,\n\t\tapiCallResults: [],\n\t\tapiResultCache: undefined,\n\t\tcreatedAt: Date.now(),\n\t};\n\texecutionStates.set(executionId, state);\n}\n\n/**\n * Runs a function within an execution context\n * @param executionId - Unique ID for this execution\n * @param fn - Function to run within the context\n */\nexport function runInExecutionContext<T>(executionId: string, fn: () => T): T {\n\treturn executionContext.run(executionId, fn);\n}\n\n/**\n * Configures whether to pause execution for client services\n * @param pause - If true, throws PauseExecutionError instead of calling callback\n */\nexport function setPauseForClient(pause: boolean): void {\n\tconst executionId = currentExecutionId || executionContext.getStore();\n\tif (!executionId) {\n\t\tthrow new Error(\n\t\t\t'No execution context set. Executor must call setCurrentExecutionId() before setPauseForClient().'\n\t\t);\n\t}\n\n\tconst state = executionStates.get(executionId);\n\tif (!state) {\n\t\tthrow new Error('Execution state not initialized. Call initializeExecutionState() first.');\n\t}\n\tstate.shouldPauseForClient = pause;\n}\n\n/**\n * Checks if should pause for client\n */\nexport function shouldPauseForClient(): boolean {\n\tconst state = getCurrentState();\n\treturn state.shouldPauseForClient;\n}\n\n/**\n * Sets up replay mode for resumption\n * @param results - Map of sequence number to result for replaying callbacks\n */\nexport function setReplayMode(results: Map<number, unknown> | undefined): void {\n\tconst state = getCurrentState();\n\n\t// Store replay results\n\tstate.replayResults = results;\n\n\t// Always reset counter when setting replay mode\n\t// - When entering replay mode with cached results: start from 0 to match first call\n\t// - When clearing replay mode (results=undefined): reset to 0 for clean state\n\tstate.callSequenceNumber = 0;\n}\n\n/**\n * Gets current call sequence number\n */\nexport function getCallSequenceNumber(): number {\n\tconst state = getCurrentState();\n\treturn state.callSequenceNumber;\n}\n\n/**\n * Increments and returns the next sequence number\n */\nexport function nextSequenceNumber(): number {\n\tconst state = getCurrentState();\n\tconst current = state.callSequenceNumber;\n\tstate.callSequenceNumber++;\n\treturn current;\n}\n\n/**\n * Check if we have a cached result for the current sequence\n */\nexport function getCachedResult(sequenceNumber: number): unknown | undefined {\n\tconst state = getCurrentState();\n\tif (state.replayResults && state.replayResults.has(sequenceNumber)) {\n\t\treturn state.replayResults.get(sequenceNumber);\n\t}\n\treturn undefined;\n}\n\n/**\n * Check if we're in replay mode\n */\nexport function isReplayMode(): boolean {\n\treturn getCurrentState().replayResults !== undefined;\n}\n\n/**\n * Store an API call result during execution\n * This is used to track server-side API calls so they can be cached on resume\n */\nexport function storeAPICallResult(record: {\n\ttype: string;\n\toperation: string;\n\tpayload: unknown;\n\tresult: unknown;\n\ttimestamp: number;\n\tsequenceNumber: number;\n}): void {\n\tconst state = getCurrentState();\n\tstate.apiCallResults.push(record);\n}\n\n/**\n * Get all API call results tracked during this execution\n * Used when building callback history on pause\n */\nexport function getAPICallResults(): APICallRecord[] {\n\tconst state = getCurrentState();\n\treturn state.apiCallResults;\n}\n\n/**\n * Clear API call results (used when execution completes or fails)\n */\nexport function clearAPICallResults(): void {\n\tconst state = getCurrentState();\n\tstate.apiCallResults = [];\n}\n\n/**\n * Set up API result cache for resume (operation-based, not sequence-based)\n * This allows API calls to find their cached results even if execution order changes\n */\nexport function setAPIResultCache(cache: Map<string, unknown> | undefined): void {\n\tconst state = getCurrentState();\n\tstate.apiResultCache = cache;\n}\n\n/**\n * Get API result from cache by operation name\n */\nexport function getAPIResultFromCache(operation: string): unknown | undefined {\n\tconst state = getCurrentState();\n\treturn state.apiResultCache?.get(operation);\n}\n\n/**\n * Store API result in cache by operation name (for initial execution)\n */\nexport function storeAPIResultInCache(operation: string, result: unknown): void {\n\tconst state = getCurrentState();\n\tif (!state.apiResultCache) {\n\t\tstate.apiResultCache = new Map();\n\t}\n\tstate.apiResultCache.set(operation, result);\n}\n\n/**\n * Cleanup a specific execution's state\n * This should be called when an execution completes, fails, or is no longer needed\n */\nexport function cleanupExecutionState(executionId: string): void {\n\texecutionStates.delete(executionId);\n\tif (currentExecutionId === executionId) {\n\t\tcurrentExecutionId = null;\n\t}\n}\n\n/**\n * Automatic cleanup when state count exceeds maximum\n * Removes oldest states to keep memory usage bounded\n */\nfunction autoCleanup(): void {\n\tif (executionStates.size <= MAX_EXECUTION_STATES) {\n\t\treturn;\n\t}\n\n\tconst entries = Array.from(executionStates.entries()).sort(\n\t\t(a, b) => a[1].createdAt - b[1].createdAt\n\t);\n\n\tconst toRemove = executionStates.size - MAX_EXECUTION_STATES;\n\tfor (let i = 0; i < toRemove; i++) {\n\t\tconst entry = entries[i];\n\t\tif (entry) {\n\t\t\texecutionStates.delete(entry[0]);\n\t\t}\n\t}\n}\n\n/**\n * Cleanup old execution states to prevent memory leaks\n * Removes states older than the specified max age (default: 1 hour)\n */\nexport function cleanupOldExecutionStates(maxAgeMs: number = 3600000): number {\n\tconst now = Date.now();\n\tlet cleaned = 0;\n\n\tfor (const [executionId, state] of executionStates.entries()) {\n\t\tconst age = now - state.createdAt;\n\t\tif (age > maxAgeMs) {\n\t\t\texecutionStates.delete(executionId);\n\t\t\tcleaned++;\n\t\t}\n\t}\n\n\treturn cleaned;\n}\n\n/**\n * Reset ALL execution state - for testing purposes only\n * WARNING: This will clear all execution states, breaking any in-flight executions\n */\nexport function resetAllExecutionState(): void {\n\texecutionStates.clear();\n\tcurrentExecutionId = null;\n}\n\n/**\n * Get execution state statistics - for monitoring/debugging\n */\nexport function getExecutionStateStats(): {\n\ttotalStates: number;\n\toldestStateAge: number | null;\n\tnewestStateAge: number | null;\n\texecutionIds: string[];\n} {\n\tconst now = Date.now();\n\tconst executionIds = Array.from(executionStates.keys());\n\tlet oldestAge: number | null = null;\n\tlet newestAge: number | null = null;\n\n\tfor (const state of executionStates.values()) {\n\t\tconst age = now - state.createdAt;\n\t\tif (oldestAge === null || age > oldestAge) {\n\t\t\toldestAge = age;\n\t\t}\n\t\tif (newestAge === null || age < newestAge) {\n\t\t\tnewestAge = age;\n\t\t}\n\t}\n\n\treturn {\n\t\ttotalStates: executionStates.size,\n\t\toldestStateAge: oldestAge,\n\t\tnewestStateAge: newestAge,\n\t\texecutionIds,\n\t};\n}\n","/**\n */\nimport type { ClientLLMCallback } from './types';\n\n/**\n * Client callback handler for LLM operations\n * When set, LLM calls will be routed to client instead of server LLM\n */\nlet clientLLMCallback: ClientLLMCallback | undefined;\n\n/**\n * Sets a client callback handler for LLM operations\n * @param callback - Client callback handler\n */\nexport function setClientLLMCallback(callback: ClientLLMCallback | undefined): void {\n\tclientLLMCallback = callback;\n}\n\n/**\n * Gets the current client callback handler\n */\nexport function getClientLLMCallback(): ClientLLMCallback | undefined {\n\treturn clientLLMCallback;\n}\n","/**\n * LLM API - Clean refactored version with decorators and extracted modules\n *\n * Benefits:\n * - No duplication between implementation and metadata\n * - Types auto-detected from TypeScript signatures\n * - Clean separation of concerns (replay, callback, API)\n */\nimport { pauseForCallback, CallbackType, LLMOperation } from '../pause/index.js';\nimport { RuntimeAPI, RuntimeMethod } from '../metadata/decorators.js';\nimport { nextSequenceNumber, getCachedResult, isReplayMode } from './replay.js';\nimport type { LLMCallOptions, LLMExtractOptions, LLMClassifyOptions } from './types';\n\nexport type {\n\tLLMCallOptions,\n\tLLMExtractOptions,\n\tLLMClassifyOptions,\n\tClientLLMCallback,\n} from './types';\nexport { setClientLLMCallback, getClientLLMCallback } from './callback.js';\nexport {\n\tinitializeExecutionState,\n\tsetPauseForClient,\n\tshouldPauseForClient,\n\tsetReplayMode,\n\tgetCallSequenceNumber,\n\tnextSequenceNumber,\n\tgetCachedResult,\n\tisReplayMode,\n\trunInExecutionContext,\n\tsetCurrentExecutionId,\n\tclearCurrentExecutionId,\n\tstoreAPICallResult,\n\tgetAPICallResults,\n\tclearAPICallResults,\n\tsetAPIResultCache,\n\tgetAPIResultFromCache,\n\tstoreAPIResultInCache,\n\tcleanupExecutionState,\n\tcleanupOldExecutionStates,\n\tresetAllExecutionState,\n\tgetExecutionStateStats,\n} from './replay.js';\n\n/**\n * LLM Runtime API\n *\n * Provides client-side LLM operations with pause/resume support.\n * All calls pause execution and route to client-provided LLM.\n */\n@RuntimeAPI(\n\t'llm',\n\t'LLM API - Large Language Model calls using client-provided LLM (requires client.provideLLM())'\n)\nclass LLMAPI {\n\t/**\n\t * Makes a standard LLM call\n\t * Always pauses execution and routes to client-provided LLM\n\t */\n\t@RuntimeMethod('Make an LLM call with a prompt', {\n\t\toptions: {\n\t\t\tdescription: 'LLM call options including prompt',\n\t\t\ttype: 'LLMCallOptions',\n\t\t},\n\t})\n\tasync call(options: LLMCallOptions): Promise<string> {\n\t\tconst currentSequence = nextSequenceNumber();\n\n\t\tconst cachedResult = getCachedResult(currentSequence);\n\t\tif (cachedResult !== undefined) {\n\t\t\treturn cachedResult as string;\n\t\t}\n\n\t\tpauseForCallback(CallbackType.LLM, LLMOperation.CALL, {\n\t\t\tprompt: options.prompt,\n\t\t\toptions,\n\t\t\tsequenceNumber: currentSequence,\n\t\t});\n\t}\n\n\t/**\n\t * Extracts structured data using LLM\n\t * Always pauses execution and routes to client-provided LLM\n\t */\n\t@RuntimeMethod('Extract structured data from text using an LLM', {\n\t\toptions: {\n\t\t\tdescription: 'Extraction options with JSON schema',\n\t\t\ttype: 'LLMExtractOptions',\n\t\t},\n\t})\n\tasync extract<T>(options: LLMExtractOptions): Promise<T> {\n\t\tconst currentSequence = nextSequenceNumber();\n\n\t\tconst cachedResult = getCachedResult(currentSequence);\n\t\tif (cachedResult !== undefined) {\n\t\t\treturn cachedResult as T;\n\t\t}\n\n\t\tpauseForCallback(CallbackType.LLM, LLMOperation.EXTRACT, {\n\t\t\tprompt: options.prompt,\n\t\t\tschema: options.schema,\n\t\t\toptions,\n\t\t\tsequenceNumber: currentSequence,\n\t\t});\n\t}\n\n\t/**\n\t * Classifies text into one of the provided categories\n\t * Always pauses execution and routes to client-provided LLM\n\t */\n\t@RuntimeMethod('Classify text into one of the provided categories', {\n\t\toptions: {\n\t\t\tdescription: 'Classification options with categories',\n\t\t\ttype: 'LLMClassifyOptions',\n\t\t},\n\t})\n\tasync classify(options: LLMClassifyOptions): Promise<string> {\n\t\tconst currentSequence = nextSequenceNumber();\n\n\t\tconst cachedResult = getCachedResult(currentSequence);\n\t\tif (cachedResult !== undefined) {\n\t\t\treturn cachedResult as string;\n\t\t}\n\n\t\tpauseForCallback(CallbackType.LLM, LLMOperation.CLASSIFY, {\n\t\t\ttext: options.text,\n\t\t\tcategories: options.categories,\n\t\t\toptions,\n\t\t\tsequenceNumber: currentSequence,\n\t\t});\n\t}\n}\n\nexport const llm = new LLMAPI();\n","/**\n * Progress API - Clean refactored version with decorators\n *\n * Benefits:\n * - No duplication between implementation and metadata\n * - Types auto-detected from TypeScript signatures\n */\nimport { RuntimeAPI, RuntimeMethod } from '../metadata/decorators.js';\nimport { log } from '../log/index.js';\nimport type { ProgressCallback } from './types.js';\n\nexport type { ProgressCallback } from './types.js';\n\n/**\n * Global progress callback (set by executor)\n */\nlet progressCallback: ProgressCallback | null = null;\n\n/**\n * Set the progress callback handler\n */\nexport function setProgressCallback(callback: ProgressCallback | null): void {\n\tprogressCallback = callback;\n}\n\n/**\n * Progress Runtime API\n *\n * Allows reporting execution progress to clients\n */\n@RuntimeAPI('progress', 'Progress API - Report execution progress to clients')\nclass ProgressAPI {\n\t/**\n\t * Report progress with message and completion fraction\n\t */\n\t@RuntimeMethod('Report progress with message and completion fraction', {\n\t\tmessage: { description: 'Progress message' },\n\t\tfraction: { description: 'Completion fraction (0-1)' },\n\t})\n\treport(message: string, fraction: number): void {\n\t\tif (progressCallback) {\n\t\t\ttry {\n\t\t\t\tprogressCallback(message, fraction);\n\t\t\t} catch (error) {\n\t\t\t\tlog.error('Progress callback error', { error });\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport const progress = new ProgressAPI();\n","/**\n */\nimport NodeCache from 'node-cache';\nimport { log } from '../log/index.js';\nimport type { CacheBackend, CacheConfig } from './types';\n\n/**\n * In-memory cache implementation using node-cache\n */\nexport class MemoryCacheBackend implements CacheBackend {\n\tprivate cache: NodeCache;\n\n\tconstructor(config?: { maxKeys?: number; defaultTTL?: number; checkPeriod?: number }) {\n\t\tthis.cache = new NodeCache({\n\t\t\tstdTTL: config?.defaultTTL ?? 600,\n\t\t\tcheckperiod: config?.checkPeriod ?? 120,\n\t\t\tmaxKeys: config?.maxKeys ?? 1000,\n\t\t\tuseClones: false,\n\t\t});\n\t}\n\n\tasync get<T>(key: string): Promise<T | null> {\n\t\tconst value = this.cache.get<T>(key);\n\t\treturn value ?? null;\n\t}\n\n\tasync set(key: string, value: unknown, ttl?: number): Promise<void> {\n\t\tif (ttl) {\n\t\t\tthis.cache.set(key, value, ttl);\n\t\t} else {\n\t\t\tthis.cache.set(key, value);\n\t\t}\n\t}\n\n\tasync delete(key: string): Promise<void> {\n\t\tthis.cache.del(key);\n\t}\n\n\tasync has(key: string): Promise<boolean> {\n\t\treturn this.cache.has(key);\n\t}\n\n\tasync clear(): Promise<void> {\n\t\tthis.cache.flushAll();\n\t}\n}\n\n/**\n * Redis cache implementation (lazy-loaded only if configured)\n */\nexport class RedisCacheBackend implements CacheBackend {\n\tprivate client: any;\n\tprivate connected: boolean = false;\n\n\tconstructor(config: NonNullable<CacheConfig['redis']>) {\n\t\timport('ioredis')\n\t\t\t.then((Redis) => {\n\t\t\t\tthis.client = new Redis.default({\n\t\t\t\t\thost: config.host,\n\t\t\t\t\tport: config.port,\n\t\t\t\t\tpassword: config.password,\n\t\t\t\t\tdb: config.db ?? 0,\n\t\t\t\t\tretryStrategy: (times: number) => {\n\t\t\t\t\t\tif (times > 3) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn Math.min(times * 100, 2000);\n\t\t\t\t\t},\n\t\t\t\t\tlazyConnect: true,\n\t\t\t\t});\n\n\t\t\t\tthis.client\n\t\t\t\t\t.connect()\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\tthis.connected = true;\n\t\t\t\t\t})\n\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\tthis.connected = false;\n\t\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tthrow new Error('ioredis package not installed. Install it with: yarn add ioredis');\n\t\t\t});\n\t}\n\n\tasync get<T>(key: string): Promise<T | null> {\n\t\tif (!this.connected) {\n\t\t\tlog.warn('Redis Cache not connected, cannot get key', { key });\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\tconst value = await this.client.get(key);\n\t\t\treturn value ? JSON.parse(value) : null;\n\t\t} catch (error) {\n\t\t\tlog.error('Redis Cache failed to get key', {\n\t\t\t\tkey,\n\t\t\t\terror: error instanceof Error ? error.message : error,\n\t\t\t});\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tasync set(key: string, value: unknown, ttl?: number): Promise<void> {\n\t\tif (!this.connected) {\n\t\t\tlog.warn('Redis Cache not connected, cannot set key', { key });\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tconst serialized = JSON.stringify(value);\n\t\t\tif (ttl) {\n\t\t\t\tawait this.client.setex(key, ttl, serialized);\n\t\t\t} else {\n\t\t\t\tawait this.client.set(key, serialized);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlog.error('Redis Cache failed to set key', {\n\t\t\t\tkey,\n\t\t\t\terror: error instanceof Error ? error.message : error,\n\t\t\t});\n\t\t}\n\t}\n\n\tasync delete(key: string): Promise<void> {\n\t\tif (!this.connected) {\n\t\t\tlog.warn('Redis Cache not connected, cannot delete key', { key });\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tawait this.client.del(key);\n\t\t} catch (error) {\n\t\t\tlog.error('Redis Cache failed to delete key', {\n\t\t\t\tkey,\n\t\t\t\terror: error instanceof Error ? error.message : error,\n\t\t\t});\n\t\t}\n\t}\n\n\tasync has(key: string): Promise<boolean> {\n\t\tif (!this.connected) {\n\t\t\tlog.warn('Redis Cache not connected, cannot check key', { key });\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\tconst exists = await this.client.exists(key);\n\t\t\treturn exists === 1;\n\t\t} catch (error) {\n\t\t\tlog.error('Redis Cache failed to check key', {\n\t\t\t\tkey,\n\t\t\t\terror: error instanceof Error ? error.message : error,\n\t\t\t});\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync clear(): Promise<void> {\n\t\tif (!this.connected) {\n\t\t\tlog.warn('Redis Cache not connected, cannot clear cache');\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tawait this.client.flushdb();\n\t\t} catch (error) {\n\t\t\tlog.error('Redis Cache failed to clear cache', {\n\t\t\t\terror: error instanceof Error ? error.message : error,\n\t\t\t});\n\t\t}\n\t}\n}\n\nlet cacheBackend: CacheBackend = new MemoryCacheBackend();\n\n/**\n * Initializes the cache system with configuration\n */\nexport function initializeCache(config: CacheConfig): void {\n\tif (config.type === 'redis' && config.redis) {\n\t\tcacheBackend = new RedisCacheBackend(config.redis);\n\t} else {\n\t\tcacheBackend = new MemoryCacheBackend({\n\t\t\tmaxKeys: config.maxKeys,\n\t\t\tdefaultTTL: config.defaultTTL,\n\t\t\tcheckPeriod: config.checkPeriod,\n\t\t});\n\t}\n}\n\n/**\n * Get the current cache backend\n */\nexport function getCacheBackend(): CacheBackend {\n\treturn cacheBackend;\n}\n","/**\n * Cache API - Clean refactored version with decorators and extracted modules\n *\n * Benefits:\n * - No duplication between implementation and metadata\n * - Types auto-detected from TypeScript signatures\n * - Clean separation of concerns (backends, API)\n */\nimport { RuntimeAPI, RuntimeMethod } from '../metadata/decorators.js';\nimport { getCacheBackend } from './backends.js';\n\nexport type { CacheConfig, CacheBackend } from './types';\nexport { MemoryCacheBackend, RedisCacheBackend, initializeCache } from './backends.js';\n\n/**\n * Cache Runtime API\n *\n * Store and retrieve data with optional TTL (Time To Live).\n * Supports in-memory (node-cache) and Redis backends.\n */\n@RuntimeAPI('cache', 'Cache API - Store and retrieve data with optional TTL')\nclass CacheAPI {\n\t/**\n\t * Gets a value from cache\n\t */\n\t@RuntimeMethod('Get a value from cache by key', {\n\t\tkey: { description: 'Cache key' },\n\t})\n\tasync get<T>(key: string): Promise<T | null> {\n\t\treturn getCacheBackend().get<T>(key);\n\t}\n\n\t/**\n\t * Sets a value in cache with optional TTL in seconds\n\t */\n\t@RuntimeMethod('Set a value in cache with optional TTL', {\n\t\tkey: { description: 'Cache key' },\n\t\tvalue: { description: 'Value to cache', type: 'unknown' },\n\t\tttl: { description: 'Time to live in seconds', optional: true },\n\t})\n\tasync set(key: string, value: unknown, ttl?: number): Promise<void> {\n\t\treturn getCacheBackend().set(key, value, ttl);\n\t}\n\n\t/**\n\t * Deletes a value from cache\n\t */\n\t@RuntimeMethod('Delete a value from cache', {\n\t\tkey: { description: 'Cache key to delete' },\n\t})\n\tasync delete(key: string): Promise<void> {\n\t\treturn getCacheBackend().delete(key);\n\t}\n\n\t/**\n\t * Checks if a key exists in cache\n\t */\n\t@RuntimeMethod('Check if a key exists in cache', {\n\t\tkey: { description: 'Cache key to check' },\n\t})\n\tasync has(key: string): Promise<boolean> {\n\t\treturn getCacheBackend().has(key);\n\t}\n\n\t/**\n\t * Clears all cache entries\n\t */\n\t@RuntimeMethod('Clear all cache entries')\n\tasync clear(): Promise<void> {\n\t\treturn getCacheBackend().clear();\n\t}\n}\n\nexport const cache = new CacheAPI();\n","export interface RetryOptions {\n\tmaxAttempts: number;\n\tdelayMs: number;\n}\n\nexport const utils = {\n\tasync sleep(ms: number): Promise<void> {\n\t\treturn new Promise((resolve) => setTimeout(resolve, ms));\n\t},\n\n\tasync retry<T>(fn: () => Promise<T>, options: RetryOptions): Promise<T> {\n\t\tlet lastError: Error | undefined;\n\t\tfor (let attempt = 1; attempt <= options.maxAttempts; attempt++) {\n\t\t\ttry {\n\t\t\t\treturn await fn();\n\t\t\t} catch (error) {\n\t\t\t\tlastError = error as Error;\n\t\t\t\tif (attempt < options.maxAttempts) {\n\t\t\t\t\tawait this.sleep(options.delayMs);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthrow lastError;\n\t},\n\n\tasync parallel<T>(tasks: Array<() => Promise<T>>): Promise<T[]> {\n\t\treturn Promise.all(tasks.map((task) => task()));\n\t},\n\n\tasync sequence<T>(tasks: Array<() => Promise<T>>): Promise<T[]> {\n\t\tconst results: T[] = [];\n\t\tfor (const task of tasks) {\n\t\t\tresults.push(await task());\n\t\t}\n\t\treturn results;\n\t},\n};\n","/**\n */\nimport type { ApprovalRequest, ApprovalResponse } from './types';\n\n/**\n * Global approval handler that must be set by the execution context\n */\nlet approvalHandler: ((request: ApprovalRequest) => Promise<ApprovalResponse>) | null = null;\n\n/**\n * Initialize the approval system with a custom handler\n */\nexport function initializeApproval(\n\thandler: (request: ApprovalRequest) => Promise<ApprovalResponse>\n): void {\n\tapprovalHandler = handler;\n}\n\n/**\n * Get the current approval handler\n */\nexport function getApprovalHandler():\n\t| ((request: ApprovalRequest) => Promise<ApprovalResponse>)\n\t| null {\n\treturn approvalHandler;\n}\n","/**\n * Approval API - Clean refactored version with decorators and extracted modules\n *\n * Benefits:\n * - No duplication between implementation and metadata\n * - Types auto-detected from TypeScript signatures\n * - Clean separation of concerns (handler, API)\n */\nimport { RuntimeAPI, RuntimeMethod } from '../metadata/decorators.js';\nimport { getApprovalHandler } from './handler.js';\nimport { pauseForCallback, CallbackType, ApprovalOperation } from '../pause/index.js';\nimport type { ApprovalRequest, ApprovalResponse } from './types';\nimport { nextSequenceNumber, getCachedResult, shouldPauseForClient } from '../llm/replay.js';\n\nexport type { ApprovalRequest, ApprovalResponse, ApprovalSchema } from './types';\nexport { initializeApproval } from './handler.js';\n\n/**\n * Approval Runtime API\n *\n * Allows agents to request explicit human approval before proceeding with sensitive operations.\n * This integrates with MCP's elicitation feature to request structured input from users.\n */\n@RuntimeAPI('approval', 'Approval API - Request explicit human approval for sensitive operations')\nclass ApprovalAPI {\n\t/**\n\t * Request approval from a human\n\t */\n\t@RuntimeMethod('Request approval from a human', {\n\t\tmessage: {\n\t\t\tdescription: 'The message to display to the user',\n\t\t},\n\t\tcontext: {\n\t\t\tdescription: 'Optional context information about what needs approval',\n\t\t\toptional: true,\n\t\t\ttype: 'Record<string, unknown>',\n\t\t},\n\t})\n\tasync request(message: string, context?: Record<string, unknown>): Promise<ApprovalResponse> {\n\t\tconst currentSequence = nextSequenceNumber();\n\n\t\tconst cachedResult = getCachedResult(currentSequence);\n\t\tif (cachedResult !== undefined) {\n\t\t\treturn cachedResult as ApprovalResponse;\n\t\t}\n\n\t\tconst shouldPause = shouldPauseForClient();\n\t\tif (shouldPause) {\n\t\t\tpauseForCallback(CallbackType.APPROVAL, ApprovalOperation.REQUEST, {\n\t\t\t\tmessage,\n\t\t\t\tcontext,\n\t\t\t\tsequenceNumber: currentSequence,\n\t\t\t});\n\t\t}\n\n\t\tconst handler = getApprovalHandler();\n\t\tif (!handler) {\n\t\t\tthrow new Error(\n\t\t\t\t'Approval handler not configured. Human approval is required but no handler is set.'\n\t\t\t);\n\t\t}\n\n\t\tconst approvalRequest: ApprovalRequest = {\n\t\t\tmessage,\n\t\t\tcontext,\n\t\t\ttimeout: 300000,\n\t\t};\n\n\t\tlet timeoutId: NodeJS.Timeout | null = null;\n\t\tconst timeoutPromise = new Promise<ApprovalResponse>((_, reject) => {\n\t\t\ttimeoutId = setTimeout(\n\t\t\t\t() => reject(new Error('Approval request timed out')),\n\t\t\t\tapprovalRequest.timeout!\n\t\t\t);\n\t\t});\n\n\t\ttry {\n\t\t\tconst response = await Promise.race([handler(approvalRequest), timeoutPromise]);\n\n\t\t\tif (timeoutId) clearTimeout(timeoutId);\n\n\t\t\treturn {\n\t\t\t\t...response,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tif (timeoutId) clearTimeout(timeoutId);\n\t\t\tthrow new Error(\n\t\t\t\t`Approval request failed: ${error instanceof Error ? error.message : 'Unknown error'}`\n\t\t\t);\n\t\t}\n\t}\n}\n\nexport const approval = new ApprovalAPI();\n","/**\n\n/**\n * Calculate cosine similarity between two vectors\n */\nexport function cosineSimilarity(vec1: number[], vec2: number[]): number {\n\tif (vec1.length !== vec2.length) {\n\t\tthrow new Error(`Vectors must have the same length (${vec1.length} vs ${vec2.length})`);\n\t}\n\n\tlet dotProduct = 0;\n\tlet norm1 = 0;\n\tlet norm2 = 0;\n\n\tfor (let i = 0; i < vec1.length; i++) {\n\t\tdotProduct += vec1[i]! * vec2[i]!;\n\t\tnorm1 += vec1[i]! * vec1[i]!;\n\t\tnorm2 += vec2[i]! * vec2[i]!;\n\t}\n\n\tconst denominator = Math.sqrt(norm1) * Math.sqrt(norm2);\n\tif (denominator === 0) {\n\t\treturn 0;\n\t}\n\n\treturn dotProduct / denominator;\n}\n\n/**\n * Generate a unique ID for an embedding\n */\nexport function generateEmbeddingId(index: number = 0): string {\n\treturn `emb_${Date.now()}_${index}_${Math.random().toString(36).slice(2)}`;\n}\n","/**\n */\nimport type { EmbeddingRecord, SearchOptions, SearchResult } from './types.js';\nimport { cosineSimilarity } from './utils.js';\n\n/**\n * In-memory vector store for the current execution\n * Cleared after each execution completes\n */\nexport class VectorStore {\n\tprivate records: Map<string, EmbeddingRecord> = new Map();\n\tprivate queryEmbedding: number[] | null = null;\n\n\t/**\n\t * Store embeddings from client response\n\t */\n\tstore(id: string, text: string, embedding: number[], metadata?: Record<string, unknown>): void {\n\t\tthis.records.set(id, { id, text, embedding, metadata });\n\t}\n\n\t/**\n\t * Store multiple embeddings\n\t */\n\tstoreBatch(records: EmbeddingRecord[]): void {\n\t\tfor (const record of records) {\n\t\t\tthis.records.set(record.id, record);\n\t\t}\n\t}\n\n\t/**\n\t * Set the query embedding for search\n\t */\n\tsetQueryEmbedding(embedding: number[]): void {\n\t\tthis.queryEmbedding = embedding;\n\t}\n\n\t/**\n\t * Search stored embeddings by similarity to query\n\t */\n\tsearch(options: SearchOptions): SearchResult[] {\n\t\tif (!this.queryEmbedding) {\n\t\t\tthrow new Error('No query embedding set. Call embed() with query first.');\n\t\t}\n\n\t\tconst topK = options.topK ?? 5;\n\t\tconst minSimilarity = options.minSimilarity ?? 0;\n\n\t\tconst results: SearchResult[] = [];\n\t\tfor (const record of this.records.values()) {\n\t\t\tif (options.filter && record.metadata) {\n\t\t\t\tlet matches = true;\n\t\t\t\tfor (const [key, value] of Object.entries(options.filter)) {\n\t\t\t\t\tif (record.metadata[key] !== value) {\n\t\t\t\t\t\tmatches = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!matches) continue;\n\t\t\t}\n\n\t\t\tconst similarity = cosineSimilarity(this.queryEmbedding, record.embedding);\n\t\t\tif (similarity >= minSimilarity) {\n\t\t\t\tresults.push({\n\t\t\t\t\tid: record.id,\n\t\t\t\t\ttext: record.text,\n\t\t\t\t\tsimilarity,\n\t\t\t\t\tmetadata: record.metadata,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tresults.sort((a, b) => b.similarity - a.similarity);\n\t\treturn results.slice(0, topK);\n\t}\n\n\t/**\n\t * Get all stored embeddings\n\t */\n\tgetAll(): EmbeddingRecord[] {\n\t\treturn Array.from(this.records.values());\n\t}\n\n\t/**\n\t * Get embedding by ID\n\t */\n\tget(id: string): EmbeddingRecord | undefined {\n\t\treturn this.records.get(id);\n\t}\n\n\t/**\n\t * Clear all stored embeddings\n\t */\n\tclear(): void {\n\t\tthis.records.clear();\n\t\tthis.queryEmbedding = null;\n\t}\n\n\t/**\n\t * Get count of stored embeddings\n\t */\n\tcount(): number {\n\t\treturn this.records.size;\n\t}\n}\n\nconst vectorStores = new Map<string, VectorStore>();\n\nlet currentVectorStoreExecutionId: string | null = null;\n\n/**\n * Set the current execution ID for vector store operations\n */\nexport function setVectorStoreExecutionId(executionId: string): void {\n\tcurrentVectorStoreExecutionId = executionId;\n}\n\n/**\n * Clear the current execution ID\n */\nexport function clearVectorStoreExecutionId(): void {\n\tcurrentVectorStoreExecutionId = null;\n}\n\n/**\n * Initialize a new vector store for a new execution\n */\nexport function initializeVectorStore(executionId?: string): void {\n\tconst id = executionId || currentVectorStoreExecutionId;\n\tif (!id) {\n\t\tthrow new Error('No execution ID set for vector store');\n\t}\n\tvectorStores.set(id, new VectorStore());\n}\n\n/**\n * Clear the vector store after execution completes\n */\nexport function clearVectorStore(executionId?: string): void {\n\tconst id = executionId || currentVectorStoreExecutionId;\n\tif (!id) return;\n\n\tconst store = vectorStores.get(id);\n\tif (store) {\n\t\tstore.clear();\n\t\tvectorStores.delete(id);\n\t}\n}\n\n/**\n * Get the current vector store (for executor to manage)\n */\nexport function getVectorStore(executionId?: string): VectorStore {\n\tconst id = executionId || currentVectorStoreExecutionId;\n\tif (!id) {\n\t\tthrow new Error('No execution ID set for vector store');\n\t}\n\n\tlet store = vectorStores.get(id);\n\tif (!store) {\n\t\tstore = new VectorStore();\n\t\tvectorStores.set(id, store);\n\t}\n\treturn store;\n}\n","import { pauseForCallback, CallbackType, EmbeddingOperation } from '../pause/index.js';\nimport { RuntimeAPI, RuntimeMethod } from '../metadata/decorators.js';\nimport { getVectorStore } from './vector-store.js';\nimport { cosineSimilarity, generateEmbeddingId } from './utils.js';\nimport { nextSequenceNumber, getCachedResult, shouldPauseForClient } from '../llm/replay.js';\nimport type { EmbeddingRecord, SearchOptions, SearchResult } from './types';\n\nexport type { EmbeddingOptions, EmbeddingRecord, SearchOptions, SearchResult } from './types';\nexport {\n\tVectorStore,\n\tinitializeVectorStore,\n\tclearVectorStore,\n\tgetVectorStore,\n\tsetVectorStoreExecutionId,\n\tclearVectorStoreExecutionId,\n} from './vector-store.js';\nexport { cosineSimilarity, generateEmbeddingId } from './utils.js';\n\n/**\n * Embedding Runtime API\n *\n * Decorators automatically:\n * - Extract parameter names and types\n * - Generate metadata for type definitions\n * - Maintain single source of truth\n */\n@RuntimeAPI('embedding', 'Embedding API - Client-side embedding with server-side vector storage')\nclass EmbeddingAPI {\n\t/**\n\t * Request client to generate embedding and store it\n\t * For batch inputs, returns array of IDs for stored embeddings\n\t */\n\t@RuntimeMethod('Request client to generate and store embeddings', {\n\t\tinput: {\n\t\t\tdescription: 'Text(s) to embed',\n\t\t\ttype: 'string | string[]',\n\t\t},\n\t\tmetadata: {\n\t\t\tdescription: 'Optional metadata to store with embeddings',\n\t\t\toptional: true,\n\t\t\ttype: 'Record<string, unknown>',\n\t\t},\n\t})\n\tasync embed(\n\t\tinput: string | string[],\n\t\tmetadata?: Record<string, unknown>\n\t): Promise<string | string[]> {\n\t\tconst isBatch = Array.isArray(input);\n\t\tconst texts = isBatch ? input : [input];\n\t\tconst ids = texts.map((_, i) => generateEmbeddingId(i));\n\n\t\tconst currentSequence = nextSequenceNumber();\n\n\t\tconst cachedResult = getCachedResult(currentSequence);\n\t\tif (cachedResult !== undefined && cachedResult !== null) {\n\t\t\tconst vectorStore = getVectorStore();\n\t\t\tconst embedding = cachedResult as number[];\n\t\t\tfor (let i = 0; i < texts.length; i++) {\n\t\t\t\tvectorStore.store(ids[i]!, texts[i]!, embedding, metadata);\n\t\t\t}\n\t\t\treturn isBatch ? ids : ids[0]!;\n\t\t}\n\n\t\tif (shouldPauseForClient()) {\n\t\t\tpauseForCallback(CallbackType.EMBEDDING, EmbeddingOperation.EMBED, {\n\t\t\t\ttext: isBatch ? texts.join('\\n') : texts[0]!,\n\t\t\t\tinput,\n\t\t\t\tids,\n\t\t\t\tmetadata,\n\t\t\t\tsequenceNumber: currentSequence,\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error('Embedding service not provided by client');\n\t}\n\n\t/**\n\t * Search stored embeddings by similarity\n\t * Query must be embedded first via embed()\n\t */\n\t@RuntimeMethod('Search stored embeddings by similarity', {\n\t\tquery: {\n\t\t\tdescription: 'Search query text (will be embedded by client)',\n\t\t},\n\t\toptions: {\n\t\t\tdescription: 'Search options (topK, minSimilarity, filter)',\n\t\t\toptional: true,\n\t\t\ttype: 'SearchOptions',\n\t\t},\n\t})\n\tasync search(query: string, options?: Omit<SearchOptions, 'query'>): Promise<SearchResult[]> {\n\t\tconst currentSequence = nextSequenceNumber();\n\t\tconst vectorStore = getVectorStore();\n\n\t\tconst cachedQueryEmbedding = getCachedResult(currentSequence);\n\t\tif (cachedQueryEmbedding !== undefined && cachedQueryEmbedding !== null) {\n\t\t\tvectorStore.setQueryEmbedding(cachedQueryEmbedding as number[]);\n\n\t\t\tconst searchOptions: any = { ...options, query };\n\t\t\tif ((options as any)?.collection) {\n\t\t\t\tsearchOptions.filter = {\n\t\t\t\t\t...searchOptions.filter,\n\t\t\t\t\tcollection: (options as any).collection,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn vectorStore.search(searchOptions);\n\t\t}\n\n\t\tif (shouldPauseForClient()) {\n\t\t\tpauseForCallback(CallbackType.EMBEDDING, EmbeddingOperation.SEARCH, {\n\t\t\t\tquery,\n\t\t\t\toptions: {\n\t\t\t\t\t...options,\n\t\t\t\t\tquery,\n\t\t\t\t},\n\t\t\t\tsequenceNumber: currentSequence,\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error('Embedding service not provided by client');\n\t}\n\n\t/**\n\t * Calculate cosine similarity between two embedding vectors\n\t * This is a utility function that doesn't require client interaction\n\t */\n\t@RuntimeMethod('Calculate cosine similarity between two embedding vectors', {\n\t\tembedding1: { description: 'First embedding vector', type: 'number[]' },\n\t\tembedding2: { description: 'Second embedding vector', type: 'number[]' },\n\t})\n\tsimilarity(embedding1: number[], embedding2: number[]): number {\n\t\treturn cosineSimilarity(embedding1, embedding2);\n\t}\n\n\t/**\n\t * Get all stored embeddings (useful for debugging)\n\t */\n\t@RuntimeMethod('Get all stored embeddings')\n\tgetAll(): EmbeddingRecord[] {\n\t\treturn getVectorStore().getAll();\n\t}\n\n\t/**\n\t * Get count of stored embeddings\n\t */\n\t@RuntimeMethod('Get count of stored embeddings')\n\tcount(): number {\n\t\treturn getVectorStore().count();\n\t}\n}\n\nexport const embedding = new EmbeddingAPI();\n","/**\n * AUTO-GENERATED - DO NOT EDIT\n * Generated by scripts/generate-metadata.ts\n * \n * Hybrid approach:\n * - ts-json-schema-generator (OSS) for most types\n * - ts-morph fallback for types OSS can't handle (generics)\n */\n\nimport type { RuntimeAPIMetadata } from './types';\n\nexport const GENERATED_METADATA: RuntimeAPIMetadata[] = [\n {\n \"name\": \"approval\",\n \"description\": \"Approval API - Request explicit human approval for sensitive operations\",\n \"methods\": [\n {\n \"name\": \"request\",\n \"description\": \"Request approval from a human\",\n \"params\": [\n {\n \"name\": \"message\",\n \"type\": \"string\",\n \"description\": \"The message to display to the user\",\n \"optional\": false\n },\n {\n \"name\": \"context\",\n \"type\": \"Record<string, unknown>\",\n \"description\": \"Optional context information about what needs approval\",\n \"optional\": true\n }\n ],\n \"returns\": \"Promise<ApprovalResponse>\"\n }\n ]\n },\n {\n \"name\": \"cache\",\n \"description\": \"Cache API - Store and retrieve data with optional TTL\",\n \"methods\": [\n {\n \"name\": \"get\",\n \"description\": \"Get a value from cache by key\",\n \"params\": [\n {\n \"name\": \"key\",\n \"type\": \"string\",\n \"description\": \"Cache key\",\n \"optional\": false\n }\n ],\n \"returns\": \"Promise<T | null>\"\n },\n {\n \"name\": \"set\",\n \"description\": \"Set a value in cache with optional TTL\",\n \"params\": [\n {\n \"name\": \"key\",\n \"type\": \"string\",\n \"description\": \"Cache key\",\n \"optional\": false\n },\n {\n \"name\": \"value\",\n \"type\": \"unknown\",\n \"description\": \"Value to cache\",\n \"optional\": false\n },\n {\n \"name\": \"ttl\",\n \"type\": \"number\",\n \"description\": \"Time to live in seconds\",\n \"optional\": true\n }\n ],\n \"returns\": \"Promise<void>\"\n },\n {\n \"name\": \"delete\",\n \"description\": \"Delete a value from cache\",\n \"params\": [\n {\n \"name\": \"key\",\n \"type\": \"string\",\n \"description\": \"Cache key to delete\",\n \"optional\": false\n }\n ],\n \"returns\": \"Promise<void>\"\n },\n {\n \"name\": \"has\",\n \"description\": \"Check if a key exists in cache\",\n \"params\": [\n {\n \"name\": \"key\",\n \"type\": \"string\",\n \"description\": \"Cache key to check\",\n \"optional\": false\n }\n ],\n \"returns\": \"Promise<boolean>\"\n },\n {\n \"name\": \"clear\",\n \"description\": \"Clear all cache entries\",\n \"params\": [],\n \"returns\": \"Promise<void>\"\n }\n ]\n },\n {\n \"name\": \"embedding\",\n \"description\": \"Embedding API - Client-side embedding with server-side vector storage\",\n \"methods\": [\n {\n \"name\": \"embed\",\n \"description\": \"Request client to generate and store embeddings\",\n \"params\": [\n {\n \"name\": \"input\",\n \"type\": \"string | string[]\",\n \"description\": \"Text(s) to embed\",\n \"optional\": false\n },\n {\n \"name\": \"metadata\",\n \"type\": \"Record<string, unknown>\",\n \"description\": \"Optional metadata to store with embeddings\",\n \"optional\": true\n }\n ],\n \"returns\": \"Promise<string | string[]>\"\n },\n {\n \"name\": \"search\",\n \"description\": \"Search stored embeddings by similarity\",\n \"params\": [\n {\n \"name\": \"query\",\n \"type\": \"string\",\n \"description\": \"Search query text (will be embedded by client)\",\n \"optional\": false\n },\n {\n \"name\": \"options\",\n \"type\": \"Omit<SearchOptions, 'query'>\",\n \"description\": \"Search options (topK, minSimilarity, filter)\",\n \"optional\": true\n }\n ],\n \"returns\": \"Promise<SearchResult[]>\"\n },\n {\n \"name\": \"similarity\",\n \"description\": \"Calculate cosine similarity between two embedding vectors\",\n \"params\": [\n {\n \"name\": \"embedding1\",\n \"type\": \"number[]\",\n \"description\": \"First embedding vector\",\n \"optional\": false\n },\n {\n \"name\": \"embedding2\",\n \"type\": \"number[]\",\n \"description\": \"Second embedding vector\",\n \"optional\": false\n }\n ],\n \"returns\": \"number\"\n },\n {\n \"name\": \"getAll\",\n \"description\": \"Get all stored embeddings\",\n \"params\": [],\n \"returns\": \"EmbeddingRecord[]\"\n },\n {\n \"name\": \"count\",\n \"description\": \"Get count of stored embeddings\",\n \"params\": [],\n \"returns\": \"number\"\n }\n ]\n },\n {\n \"name\": \"llm\",\n \"description\": \"LLM API - Large Language Model calls using client-provided LLM (requires client.provideLLM())\",\n \"methods\": [\n {\n \"name\": \"call\",\n \"description\": \"Make an LLM call with a prompt\",\n \"params\": [\n {\n \"name\": \"options\",\n \"type\": \"LLMCallOptions\",\n \"description\": \"LLM call options including prompt\",\n \"optional\": false\n }\n ],\n \"returns\": \"Promise<string>\"\n },\n {\n \"name\": \"extract\",\n \"description\": \"Extract structured data from text using an LLM\",\n \"params\": [\n {\n \"name\": \"options\",\n \"type\": \"LLMExtractOptions\",\n \"description\": \"Extraction options with JSON schema\",\n \"optional\": false\n }\n ],\n \"returns\": \"Promise<T>\"\n },\n {\n \"name\": \"classify\",\n \"description\": \"Classify text into one of the provided categories\",\n \"params\": [\n {\n \"name\": \"options\",\n \"type\": \"LLMClassifyOptions\",\n \"description\": \"Classification options with categories\",\n \"optional\": false\n }\n ],\n \"returns\": \"Promise<string>\"\n }\n ]\n },\n {\n \"name\": \"progress\",\n \"description\": \"Progress API - Report execution progress to clients\",\n \"methods\": [\n {\n \"name\": \"report\",\n \"description\": \"Report progress with message and completion fraction\",\n \"params\": [\n {\n \"name\": \"message\",\n \"type\": \"string\",\n \"description\": \"Progress message\",\n \"optional\": false\n },\n {\n \"name\": \"fraction\",\n \"type\": \"number\",\n \"description\": \"Completion fraction (0-1)\",\n \"optional\": false\n }\n ],\n \"returns\": \"void\"\n }\n ]\n }\n];\n\n/**\n * Runtime API names - specific literal types for type-safe API filtering\n */\nexport type RuntimeAPIName = 'approval' | 'cache' | 'embedding' | 'llm' | 'progress';\n\n/**\n * Type definitions extracted using ts-json-schema-generator\n */\nexport const TYPE_REGISTRY = [\n {\n \"name\": \"ApprovalResponse\",\n \"definition\": \"export interface ApprovalResponse<T = unknown> {\\n\\tapproved: boolean;\\n\\tresponse?: T;\\n\\ttimestamp: number;\\n}\"\n },\n {\n \"name\": \"SearchOptions\",\n \"definition\": \"interface SearchOptions {\\n query: string;\\n topK?: number;\\n minSimilarity?: number;\\n filter?: Record<string, unknown>;\\n}\"\n },\n {\n \"name\": \"SearchResult\",\n \"definition\": \"interface SearchResult {\\n id: string;\\n text: string;\\n similarity: number;\\n metadata?: Record<string, unknown>;\\n}\"\n },\n {\n \"name\": \"EmbeddingRecord\",\n \"definition\": \"interface EmbeddingRecord {\\n id: string;\\n text: string;\\n embedding: number[];\\n metadata?: Record<string, unknown>;\\n}\"\n },\n {\n \"name\": \"LLMCallOptions\",\n \"definition\": \"interface LLMCallOptions {\\n prompt: string;\\n context?: Record<string, unknown>;\\n model?: string;\\n maxTokens?: number;\\n temperature?: number;\\n systemPrompt?: string;\\n}\"\n },\n {\n \"name\": \"LLMExtractOptions\",\n \"definition\": \"interface LLMExtractOptions {\\n prompt: string;\\n context?: Record<string, unknown>;\\n schema: unknown;\\n}\"\n },\n {\n \"name\": \"LLMClassifyOptions\",\n \"definition\": \"interface LLMClassifyOptions {\\n text: string;\\n categories: string[];\\n context?: Record<string, unknown>;\\n}\"\n }\n];\n","/**\n * Runtime API Registry\n *\n */\nimport type { RuntimeAPIMetadata } from './metadata/index.js';\nimport { GENERATED_METADATA } from './metadata/generated.js';\n\n/**\n * Get all registered runtime APIs metadata\n *\n * This is generated at BUILD TIME by ts-morph, not at runtime\n */\nexport function getAllAPIs(): RuntimeAPIMetadata[] {\n\treturn GENERATED_METADATA;\n}\n\n/**\n * Get metadata for a specific API by name\n */\nexport function getAPI(name: string): RuntimeAPIMetadata | undefined {\n\treturn GENERATED_METADATA.find((api) => api.name === name);\n}\n","/**\n * Metadata and Type Generation Utilities\n */\n\nexport type { RuntimeAPIParam, RuntimeAPIMethod, RuntimeAPIMetadata } from './types.js';\nexport { RuntimeAPI, RuntimeMethod } from './decorators.js';\nexport type { RuntimeAPIName } from './generated.js';\n\nimport type { RuntimeAPIMetadata } from './types.js';\nimport type { RuntimeAPIName } from './generated.js';\nimport { TYPE_REGISTRY } from './generated.js';\n\ninterface ClientServices {\n\thasLLM: boolean;\n\thasApproval: boolean;\n\thasEmbedding: boolean;\n\thasTools: boolean;\n}\n\n/**\n * Generates TypeScript definitions from runtime API metadata\n * @param apis - Runtime API metadata\n * @param options - Optional filtering options\n */\nexport function generateRuntimeTypes(\n\tapis: RuntimeAPIMetadata[],\n\toptions?: {\n\t\tclientServices?: ClientServices;\n\t\trequestedApis?: RuntimeAPIName[];\n\t}\n): string {\n\tlet filteredApis = apis;\n\n\tif (options?.requestedApis && options.requestedApis.length > 0) {\n\t\tconst requestedApis = options.requestedApis.map((api) => apis.find((a) => a.name === api));\n\t\tfilteredApis = requestedApis.filter((api) => api !== undefined);\n\t} else if (options?.clientServices) {\n\t\tfilteredApis = apis.filter((api) => {\n\t\t\tif (api.name === 'llm' && !options.clientServices!.hasLLM) return false;\n\t\t\tif (api.name === 'approval' && !options.clientServices!.hasApproval) return false;\n\t\t\tif (api.name === 'embedding' && !options.clientServices!.hasEmbedding) return false;\n\t\t\tif (api.name === 'progress') return false;\n\t\t\treturn true;\n\t\t});\n\t} else {\n\t\tfilteredApis = apis.filter((api) => api.name === 'cache');\n\t}\n\n\tlet typescript = '// Runtime SDK Type Definitions\\n\\n';\n\n\tconst usedTypes = new Set<string>();\n\tfor (const api of filteredApis) {\n\t\tfor (const method of api.methods) {\n\t\t\tconst allTypes = [method.returns, ...method.params.map((p) => p.type)].join(' ');\n\t\t\tconst typeMatches = allTypes.match(/\\b[A-Z][a-zA-Z]+\\b/g);\n\t\t\tif (typeMatches) {\n\t\t\t\ttypeMatches.forEach((t) => usedTypes.add(t));\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (const type of TYPE_REGISTRY) {\n\t\tconst typeNameMatch = type.definition.match(/(?:interface|type)\\s+([A-Z][a-zA-Z]+)/);\n\t\tconst typeName = typeNameMatch?.[1];\n\t\tif (typeName && usedTypes.has(typeName)) {\n\t\t\ttypescript += `${type.definition}\\n\\n`;\n\t\t}\n\t}\n\n\ttypescript += '// Runtime SDK\\ndeclare const atp: {\\n';\n\n\tfor (const api of filteredApis) {\n\t\ttypescript += ` /**\\n`;\n\t\tfor (const line of api.description.split('\\n')) {\n\t\t\ttypescript += ` * ${line}\\n`;\n\t\t}\n\t\ttypescript += ` */\\n`;\n\n\t\ttypescript += ` ${api.name}: {\\n`;\n\n\t\tfor (const method of api.methods) {\n\t\t\ttypescript += ` /**\\n`;\n\t\t\ttypescript += ` * ${method.description}\\n`;\n\n\t\t\tfor (const param of method.params) {\n\t\t\t\tif (param.description) {\n\t\t\t\t\ttypescript += ` * @param ${param.name} - ${param.description}\\n`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (method.returns !== 'void') {\n\t\t\t\tconst returnDesc = method.returns.startsWith('Promise')\n\t\t\t\t\t? 'Promise resolving to result'\n\t\t\t\t\t: 'Result value';\n\t\t\t\ttypescript += ` * @returns ${returnDesc}\\n`;\n\t\t\t}\n\n\t\t\ttypescript += ` */\\n`;\n\n\t\t\tconst paramStrings = method.params.map((p) => {\n\t\t\t\tconst optional = p.optional ? '?' : '';\n\t\t\t\tconst type = p.type.includes('\\n') ? p.type.replace(/\\n/g, '\\n ') : p.type;\n\t\t\t\treturn `${p.name}${optional}: ${type}`;\n\t\t\t});\n\n\t\t\ttypescript += ` ${method.name}(${paramStrings.join(', ')}): ${method.returns};\\n`;\n\n\t\t\ttypescript += `\\n`;\n\t\t}\n\n\t\ttypescript += ` };\\n\\n`;\n\t}\n\n\ttypescript += '};\\n\\n';\n\n\treturn typescript;\n}\n"]}