@mate-academy/llm-gateway 8.8.2 → 8.8.4
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.
- package/dist/LLMError.d.ts +12 -0
- package/dist/LLMError.js +36 -0
- package/dist/LLMError.js.map +1 -0
- package/dist/LLMGateway.d.ts +30 -0
- package/dist/LLMGateway.js +56 -0
- package/dist/LLMGateway.js.map +1 -0
- package/dist/LLMGateway.typedefs.d.ts +5 -0
- package/dist/LLMGateway.typedefs.js +3 -0
- package/dist/LLMGateway.typedefs.js.map +1 -0
- package/dist/LLMService.constants.d.ts +26337 -0
- package/dist/LLMService.constants.js +35 -0
- package/dist/LLMService.constants.js.map +1 -0
- package/dist/LLMService.factory.d.ts +71 -0
- package/dist/LLMService.factory.js +102 -0
- package/dist/LLMService.factory.js.map +1 -0
- package/dist/LLMService.typedefs.d.ts +655 -0
- package/dist/LLMService.typedefs.js +72 -0
- package/dist/LLMService.typedefs.js.map +1 -0
- package/dist/advanced.d.ts +11 -0
- package/dist/advanced.js +32 -0
- package/dist/advanced.js.map +1 -0
- package/dist/client/LLMAgent.d.ts +76 -0
- package/dist/client/LLMAgent.js +36 -0
- package/dist/client/LLMAgent.js.map +1 -0
- package/dist/client/LLMClientEngine.d.ts +110 -0
- package/dist/client/LLMClientEngine.js +406 -0
- package/dist/client/LLMClientEngine.js.map +1 -0
- package/dist/client/agentRun.typedefs.d.ts +200 -0
- package/dist/client/agentRun.typedefs.js +25 -0
- package/dist/client/agentRun.typedefs.js.map +1 -0
- package/dist/client/agentRunner.d.ts +161 -0
- package/dist/client/agentRunner.js +517 -0
- package/dist/client/agentRunner.js.map +1 -0
- package/dist/client/codegen/fetchPromptRecords.d.ts +14 -0
- package/dist/client/codegen/fetchPromptRecords.js +90 -0
- package/dist/client/codegen/fetchPromptRecords.js.map +1 -0
- package/dist/client/codegen/generateSnapshot.d.ts +19 -0
- package/dist/client/codegen/generateSnapshot.js +28 -0
- package/dist/client/codegen/generateSnapshot.js.map +1 -0
- package/dist/client/codegen/index.d.ts +6 -0
- package/dist/client/codegen/index.js +23 -0
- package/dist/client/codegen/index.js.map +1 -0
- package/dist/client/codegen/promptCatalog.typedefs.d.ts +51 -0
- package/dist/client/codegen/promptCatalog.typedefs.js +3 -0
- package/dist/client/codegen/promptCatalog.typedefs.js.map +1 -0
- package/dist/client/codegen/promptName.d.ts +8 -0
- package/dist/client/codegen/promptName.js +21 -0
- package/dist/client/codegen/promptName.js.map +1 -0
- package/dist/client/codegen/renderSnapshot.constants.d.ts +7 -0
- package/dist/client/codegen/renderSnapshot.constants.js +16 -0
- package/dist/client/codegen/renderSnapshot.constants.js.map +1 -0
- package/dist/client/codegen/renderSnapshot.d.ts +9 -0
- package/dist/client/codegen/renderSnapshot.js +109 -0
- package/dist/client/codegen/renderSnapshot.js.map +1 -0
- package/dist/client/codegen/renderSnapshot.typedefs.d.ts +19 -0
- package/dist/client/codegen/renderSnapshot.typedefs.js +3 -0
- package/dist/client/codegen/renderSnapshot.typedefs.js.map +1 -0
- package/dist/client/coerceToolResult.d.ts +10 -0
- package/dist/client/coerceToolResult.js +38 -0
- package/dist/client/coerceToolResult.js.map +1 -0
- package/dist/client/createLLMClient.d.ts +10 -0
- package/dist/client/createLLMClient.js +47 -0
- package/dist/client/createLLMClient.js.map +1 -0
- package/dist/client/defineLLMPrompts.d.ts +34 -0
- package/dist/client/defineLLMPrompts.js +13 -0
- package/dist/client/defineLLMPrompts.js.map +1 -0
- package/dist/client/errors.d.ts +57 -0
- package/dist/client/errors.js +70 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/index.d.ts +13 -0
- package/dist/client/index.js +30 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/llmClient.typedefs.d.ts +265 -0
- package/dist/client/llmClient.typedefs.js +11 -0
- package/dist/client/llmClient.typedefs.js.map +1 -0
- package/dist/client/llmConfig.schema.d.ts +53 -0
- package/dist/client/llmConfig.schema.js +49 -0
- package/dist/client/llmConfig.schema.js.map +1 -0
- package/dist/client/plainMessages.d.ts +12 -0
- package/dist/client/plainMessages.js +19 -0
- package/dist/client/plainMessages.js.map +1 -0
- package/dist/client/promptClientPort.typedefs.d.ts +60 -0
- package/dist/client/promptClientPort.typedefs.js +3 -0
- package/dist/client/promptClientPort.typedefs.js.map +1 -0
- package/dist/client/promptRegistry.runtime.d.ts +121 -0
- package/dist/client/promptRegistry.runtime.js +264 -0
- package/dist/client/promptRegistry.runtime.js.map +1 -0
- package/dist/client/promptSnapshot.typedefs.d.ts +55 -0
- package/dist/client/promptSnapshot.typedefs.js +3 -0
- package/dist/client/promptSnapshot.typedefs.js.map +1 -0
- package/dist/client/promptVariables.d.ts +7 -0
- package/dist/client/promptVariables.js +13 -0
- package/dist/client/promptVariables.js.map +1 -0
- package/dist/client/snapshotRuntime.d.ts +17 -0
- package/dist/client/snapshotRuntime.js +42 -0
- package/dist/client/snapshotRuntime.js.map +1 -0
- package/dist/client/snapshotRuntime.typedefs.d.ts +13 -0
- package/dist/client/snapshotRuntime.typedefs.js +3 -0
- package/dist/client/snapshotRuntime.typedefs.js.map +1 -0
- package/dist/client/validationGate.d.ts +24 -0
- package/dist/client/validationGate.js +54 -0
- package/dist/client/validationGate.js.map +1 -0
- package/dist/codegen.d.ts +6 -0
- package/dist/codegen.js +23 -0
- package/dist/codegen.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.constants.d.ts +873 -0
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.constants.js +269 -0
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.constants.js.map +1 -0
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.entity.d.ts +24 -0
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.entity.js +210 -0
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.entity.js.map +1 -0
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.typedefs.d.ts +22 -0
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.typedefs.js +20 -0
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.typedefs.js.map +1 -0
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAIService.factory.d.ts +6 -0
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAIService.factory.js +18 -0
- package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAIService.factory.js.map +1 -0
- package/dist/providers/GoogleGenerativeAI/index.d.ts +5 -0
- package/dist/providers/GoogleGenerativeAI/index.js +22 -0
- package/dist/providers/GoogleGenerativeAI/index.js.map +1 -0
- package/dist/providers/GoogleGenerativeAI/schemas/GoogleSchemaAdapter.d.ts +12 -0
- package/dist/providers/GoogleGenerativeAI/schemas/GoogleSchemaAdapter.js +72 -0
- package/dist/providers/GoogleGenerativeAI/schemas/GoogleSchemaAdapter.js.map +1 -0
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.d.ts +71 -0
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.js +876 -0
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.js.map +1 -0
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAICompletion.service.d.ts +25 -0
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAICompletion.service.js +216 -0
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAICompletion.service.js.map +1 -0
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAISpeechToText.service.d.ts +10 -0
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAISpeechToText.service.js +136 -0
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAISpeechToText.service.js.map +1 -0
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAITextToSpeech.service.d.ts +11 -0
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAITextToSpeech.service.js +97 -0
- package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAITextToSpeech.service.js.map +1 -0
- package/dist/providers/GoogleGenerativeAI/services/index.d.ts +4 -0
- package/dist/providers/GoogleGenerativeAI/services/index.js +21 -0
- package/dist/providers/GoogleGenerativeAI/services/index.js.map +1 -0
- package/dist/providers/LLMAPI/LLMAPI.constants.d.ts +35874 -0
- package/dist/providers/LLMAPI/LLMAPI.constants.js +8663 -0
- package/dist/providers/LLMAPI/LLMAPI.constants.js.map +1 -0
- package/dist/providers/LLMAPI/LLMAPI.entity.d.ts +6 -0
- package/dist/providers/LLMAPI/LLMAPI.entity.js +48 -0
- package/dist/providers/LLMAPI/LLMAPI.entity.js.map +1 -0
- package/dist/providers/LLMAPI/LLMAPI.typedefs.d.ts +516 -0
- package/dist/providers/LLMAPI/LLMAPI.typedefs.js +564 -0
- package/dist/providers/LLMAPI/LLMAPI.typedefs.js.map +1 -0
- package/dist/providers/LLMAPI/LLMAPI.voices.d.ts +376 -0
- package/dist/providers/LLMAPI/LLMAPI.voices.js +739 -0
- package/dist/providers/LLMAPI/LLMAPI.voices.js.map +1 -0
- package/dist/providers/LLMAPI/LLMAPIService.factory.d.ts +6 -0
- package/dist/providers/LLMAPI/LLMAPIService.factory.js +19 -0
- package/dist/providers/LLMAPI/LLMAPIService.factory.js.map +1 -0
- package/dist/providers/LLMAPI/index.d.ts +7 -0
- package/dist/providers/LLMAPI/index.js +24 -0
- package/dist/providers/LLMAPI/index.js.map +1 -0
- package/dist/providers/LLMAPI/schemas/LLMAPISchemaAdapter.d.ts +3 -0
- package/dist/providers/LLMAPI/schemas/LLMAPISchemaAdapter.js +8 -0
- package/dist/providers/LLMAPI/schemas/LLMAPISchemaAdapter.js.map +1 -0
- package/dist/providers/LLMAPI/services/LLMAPIAssistance.service.d.ts +76 -0
- package/dist/providers/LLMAPI/services/LLMAPIAssistance.service.js +825 -0
- package/dist/providers/LLMAPI/services/LLMAPIAssistance.service.js.map +1 -0
- package/dist/providers/LLMAPI/services/LLMAPICompletion.service.d.ts +25 -0
- package/dist/providers/LLMAPI/services/LLMAPICompletion.service.js +177 -0
- package/dist/providers/LLMAPI/services/LLMAPICompletion.service.js.map +1 -0
- package/dist/providers/LLMAPI/services/LLMAPISpeechToText.service.d.ts +17 -0
- package/dist/providers/LLMAPI/services/LLMAPISpeechToText.service.js +34 -0
- package/dist/providers/LLMAPI/services/LLMAPISpeechToText.service.js.map +1 -0
- package/dist/providers/LLMAPI/services/LLMAPITextToSpeech.service.d.ts +20 -0
- package/dist/providers/LLMAPI/services/LLMAPITextToSpeech.service.js +36 -0
- package/dist/providers/LLMAPI/services/LLMAPITextToSpeech.service.js.map +1 -0
- package/dist/providers/LLMAPI/services/index.d.ts +4 -0
- package/dist/providers/LLMAPI/services/index.js +21 -0
- package/dist/providers/LLMAPI/services/index.js.map +1 -0
- package/dist/providers/LLMAPI/utilities/index.d.ts +4 -0
- package/dist/providers/LLMAPI/utilities/index.js +13 -0
- package/dist/providers/LLMAPI/utilities/index.js.map +1 -0
- package/dist/providers/LLMAPI/utilities/parseXmlToolCalls.d.ts +7 -0
- package/dist/providers/LLMAPI/utilities/parseXmlToolCalls.js +35 -0
- package/dist/providers/LLMAPI/utilities/parseXmlToolCalls.js.map +1 -0
- package/dist/providers/LLMAPI/utilities/stripThinkingTags.d.ts +1 -0
- package/dist/providers/LLMAPI/utilities/stripThinkingTags.js +7 -0
- package/dist/providers/LLMAPI/utilities/stripThinkingTags.js.map +1 -0
- package/dist/providers/LLMAPI/utilities/structuredOutput.d.ts +13 -0
- package/dist/providers/LLMAPI/utilities/structuredOutput.js +29 -0
- package/dist/providers/LLMAPI/utilities/structuredOutput.js.map +1 -0
- package/dist/providers/LLMAPI/utilities/validateStructuredResponse.d.ts +10 -0
- package/dist/providers/LLMAPI/utilities/validateStructuredResponse.js +21 -0
- package/dist/providers/LLMAPI/utilities/validateStructuredResponse.js.map +1 -0
- package/dist/providers/OpenAI/OpenAI.constants.d.ts +1664 -0
- package/dist/providers/OpenAI/OpenAI.constants.js +310 -0
- package/dist/providers/OpenAI/OpenAI.constants.js.map +1 -0
- package/dist/providers/OpenAI/OpenAI.entity.d.ts +15 -0
- package/dist/providers/OpenAI/OpenAI.entity.js +162 -0
- package/dist/providers/OpenAI/OpenAI.entity.js.map +1 -0
- package/dist/providers/OpenAI/OpenAI.typedefs.d.ts +61 -0
- package/dist/providers/OpenAI/OpenAI.typedefs.js +39 -0
- package/dist/providers/OpenAI/OpenAI.typedefs.js.map +1 -0
- package/dist/providers/OpenAI/OpenAIService.factory.d.ts +6 -0
- package/dist/providers/OpenAI/OpenAIService.factory.js +18 -0
- package/dist/providers/OpenAI/OpenAIService.factory.js.map +1 -0
- package/dist/providers/OpenAI/index.d.ts +5 -0
- package/dist/providers/OpenAI/index.js +22 -0
- package/dist/providers/OpenAI/index.js.map +1 -0
- package/dist/providers/OpenAI/schemas/OpenAISchemaAdapter.d.ts +14 -0
- package/dist/providers/OpenAI/schemas/OpenAISchemaAdapter.js +87 -0
- package/dist/providers/OpenAI/schemas/OpenAISchemaAdapter.js.map +1 -0
- package/dist/providers/OpenAI/services/OpenAIAssistance.service.d.ts +42 -0
- package/dist/providers/OpenAI/services/OpenAIAssistance.service.js +712 -0
- package/dist/providers/OpenAI/services/OpenAIAssistance.service.js.map +1 -0
- package/dist/providers/OpenAI/services/OpenAICompletion.service.d.ts +7 -0
- package/dist/providers/OpenAI/services/OpenAICompletion.service.js +12 -0
- package/dist/providers/OpenAI/services/OpenAICompletion.service.js.map +1 -0
- package/dist/providers/OpenAI/services/OpenAISpeechToText.service.d.ts +17 -0
- package/dist/providers/OpenAI/services/OpenAISpeechToText.service.js +40 -0
- package/dist/providers/OpenAI/services/OpenAISpeechToText.service.js.map +1 -0
- package/dist/providers/OpenAI/services/OpenAITextToSpeech.service.d.ts +13 -0
- package/dist/providers/OpenAI/services/OpenAITextToSpeech.service.js +32 -0
- package/dist/providers/OpenAI/services/OpenAITextToSpeech.service.js.map +1 -0
- package/dist/providers/OpenAI/services/buildFunctionCallOutput.d.ts +3 -0
- package/dist/providers/OpenAI/services/buildFunctionCallOutput.js +19 -0
- package/dist/providers/OpenAI/services/buildFunctionCallOutput.js.map +1 -0
- package/dist/providers/OpenAI/services/index.d.ts +4 -0
- package/dist/providers/OpenAI/services/index.js +21 -0
- package/dist/providers/OpenAI/services/index.js.map +1 -0
- package/dist/providers/OpenAICompatible/OpenAICompatibleCompletion.service.d.ts +30 -0
- package/dist/providers/OpenAICompatible/OpenAICompatibleCompletion.service.js +233 -0
- package/dist/providers/OpenAICompatible/OpenAICompatibleCompletion.service.js.map +1 -0
- package/dist/providers/OpenAICompatible/OpenAICompatibleSpeechToText.service.d.ts +22 -0
- package/dist/providers/OpenAICompatible/OpenAICompatibleSpeechToText.service.js +98 -0
- package/dist/providers/OpenAICompatible/OpenAICompatibleSpeechToText.service.js.map +1 -0
- package/dist/providers/OpenAICompatible/OpenAICompatibleTextToSpeech.service.d.ts +22 -0
- package/dist/providers/OpenAICompatible/OpenAICompatibleTextToSpeech.service.js +67 -0
- package/dist/providers/OpenAICompatible/OpenAICompatibleTextToSpeech.service.js.map +1 -0
- package/dist/providers/index.d.ts +3 -0
- package/dist/providers/index.js +20 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/services/LLMAssistanceService.abstract.d.ts +39 -0
- package/dist/services/LLMAssistanceService.abstract.js +101 -0
- package/dist/services/LLMAssistanceService.abstract.js.map +1 -0
- package/dist/services/LLMBaseService.abstract.d.ts +161 -0
- package/dist/services/LLMBaseService.abstract.js +412 -0
- package/dist/services/LLMBaseService.abstract.js.map +1 -0
- package/dist/services/LLMCompletionService.abstract.d.ts +16 -0
- package/dist/services/LLMCompletionService.abstract.js +12 -0
- package/dist/services/LLMCompletionService.abstract.js.map +1 -0
- package/dist/services/LLMServicePurposeFactory.abstract.d.ts +12 -0
- package/dist/services/LLMServicePurposeFactory.abstract.js +7 -0
- package/dist/services/LLMServicePurposeFactory.abstract.js.map +1 -0
- package/dist/services/LLMSpeechToTextService.abstract.d.ts +8 -0
- package/dist/services/LLMSpeechToTextService.abstract.js +12 -0
- package/dist/services/LLMSpeechToTextService.abstract.js.map +1 -0
- package/dist/services/LLMTextToSpeechService.abstract.d.ts +8 -0
- package/dist/services/LLMTextToSpeechService.abstract.js +12 -0
- package/dist/services/LLMTextToSpeechService.abstract.js.map +1 -0
- package/dist/services/agentRounds/LLMAgentRounds.d.ts +32 -0
- package/dist/services/agentRounds/LLMAgentRounds.js +77 -0
- package/dist/services/agentRounds/LLMAgentRounds.js.map +1 -0
- package/dist/services/agentRounds/agentRounds.typedefs.d.ts +48 -0
- package/dist/services/agentRounds/agentRounds.typedefs.js +3 -0
- package/dist/services/agentRounds/agentRounds.typedefs.js.map +1 -0
- package/dist/services/agentRounds/index.d.ts +2 -0
- package/dist/services/agentRounds/index.js +19 -0
- package/dist/services/agentRounds/index.js.map +1 -0
- package/dist/services/chatState/CompletionsChatState.d.ts +35 -0
- package/dist/services/chatState/CompletionsChatState.js +118 -0
- package/dist/services/chatState/CompletionsChatState.js.map +1 -0
- package/dist/services/chatState/index.d.ts +1 -0
- package/dist/services/chatState/index.js +6 -0
- package/dist/services/chatState/index.js.map +1 -0
- package/dist/services/fileStorage/FileStorageToolExecutor.d.ts +15 -0
- package/dist/services/fileStorage/FileStorageToolExecutor.js +172 -0
- package/dist/services/fileStorage/FileStorageToolExecutor.js.map +1 -0
- package/dist/services/fileStorage/InMemoryFileStorage.d.ts +20 -0
- package/dist/services/fileStorage/InMemoryFileStorage.js +67 -0
- package/dist/services/fileStorage/InMemoryFileStorage.js.map +1 -0
- package/dist/services/fileStorage/fileStorageTools.d.ts +26 -0
- package/dist/services/fileStorage/fileStorageTools.js +68 -0
- package/dist/services/fileStorage/fileStorageTools.js.map +1 -0
- package/dist/services/fileStorage/index.d.ts +4 -0
- package/dist/services/fileStorage/index.js +11 -0
- package/dist/services/fileStorage/index.js.map +1 -0
- package/dist/services/index.d.ts +7 -0
- package/dist/services/index.js +24 -0
- package/dist/services/index.js.map +1 -0
- package/dist/utilities/calculateCosts.d.ts +4 -0
- package/dist/utilities/calculateCosts.js +56 -0
- package/dist/utilities/calculateCosts.js.map +1 -0
- package/dist/utilities/functional.utils.d.ts +1 -0
- package/dist/utilities/functional.utils.js +9 -0
- package/dist/utilities/functional.utils.js.map +1 -0
- package/dist/utilities/index.d.ts +9 -0
- package/dist/utilities/index.js +26 -0
- package/dist/utilities/index.js.map +1 -0
- package/dist/utilities/llmTracing/index.d.ts +3 -0
- package/dist/utilities/llmTracing/index.js +20 -0
- package/dist/utilities/llmTracing/index.js.map +1 -0
- package/dist/utilities/llmTracing/llmTracing.constants.d.ts +7 -0
- package/dist/utilities/llmTracing/llmTracing.constants.js +11 -0
- package/dist/utilities/llmTracing/llmTracing.constants.js.map +1 -0
- package/dist/utilities/llmTracing/llmTracing.typedefs.d.ts +137 -0
- package/dist/utilities/llmTracing/llmTracing.typedefs.js +3 -0
- package/dist/utilities/llmTracing/llmTracing.typedefs.js.map +1 -0
- package/dist/utilities/llmTracing/noopLLMTracing.d.ts +3 -0
- package/dist/utilities/llmTracing/noopLLMTracing.js +36 -0
- package/dist/utilities/llmTracing/noopLLMTracing.js.map +1 -0
- package/dist/utilities/logger/LLMLoggerInterface.d.ts +36 -0
- package/dist/utilities/logger/LLMLoggerInterface.js +3 -0
- package/dist/utilities/logger/LLMLoggerInterface.js.map +1 -0
- package/dist/utilities/logger/index.d.ts +1 -0
- package/dist/utilities/logger/index.js +18 -0
- package/dist/utilities/logger/index.js.map +1 -0
- package/dist/utilities/promptBuilder.d.ts +58 -0
- package/dist/utilities/promptBuilder.js +92 -0
- package/dist/utilities/promptBuilder.js.map +1 -0
- package/dist/utilities/reporter/LLMReporterInterface.d.ts +46 -0
- package/dist/utilities/reporter/LLMReporterInterface.js +3 -0
- package/dist/utilities/reporter/LLMReporterInterface.js.map +1 -0
- package/dist/utilities/reporter/index.d.ts +1 -0
- package/dist/utilities/reporter/index.js +18 -0
- package/dist/utilities/reporter/index.js.map +1 -0
- package/dist/utilities/schema/LLMSchema.d.ts +112 -0
- package/dist/utilities/schema/LLMSchema.js +223 -0
- package/dist/utilities/schema/LLMSchema.js.map +1 -0
- package/dist/utilities/schema/LLMSchema.typedefs.d.ts +55 -0
- package/dist/utilities/schema/LLMSchema.typedefs.js +3 -0
- package/dist/utilities/schema/LLMSchema.typedefs.js.map +1 -0
- package/dist/utilities/schema/SchemaAdapterRegistry.d.ts +26 -0
- package/dist/utilities/schema/SchemaAdapterRegistry.js +32 -0
- package/dist/utilities/schema/SchemaAdapterRegistry.js.map +1 -0
- package/dist/utilities/schema/index.d.ts +2 -0
- package/dist/utilities/schema/index.js +19 -0
- package/dist/utilities/schema/index.js.map +1 -0
- package/dist/utilities/serializeError.d.ts +9 -0
- package/dist/utilities/serializeError.js +69 -0
- package/dist/utilities/serializeError.js.map +1 -0
- package/dist/utilities/tokenizer.d.ts +4 -0
- package/dist/utilities/tokenizer.js +14 -0
- package/dist/utilities/tokenizer.js.map +1 -0
- package/dist/utilities/tools/LLMTool.d.ts +5 -0
- package/dist/utilities/tools/LLMTool.js +10 -0
- package/dist/utilities/tools/LLMTool.js.map +1 -0
- package/dist/utilities/tools/index.d.ts +2 -0
- package/dist/utilities/tools/index.js +8 -0
- package/dist/utilities/tools/index.js.map +1 -0
- package/dist/utilities/tools/normalizeToolResult.d.ts +15 -0
- package/dist/utilities/tools/normalizeToolResult.js +18 -0
- package/dist/utilities/tools/normalizeToolResult.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.plainMessagesToContentMessages = plainMessagesToContentMessages;
|
|
4
|
+
const LLMService_typedefs_1 = require("../LLMService.typedefs");
|
|
5
|
+
/**
|
|
6
|
+
* Maps the client's persisted plain-message history into the gateway's
|
|
7
|
+
* content-message shape. The single mapper both `generate` and `runAgent` use,
|
|
8
|
+
* so a persisted session replays identically through either surface.
|
|
9
|
+
*/
|
|
10
|
+
function plainMessagesToContentMessages(history) {
|
|
11
|
+
if (!history) {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
return history.map((entry) => ({
|
|
15
|
+
role: entry.role === 'assistant' ? LLMService_typedefs_1.LLMRoles.Assistant : LLMService_typedefs_1.LLMRoles.User,
|
|
16
|
+
content: [{ type: LLMService_typedefs_1.LLMMessageContentType.TEXT, text: entry.text }],
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=plainMessages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plainMessages.js","sourceRoot":"","sources":["../../src/client/plainMessages.ts"],"names":[],"mappings":";;AAiBA,wEAWC;AA5BD,+DAI+B;AAQ/B;;;;GAIG;AACH,SAAgB,8BAA8B,CAC5C,OAAsC;IAEtC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,8BAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,8BAAQ,CAAC,IAAI;QACrE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,2CAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;KAClE,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetch options for one live prompt read. Label and version are mutually
|
|
3
|
+
* exclusive, mirroring `@mate-academy/prompt-client`'s `GetPromptOptions` /
|
|
4
|
+
* `GetChatPromptOptions` shape so an implementation of `LLMGatewayPromptClient`
|
|
5
|
+
* needs no adapter to satisfy this port structurally. The port never sets
|
|
6
|
+
* prompt-client's `fallback` option: the gateway's own build-time snapshot is
|
|
7
|
+
* the outage fallback, so a live-fetch fallback would be redundant.
|
|
8
|
+
*/
|
|
9
|
+
export interface LLMPromptFetchByLabelOptions {
|
|
10
|
+
label?: string;
|
|
11
|
+
version?: never;
|
|
12
|
+
cacheTtlSeconds?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface LLMPromptFetchByVersionOptions {
|
|
15
|
+
version?: number;
|
|
16
|
+
label?: never;
|
|
17
|
+
cacheTtlSeconds?: number;
|
|
18
|
+
}
|
|
19
|
+
export type LLMPromptFetchOptions = LLMPromptFetchByLabelOptions | LLMPromptFetchByVersionOptions;
|
|
20
|
+
/**
|
|
21
|
+
* A live-fetched text prompt, shaped to match `@mate-academy/prompt-client`'s
|
|
22
|
+
* `LLMPrompt` field-for-field (`prompt`, not `text`) so a prompt-client
|
|
23
|
+
* instance satisfies `LLMGatewayPromptClient` without any adapter.
|
|
24
|
+
*/
|
|
25
|
+
export interface LLMFetchedTextPrompt {
|
|
26
|
+
prompt: string;
|
|
27
|
+
config: unknown;
|
|
28
|
+
version: number;
|
|
29
|
+
isFallback: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* `role` is a plain `string`, not a closed enum: this is an open port meant to
|
|
33
|
+
* match any provider's message shape, not a gateway-owned closed set. A
|
|
34
|
+
* provider's own enum-typed role (e.g. prompt-client's `LLMPromptMessageRoles`)
|
|
35
|
+
* is assignable to `string`, so it satisfies this port; it would not be
|
|
36
|
+
* assignable to a fresh string-literal union.
|
|
37
|
+
*/
|
|
38
|
+
export interface LLMFetchedChatMessage {
|
|
39
|
+
role: string;
|
|
40
|
+
content: string;
|
|
41
|
+
}
|
|
42
|
+
export interface LLMFetchedChatPrompt {
|
|
43
|
+
messages: LLMFetchedChatMessage[];
|
|
44
|
+
config: unknown;
|
|
45
|
+
version: number;
|
|
46
|
+
isFallback: boolean;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The runtime prompt port the gateway client depends on instead of a
|
|
50
|
+
* Langfuse SDK client. `@mate-academy/prompt-client`'s `LLMPromptClient`
|
|
51
|
+
* satisfies this structurally (its extra `listPrompts`/`getPromptRecord`/
|
|
52
|
+
* `shutdown` methods are simply unused here), so wiring it in at the
|
|
53
|
+
* composition root needs no adapter layer. An implementation that throws on
|
|
54
|
+
* failure is expected and handled: the runtime catches every rejection and
|
|
55
|
+
* falls back to the build-time snapshot.
|
|
56
|
+
*/
|
|
57
|
+
export interface LLMGatewayPromptClient {
|
|
58
|
+
getPrompt(name: string, options?: LLMPromptFetchOptions): Promise<LLMFetchedTextPrompt>;
|
|
59
|
+
getChatPrompt(name: string, options?: LLMPromptFetchOptions): Promise<LLMFetchedChatPrompt>;
|
|
60
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptClientPort.typedefs.js","sourceRoot":"","sources":["../../src/client/promptClientPort.typedefs.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { LLMPurposes, type LLMModel, type LLMProviders } from '../LLMService.typedefs';
|
|
2
|
+
import { type LLMLoggerInterface } from '../utilities/logger';
|
|
3
|
+
import { type LLMFallbackMetricEmitter } from '../utilities/llmTracing';
|
|
4
|
+
import { type LLMGatewayPromptClient } from '../client/promptClientPort.typedefs';
|
|
5
|
+
import { type LLMPromptKind, type LLMPromptMessage, type LLMPromptSnapshot } from '../client/promptSnapshot.typedefs';
|
|
6
|
+
import { type LLMPromptConfig } from '../client/llmConfig.schema';
|
|
7
|
+
import { type LLMCapabilityRequirement } from '../client/defineLLMPrompts';
|
|
8
|
+
/**
|
|
9
|
+
* The resolved, validated prompt the client uses for one call. For a `text`
|
|
10
|
+
* prompt `text` is the compiled body; for a `chat` prompt `messages` is the
|
|
11
|
+
* compiled role-tagged list (and `text` is their concatenation, kept for trace
|
|
12
|
+
* IO + token counting). `config`/`model` passed the gate; `isFallback` flags
|
|
13
|
+
* that the build-time snapshot was served (live fetch or gate failed), which the
|
|
14
|
+
* generation observation records and the fallback metric counts.
|
|
15
|
+
*/
|
|
16
|
+
export interface ResolvedPrompt {
|
|
17
|
+
name: string;
|
|
18
|
+
kind: LLMPromptKind;
|
|
19
|
+
text: string;
|
|
20
|
+
messages: LLMPromptMessage[];
|
|
21
|
+
config: LLMPromptConfig;
|
|
22
|
+
model: LLMModel<LLMProviders>;
|
|
23
|
+
version: number;
|
|
24
|
+
isFallback: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface ResolvePromptInput {
|
|
27
|
+
name: string;
|
|
28
|
+
kind: LLMPromptKind;
|
|
29
|
+
variables: Record<string, string>;
|
|
30
|
+
requires: LLMCapabilityRequirement[];
|
|
31
|
+
purpose: LLMPurposes;
|
|
32
|
+
label?: string;
|
|
33
|
+
versionOverride?: number;
|
|
34
|
+
labelOverride?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface DescribePromptInput {
|
|
37
|
+
name: string;
|
|
38
|
+
kind: LLMPromptKind;
|
|
39
|
+
requires: LLMCapabilityRequirement[];
|
|
40
|
+
purpose: LLMPurposes;
|
|
41
|
+
label?: string;
|
|
42
|
+
versionOverride?: number;
|
|
43
|
+
labelOverride?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The live-resolved routing metadata for a prompt — what the runtime would serve
|
|
47
|
+
* right now. `isFallback` flags that the build-time snapshot config was used
|
|
48
|
+
* (live fetch unreachable or its config failed the gate).
|
|
49
|
+
*/
|
|
50
|
+
export interface ResolvedPromptMetadata {
|
|
51
|
+
name: string;
|
|
52
|
+
provider: LLMProviders;
|
|
53
|
+
model: string;
|
|
54
|
+
promptVersion: number;
|
|
55
|
+
isFallback: boolean;
|
|
56
|
+
}
|
|
57
|
+
export interface PromptRegistryRuntimeConfig {
|
|
58
|
+
promptClient: LLMGatewayPromptClient | undefined;
|
|
59
|
+
snapshot: LLMPromptSnapshot;
|
|
60
|
+
defaultLabel: string;
|
|
61
|
+
cacheTtlSeconds?: number;
|
|
62
|
+
logger?: LLMLoggerInterface;
|
|
63
|
+
fallbackMetricEmitter?: LLMFallbackMetricEmitter;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Owns prompt resolution at runtime: a live SDK fetch (cached 60s,
|
|
67
|
+
* stale-while-revalidate) gated on every read, with the build-time snapshot as
|
|
68
|
+
* the outage fallback. The single validation gate runs against both the live and
|
|
69
|
+
* the fallback config; only a config that passes is ever served. When live and
|
|
70
|
+
* fallback are both unusable the caller decides (throws `LLMConfigError`).
|
|
71
|
+
*/
|
|
72
|
+
export declare class PromptRegistryRuntime {
|
|
73
|
+
private readonly promptClient;
|
|
74
|
+
private readonly snapshot;
|
|
75
|
+
private readonly defaultLabel;
|
|
76
|
+
private readonly cacheTtlSeconds;
|
|
77
|
+
private readonly logger;
|
|
78
|
+
private readonly fallbackMetricEmitter;
|
|
79
|
+
private hasWarnedThisProcess;
|
|
80
|
+
constructor(config: PromptRegistryRuntimeConfig);
|
|
81
|
+
/**
|
|
82
|
+
* Warms the SDK cache for every snapshot prompt without blocking boot. Each
|
|
83
|
+
* failure is swallowed so a Langfuse outage at pod start never delays serving;
|
|
84
|
+
* the snapshot already covers the gap. Dispatches to `getChatPrompt` for a
|
|
85
|
+
* chat-kind entry, else `getPrompt`.
|
|
86
|
+
*/
|
|
87
|
+
refreshAll(): Promise<void>;
|
|
88
|
+
resolve(input: ResolvePromptInput): Promise<ResolvedPrompt | undefined>;
|
|
89
|
+
/**
|
|
90
|
+
* Resolves only the prompt's routing metadata (provider, model, version) via the
|
|
91
|
+
* same live-fetch + gate + snapshot-fallback path `resolve` uses, without
|
|
92
|
+
* compiling the body or requiring call-site variables. The vars-subset check is
|
|
93
|
+
* skipped (no variables to check); config/model/capability validation still
|
|
94
|
+
* applies, so a live config the gate would reject falls back to the snapshot.
|
|
95
|
+
* Returns what the runtime WOULD serve right now, including fallback.
|
|
96
|
+
*/
|
|
97
|
+
describe(input: DescribePromptInput): Promise<ResolvedPromptMetadata | undefined>;
|
|
98
|
+
private describeFromSnapshot;
|
|
99
|
+
private gateConfig;
|
|
100
|
+
private tryResolveLive;
|
|
101
|
+
private tryResolveFallback;
|
|
102
|
+
private fetchLive;
|
|
103
|
+
private buildFetchOptions;
|
|
104
|
+
/**
|
|
105
|
+
* Substitutes variables into the prompt body. For a `chat` prompt every
|
|
106
|
+
* message's content is substituted and the roles are preserved; `text` is the
|
|
107
|
+
* messages concatenated (newline-joined), which the gate's unresolved-variable
|
|
108
|
+
* check and trace IO use. For a `text` prompt `messages` is empty.
|
|
109
|
+
*/
|
|
110
|
+
private compileBody;
|
|
111
|
+
/**
|
|
112
|
+
* Substitutes one variable at a time. The replacement is a function, not a
|
|
113
|
+
* string: a string replacement would let `$&`, `$$`, `` $` `` and `$'` inside
|
|
114
|
+
* a variable's value act as replacement patterns, so any user-authored text
|
|
115
|
+
* carrying them would silently rewrite itself into the prompt.
|
|
116
|
+
*/
|
|
117
|
+
private substitute;
|
|
118
|
+
private emitFallback;
|
|
119
|
+
private warnOnce;
|
|
120
|
+
}
|
|
121
|
+
export declare function snapshotEntryNames(snapshot: LLMPromptSnapshot): string[];
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PromptRegistryRuntime = void 0;
|
|
4
|
+
exports.snapshotEntryNames = snapshotEntryNames;
|
|
5
|
+
const LLMService_typedefs_1 = require("../LLMService.typedefs");
|
|
6
|
+
const llmTracing_1 = require("../utilities/llmTracing");
|
|
7
|
+
const validationGate_1 = require("../client/validationGate");
|
|
8
|
+
const CHAT_MESSAGE_ROLES = [
|
|
9
|
+
'system',
|
|
10
|
+
'user',
|
|
11
|
+
'assistant',
|
|
12
|
+
];
|
|
13
|
+
const DEFAULT_CACHE_TTL_SECONDS = 60;
|
|
14
|
+
const PROMPT_FETCH_WARN_PREFIX = 'Langfuse prompt fetch degraded';
|
|
15
|
+
/**
|
|
16
|
+
* Owns prompt resolution at runtime: a live SDK fetch (cached 60s,
|
|
17
|
+
* stale-while-revalidate) gated on every read, with the build-time snapshot as
|
|
18
|
+
* the outage fallback. The single validation gate runs against both the live and
|
|
19
|
+
* the fallback config; only a config that passes is ever served. When live and
|
|
20
|
+
* fallback are both unusable the caller decides (throws `LLMConfigError`).
|
|
21
|
+
*/
|
|
22
|
+
class PromptRegistryRuntime {
|
|
23
|
+
promptClient;
|
|
24
|
+
snapshot;
|
|
25
|
+
defaultLabel;
|
|
26
|
+
cacheTtlSeconds;
|
|
27
|
+
logger;
|
|
28
|
+
fallbackMetricEmitter;
|
|
29
|
+
hasWarnedThisProcess = false;
|
|
30
|
+
constructor(config) {
|
|
31
|
+
this.promptClient = config.promptClient;
|
|
32
|
+
this.snapshot = config.snapshot;
|
|
33
|
+
this.defaultLabel = config.defaultLabel;
|
|
34
|
+
this.cacheTtlSeconds = config.cacheTtlSeconds ?? DEFAULT_CACHE_TTL_SECONDS;
|
|
35
|
+
this.logger = config.logger?.child('PromptRegistryRuntime');
|
|
36
|
+
this.fallbackMetricEmitter
|
|
37
|
+
= config.fallbackMetricEmitter ?? llmTracing_1.noopFallbackMetricEmitter;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Warms the SDK cache for every snapshot prompt without blocking boot. Each
|
|
41
|
+
* failure is swallowed so a Langfuse outage at pod start never delays serving;
|
|
42
|
+
* the snapshot already covers the gap. Dispatches to `getChatPrompt` for a
|
|
43
|
+
* chat-kind entry, else `getPrompt`.
|
|
44
|
+
*/
|
|
45
|
+
async refreshAll() {
|
|
46
|
+
if (!this.promptClient) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
await Promise.allSettled(Object.values(this.snapshot).map((entry) => this.fetchLive({
|
|
50
|
+
name: entry.name,
|
|
51
|
+
kind: entry.kind,
|
|
52
|
+
variables: {},
|
|
53
|
+
requires: [],
|
|
54
|
+
purpose: LLMService_typedefs_1.LLMPurposes.Completion,
|
|
55
|
+
label: this.defaultLabel,
|
|
56
|
+
})));
|
|
57
|
+
}
|
|
58
|
+
async resolve(input) {
|
|
59
|
+
const live = await this.tryResolveLive(input);
|
|
60
|
+
if (live) {
|
|
61
|
+
return live;
|
|
62
|
+
}
|
|
63
|
+
return this.tryResolveFallback(input);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Resolves only the prompt's routing metadata (provider, model, version) via the
|
|
67
|
+
* same live-fetch + gate + snapshot-fallback path `resolve` uses, without
|
|
68
|
+
* compiling the body or requiring call-site variables. The vars-subset check is
|
|
69
|
+
* skipped (no variables to check); config/model/capability validation still
|
|
70
|
+
* applies, so a live config the gate would reject falls back to the snapshot.
|
|
71
|
+
* Returns what the runtime WOULD serve right now, including fallback.
|
|
72
|
+
*/
|
|
73
|
+
async describe(input) {
|
|
74
|
+
const live = await this.fetchLive({ ...input, variables: {} });
|
|
75
|
+
if (live && !live.isFallback) {
|
|
76
|
+
const gate = this.gateConfig(live.config, input);
|
|
77
|
+
if (gate.valid) {
|
|
78
|
+
return {
|
|
79
|
+
name: input.name,
|
|
80
|
+
provider: gate.config.provider,
|
|
81
|
+
model: gate.config.model,
|
|
82
|
+
promptVersion: live.version,
|
|
83
|
+
isFallback: false,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
this.emitFallback({ ...input, variables: {} }, `live-${gate.reason}`);
|
|
87
|
+
}
|
|
88
|
+
return this.describeFromSnapshot(input);
|
|
89
|
+
}
|
|
90
|
+
describeFromSnapshot(input) {
|
|
91
|
+
const entry = this.snapshot[input.name];
|
|
92
|
+
if (!entry) {
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
const gate = this.gateConfig(entry.config, input);
|
|
96
|
+
if (!gate.valid) {
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
name: input.name,
|
|
101
|
+
provider: gate.config.provider,
|
|
102
|
+
model: gate.config.model,
|
|
103
|
+
promptVersion: entry.version,
|
|
104
|
+
isFallback: true,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
gateConfig(rawConfig, input) {
|
|
108
|
+
return (0, validationGate_1.runValidationGate)({
|
|
109
|
+
rawConfig,
|
|
110
|
+
requires: input.requires,
|
|
111
|
+
purpose: input.purpose,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
async tryResolveLive(input) {
|
|
115
|
+
const fetched = await this.fetchLive(input);
|
|
116
|
+
if (!fetched || fetched.isFallback) {
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
const compiled = this.compileBody(input.kind, fetched.body, input.variables);
|
|
120
|
+
const gate = (0, validationGate_1.runValidationGate)({
|
|
121
|
+
rawConfig: fetched.config,
|
|
122
|
+
requires: input.requires,
|
|
123
|
+
purpose: input.purpose,
|
|
124
|
+
});
|
|
125
|
+
if (!gate.valid) {
|
|
126
|
+
this.emitFallback(input, `live-${gate.reason}`);
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
name: input.name,
|
|
131
|
+
kind: input.kind,
|
|
132
|
+
text: compiled.text,
|
|
133
|
+
messages: compiled.messages,
|
|
134
|
+
config: gate.config,
|
|
135
|
+
model: gate.model,
|
|
136
|
+
version: fetched.version,
|
|
137
|
+
isFallback: false,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
tryResolveFallback(input) {
|
|
141
|
+
const entry = this.snapshot[input.name];
|
|
142
|
+
if (!entry) {
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
const compiled = this.compileBody(input.kind, input.kind === 'chat' ? entry.fallbackMessages : entry.fallbackText, input.variables);
|
|
146
|
+
const gate = (0, validationGate_1.runValidationGate)({
|
|
147
|
+
rawConfig: entry.config,
|
|
148
|
+
requires: input.requires,
|
|
149
|
+
purpose: input.purpose,
|
|
150
|
+
});
|
|
151
|
+
if (!gate.valid) {
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
this.emitFallback(input, 'snapshot-served');
|
|
155
|
+
return {
|
|
156
|
+
name: input.name,
|
|
157
|
+
kind: input.kind,
|
|
158
|
+
text: compiled.text,
|
|
159
|
+
messages: compiled.messages,
|
|
160
|
+
config: gate.config,
|
|
161
|
+
model: gate.model,
|
|
162
|
+
version: entry.version,
|
|
163
|
+
isFallback: true,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
async fetchLive(input) {
|
|
167
|
+
if (!this.promptClient) {
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
const options = this.buildFetchOptions({
|
|
171
|
+
label: input.labelOverride ?? input.label ?? this.defaultLabel,
|
|
172
|
+
version: input.versionOverride,
|
|
173
|
+
});
|
|
174
|
+
try {
|
|
175
|
+
if (input.kind === 'chat') {
|
|
176
|
+
const fetched = await this.promptClient.getChatPrompt(input.name, options);
|
|
177
|
+
return {
|
|
178
|
+
body: toPromptMessages(fetched.messages),
|
|
179
|
+
config: fetched.config,
|
|
180
|
+
version: fetched.version,
|
|
181
|
+
isFallback: fetched.isFallback,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
const fetched = await this.promptClient.getPrompt(input.name, options);
|
|
185
|
+
return {
|
|
186
|
+
body: fetched.prompt,
|
|
187
|
+
config: fetched.config,
|
|
188
|
+
version: fetched.version,
|
|
189
|
+
isFallback: fetched.isFallback,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
this.warnOnce(input.name, error);
|
|
194
|
+
return undefined;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
buildFetchOptions(options) {
|
|
198
|
+
if (options.version === undefined) {
|
|
199
|
+
return { label: options.label, cacheTtlSeconds: this.cacheTtlSeconds };
|
|
200
|
+
}
|
|
201
|
+
return { version: options.version, cacheTtlSeconds: this.cacheTtlSeconds };
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Substitutes variables into the prompt body. For a `chat` prompt every
|
|
205
|
+
* message's content is substituted and the roles are preserved; `text` is the
|
|
206
|
+
* messages concatenated (newline-joined), which the gate's unresolved-variable
|
|
207
|
+
* check and trace IO use. For a `text` prompt `messages` is empty.
|
|
208
|
+
*/
|
|
209
|
+
compileBody(kind, body, variables) {
|
|
210
|
+
if (kind === 'chat') {
|
|
211
|
+
const sourceMessages = Array.isArray(body) ? body : [];
|
|
212
|
+
const messages = sourceMessages.map((message) => ({
|
|
213
|
+
role: message.role,
|
|
214
|
+
content: this.substitute(message.content, variables),
|
|
215
|
+
}));
|
|
216
|
+
return {
|
|
217
|
+
text: messages.map((message) => message.content).join('\n'),
|
|
218
|
+
messages,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
const text = typeof body === 'string'
|
|
222
|
+
? this.substitute(body, variables)
|
|
223
|
+
: '';
|
|
224
|
+
return { text, messages: [] };
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Substitutes one variable at a time. The replacement is a function, not a
|
|
228
|
+
* string: a string replacement would let `$&`, `$$`, `` $` `` and `$'` inside
|
|
229
|
+
* a variable's value act as replacement patterns, so any user-authored text
|
|
230
|
+
* carrying them would silently rewrite itself into the prompt.
|
|
231
|
+
*/
|
|
232
|
+
substitute(text, variables) {
|
|
233
|
+
return Object.entries(variables).reduce((accumulator, [key, value]) => accumulator.replace(new RegExp(`{{\\s*${escapeRegExp(key)}\\s*}}`, 'g'), () => value), text);
|
|
234
|
+
}
|
|
235
|
+
emitFallback(input, reason) {
|
|
236
|
+
this.fallbackMetricEmitter({ promptName: input.name, reason });
|
|
237
|
+
}
|
|
238
|
+
warnOnce(name, error) {
|
|
239
|
+
if (this.hasWarnedThisProcess) {
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
this.hasWarnedThisProcess = true;
|
|
243
|
+
this.logger?.warn(PROMPT_FETCH_WARN_PREFIX, {
|
|
244
|
+
promptName: name,
|
|
245
|
+
error: error instanceof Error ? error.message : String(error),
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
exports.PromptRegistryRuntime = PromptRegistryRuntime;
|
|
250
|
+
function snapshotEntryNames(snapshot) {
|
|
251
|
+
return Object.values(snapshot).map((entry) => entry.name);
|
|
252
|
+
}
|
|
253
|
+
function escapeRegExp(value) {
|
|
254
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
255
|
+
}
|
|
256
|
+
function toPromptMessages(messages) {
|
|
257
|
+
return messages.flatMap((message) => (isKnownRole(message.role)
|
|
258
|
+
? [{ role: message.role, content: message.content }]
|
|
259
|
+
: []));
|
|
260
|
+
}
|
|
261
|
+
function isKnownRole(role) {
|
|
262
|
+
return CHAT_MESSAGE_ROLES.includes(role);
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=promptRegistry.runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptRegistry.runtime.js","sourceRoot":"","sources":["../../src/client/promptRegistry.runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type LLMPromptConfigParams } from '../client/llmConfig.schema';
|
|
2
|
+
/**
|
|
3
|
+
* A value a prompt variable may take at a call site. Numbers/booleans are
|
|
4
|
+
* stringified during compile (matching `promptBuilder`); the union keeps the
|
|
5
|
+
* generated `compile()` signatures ergonomic without widening to `unknown`.
|
|
6
|
+
*/
|
|
7
|
+
export type LLMVariableValue = string | number | boolean;
|
|
8
|
+
export type LLMPromptKind = 'text' | 'chat';
|
|
9
|
+
/**
|
|
10
|
+
* A role a chat-prompt message can carry. Mirrors the roles Langfuse chat
|
|
11
|
+
* prompts use; the v2 client maps `system` to the provider's instructions slot
|
|
12
|
+
* and `user`/`assistant` to the conversation, preserving the message structure
|
|
13
|
+
* the prompt declares (plan §1.2 "prompt owns message structure").
|
|
14
|
+
*/
|
|
15
|
+
export type LLMPromptMessageRole = 'system' | 'user' | 'assistant';
|
|
16
|
+
/**
|
|
17
|
+
* One compiled chat-prompt message. `content` has had its `{{variables}}`
|
|
18
|
+
* substituted already when it reaches a call site.
|
|
19
|
+
*/
|
|
20
|
+
export interface LLMPromptMessage {
|
|
21
|
+
role: LLMPromptMessageRole;
|
|
22
|
+
content: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The config shape stored in the generated snapshot. `provider` is a plain
|
|
26
|
+
* string here (not the `LLMProviders` enum) so the emitted JSON literal
|
|
27
|
+
* type-checks without an enum cast; the runtime gate re-parses it through the
|
|
28
|
+
* zod schema into the strict `LLMPromptConfig` before it is ever served.
|
|
29
|
+
*/
|
|
30
|
+
export interface LLMPromptConfigSnapshot {
|
|
31
|
+
provider: string;
|
|
32
|
+
model: string;
|
|
33
|
+
params?: LLMPromptConfigParams;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* One prompt's build-time snapshot, emitted by `npm run langfuse:generate` into
|
|
37
|
+
* the gitignored `langfusePrompts.generated.ts`. It is the outage fallback: the
|
|
38
|
+
* runtime registry serves it whenever a live fetch or config validation fails.
|
|
39
|
+
* Prompt variables are intentionally absent because their contract is owned by
|
|
40
|
+
* application code.
|
|
41
|
+
*
|
|
42
|
+
* `fallbackText` is the body for a `text` prompt; `fallbackMessages` is the
|
|
43
|
+
* role-tagged message list for a `chat` prompt. Exactly one is meaningful per
|
|
44
|
+
* `kind`; the other is left empty so the snapshot stays a plain JSON literal.
|
|
45
|
+
*/
|
|
46
|
+
export interface LLMPromptSnapshotEntry {
|
|
47
|
+
name: string;
|
|
48
|
+
kind: LLMPromptKind;
|
|
49
|
+
version: number;
|
|
50
|
+
labels: string[];
|
|
51
|
+
fallbackText: string;
|
|
52
|
+
fallbackMessages: LLMPromptMessage[];
|
|
53
|
+
config: LLMPromptConfigSnapshot;
|
|
54
|
+
}
|
|
55
|
+
export type LLMPromptSnapshot = Record<string, LLMPromptSnapshotEntry>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptSnapshot.typedefs.js","sourceRoot":"","sources":["../../src/client/promptSnapshot.typedefs.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one place a prompt variable becomes the string the prompt compiler
|
|
3
|
+
* substitutes. Both a code-supplied `variables` map and the arguments a parent
|
|
4
|
+
* model passes to a typed delegation tool go through it, so a variable a
|
|
5
|
+
* subagent receives from the model compiles exactly like one written in code.
|
|
6
|
+
*/
|
|
7
|
+
export declare function stringifyPromptVariables(variables: Record<string, unknown>): Record<string, string>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stringifyPromptVariables = stringifyPromptVariables;
|
|
4
|
+
/**
|
|
5
|
+
* The one place a prompt variable becomes the string the prompt compiler
|
|
6
|
+
* substitutes. Both a code-supplied `variables` map and the arguments a parent
|
|
7
|
+
* model passes to a typed delegation tool go through it, so a variable a
|
|
8
|
+
* subagent receives from the model compiles exactly like one written in code.
|
|
9
|
+
*/
|
|
10
|
+
function stringifyPromptVariables(variables) {
|
|
11
|
+
return Object.fromEntries(Object.entries(variables).map(([key, value]) => [key, String(value)]));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=promptVariables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptVariables.js","sourceRoot":"","sources":["../../src/client/promptVariables.ts"],"names":[],"mappings":";;AAMA,4DAMC;AAZD;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,SAAkC;IAElC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CACtE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type LLMPromptMessage } from '../client/promptSnapshot.typedefs';
|
|
2
|
+
import { type CompileFromSnapshotOptions } from '../client/snapshotRuntime.typedefs';
|
|
3
|
+
/**
|
|
4
|
+
* Compiles a `text` prompt straight from the build-time snapshot, substituting
|
|
5
|
+
* the call-site variables into `fallbackText`. This is the offline path the
|
|
6
|
+
* generated `compile<Prompt>()` helpers use: no Langfuse fetch, no validation
|
|
7
|
+
* gate, no cache — an unknown name compiles to an empty string rather than
|
|
8
|
+
* throwing, so a snapshot that lags a prompt rename degrades instead of
|
|
9
|
+
* crashing the caller.
|
|
10
|
+
*/
|
|
11
|
+
export declare function compileTextFromSnapshot(options: CompileFromSnapshotOptions): string;
|
|
12
|
+
/**
|
|
13
|
+
* The `chat` counterpart of `compileTextFromSnapshot`: substitutes into every
|
|
14
|
+
* message's content and preserves the roles the prompt declares. An unknown
|
|
15
|
+
* name compiles to an empty message list.
|
|
16
|
+
*/
|
|
17
|
+
export declare function compileMessagesFromSnapshot(options: CompileFromSnapshotOptions): LLMPromptMessage[];
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compileTextFromSnapshot = compileTextFromSnapshot;
|
|
4
|
+
exports.compileMessagesFromSnapshot = compileMessagesFromSnapshot;
|
|
5
|
+
/**
|
|
6
|
+
* Compiles a `text` prompt straight from the build-time snapshot, substituting
|
|
7
|
+
* the call-site variables into `fallbackText`. This is the offline path the
|
|
8
|
+
* generated `compile<Prompt>()` helpers use: no Langfuse fetch, no validation
|
|
9
|
+
* gate, no cache — an unknown name compiles to an empty string rather than
|
|
10
|
+
* throwing, so a snapshot that lags a prompt rename degrades instead of
|
|
11
|
+
* crashing the caller.
|
|
12
|
+
*/
|
|
13
|
+
function compileTextFromSnapshot(options) {
|
|
14
|
+
const entry = options.snapshot[options.name];
|
|
15
|
+
return substituteVariables(entry ? entry.fallbackText : '', options.variables);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The `chat` counterpart of `compileTextFromSnapshot`: substitutes into every
|
|
19
|
+
* message's content and preserves the roles the prompt declares. An unknown
|
|
20
|
+
* name compiles to an empty message list.
|
|
21
|
+
*/
|
|
22
|
+
function compileMessagesFromSnapshot(options) {
|
|
23
|
+
const entry = options.snapshot[options.name];
|
|
24
|
+
const messages = entry ? entry.fallbackMessages : [];
|
|
25
|
+
return messages.map((message) => ({
|
|
26
|
+
role: message.role,
|
|
27
|
+
content: substituteVariables(message.content, options.variables),
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Replaces every `{{ variable }}` occurrence (surrounding whitespace optional)
|
|
32
|
+
* with its value. The replacement is passed as a function so a value containing
|
|
33
|
+
* `$&`, `$$` or `` $` `` is inserted verbatim instead of being expanded as a
|
|
34
|
+
* `String.replace` substitution pattern.
|
|
35
|
+
*/
|
|
36
|
+
function substituteVariables(text, variables) {
|
|
37
|
+
return Object.entries(variables).reduce((compiled, [key, value]) => compiled.replace(new RegExp(`{{\\s*${escapeRegExp(key)}\\s*}}`, 'g'), () => String(value)), text);
|
|
38
|
+
}
|
|
39
|
+
function escapeRegExp(value) {
|
|
40
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=snapshotRuntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshotRuntime.js","sourceRoot":"","sources":["../../src/client/snapshotRuntime.ts"],"names":[],"mappings":";;AAcA,0DAMC;AAOD,kEAUC;AA/BD;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CACrC,OAAmC;IAEnC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;AACjF,CAAC;AAED;;;;GAIG;AACH,SAAgB,2BAA2B,CACzC,OAAmC;IAEnC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IAErD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC;KACjE,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAC1B,IAAY,EACZ,SAA2C;IAE3C,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CACrC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAC1C,IAAI,MAAM,CAAC,SAAS,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EACnD,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CACpB,EACD,IAAI,CACL,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC"}
|