{"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"]}