├── .dockerignore
├── .editorconfig
├── .github
├── FUNDING.yml
└── workflows
│ └── build.yml
├── .gitignore
├── .readthedocs.yaml
├── BotSharp.sln
├── CONTRIBUTING.md
├── Directory.Build.props
├── Directory.Packages.props
├── IFunctionExecutor.cs
├── LICENSE
├── PizzaBot.sln
├── README.md
├── arts
├── BotSharp.gif
├── Icon.png
└── Logo.png
├── dockerfiles
├── .env
├── Readme.md
├── WebStarter.Dockerfile
├── appsettings.json
├── botsharp.json
├── docker-compose.infrastructure.override.yml
├── docker-compose.infrastructure.yml
├── docker-compose.yml
├── run-docker-compose.ps1
└── stop-docker-compose.ps1
├── docs
├── Makefile
├── Name-Entity Recognition(NER) Comparation.pdf
├── README.md
├── agent
│ ├── assets
│ │ ├── agent-creation.png
│ │ ├── agent-update.png
│ │ ├── conversation-creation.png
│ │ ├── conversation-send-message.png
│ │ └── routing-calling-stack.png
│ ├── hook.md
│ ├── intro.md
│ └── router.md
├── architecture
│ ├── agent-utility.md
│ ├── assets
│ │ ├── .$routing-redirection.drawio.bkp
│ │ ├── .$routing-redirection.drawio.dtmp
│ │ ├── account-creation.png
│ │ ├── account-token.png
│ │ ├── agent-utility
│ │ │ ├── add-utility.png
│ │ │ ├── agent-utility-code-structure.png
│ │ │ ├── agent-utility-example.png
│ │ │ ├── chat-window-demo.png
│ │ │ ├── dummy-http.png
│ │ │ ├── register-assembly.png
│ │ │ ├── router-utility-ui.png
│ │ │ ├── routing-arch.png
│ │ │ └── task-agent-utility-ui.png
│ │ ├── architecture.drawio
│ │ ├── botsharp_diagram.png
│ │ ├── llm_diagram.png
│ │ ├── overview.drawio
│ │ ├── routing-reasoner.png
│ │ ├── routing-reasoning.drawio
│ │ ├── routing-redirection.drawio
│ │ ├── routing-redirection.png
│ │ └── routing.drawio
│ ├── authentication.md
│ ├── data-persistence.md
│ ├── hooks.md
│ ├── logging.md
│ ├── plugin.md
│ └── routing.md
├── channels
│ ├── components.md
│ ├── intro.md
│ ├── messenger.rst
│ └── wechat.md
├── conf.py
├── conversation
│ ├── hook.md
│ ├── intro.md
│ └── state.md
├── index.rst
├── knowledge-base
│ ├── assets
│ │ ├── feed_knowledge_answer.png
│ │ └── feed_knowledge_pdf.png
│ ├── build-qa-bot.md
│ ├── similarity-search.md
│ ├── text-embedding.md
│ └── vector-database.md
├── llama-sharp
│ ├── assets
│ │ ├── check-llamasharp-version.png
│ │ ├── choose-llamasharp-as-provider.png
│ │ ├── click-test-button.png
│ │ ├── console-output-in-botsharp.png
│ │ ├── converstaion-examples.png
│ │ ├── edit-agent.png
│ │ └── install-llamasharp-plugin.png
│ ├── config-llamasharp.md
│ └── use-llamasharp-in-ui.md
├── llm
│ ├── few-shot-learning.md
│ ├── function.md
│ ├── prompt.md
│ ├── provider.md
│ └── template.md
├── make.bat
├── quick-start
│ ├── assets
│ │ ├── APIHome.png
│ │ ├── APIPostman.png
│ │ ├── BackendServiceHomeScreenshot.png
│ │ ├── BotSharp-UI-Router.png
│ │ ├── ChatbotUIHome.png
│ │ ├── NuGet-Local-Whisper.png
│ │ ├── PizzaBotSample1.png
│ │ ├── PizzaBotSample2.png
│ │ ├── PizzaBotSample3.png
│ │ ├── PizzaBotSample4.png
│ │ ├── Result-Local-Whisper.png
│ │ ├── Steps-Local-Whisper.png
│ │ └── overview.png
│ ├── get-started.md
│ ├── installation.md
│ └── overview.md
├── requirements.txt
├── static
│ ├── logos
│ │ ├── BotSharpEngine.jpg
│ │ └── Logo.png
│ └── screenshots
│ │ ├── BotSharp_arch.png
│ │ ├── agent-builder-agents.png
│ │ ├── agent-builder-conversations.png
│ │ └── web-live-chat.png
└── utilities
│ └── local-whisper.md
├── src
├── BotSharp.AppHost
│ ├── BotSharp.AppHost.csproj
│ ├── Program.cs
│ ├── Properties
│ │ └── launchSettings.json
│ ├── appsettings.Development.json
│ └── appsettings.json
├── BotSharp.ServiceDefaults
│ ├── BotSharp.ServiceDefaults.csproj
│ └── Extensions.cs
├── Infrastructure
│ ├── BotSharp.Abstraction.ComputerUse
│ │ ├── BotSharp.Abstraction.ComputerUse.csproj
│ │ ├── MLTasks
│ │ │ ├── IComputerUse.cs
│ │ │ └── IScreenshot.cs
│ │ ├── Models
│ │ │ ├── ComputerUseArgs.cs
│ │ │ └── ComputerUseOutput.cs
│ │ └── Using.cs
│ ├── BotSharp.Abstraction
│ │ ├── Agents
│ │ │ ├── AgentHookBase.cs
│ │ │ ├── Constants
│ │ │ │ └── LlmConstant.cs
│ │ │ ├── Enums
│ │ │ │ ├── AgentField.cs
│ │ │ │ ├── AgentRole.cs
│ │ │ │ ├── AgentType.cs
│ │ │ │ └── BuiltInAgentId.cs
│ │ │ ├── IAgentHook.cs
│ │ │ ├── IAgentService.cs
│ │ │ ├── IAgentUtilityHook.cs
│ │ │ ├── Models
│ │ │ │ ├── Agent.cs
│ │ │ │ ├── AgentKnowledgeBase.cs
│ │ │ │ ├── AgentLlmConfig.cs
│ │ │ │ ├── AgentResponse.cs
│ │ │ │ ├── AgentRule.cs
│ │ │ │ ├── AgentTemplate.cs
│ │ │ │ ├── AgentUtility.cs
│ │ │ │ ├── ChannelInstruction.cs
│ │ │ │ ├── MCPTool.cs
│ │ │ │ └── UserAgent.cs
│ │ │ └── Settings
│ │ │ │ └── AgentSettings.cs
│ │ ├── BotSharp.Abstraction.csproj
│ │ ├── Browsing
│ │ │ ├── Enums
│ │ │ │ └── BroswerActionEnum.cs
│ │ │ ├── IWebBrowser.cs
│ │ │ ├── IWebDriverHook.cs
│ │ │ ├── IWebPageResponseHook.cs
│ │ │ ├── Models
│ │ │ │ ├── BrowserActionArgs.cs
│ │ │ │ ├── BrowserActionParams.cs
│ │ │ │ ├── BrowserActionResult.cs
│ │ │ │ ├── BrowsingContextIn.cs
│ │ │ │ ├── ElementActionArgs.cs
│ │ │ │ ├── ElementLocatingArgs.cs
│ │ │ │ ├── ElementPosition.cs
│ │ │ │ ├── HttpRequestParams.cs
│ │ │ │ ├── MessageInfo.cs
│ │ │ │ ├── PageActionArgs.cs
│ │ │ │ ├── WebPageResponseData.cs
│ │ │ │ └── WebPageResponseFilter.cs
│ │ │ └── Settings
│ │ │ │ └── WebBrowsingSettings.cs
│ │ ├── Conversations
│ │ │ ├── ConversationHookBase.cs
│ │ │ ├── Dtos
│ │ │ │ ├── ChatResponseDto.cs
│ │ │ │ └── ConversationDto.cs
│ │ │ ├── Enums
│ │ │ │ ├── ConversationChannel.cs
│ │ │ │ ├── ConversationStatus.cs
│ │ │ │ ├── MessageTypeName.cs
│ │ │ │ ├── StateDataType.cs
│ │ │ │ └── StateSource.cs
│ │ │ ├── IConversationHook.cs
│ │ │ ├── IConversationProgressService.cs
│ │ │ ├── IConversationService.cs
│ │ │ ├── IConversationStateService.cs
│ │ │ ├── IConversationStorage.cs
│ │ │ ├── ITokenStatistics.cs
│ │ │ ├── Models
│ │ │ │ ├── Attachment.cs
│ │ │ │ ├── Conversation.cs
│ │ │ │ ├── ConversationBreakpoint.cs
│ │ │ │ ├── ConversationContext.cs
│ │ │ │ ├── ConversationSenderActionModel.cs
│ │ │ │ ├── ConversationState.cs
│ │ │ │ ├── IncomingMessageModel.cs
│ │ │ │ ├── PostbackMessageModel.cs
│ │ │ │ ├── RoleDialogModel.cs
│ │ │ │ ├── StateChangeModel.cs
│ │ │ │ ├── StateKeyValue.cs
│ │ │ │ ├── TokenStatsModel.cs
│ │ │ │ ├── TruncateMessageRequest.cs
│ │ │ │ └── UpdateMessageRequest.cs
│ │ │ └── Settings
│ │ │ │ ├── ConversationSetting.cs
│ │ │ │ └── RateLimitSetting.cs
│ │ ├── Crontab
│ │ │ ├── ICrontabHook.cs
│ │ │ ├── ICrontabService.cs
│ │ │ ├── ICrontabSource.cs
│ │ │ ├── Models
│ │ │ │ ├── CrontabItem.cs
│ │ │ │ ├── CrontabItemFilter.cs
│ │ │ │ ├── ScheduleTaskArgs.cs
│ │ │ │ └── TaskWaitArgs.cs
│ │ │ └── Settings
│ │ │ │ └── CrontabSettings.cs
│ │ ├── Evaluations
│ │ │ ├── IEvaluatingService.cs
│ │ │ ├── IExecutionLogger.cs
│ │ │ ├── Models
│ │ │ │ ├── EvaluationRequest.cs
│ │ │ │ ├── EvaluationResult.cs
│ │ │ │ └── SimulationResult.cs
│ │ │ └── Settings
│ │ │ │ └── EvaluatorSetting.cs
│ │ ├── Files
│ │ │ ├── Constants
│ │ │ │ └── FileConstants.cs
│ │ │ ├── Converters
│ │ │ │ └── IPdf2ImageConverter.cs
│ │ │ ├── Enums
│ │ │ │ ├── FileSourceType.cs
│ │ │ │ └── FileStorageEnum.cs
│ │ │ ├── FileCoreSettings.cs
│ │ │ ├── IFileInstructService.cs
│ │ │ ├── IFileStorageService.cs
│ │ │ ├── Models
│ │ │ │ ├── BotSharpFile.cs
│ │ │ │ ├── ExternalFileModel.cs
│ │ │ │ ├── FileBase.cs
│ │ │ │ ├── FileBinaryDataModel.cs
│ │ │ │ ├── FileDataModel.cs
│ │ │ │ ├── FileInformation.cs
│ │ │ │ ├── FileSelectContext.cs
│ │ │ │ ├── ImageGeneration.cs
│ │ │ │ ├── InstructFileModel.cs
│ │ │ │ ├── KnowledgeFileModel.cs
│ │ │ │ ├── MessageFileModel.cs
│ │ │ │ └── SelectFileOptions.cs
│ │ │ └── Utilities
│ │ │ │ └── FileUtility.cs
│ │ ├── Functions
│ │ │ ├── IFunctionCallback.cs
│ │ │ └── Models
│ │ │ │ ├── FunctionCallFromLlm.cs
│ │ │ │ ├── FunctionCallingResponse.cs
│ │ │ │ ├── FunctionDef.cs
│ │ │ │ ├── FunctionParametersDef.cs
│ │ │ │ └── ParameterPropertyDef.cs
│ │ ├── Google
│ │ │ ├── Models
│ │ │ │ ├── GoogleAddressResult.cs
│ │ │ │ └── GoogleVideoResult.cs
│ │ │ └── Settings
│ │ │ │ └── GoogleApiSettings.cs
│ │ ├── Graph
│ │ │ ├── IGraphDb.cs
│ │ │ └── Models
│ │ │ │ ├── GraphSearchData.cs
│ │ │ │ ├── GraphSearchOptions.cs
│ │ │ │ └── GraphSearchResult.cs
│ │ ├── Hooks
│ │ │ ├── HookProvider.cs
│ │ │ └── IHookBase.cs
│ │ ├── Http
│ │ │ └── IHttpRequestHook.cs
│ │ ├── Infrastructures
│ │ │ ├── Attributes
│ │ │ │ └── BotSharpAuthAttribute.cs
│ │ │ ├── Enums
│ │ │ │ ├── CacheType.cs
│ │ │ │ ├── EventPriority.cs
│ │ │ │ ├── LanguageType.cs
│ │ │ │ └── StateConst.cs
│ │ │ ├── Events
│ │ │ │ ├── IEventPublisher.cs
│ │ │ │ └── IEventSubscriber.cs
│ │ │ ├── HookEmitOption.cs
│ │ │ ├── HookEmittedResult.cs
│ │ │ ├── ICacheKey.cs
│ │ │ ├── ICacheService.cs
│ │ │ ├── IDistributedLocker.cs
│ │ │ ├── SharpCacheAttribute.cs
│ │ │ └── SharpCacheSettings.cs
│ │ ├── Instructs
│ │ │ ├── IInstructHook.cs
│ │ │ ├── IInstructService.cs
│ │ │ ├── InstructHookBase.cs
│ │ │ ├── Models
│ │ │ │ ├── ExecuteTemplateArgs.cs
│ │ │ │ ├── InstructOptions.cs
│ │ │ │ ├── InstructResponseModel.cs
│ │ │ │ └── InstructResult.cs
│ │ │ └── Settings
│ │ │ │ └── InstructionSettings.cs
│ │ ├── Interpreters
│ │ │ ├── Models
│ │ │ │ └── InterpretationRequest.cs
│ │ │ └── Settings
│ │ │ │ └── InterpreterSettings.cs
│ │ ├── Knowledges
│ │ │ ├── Enums
│ │ │ │ ├── KnowledgeCollectionName.cs
│ │ │ │ ├── KnowledgeCollectionType.cs
│ │ │ │ ├── KnowledgeDocSource.cs
│ │ │ │ ├── KnowledgeDocType.cs
│ │ │ │ └── KnowledgePayloadName.cs
│ │ │ ├── Helpers
│ │ │ │ └── TextChopper.cs
│ │ │ ├── IKnowledgeHook.cs
│ │ │ ├── IKnowledgeService.cs
│ │ │ ├── IPaddleOcrConverter.cs
│ │ │ ├── IPdf2TextConverter.cs
│ │ │ ├── Models
│ │ │ │ ├── ChunkOption.cs
│ │ │ │ ├── ExtractedKnowledge.cs
│ │ │ │ ├── KnowledgeChunk.cs
│ │ │ │ ├── KnowledgeCreationModel.cs
│ │ │ │ ├── KnowledgeDocMetaData.cs
│ │ │ │ ├── KnowledgeFileFilter.cs
│ │ │ │ └── UploadKnowledgeResponse.cs
│ │ │ └── Settings
│ │ │ │ └── KnowledgeBaseSettings.cs
│ │ ├── Loggers
│ │ │ ├── Enums
│ │ │ │ └── ContentLogSource.cs
│ │ │ ├── IContentGeneratingHook.cs
│ │ │ ├── Models
│ │ │ │ ├── AgentQueueChangedLogModel.cs
│ │ │ │ ├── ContentLogInputModel.cs
│ │ │ │ ├── ContentLogOutputModel.cs
│ │ │ │ ├── ConversationStateLogModel.cs
│ │ │ │ ├── InstructionLogModel.cs
│ │ │ │ ├── LlmCompletionLog.cs
│ │ │ │ └── StateChangeOutputModel.cs
│ │ │ └── Services
│ │ │ │ └── ILoggerService.cs
│ │ ├── MCP
│ │ │ ├── Models
│ │ │ │ ├── McpServerConfigModel.cs
│ │ │ │ └── McpServerOptionModel.cs
│ │ │ └── Services
│ │ │ │ └── IMcpService.cs
│ │ ├── MLTasks
│ │ │ ├── IAudioSynthesis.cs
│ │ │ ├── IAudioTranscription.cs
│ │ │ ├── IChatCompletion.cs
│ │ │ ├── IImageCompletion.cs
│ │ │ ├── ILlmProviderService.cs
│ │ │ ├── IRealTimeCompletion.cs
│ │ │ ├── ITextCompletion.cs
│ │ │ ├── ITextEmbedding.cs
│ │ │ └── Settings
│ │ │ │ ├── LlmConfigOptions.cs
│ │ │ │ ├── LlmModelSetting.cs
│ │ │ │ └── LlmProviderSetting.cs
│ │ ├── Messaging
│ │ │ ├── BotSharpMessageParser.cs
│ │ │ ├── Enums
│ │ │ │ ├── EditorTypeEnum.cs
│ │ │ │ ├── RichTypeEnum.cs
│ │ │ │ ├── SenderActionEnum.cs
│ │ │ │ └── TemplateTypeEnum.cs
│ │ │ ├── IRichContentService.cs
│ │ │ ├── IRichMessage.cs
│ │ │ ├── ITemplateMessage.cs
│ │ │ ├── JsonConverters
│ │ │ │ ├── RichContentJsonConverter .cs
│ │ │ │ └── TemplateMessageJsonConverter.cs
│ │ │ └── Models
│ │ │ │ └── RichContent
│ │ │ │ ├── ElementAction.cs
│ │ │ │ ├── ElementButton.cs
│ │ │ │ ├── QuickReplyElement.cs
│ │ │ │ ├── QuickReplyMessage.cs
│ │ │ │ ├── Recipient.cs
│ │ │ │ ├── RichContent.cs
│ │ │ │ ├── SenderActionMessage.cs
│ │ │ │ ├── Template
│ │ │ │ ├── ButtonTemplateMessage.cs
│ │ │ │ ├── CouponTemplateMessage.cs
│ │ │ │ ├── GenericTemplateMessage.cs
│ │ │ │ ├── MultiSelectTemplateMessage.cs
│ │ │ │ └── ProductTemplateMessage.cs
│ │ │ │ └── TextMessage.cs
│ │ ├── Models
│ │ │ ├── AiModel.cs
│ │ │ ├── ConversationSummaryModel.cs
│ │ │ ├── ITrackableMessage.cs
│ │ │ ├── IdName.cs
│ │ │ ├── KeyValue.cs
│ │ │ ├── MessageConfig.cs
│ │ │ ├── MessageState.cs
│ │ │ └── NameDesc.cs
│ │ ├── Options
│ │ │ └── BotSharpOptions.cs
│ │ ├── Planning
│ │ │ ├── IExecutor.cs
│ │ │ ├── IPlanningHook.cs
│ │ │ └── ITaskPlanner.cs
│ │ ├── Plugins
│ │ │ ├── IBotSharpAppPlugin.cs
│ │ │ ├── IBotSharpPlugin.cs
│ │ │ ├── Models
│ │ │ │ ├── PluginConfig.cs
│ │ │ │ ├── PluginDef.cs
│ │ │ │ ├── PluginFilter.cs
│ │ │ │ └── PluginMenuDef.cs
│ │ │ ├── PluginDependencyAttribute.cs
│ │ │ └── PluginLoaderSettings.cs
│ │ ├── Processors
│ │ │ ├── IBaseProcessor.cs
│ │ │ └── Models
│ │ │ │ └── LlmBaseRequest.cs
│ │ ├── Realtime
│ │ │ ├── Enums
│ │ │ │ └── StreamChannelStatus.cs
│ │ │ ├── IRealtimeHook.cs
│ │ │ ├── IRealtimeHub.cs
│ │ │ ├── IStreamChannel.cs
│ │ │ └── Models
│ │ │ │ ├── ModelResponseEvent.cs
│ │ │ │ ├── ModelResponseMediaEvent.cs
│ │ │ │ ├── ModelTurnDetection.cs
│ │ │ │ ├── RealtimeHubConnection.cs
│ │ │ │ ├── RealtimeModelSettings.cs
│ │ │ │ ├── RealtimeSession.cs
│ │ │ │ ├── Session
│ │ │ │ ├── ChatSessionOptions.cs
│ │ │ │ └── ChatSessionUpdate.cs
│ │ │ │ ├── StreamReceiveResult.cs
│ │ │ │ └── TranscriptionData.cs
│ │ ├── Repositories
│ │ │ ├── Enums
│ │ │ │ └── RepositoryEnum.cs
│ │ │ ├── Filters
│ │ │ │ ├── AgentFilter.cs
│ │ │ │ ├── AgentTaskFilter.cs
│ │ │ │ ├── ConversationFilter.cs
│ │ │ │ ├── ConversationLogFilter.cs
│ │ │ │ ├── ConversationStateKeysFilter.cs
│ │ │ │ ├── InstructLogFilter.cs
│ │ │ │ ├── InstructLogKeysFilter.cs
│ │ │ │ ├── RoleFilter.cs
│ │ │ │ └── UserFilter.cs
│ │ │ ├── IBotSharpRepository.cs
│ │ │ ├── IBotSharpTable.cs
│ │ │ ├── Models
│ │ │ │ └── DialogContentUpdateModel.cs
│ │ │ ├── Records
│ │ │ │ ├── AgentRecord.cs
│ │ │ │ ├── ConversationRecord.cs
│ │ │ │ ├── RecordBase.cs
│ │ │ │ ├── RoutingItemRecord.cs
│ │ │ │ ├── RoutingProfileRecord.cs
│ │ │ │ ├── UserAgentRecord.cs
│ │ │ │ └── UserRecord.cs
│ │ │ └── Settings
│ │ │ │ └── BotSharpDatabaseSettings.cs
│ │ ├── Roles
│ │ │ ├── IRoleService.cs
│ │ │ └── Models
│ │ │ │ ├── Role.cs
│ │ │ │ ├── RoleAgent.cs
│ │ │ │ └── RoleAgentAction.cs
│ │ ├── Routing
│ │ │ ├── Enums
│ │ │ │ ├── RoutingMode.cs
│ │ │ │ └── RuleType.cs
│ │ │ ├── Executor
│ │ │ │ └── IFunctionExecutor.cs
│ │ │ ├── IRoutingContext.cs
│ │ │ ├── IRoutingHook.cs
│ │ │ ├── IRoutingService.cs
│ │ │ ├── Models
│ │ │ │ ├── DecomposedStep.cs
│ │ │ │ ├── FallbackArgs.cs
│ │ │ │ ├── ResponseUserArgs.cs
│ │ │ │ ├── RoutableAgent.cs
│ │ │ │ ├── RoutingArgs.cs
│ │ │ │ ├── RoutingHandlerDef.cs
│ │ │ │ └── RoutingRule.cs
│ │ │ ├── Reasoning
│ │ │ │ └── IRoutingReasoner.cs
│ │ │ ├── RoutingHandlerBase.cs
│ │ │ └── Settings
│ │ │ │ └── RoutingSettings.cs
│ │ ├── Rules
│ │ │ ├── IRuleAction.cs
│ │ │ ├── IRuleConfig.cs
│ │ │ ├── IRuleCriteria.cs
│ │ │ ├── IRuleEngine.cs
│ │ │ └── IRuleTrigger.cs
│ │ ├── Settings
│ │ │ ├── ISettingService.cs
│ │ │ └── SettingsMeta.cs
│ │ ├── Shared
│ │ │ └── IHaveServiceProvider.cs
│ │ ├── SideCar
│ │ │ ├── Attributes
│ │ │ │ └── SideCarAttribute.cs
│ │ │ └── IConversationSideCar.cs
│ │ ├── Statistics
│ │ │ ├── Enums
│ │ │ │ ├── StatsInterval.cs
│ │ │ │ ├── StatsMetric.cs
│ │ │ │ └── StatsOperation.cs
│ │ │ ├── Models
│ │ │ │ ├── BotSharpStats.cs
│ │ │ │ └── BotSharpStatsDelta.cs
│ │ │ ├── Services
│ │ │ │ └── IBotSharpStatsService.cs
│ │ │ └── Settings
│ │ │ │ └── StatisticsSettings.cs
│ │ ├── Tasks
│ │ │ ├── Enums
│ │ │ │ └── TaskStatus.cs
│ │ │ ├── IAgentTaskService.cs
│ │ │ ├── ITaskFeeder.cs
│ │ │ └── Models
│ │ │ │ └── AgentTask.cs
│ │ ├── Templating
│ │ │ ├── Constants
│ │ │ │ └── TemplateRenderConstant.cs
│ │ │ ├── IResponseTemplateService.cs
│ │ │ └── ITemplateRender.cs
│ │ ├── Translation
│ │ │ ├── Attributes
│ │ │ │ └── TranslateAttribute.cs
│ │ │ ├── ITranslationService.cs
│ │ │ └── Models
│ │ │ │ ├── TranslationInput.cs
│ │ │ │ ├── TranslationMemory.cs
│ │ │ │ ├── TranslationMemoryQuery.cs
│ │ │ │ ├── TranslationOutput.cs
│ │ │ │ ├── TranslationRequestModel.cs
│ │ │ │ └── TranslationResponseModel.cs
│ │ ├── Users
│ │ │ ├── Dtos
│ │ │ │ └── UserDto.cs
│ │ │ ├── Enums
│ │ │ │ ├── UserAction.cs
│ │ │ │ ├── UserConstant.cs
│ │ │ │ ├── UserPermission.cs
│ │ │ │ ├── UserRole.cs
│ │ │ │ ├── UserSource.cs
│ │ │ │ └── UserType.cs
│ │ │ ├── IAuthenticationHook.cs
│ │ │ ├── IUserIdentity.cs
│ │ │ ├── IUserService.cs
│ │ │ ├── Models
│ │ │ │ ├── Dashboard.cs
│ │ │ │ ├── Token.cs
│ │ │ │ ├── User.cs
│ │ │ │ ├── UserActivationModel.cs
│ │ │ │ ├── UserAgentAction.cs
│ │ │ │ └── UserAuthorization.cs
│ │ │ └── Settings
│ │ │ │ └── AccountSetting.cs
│ │ ├── Using.cs
│ │ ├── Utilities
│ │ │ ├── DateTimePagination.cs
│ │ │ ├── EnumHelper.cs
│ │ │ ├── GuidExtensitions.cs
│ │ │ ├── JsonExtensions.cs
│ │ │ ├── ListExtenstions.cs
│ │ │ ├── MathExt.cs
│ │ │ ├── Pagination.cs
│ │ │ ├── StringExtensions.cs
│ │ │ └── StringIdPagination.cs
│ │ └── VectorStorage
│ │ │ ├── Enums
│ │ │ └── VectorDataSource.cs
│ │ │ ├── Extensions
│ │ │ └── VectorStorageExtension.cs
│ │ │ ├── IVectorDb.cs
│ │ │ └── Models
│ │ │ ├── Snapshot
│ │ │ └── VectorCollectionSnapshot.cs
│ │ │ ├── VectorCollectionConfigFilter.cs
│ │ │ ├── VectorCollectionConfigModel.cs
│ │ │ ├── VectorCollectionData.cs
│ │ │ ├── VectorCollectionDetails.cs
│ │ │ ├── VectorCreateModel.cs
│ │ │ ├── VectorFilter.cs
│ │ │ ├── VectorSearchOptions.cs
│ │ │ ├── VectorSearchResult.cs
│ │ │ └── VectorUpdateModel.cs
│ ├── BotSharp.Core.Crontab
│ │ ├── BotSharp.Core.Crontab.csproj
│ │ ├── CrontabPlugin.cs
│ │ ├── Enum
│ │ │ └── UtilityName.cs
│ │ ├── Functions
│ │ │ ├── ScheduleTaskFn.cs
│ │ │ └── TaskWaitFn.cs
│ │ ├── Hooks
│ │ │ └── CrontabUtilityHook.cs
│ │ ├── Services
│ │ │ ├── CrontabEventSubscription.cs
│ │ │ ├── CrontabService.cs
│ │ │ └── CrontabWatcher.cs
│ │ ├── Using.cs
│ │ └── data
│ │ │ └── agents
│ │ │ └── 6745151e-6d46-4a02-8de4-1c4f21c7da95
│ │ │ ├── functions
│ │ │ ├── util-crontab-schedule_task.json
│ │ │ └── util-crontab-task_wait.json
│ │ │ └── templates
│ │ │ └── util-crontab-schedule_task.fn.liquid
│ ├── BotSharp.Core.Realtime
│ │ ├── BotSharp.Core.Realtime.csproj
│ │ ├── Hooks
│ │ │ └── RealtimeConversationHook.cs
│ │ ├── RealtimePlugin.cs
│ │ ├── Services
│ │ │ ├── RealtimeHub.cs
│ │ │ └── WaveStreamChannel.cs
│ │ └── Using.cs
│ ├── BotSharp.Core.Rules
│ │ ├── BotSharp.Core.Rules.csproj
│ │ ├── Engines
│ │ │ └── RuleEngine.cs
│ │ ├── RulesPlugin.cs
│ │ ├── Using.cs
│ │ └── data
│ │ │ └── agents
│ │ │ └── 201e49a2-40b3-4ccd-b8cc-2476565a1b40
│ │ │ ├── agent.json
│ │ │ ├── instructions
│ │ │ └── instruction.liquid
│ │ │ └── templates
│ │ │ └── criteria_check.liquid
│ ├── BotSharp.Core.SideCar
│ │ ├── BotSharp.Core.SideCar.csproj
│ │ ├── BotSharpSideCarPlugin.cs
│ │ ├── Services
│ │ │ └── BotSharpConversationSideCar.cs
│ │ ├── Settings
│ │ │ └── SideCarSettings.cs
│ │ └── Using.cs
│ ├── BotSharp.Core
│ │ ├── Agents
│ │ │ ├── AgentPlugin.cs
│ │ │ ├── Hooks
│ │ │ │ └── BasicAgentHook.cs
│ │ │ └── Services
│ │ │ │ ├── AgentService.CreateAgent.cs
│ │ │ │ ├── AgentService.DeleteAgent.cs
│ │ │ │ ├── AgentService.GetAgents.cs
│ │ │ │ ├── AgentService.GetPlugin.cs
│ │ │ │ ├── AgentService.LoadAgent.cs
│ │ │ │ ├── AgentService.RefreshAgents.cs
│ │ │ │ ├── AgentService.Rendering.cs
│ │ │ │ ├── AgentService.UpdateAgent.cs
│ │ │ │ └── AgentService.cs
│ │ ├── BotSharp.Core.csproj
│ │ ├── BotSharp.Core.csproj.user
│ │ ├── BotSharpCoreExtensions.cs
│ │ ├── Conversations
│ │ │ ├── ConversationPlugin.cs
│ │ │ └── Services
│ │ │ │ ├── ConversationProgressService.cs
│ │ │ │ ├── ConversationService.Migration.cs
│ │ │ │ ├── ConversationService.SendMessage.cs
│ │ │ │ ├── ConversationService.Summary.cs
│ │ │ │ ├── ConversationService.TruncateMessage.cs
│ │ │ │ ├── ConversationService.UpdateBreakpoint.cs
│ │ │ │ ├── ConversationService.cs
│ │ │ │ ├── ConversationStateService.cs
│ │ │ │ ├── ConversationStorage.cs
│ │ │ │ └── TokenStatistics.cs
│ │ ├── Demo
│ │ │ └── Functions
│ │ │ │ └── GetWeatherFn.cs
│ │ ├── Evaluations
│ │ │ ├── EvaluationConversationHook.cs
│ │ │ ├── EvaluationPlugin.cs
│ │ │ ├── ExecutionLogger.cs
│ │ │ └── Services
│ │ │ │ ├── EvaluatingService.Evaluate.cs
│ │ │ │ └── EvaluatingService.cs
│ │ ├── Files
│ │ │ ├── FileCorePlugin.cs
│ │ │ └── Services
│ │ │ │ ├── Instruct
│ │ │ │ ├── FileInstructService.Audio.cs
│ │ │ │ ├── FileInstructService.Image.cs
│ │ │ │ ├── FileInstructService.Pdf.cs
│ │ │ │ ├── FileInstructService.SelectFile.cs
│ │ │ │ └── FileInstructService.cs
│ │ │ │ └── Storage
│ │ │ │ ├── LocalFileStorageService.Audio.cs
│ │ │ │ ├── LocalFileStorageService.Common.cs
│ │ │ │ ├── LocalFileStorageService.Conversation.cs
│ │ │ │ ├── LocalFileStorageService.KnowledgeBase.cs
│ │ │ │ ├── LocalFileStorageService.User.cs
│ │ │ │ └── LocalFileStorageService.cs
│ │ ├── Infrastructures
│ │ │ ├── Cache
│ │ │ │ ├── MemoryCacheService.cs
│ │ │ │ └── RedisCacheService.cs
│ │ │ ├── CompletionProvider.cs
│ │ │ ├── DistributedLocker.cs
│ │ │ ├── Events
│ │ │ │ ├── RedisPublisher.cs
│ │ │ │ └── RedisSubscriber.cs
│ │ │ ├── HookEmitter.cs
│ │ │ ├── LlmProviderPlugin.cs
│ │ │ ├── LlmProviderService.cs
│ │ │ ├── SettingService.cs
│ │ │ ├── Utilities.cs
│ │ │ └── Websocket
│ │ │ │ ├── AsyncWebsocketDataCollectionResult.cs
│ │ │ │ ├── AsyncWebsocketDataResultEnumerator.cs
│ │ │ │ └── WebsocketPipelineResponse.cs
│ │ ├── Instructs
│ │ │ ├── Functions
│ │ │ │ └── ExecuteTemplateFn.cs
│ │ │ ├── Hooks
│ │ │ │ └── InstructUtilityHook.cs
│ │ │ ├── InsturctionPlugin.cs
│ │ │ └── Services
│ │ │ │ ├── InstructService.Execute.cs
│ │ │ │ ├── InstructService.Instruct.cs
│ │ │ │ └── InstructService.cs
│ │ ├── Loggers
│ │ │ ├── LoggerPlugin.cs
│ │ │ └── Services
│ │ │ │ ├── LoggerService.Conversation.cs
│ │ │ │ ├── LoggerService.Instruction.cs
│ │ │ │ └── LoggerService.cs
│ │ ├── MCP
│ │ │ ├── BotSharpMCPExtensions.cs
│ │ │ ├── Helpers
│ │ │ │ └── AiFunctionHelper.cs
│ │ │ ├── Hooks
│ │ │ │ └── MCPToolAgentHook.cs
│ │ │ ├── Managers
│ │ │ │ └── McpClientManager.cs
│ │ │ ├── Services
│ │ │ │ └── McpService.cs
│ │ │ └── Settings
│ │ │ │ └── MCPSettings.cs
│ │ ├── Messaging
│ │ │ └── RichContentService.cs
│ │ ├── Plugins
│ │ │ └── PluginLoader.cs
│ │ ├── Processors
│ │ │ └── ProcessorFactory.cs
│ │ ├── Repository
│ │ │ ├── BotSharpDbContext.cs
│ │ │ ├── DataContextHelper.cs
│ │ │ ├── FileRepository
│ │ │ │ ├── FileRepository.Agent.cs
│ │ │ │ ├── FileRepository.AgentTask.cs
│ │ │ │ ├── FileRepository.Conversation.cs
│ │ │ │ ├── FileRepository.Crontab.cs
│ │ │ │ ├── FileRepository.KnowledgeBase.cs
│ │ │ │ ├── FileRepository.Log.cs
│ │ │ │ ├── FileRepository.Plugin.cs
│ │ │ │ ├── FileRepository.Role.cs
│ │ │ │ ├── FileRepository.Stats.cs
│ │ │ │ ├── FileRepository.Translation.cs
│ │ │ │ ├── FileRepository.User.cs
│ │ │ │ └── FileRepository.cs
│ │ │ └── RepositoryPlugin.cs
│ │ ├── Roles
│ │ │ └── Services
│ │ │ │ └── RoleService.cs
│ │ ├── Routing
│ │ │ ├── Executor
│ │ │ │ ├── DummyFunctionExecutor.cs
│ │ │ │ ├── FunctionCallbackExecutor.cs
│ │ │ │ ├── FunctionExecutorFactory.cs
│ │ │ │ └── MCPToolExecutor.cs
│ │ │ ├── Functions
│ │ │ │ ├── FallbackToRouterFn.cs
│ │ │ │ ├── HumanInterventionNeededFn.cs
│ │ │ │ ├── ResponseToUserFn.cs
│ │ │ │ └── RouteToAgentFn.cs
│ │ │ ├── Hooks
│ │ │ │ ├── RoutingAgentHook.cs
│ │ │ │ └── RoutingUtilityHook.cs
│ │ │ ├── Reasoning
│ │ │ │ ├── HFReasoner.cs
│ │ │ │ ├── InstructExecutor.cs
│ │ │ │ ├── NaiveReasoner.cs
│ │ │ │ ├── OneStepForwardReasoner.cs
│ │ │ │ └── ReasonerHelper.cs
│ │ │ ├── RoutingContext.cs
│ │ │ ├── RoutingPlugin.cs
│ │ │ ├── RoutingService.GetConversationContent.cs
│ │ │ ├── RoutingService.HasMissingRequiredField.cs
│ │ │ ├── RoutingService.InstructLoop.cs
│ │ │ ├── RoutingService.InvokeAgent.cs
│ │ │ ├── RoutingService.InvokeFunction.cs
│ │ │ └── RoutingService.cs
│ │ ├── Session
│ │ │ ├── BotSharpRealtimeSession.cs
│ │ │ └── LlmRealtimeSession.cs
│ │ ├── Statistics
│ │ │ └── Services
│ │ │ │ └── BotSharpStatsService.cs
│ │ ├── Tasks
│ │ │ ├── Services
│ │ │ │ └── AgentTaskService.cs
│ │ │ └── TaskPlugin.cs
│ │ ├── Templating
│ │ │ ├── ResponseTemplateService.cs
│ │ │ └── TemplateRender.cs
│ │ ├── Translation
│ │ │ ├── TranslationPlugin.cs
│ │ │ ├── TranslationResponseHook.cs
│ │ │ └── TranslationService.cs
│ │ ├── Users
│ │ │ └── Services
│ │ │ │ ├── UserIdentity.cs
│ │ │ │ └── UserService.cs
│ │ ├── Using.cs
│ │ ├── build
│ │ │ └── BotSharp.Core.targets
│ │ └── data
│ │ │ ├── agents
│ │ │ ├── 01dcc3e5-0af7-49e6-ad7a-a760bd12dc4b
│ │ │ │ ├── agent.json
│ │ │ │ ├── functions
│ │ │ │ │ └── human_intervention_needed.json
│ │ │ │ └── instructions
│ │ │ │ │ └── instruction.liquid
│ │ │ ├── 01e2fc5c-2c89-4ec7-8470-7688608b496c
│ │ │ │ ├── agent.json
│ │ │ │ ├── functions
│ │ │ │ │ └── get_weather.json
│ │ │ │ └── instructions
│ │ │ │ │ └── instruction.liquid
│ │ │ ├── 01fcc3e5-0af7-49e6-ad7a-a760bd12dc4d
│ │ │ │ ├── agent.json
│ │ │ │ └── instructions
│ │ │ │ │ └── instruction.liquid
│ │ │ ├── 01fcc3e5-9af7-49e6-ad7a-a760bd12dc4a
│ │ │ │ ├── agent.json
│ │ │ │ ├── functions
│ │ │ │ │ ├── response_to_user.json
│ │ │ │ │ └── route_to_agent.json
│ │ │ │ ├── instructions
│ │ │ │ │ └── instruction.liquid
│ │ │ │ └── templates
│ │ │ │ │ ├── .welcome.liquid
│ │ │ │ │ ├── conversation.summary.liquid
│ │ │ │ │ ├── database_knowledge.liquid
│ │ │ │ │ ├── reasoner.hf.liquid
│ │ │ │ │ ├── reasoner.naive.liquid
│ │ │ │ │ ├── reasoner.one-step-forward.liquid
│ │ │ │ │ ├── reasoner.sequential.get_remaining_task.liquid
│ │ │ │ │ ├── reasoner.sequential.liquid
│ │ │ │ │ ├── response_with_function.liquid
│ │ │ │ │ └── translation_prompt.liquid
│ │ │ ├── 6745151e-6d46-4a02-8de4-1c4f21c7da95
│ │ │ │ ├── agent.json
│ │ │ │ ├── functions
│ │ │ │ │ ├── util-instruct-execute_template.json
│ │ │ │ │ └── util-routing-fallback_to_router.json
│ │ │ │ ├── instructions
│ │ │ │ │ └── instruction.liquid
│ │ │ │ └── templates
│ │ │ │ │ ├── select_file_prompt.liquid
│ │ │ │ │ ├── util-instruct-execute_template.fn.liquid
│ │ │ │ │ └── util-routing-fallback_to_router.fn.liquid
│ │ │ └── dfd9b46d-d00c-40af-8a75-3fbdc2b89869
│ │ │ │ ├── agent.json
│ │ │ │ ├── instructions
│ │ │ │ └── instruction.liquid
│ │ │ │ └── templates
│ │ │ │ ├── instruction.executor.liquid
│ │ │ │ ├── instruction.metrics.liquid
│ │ │ │ ├── instruction.reviewer.liquid
│ │ │ │ └── instruction.simulator.liquid
│ │ │ └── plugins
│ │ │ └── config.json
│ ├── BotSharp.Logger
│ │ ├── BotSharp.Logger.csproj
│ │ ├── BotSharpLoggerExtensions.cs
│ │ ├── Hooks
│ │ │ ├── CommonContentGeneratingHook.cs
│ │ │ ├── GlobalStatsConversationHook.cs
│ │ │ ├── InstructionLogHook.cs
│ │ │ ├── RateLimitConversationHook.cs
│ │ │ ├── TokenStatsConversationHook.cs
│ │ │ └── VerboseLogHook.cs
│ │ └── Using.cs
│ └── BotSharp.OpenAPI
│ │ ├── BackgroundServices
│ │ └── ConversationTimeoutService.cs
│ │ ├── BotSharp.OpenAPI.csproj
│ │ ├── BotSharpOpenApiExtensions.cs
│ │ ├── Controllers
│ │ ├── AgentController.cs
│ │ ├── AgentTaskController.cs
│ │ ├── ApplicationController.cs
│ │ ├── ConversationController.cs
│ │ ├── DashboardController.cs
│ │ ├── EvaluatorController.cs
│ │ ├── FileController.cs
│ │ ├── GoogleController.cs
│ │ ├── InstructModeController.cs
│ │ ├── KnowledgeBaseController.cs
│ │ ├── LlmProviderController.cs
│ │ ├── LoggerController.cs
│ │ ├── McpController.cs
│ │ ├── PluginController.cs
│ │ ├── RealtimeController.cs
│ │ ├── RoleController.cs
│ │ ├── RouterController.cs
│ │ ├── RulesController.cs
│ │ ├── SettingController.cs
│ │ ├── TextEmbeddingController.cs
│ │ ├── TranslationController.cs
│ │ └── UserController.cs
│ │ ├── ServiceBuilder.cs
│ │ ├── Using.cs
│ │ └── ViewModels
│ │ ├── Agents
│ │ ├── Request
│ │ │ ├── AgentCreationModel.cs
│ │ │ ├── AgentTaskCreateModel.cs
│ │ │ ├── AgentTaskUpdateModel.cs
│ │ │ ├── AgentTemplatePatchModel.cs
│ │ │ ├── AgentUpdateModel.cs
│ │ │ └── RoutingRuleUpdateModel.cs
│ │ └── View
│ │ │ ├── AgentTaskViewModel.cs
│ │ │ └── AgentViewModel.cs
│ │ ├── Conversations
│ │ ├── Request
│ │ │ ├── ConversationCreationModel.cs
│ │ │ ├── InputMessageFiles.cs
│ │ │ ├── MigrateLatestStateRequest.cs
│ │ │ ├── NewMessageModel.cs
│ │ │ ├── UpdateConversationRequest.cs
│ │ │ ├── UpdateConversationTitleAliasModel.cs
│ │ │ ├── UpdateConversationTitleModel.cs
│ │ │ └── UpdateMessageModel.cs
│ │ ├── Response
│ │ │ └── ChatResponseModel.cs
│ │ └── View
│ │ │ └── ConversationViewModel.cs
│ │ ├── Embeddings
│ │ └── Request
│ │ │ └── EmbeddingInputModel.cs
│ │ ├── Files
│ │ └── View
│ │ │ └── MessageFileViewModel.cs
│ │ ├── Instructs
│ │ ├── Request
│ │ │ ├── InstructBaseRequest.cs
│ │ │ └── InstructMessageModel.cs
│ │ └── View
│ │ │ ├── ImageGenerationViewModel.cs
│ │ │ ├── InstructBaseViewModel.cs
│ │ │ ├── InstructionLogViewModel.cs
│ │ │ ├── MultiModalViewModel.cs
│ │ │ ├── PdfCompletionViewModel.cs
│ │ │ └── SpeechToTextViewModel.cs
│ │ ├── Knowledges
│ │ ├── Request
│ │ │ ├── CreateVectorCollectionRequest.cs
│ │ │ ├── DeleteVectorCollectionSnapshotRequest.cs
│ │ │ ├── GetKnowledgeDocsRequest.cs
│ │ │ ├── SearchGraphKnowledgeRequest.cs
│ │ │ ├── SearchVectorKnowledgeRequest.cs
│ │ │ ├── VectorKnowledgeCreateRequest.cs
│ │ │ ├── VectorKnowledgeUpdateRequest.cs
│ │ │ └── VectorKnowledgeUploadRequest.cs
│ │ └── View
│ │ │ ├── GraphKnowledgeViewModel.cs
│ │ │ ├── KnowledgeFileViewModel.cs
│ │ │ ├── VectorCollectionConfigViewModel.cs
│ │ │ ├── VectorCollectionDetailsViewModel.cs
│ │ │ ├── VectorCollectionSnapshotViewModel.cs
│ │ │ └── VectorKnowledgeViewModel.cs
│ │ ├── Roles
│ │ ├── Request
│ │ │ ├── RoleAgentActionViewModel.cs
│ │ │ └── RoleViewModel.cs
│ │ └── View
│ │ │ └── RoleUpdateModel.cs
│ │ └── Users
│ │ ├── Request
│ │ ├── UserAvatarModel.cs
│ │ ├── UserCreationModel.cs
│ │ ├── UserResetPasswordModel.cs
│ │ └── UserUpdateModel.cs
│ │ └── View
│ │ ├── UserAgentActionViewModel.cs
│ │ ├── UserDashboardConversationViewModel.cs
│ │ └── UserViewModel.cs
├── Plugins
│ ├── BotSharp.Plugin.AnthropicAI
│ │ ├── AnthropicPlugin.cs
│ │ ├── BotSharp.Plugin.AnthropicAI.csproj
│ │ ├── Providers
│ │ │ └── ChatCompletionProvider.cs
│ │ ├── Settings
│ │ │ ├── AnthropicSettings.cs
│ │ │ └── ClaudeSetting.cs
│ │ └── Using.cs
│ ├── BotSharp.Plugin.AudioHandler
│ │ ├── AudioHandlerPlugin.cs
│ │ ├── BotSharp.Plugin.AudioHandler.csproj
│ │ ├── Enums
│ │ │ ├── AudioType.cs
│ │ │ └── UtilityName.cs
│ │ ├── Functions
│ │ │ └── HandleAudioRequestFn.cs
│ │ ├── Helpers
│ │ │ └── AudioHelper.cs
│ │ ├── Hooks
│ │ │ └── AudioHandlerUtilityHook.cs
│ │ ├── LlmContexts
│ │ │ ├── LlmContextIn.cs
│ │ │ └── LlmContextOut.cs
│ │ ├── Models
│ │ │ └── AudioOutput.cs
│ │ ├── Provider
│ │ │ └── NativeWhisperProvider.cs
│ │ ├── Settings
│ │ │ └── AudioHandlerSettings.cs
│ │ ├── Using.cs
│ │ └── data
│ │ │ └── agents
│ │ │ └── 6745151e-6d46-4a02-8de4-1c4f21c7da95
│ │ │ ├── functions
│ │ │ └── util-audio-handle_audio_request.json
│ │ │ └── templates
│ │ │ └── util-audio-handle_audio_request.fn.liquid
│ ├── BotSharp.Plugin.AzureOpenAI
│ │ ├── AzureOpenAiPlugin.cs
│ │ ├── BotSharp.Plugin.AzureOpenAI.csproj
│ │ ├── Models
│ │ │ ├── TextCompletionRequest.cs
│ │ │ └── TextCompletionResponse.cs
│ │ ├── Providers
│ │ │ ├── Audio
│ │ │ │ ├── AudioCompletionProvider.SpeechToText.cs
│ │ │ │ ├── AudioCompletionProvider.TextToSpeech.cs
│ │ │ │ └── AudioCompletionProvider.cs
│ │ │ ├── Chat
│ │ │ │ └── ChatCompletionProvider.cs
│ │ │ ├── Embedding
│ │ │ │ └── TextEmbeddingProvider.cs
│ │ │ ├── Image
│ │ │ │ ├── ImageCompletionProvider.Edit.cs
│ │ │ │ ├── ImageCompletionProvider.Generation.cs
│ │ │ │ ├── ImageCompletionProvider.Variation.cs
│ │ │ │ └── ImageCompletionProvider.cs
│ │ │ ├── ProviderHelper.cs
│ │ │ └── Text
│ │ │ │ └── TextCompletionProvider.cs
│ │ ├── Settings
│ │ │ └── AzureOpenAiSettings.cs
│ │ └── Using.cs
│ ├── BotSharp.Plugin.ChatHub
│ │ ├── BotSharp.Plugin.ChatHub.csproj
│ │ ├── ChatHubMiddleware.cs
│ │ ├── ChatHubPlugin.cs
│ │ ├── ChatStreamMiddleware.cs
│ │ ├── Controllers
│ │ │ └── ChatHubController.cs
│ │ ├── Enums
│ │ │ └── EventDispatchType.cs
│ │ ├── Hooks
│ │ │ ├── ChatHubConversationHook.cs
│ │ │ ├── ChatHubCrontabHook.cs
│ │ │ ├── StreamingLogHook.cs
│ │ │ └── WelcomeHook.cs
│ │ ├── Models
│ │ │ └── Stream
│ │ │ │ └── ChatStreamEventResponse.cs
│ │ ├── Settings
│ │ │ └── ChatHubSettings.cs
│ │ ├── SignalRHub.cs
│ │ └── Using.cs
│ ├── BotSharp.Plugin.ChatbotUI
│ │ ├── BotSharp.Plugin.ChatbotUI.csproj
│ │ ├── Chatbot-UI.md
│ │ ├── ChatbotUiController.cs
│ │ └── ViewModels
│ │ │ ├── OpenAiChatOutput.cs
│ │ │ ├── OpenAiChoice.cs
│ │ │ ├── OpenAiMessageBody.cs
│ │ │ ├── OpenAiMessageInput.cs
│ │ │ └── OpenAiModels.cs
│ ├── BotSharp.Plugin.CodeDriver
│ │ ├── BotSharp.Plugin.CodeDriver.csproj
│ │ ├── CodeDriverPlugin.cs
│ │ ├── Functions
│ │ │ └── SaveSourceCodeFn.cs
│ │ ├── Models
│ │ │ └── SaveSourceCodeArgs.cs
│ │ ├── Using.cs
│ │ └── data
│ │ │ └── agents
│ │ │ └── c0ded7d9-3f9d-4ef6-b7ce-56a892dcef62
│ │ │ ├── agent.json
│ │ │ ├── functions
│ │ │ └── save_source_code.json
│ │ │ └── instructions
│ │ │ └── instruction.liquid
│ ├── BotSharp.Plugin.Dashboard
│ │ ├── BotSharp.Plugin.Dashboard.csproj
│ │ ├── DashboardPlugin.cs
│ │ ├── Hooks
│ │ │ └── StatsConversationHook.cs
│ │ └── Using.cs
│ ├── BotSharp.Plugin.DeepSeekAI
│ │ ├── BotSharp.Plugin.DeepSeekAI.csproj
│ │ ├── DeepSeekAiPlugin.cs
│ │ ├── Providers
│ │ │ ├── Chat
│ │ │ │ └── ChatCompletionProvider.cs
│ │ │ ├── ProviderHelper.cs
│ │ │ └── Text
│ │ │ │ └── TextCompletionProvider.cs
│ │ └── Using.cs
│ ├── BotSharp.Plugin.EmailHandler
│ │ ├── BotSharp.Plugin.EmailHandler.csproj
│ │ ├── EmailHandlerPlugin.cs
│ │ ├── Enums
│ │ │ └── UtilityName.cs
│ │ ├── Functions
│ │ │ ├── HandleEmailReaderFn.cs
│ │ │ └── HandleEmailSenderFn.cs
│ │ ├── Hooks
│ │ │ └── EmailHandlerUtilityHook.cs
│ │ ├── LlmContexts
│ │ │ ├── LlmContextIn.cs
│ │ │ ├── LlmContextOut.cs
│ │ │ └── LlmContextReader.cs
│ │ ├── Models
│ │ │ ├── EmailModel.cs
│ │ │ └── EmailSubjectElement.cs
│ │ ├── Providers
│ │ │ ├── DefaultEmailReader.cs
│ │ │ └── IEmailReader.cs
│ │ ├── Settings
│ │ │ ├── EmailReaderSettings.cs
│ │ │ └── EmailSenderSettings.cs
│ │ ├── Using.cs
│ │ └── data
│ │ │ └── agents
│ │ │ └── 6745151e-6d46-4a02-8de4-1c4f21c7da95
│ │ │ ├── functions
│ │ │ ├── util-email-handle_email_reader.json
│ │ │ └── util-email-handle_email_sender.json
│ │ │ └── templates
│ │ │ ├── util-email-handle_email_reader.fn.liquid
│ │ │ └── util-email-handle_email_sender.fn.liquid
│ ├── BotSharp.Plugin.ExcelHandler
│ │ ├── BotSharp.Plugin.ExcelHandler.csproj
│ │ ├── Enums
│ │ │ └── UtilityName.cs
│ │ ├── ExcelHandlerPlugin.cs
│ │ ├── Functions
│ │ │ └── HandleExcelRequestFn.cs
│ │ ├── Helpers
│ │ │ ├── MySql
│ │ │ │ ├── IMySqlDbHelper.cs
│ │ │ │ └── MySqlDbHelpers.cs
│ │ │ └── Sqlite
│ │ │ │ ├── ISqliteDbHelpers.cs
│ │ │ │ └── SqliteDbHelpers.cs
│ │ ├── Hooks
│ │ │ └── ExcelHandlerUtilityHook.cs
│ │ ├── LlmContexts
│ │ │ ├── LlmContextIn.cs
│ │ │ └── LlmContextOut.cs
│ │ ├── Models
│ │ │ └── SqlContextOut.cs
│ │ ├── Services
│ │ │ ├── IDbService.cs
│ │ │ ├── IMySqlService.cs
│ │ │ ├── ISqliteService.cs
│ │ │ ├── MySqlService.cs
│ │ │ └── SqliteService.cs
│ │ ├── Settings
│ │ │ └── ExcelHandlerSettings.cs
│ │ ├── Using.cs
│ │ └── data
│ │ │ └── agents
│ │ │ └── 6745151e-6d46-4a02-8de4-1c4f21c7da95
│ │ │ ├── functions
│ │ │ └── util-excel-handle_excel_request.json
│ │ │ └── templates
│ │ │ └── util-excel-handle_excel_request.fn.liquid
│ ├── BotSharp.Plugin.FileHandler
│ │ ├── BotSharp.Plugin.FileHandler.csproj
│ │ ├── Enums
│ │ │ └── UtilityName.cs
│ │ ├── FileHandlerPlugin.cs
│ │ ├── Functions
│ │ │ ├── EditImageFn.cs
│ │ │ ├── GenerateImageFn.cs
│ │ │ ├── ReadImageFn.cs
│ │ │ └── ReadPdfFn.cs
│ │ ├── Hooks
│ │ │ └── FileHandlerUtilityHook.cs
│ │ ├── LlmContexts
│ │ │ ├── LlmContextIn.cs
│ │ │ └── LlmContextOut.cs
│ │ ├── Settings
│ │ │ └── FileHandlerSettings.cs
│ │ ├── Using.cs
│ │ └── data
│ │ │ └── agents
│ │ │ └── 6745151e-6d46-4a02-8de4-1c4f21c7da95
│ │ │ ├── functions
│ │ │ ├── util-file-edit_image.json
│ │ │ ├── util-file-generate_image.json
│ │ │ ├── util-file-read_image.json
│ │ │ └── util-file-read_pdf.json
│ │ │ └── templates
│ │ │ ├── util-file-edit_image.fn.liquid
│ │ │ ├── util-file-generate_image.fn.liquid
│ │ │ ├── util-file-read_image.fn.liquid
│ │ │ └── util-file-read_pdf.fn.liquid
│ ├── BotSharp.Plugin.GoogleAI
│ │ ├── BotSharp.Plugin.GoogleAI.csproj
│ │ ├── GoogleAiPlugin.cs
│ │ ├── Models
│ │ │ └── Realtime
│ │ │ │ ├── RealtimeClientPayload.cs
│ │ │ │ ├── RealtimeGenerateContentSetup.cs
│ │ │ │ ├── RealtimeServerResponse.cs
│ │ │ │ └── RealtimeTranscriptionResponse.cs
│ │ ├── Providers
│ │ │ ├── Chat
│ │ │ │ ├── GeminiChatCompletionProvider.cs
│ │ │ │ └── PalmChatCompletionProvider.cs
│ │ │ ├── Embedding
│ │ │ │ └── TextEmbeddingProvider.cs
│ │ │ ├── ProviderHelper.cs
│ │ │ ├── Realtime
│ │ │ │ └── RealTimeCompletionProvider.cs
│ │ │ └── Text
│ │ │ │ ├── GeminiTextCompletionProvider.cs
│ │ │ │ └── PalmTextCompletionProvider.cs
│ │ ├── Settings
│ │ │ └── GoogleAiSettings.cs
│ │ └── Using.cs
│ ├── BotSharp.Plugin.Graph
│ │ ├── BotSharp.Plugin.Graph.csproj
│ │ ├── GraphDb.cs
│ │ ├── GraphDbSettings.cs
│ │ ├── GraphPlugin.cs
│ │ ├── Models
│ │ │ └── GraphQueryRequest.cs
│ │ └── Using.cs
│ ├── BotSharp.Plugin.HttpHandler
│ │ ├── BotSharp.Plugin.HttpHandler.csproj
│ │ ├── Enums
│ │ │ └── UtilityName.cs
│ │ ├── Functions
│ │ │ └── HandleHttpRequestFn.cs
│ │ ├── Hooks
│ │ │ ├── BasicHttpRequestHook.cs
│ │ │ └── HttpHandlerUtilityHook.cs
│ │ ├── HttpHandlerPlugin.cs
│ │ ├── LlmContexts
│ │ │ └── LlmContextIn.cs
│ │ ├── Settings
│ │ │ └── HttpHandlerSettings.cs
│ │ ├── Using.cs
│ │ └── data
│ │ │ └── agents
│ │ │ ├── 6745151e-6d46-4a02-8de4-1c4f21c7da95
│ │ │ ├── functions
│ │ │ │ └── util-http-handle_http_request.json
│ │ │ └── templates
│ │ │ │ └── util-http-handle_http_request.fn.liquid
│ │ │ └── 87c458fc-ec5f-40ae-8ed6-05dda8a07523
│ │ │ ├── agent.json
│ │ │ └── instructions
│ │ │ └── instruction.liquid
│ ├── BotSharp.Plugin.HuggingFace
│ │ ├── BotSharp.Plugin.HuggingFace.csproj
│ │ ├── DataModels
│ │ │ ├── InferenceInput.cs
│ │ │ ├── InferenceInputOptions.cs
│ │ │ ├── InferenceInputParameters.cs
│ │ │ └── TextGenResponse.cs
│ │ ├── HuggingChat-UI.md
│ │ ├── HuggingChat
│ │ │ ├── HuggingChatController.cs
│ │ │ ├── TextToken.cs
│ │ │ └── ViewModels
│ │ │ │ ├── ChatInput.cs
│ │ │ │ ├── ChatResponse.cs
│ │ │ │ ├── ConversationCreationModel.cs
│ │ │ │ └── ConversationViewModel.cs
│ │ ├── HuggingFacePlugin.cs
│ │ ├── Providers
│ │ │ └── ChatCompletionProvider.cs
│ │ ├── Services
│ │ │ ├── AuthHeaderHandler.cs
│ │ │ └── IInferenceApi.cs
│ │ ├── Settings
│ │ │ └── HuggingFaceSettings.cs
│ │ └── Using.cs
│ ├── BotSharp.Plugin.JavaScriptInterpreter
│ │ ├── BotSharp.Plugin.JavaScriptInterpreter.csproj
│ │ └── JsInterpreterPlugin.cs
│ ├── BotSharp.Plugin.KnowledgeBase
│ │ ├── BotSharp.Plugin.KnowledgeBase.csproj
│ │ ├── Converters
│ │ │ └── PigPdf2TextConverter.cs
│ │ ├── Enum
│ │ │ └── UtilityName.cs
│ │ ├── Functions
│ │ │ ├── ConfirmKnowledgePersistenceFn.cs
│ │ │ ├── KnowledgeRetrievalFn.cs
│ │ │ └── MemorizeKnowledgeFn.cs
│ │ ├── Helpers
│ │ │ ├── KnowledgeSettingHelper.cs
│ │ │ └── VectorHelper.cs
│ │ ├── Hooks
│ │ │ ├── KnowledgeBaseUtilityHook.cs
│ │ │ └── KnowledgeHook.cs
│ │ ├── KnowledgeBasePlugin.cs
│ │ ├── MemVecDb
│ │ │ ├── MemVecDbPlugin.cs
│ │ │ ├── MemoryVectorDb.cs
│ │ │ └── VecRecord.cs
│ │ ├── Services
│ │ │ ├── KnowledgeService.Common.cs
│ │ │ ├── KnowledgeService.Document.cs
│ │ │ ├── KnowledgeService.Graph.cs
│ │ │ ├── KnowledgeService.Snapshot.cs
│ │ │ ├── KnowledgeService.Vector.cs
│ │ │ └── KnowledgeService.cs
│ │ ├── Using.cs
│ │ └── data
│ │ │ └── agents
│ │ │ ├── 01acc3e5-0af7-49e6-ad7a-a760bd12dc40
│ │ │ ├── agent.json
│ │ │ ├── functions
│ │ │ │ ├── confirm_knowledge_persistence.json
│ │ │ │ └── memorize_knowledge.json
│ │ │ ├── instructions
│ │ │ │ └── instruction.liquid
│ │ │ └── templates
│ │ │ │ ├── knowledge.generation.plain.liquid
│ │ │ │ └── knowledge.generation.refine.liquid
│ │ │ └── 6745151e-6d46-4a02-8de4-1c4f21c7da95
│ │ │ ├── functions
│ │ │ └── util-kg-knowledge_retrieval.json
│ │ │ └── templates
│ │ │ └── util-kg-knowledge_retrieval.fn.liquid
│ ├── BotSharp.Plugin.LLamaSharp
│ │ ├── BotSharp.Plugin.LLamaSharp.csproj
│ │ ├── LLamaSharpPlugin.cs
│ │ ├── LlamaAiModel.cs
│ │ ├── Providers
│ │ │ ├── ChatCompletionProvider.cs
│ │ │ ├── TextCompletionProvider.cs
│ │ │ └── TextEmbeddingProvider.cs
│ │ ├── Settings
│ │ │ └── LlamaSharpSettings.cs
│ │ └── Using.cs
│ ├── BotSharp.Plugin.LangChain
│ │ ├── BotSharp.Plugin.VertexAI.csproj
│ │ ├── Providers
│ │ │ ├── ChatCompletionProvider.cs
│ │ │ └── TextCompletionProvider.cs
│ │ └── VertexAiPlugin.cs
│ ├── BotSharp.Plugin.MetaAI
│ │ ├── BotSharp.Plugin.MetaAI.csproj
│ │ ├── MetaAiPlugin.cs
│ │ ├── Providers
│ │ │ └── fastTextEmbeddingProvider.cs
│ │ └── Settings
│ │ │ ├── MetaAiSettings.cs
│ │ │ └── fastTextSetting.cs
│ ├── BotSharp.Plugin.MetaGLM
│ │ ├── AuthenicationUtils.cs
│ │ ├── BotSharp.Plugin.MetaGLM.csproj
│ │ ├── MessageItemConverter.cs
│ │ ├── MetaGLMClient.cs
│ │ ├── MetaGLMPlugin.cs
│ │ ├── Models
│ │ │ ├── RequestModels
│ │ │ │ ├── EmbeddingRequestBase.cs
│ │ │ │ ├── FunctionModels
│ │ │ │ │ ├── FunctionParameterDescriptor.cs
│ │ │ │ │ ├── FunctionParameters.cs
│ │ │ │ │ └── FunctionTool.cs
│ │ │ │ ├── ImageRequestBase.cs
│ │ │ │ ├── ImageToTextModels
│ │ │ │ │ ├── ContentType.cs
│ │ │ │ │ ├── ImageToTextMessageItem.cs
│ │ │ │ │ └── ImageUrlType.cs
│ │ │ │ ├── MessageItem.cs
│ │ │ │ └── TextRequestBase.cs
│ │ │ └── ResponseModels
│ │ │ │ ├── EmbeddingModels
│ │ │ │ ├── EmbeddingDataItem.cs
│ │ │ │ └── EmbeddingResponseBase.cs
│ │ │ │ ├── ImageGenerationModels
│ │ │ │ ├── ImageResponseBase.cs
│ │ │ │ └── ImageResponseDataItem.cs
│ │ │ │ ├── ResponseBase.cs
│ │ │ │ ├── ResponseChoiceDelta.cs
│ │ │ │ ├── ResponseChoiceItem.cs
│ │ │ │ └── ToolModels
│ │ │ │ ├── FunctionDescriptor.cs
│ │ │ │ └── ToolCallItem.cs
│ │ ├── Modules
│ │ │ ├── Chat.cs
│ │ │ ├── Embeddings.cs
│ │ │ └── Images.cs
│ │ ├── Providers
│ │ │ ├── ChatCompletionProvider.cs
│ │ │ └── ProviderHelper.cs
│ │ ├── Settings
│ │ │ └── MetaGLMSettings.cs
│ │ └── Using.cs
│ ├── BotSharp.Plugin.MetaMessenger
│ │ ├── BotSharp.Plugin.MetaMessenger.csproj
│ │ ├── Controllers
│ │ │ └── WebhookController.cs
│ │ ├── GraphAPIs
│ │ │ ├── AuthHeaderHandler.cs
│ │ │ └── IMessengerGraphAPI.cs
│ │ ├── MessagingModels
│ │ │ ├── AttachmentBody.cs
│ │ │ ├── AttachmentMessage.cs
│ │ │ ├── ButtonItem.cs
│ │ │ ├── SendingMessageRequest.cs
│ │ │ └── SendingMessageResponse.cs
│ │ ├── MetaMessengerPlugin.cs
│ │ ├── Services
│ │ │ ├── ConditionalSerialization.cs
│ │ │ └── MessageHandleService.cs
│ │ ├── Settings
│ │ │ └── MetaMessengerSetting.cs
│ │ ├── Using.cs
│ │ └── WebhookModels
│ │ │ ├── WebhookMessage.cs
│ │ │ ├── WebhookMessageBody.cs
│ │ │ ├── WebhookMessagePostback.cs
│ │ │ ├── WebhookMessageUser.cs
│ │ │ ├── WebhookObject.cs
│ │ │ ├── WebhookRequest.cs
│ │ │ └── WebhookResponse.cs
│ ├── BotSharp.Plugin.MicrosoftExtensionsAI
│ │ ├── BotSharp.Plugin.MicrosoftExtensionsAI.csproj
│ │ ├── MicrosoftExtensionsAIChatCompletionProvider.cs
│ │ ├── MicrosoftExtensionsAIPlugin.cs
│ │ ├── MicrosoftExtensionsAITextCompletionProvider.cs
│ │ ├── MicrosoftExtensionsAITextEmbeddingProvider.cs
│ │ └── ProviderHelper.cs
│ ├── BotSharp.Plugin.MongoStorage
│ │ ├── BotSharp.Plugin.MongoStorage.csproj
│ │ ├── Collections
│ │ │ ├── AgentDocument.cs
│ │ │ ├── AgentTaskDocument.cs
│ │ │ ├── ConversationContentLogDocument.cs
│ │ │ ├── ConversationDialogDocument.cs
│ │ │ ├── ConversationDocument.cs
│ │ │ ├── ConversationStateDocument.cs
│ │ │ ├── ConversationStateLogDocument.cs
│ │ │ ├── CrontabItemDocument.cs
│ │ │ ├── GlobalStatisticsDocument.cs
│ │ │ ├── InstructionLogDocument.cs
│ │ │ ├── KnowledgeCollectionConfigDocument.cs
│ │ │ ├── KnowledgeCollectionFileMetaDocument.cs
│ │ │ ├── LlmCompletionLogDocument.cs
│ │ │ ├── PluginDocument.cs
│ │ │ ├── RoleAgentDocument.cs
│ │ │ ├── RoleDocument.cs
│ │ │ ├── TranslationMemoryDocument.cs
│ │ │ ├── UserAgentDocument.cs
│ │ │ └── UserDocument.cs
│ │ ├── Models
│ │ │ ├── AgentKnowledgeBaseMongoElement.cs
│ │ │ ├── AgentLlmConfigMongoElement.cs
│ │ │ ├── AgentMCPToolMongoElement.cs
│ │ │ ├── AgentResponseMongoElement.cs
│ │ │ ├── AgentRuleMongoElement.cs
│ │ │ ├── AgentTemplateMongoElement.cs
│ │ │ ├── AgentUtilityMongoElement.cs
│ │ │ ├── BreakpointMongoElement.cs
│ │ │ ├── ChannelInstructionMongoElement.cs
│ │ │ ├── CronTaskMongoElement.cs
│ │ │ ├── DialogMongoElement.cs
│ │ │ ├── FunctionDefMongoElement.cs
│ │ │ ├── GlobalStatsMongoElement.cs
│ │ │ ├── KnowledgeEmbeddingConfigMongoModel.cs
│ │ │ ├── KnowledgeFileMetaRefMongoModel.cs
│ │ │ ├── KnowledgeVectorStoreConfigMongoModel.cs
│ │ │ ├── RoutingRuleMongoElement.cs
│ │ │ ├── StateMongoElement.cs
│ │ │ └── TranslationMemoryMongoElement.cs
│ │ ├── MongoBase.cs
│ │ ├── MongoDbContext.cs
│ │ ├── MongoStoragePlugin.cs
│ │ ├── Repository
│ │ │ ├── MongoRepository.Agent.cs
│ │ │ ├── MongoRepository.AgentTask.cs
│ │ │ ├── MongoRepository.Conversation.cs
│ │ │ ├── MongoRepository.Crontab.cs
│ │ │ ├── MongoRepository.KnowledgeBase.cs
│ │ │ ├── MongoRepository.Log.cs
│ │ │ ├── MongoRepository.Plugin.cs
│ │ │ ├── MongoRepository.Role.cs
│ │ │ ├── MongoRepository.Stats.cs
│ │ │ ├── MongoRepository.Translation.cs
│ │ │ ├── MongoRepository.User.cs
│ │ │ └── MongoRepository.cs
│ │ ├── StringGuidIdGenerator.cs
│ │ └── Using.cs
│ ├── BotSharp.Plugin.OpenAI
│ │ ├── BotSharp.Plugin.OpenAI.csproj
│ │ ├── Models
│ │ │ ├── Realtime
│ │ │ │ ├── ConversationItemCreated.cs
│ │ │ │ ├── RealtimeSessionBody.cs
│ │ │ │ ├── RealtimeSessionRequest.cs
│ │ │ │ ├── RealtimeSessionUpdate.cs
│ │ │ │ ├── ResponseAudioDelta.cs
│ │ │ │ ├── ResponseAudioTranscript.cs
│ │ │ │ ├── ResponseDone.cs
│ │ │ │ ├── ServerEventErrorResponse.cs
│ │ │ │ ├── ServerEventResponse.cs
│ │ │ │ └── SessionServerEventResponse.cs
│ │ │ ├── SpeechToTextRequest.cs
│ │ │ ├── TextCompletionRequest.cs
│ │ │ └── TextCompletionResponse.cs
│ │ ├── OpenAiPlugin.cs
│ │ ├── Providers
│ │ │ ├── Audio
│ │ │ │ ├── AudioSynthesisProvider.cs
│ │ │ │ └── AudioTranscriptionProvider.cs
│ │ │ ├── Chat
│ │ │ │ └── ChatCompletionProvider.cs
│ │ │ ├── Embedding
│ │ │ │ └── TextEmbeddingProvider.cs
│ │ │ ├── Image
│ │ │ │ ├── ImageCompletionProvider.Edit.cs
│ │ │ │ ├── ImageCompletionProvider.Generation.cs
│ │ │ │ ├── ImageCompletionProvider.Variation.cs
│ │ │ │ └── ImageCompletionProvider.cs
│ │ │ ├── ProviderHelper.cs
│ │ │ ├── Realtime
│ │ │ │ └── RealTimeCompletionProvider.cs
│ │ │ └── Text
│ │ │ │ └── TextCompletionProvider.cs
│ │ ├── Settings
│ │ │ └── OpenAiSettings.cs
│ │ └── Using.cs
│ ├── BotSharp.Plugin.OsDriver
│ │ ├── BotSharp.Plugin.OsDriver.csproj
│ │ ├── CoordinateScaler.cs
│ │ ├── KeyboardSimulator.cs
│ │ ├── OsDriverPlugin.cs
│ │ ├── ScreenshotWinOS.cs
│ │ ├── Using.cs
│ │ ├── WinOSDriver.cs
│ │ └── WindowsMouseController.cs
│ ├── BotSharp.Plugin.PaddleSharp
│ │ ├── BotSharp.Plugin.PaddleSharp.csproj
│ │ ├── PaddleSharpPlugin.cs
│ │ ├── Providers
│ │ │ ├── PaddleOcrConverter.cs
│ │ │ └── Pdf2TextConverter.cs
│ │ └── Settings
│ │ │ └── PaddleSharpSettings.cs
│ ├── BotSharp.Plugin.Planner
│ │ ├── BotSharp.Plugin.Planner.csproj
│ │ ├── Enums
│ │ │ ├── PlannerAgentId.cs
│ │ │ └── UtilityName.cs
│ │ ├── PlannerPlugin.cs
│ │ ├── Sequential
│ │ │ └── SequentialPlanner.cs
│ │ ├── SqlGeneration
│ │ │ ├── Functions
│ │ │ │ ├── SqlGenerationFn.cs
│ │ │ │ ├── SqlPrimaryStageFn.cs
│ │ │ │ ├── SqlReviewFn.cs
│ │ │ │ └── SqlSecondaryStageFn.cs
│ │ │ ├── Hooks
│ │ │ │ └── SqlPlannerAgentHook.cs
│ │ │ ├── Models
│ │ │ │ ├── SqlPrimaryStagePlan.cs
│ │ │ │ ├── SqlReviewArgs.cs
│ │ │ │ └── SqlSecondStagePlan.cs
│ │ │ └── SqlGenerationPlanner.cs
│ │ ├── TwoStaging
│ │ │ ├── Functions
│ │ │ │ ├── PrimaryStagePlanFn.cs
│ │ │ │ ├── SecondaryStagePlanFn.cs
│ │ │ │ └── SummaryPlanFn.cs
│ │ │ ├── Hooks
│ │ │ │ └── TwoStagingPlannerUtilityHook.cs
│ │ │ ├── Models
│ │ │ │ ├── FirstStagePlan.cs
│ │ │ │ ├── PrimaryRequirementRequest.cs
│ │ │ │ ├── SecondStagePlan.cs
│ │ │ │ ├── SecondaryBreakdownTask.cs
│ │ │ │ └── SummaryPlan.cs
│ │ │ └── TwoStageTaskPlanner.cs
│ │ ├── Using.cs
│ │ └── data
│ │ │ └── agents
│ │ │ ├── 282a7128-69a1-44b0-878c-a9159b88f3b9
│ │ │ ├── agent.json
│ │ │ ├── functions
│ │ │ │ ├── plan_primary_stage.json
│ │ │ │ ├── plan_secondary_stage.json
│ │ │ │ └── plan_summary.json
│ │ │ ├── instructions
│ │ │ │ └── instruction.liquid
│ │ │ └── templates
│ │ │ │ ├── two_stage.1st.plan.liquid
│ │ │ │ ├── two_stage.2nd.plan.liquid
│ │ │ │ ├── two_stage.next.liquid
│ │ │ │ └── two_stage.summarize.liquid
│ │ │ ├── 3e75e818-a139-48a8-9e22-4662548c13a3
│ │ │ ├── agent.json
│ │ │ └── instructions
│ │ │ │ └── instruction.liquid
│ │ │ ├── 6745151e-6d46-4a02-8de4-1c4f21c7da95
│ │ │ └── templates
│ │ │ │ ├── util-planner-plan_primary_stage.fn.liquid
│ │ │ │ ├── util-planner-plan_secondary_stage.fn.liquid
│ │ │ │ └── util-planner-plan_summary.fn.liquid
│ │ │ └── da7aad2c-8112-48a2-ab7b-1f87da524741
│ │ │ ├── agent.json
│ │ │ ├── functions
│ │ │ ├── sql_generation.json
│ │ │ ├── sql_primary_stage.json
│ │ │ ├── sql_review.json
│ │ │ └── sql_secondary_stage.json
│ │ │ ├── instructions
│ │ │ └── instruction.liquid
│ │ │ └── templates
│ │ │ ├── sql.generation.liquid
│ │ │ ├── sql.next.liquid
│ │ │ ├── sql.primary.plan.liquid
│ │ │ └── sql.secondary.plan.liquid
│ ├── BotSharp.Plugin.PythonInterpreter
│ │ ├── BotSharp.Plugin.PythonInterpreter.csproj
│ │ ├── Enums
│ │ │ └── UtilityName.cs
│ │ ├── Functions
│ │ │ └── InterpretationFn.cs
│ │ ├── Hooks
│ │ │ └── InterpreterUtilityHook.cs
│ │ ├── InterpreterPlugin.cs
│ │ ├── Using.cs
│ │ └── data
│ │ │ └── agents
│ │ │ └── 6745151e-6d46-4a02-8de4-1c4f21c7da95
│ │ │ ├── functions
│ │ │ └── python_interpreter.json
│ │ │ └── templates
│ │ │ └── python_interpreter.fn.liquid
│ ├── BotSharp.Plugin.Qdrant
│ │ ├── BotSharp.Plugin.Qdrant.csproj
│ │ ├── Models
│ │ │ └── RecoverFromSnapshotResponse.cs
│ │ ├── QdrantDb.cs
│ │ ├── QdrantPlugin.cs
│ │ ├── QdrantSetting.cs
│ │ └── Using.cs
│ ├── BotSharp.Plugin.RoutingSpeeder
│ │ ├── BotSharp.Plugin.RoutingSpeeder.csproj
│ │ ├── Controllers
│ │ │ └── RoutingSpeederController.cs
│ │ ├── Providers
│ │ │ ├── IntentClassifier.cs
│ │ │ └── Models
│ │ │ │ ├── DialoguePredictionModel.cs
│ │ │ │ └── TrainingParams.cs
│ │ ├── RoutingConversationHook.cs
│ │ ├── RoutingSpeederPlugin.cs
│ │ ├── Settings
│ │ │ ├── classifierSetting.cs
│ │ │ └── routerSpeedSettings.cs
│ │ └── data
│ │ │ └── models
│ │ │ ├── dbpedia.ftz
│ │ │ ├── intent-classifier.h5
│ │ │ └── label.txt
│ ├── BotSharp.Plugin.Selenium
│ │ ├── BotSharp.Plugin.Selenium.csproj
│ │ ├── Drivers
│ │ │ ├── SeleniumInstance.cs
│ │ │ ├── SeleniumWebDriver.DoAction.cs
│ │ │ ├── SeleniumWebDriver.EvaluateScript.cs
│ │ │ ├── SeleniumWebDriver.GetAttributeValue.cs
│ │ │ ├── SeleniumWebDriver.GoToPage.cs
│ │ │ ├── SeleniumWebDriver.HttpRequest.cs
│ │ │ ├── SeleniumWebDriver.LaunchBrowser.cs
│ │ │ ├── SeleniumWebDriver.LocateElement.cs
│ │ │ └── SeleniumWebDriver.cs
│ │ └── Using.cs
│ ├── BotSharp.Plugin.SemanticKernel
│ │ ├── BotSharp.Plugin.SemanticKernel.csproj
│ │ ├── SemanticKernelChatCompletionProvider.cs
│ │ ├── SemanticKernelMemoryStoreProvider.cs
│ │ ├── SemanticKernelPlugin.cs
│ │ ├── SemanticKernelTextCompletionProvider.cs
│ │ ├── SemanticKernelTextEmbeddingProvider.cs
│ │ └── readme.md
│ ├── BotSharp.Plugin.SparkDesk
│ │ ├── BotSharp.Plugin.SparkDesk.csproj
│ │ ├── Providers
│ │ │ ├── ChatCompletionProvider.cs
│ │ │ └── ProviderHelper.cs
│ │ ├── Settings
│ │ │ └── SparkDeskSettings.cs
│ │ ├── SparkDeskPlugin.cs
│ │ └── Using.cs
│ ├── BotSharp.Plugin.SqlDriver
│ │ ├── BotSharp.Plugin.SqlDriver.csproj
│ │ ├── Functions
│ │ │ ├── ExecuteQueryFn.cs
│ │ │ ├── GetTableDefinitionFn.cs
│ │ │ ├── SqlInsertFn.cs
│ │ │ ├── SqlSelect.cs
│ │ │ ├── SqlValidateFn.cs
│ │ │ └── VerifyDictionaryTerm.cs
│ │ ├── Helpers
│ │ │ └── SqlDriverHelper.cs
│ │ ├── Hooks
│ │ │ ├── SqlDriverAgentHook.cs
│ │ │ ├── SqlDriverConversationHook.cs
│ │ │ ├── SqlDriverCrontabHook.cs
│ │ │ ├── SqlDriverKnowledgeHook.cs
│ │ │ ├── SqlDriverPlanningHook.cs
│ │ │ └── SqlUtilityHook.cs
│ │ ├── Interfaces
│ │ │ └── ISqlDriverHook.cs
│ │ ├── Models
│ │ │ ├── ExecuteQueryArgs.cs
│ │ │ ├── GetTableColumnsArgs.cs
│ │ │ ├── LookupDictionary.cs
│ │ │ ├── RequestBase.cs
│ │ │ ├── SqlParameter.cs
│ │ │ ├── SqlReturn.cs
│ │ │ └── SqlStatement.cs
│ │ ├── Services
│ │ │ ├── DbKnowledgeService.cs
│ │ │ └── SqlDriverService.cs
│ │ ├── Settings
│ │ │ └── SqlDriverSetting.cs
│ │ ├── SqlDriverPlugin.cs
│ │ ├── Using.cs
│ │ ├── UtilFunctions
│ │ │ ├── GetTableDefinitionFn.cs
│ │ │ ├── SqlSelect.cs
│ │ │ └── VerifyDictionaryTerm.cs
│ │ └── data
│ │ │ └── agents
│ │ │ ├── 6745151e-6d46-4a02-8de4-1c4f21c7da95
│ │ │ ├── functions
│ │ │ │ ├── util-db-sql_select.json
│ │ │ │ ├── util-db-sql_table_definition.json
│ │ │ │ └── util-db-verify_dictionary_term.json
│ │ │ └── templates
│ │ │ │ ├── util-db-sql_executor.fn.liquid
│ │ │ │ ├── util-db-sql_table_definition.fn.liquid
│ │ │ │ └── util-db-verify_dictionary_term.fn.liquid
│ │ │ └── beda4c12-e1ec-4b4b-b328-3df4a6687c4f
│ │ │ ├── agent.json
│ │ │ ├── functions
│ │ │ ├── execute_sql.json
│ │ │ ├── sql_insert.json
│ │ │ ├── sql_select.json
│ │ │ └── sql_table_definition.json
│ │ │ ├── instructions
│ │ │ └── instruction.liquid
│ │ │ └── templates
│ │ │ ├── database.dictionary.sql.liquid
│ │ │ ├── database.summarize.mysql.liquid
│ │ │ ├── database.summarize.redshift.liquid
│ │ │ ├── database.summarize.sqlserver.liquid
│ │ │ ├── query_result_formatting.liquid
│ │ │ ├── render_buttons.liquid
│ │ │ └── sql_statement_correctness.liquid
│ ├── BotSharp.Plugin.TelegramBots
│ │ ├── BotSharp.Plugin.TelegramBots.csproj
│ │ └── TelegramBotsPlugin.cs
│ ├── BotSharp.Plugin.TencentCos
│ │ ├── BotSharp.Plugin.TencentCos.csproj
│ │ ├── Modules
│ │ │ └── BucketClient.cs
│ │ ├── Services
│ │ │ ├── TencentCosService.Audio.cs
│ │ │ ├── TencentCosService.Common.cs
│ │ │ ├── TencentCosService.Conversation.cs
│ │ │ ├── TencentCosService.KnowledgeBase.cs
│ │ │ ├── TencentCosService.User.cs
│ │ │ └── TencentCosService.cs
│ │ ├── Settings
│ │ │ └── TencentCosSettings.cs
│ │ ├── TencentCosClient.cs
│ │ ├── TencentCosPlugin.cs
│ │ └── Using.cs
│ ├── BotSharp.Plugin.Twilio
│ │ ├── BotSharp.Plugin.Twilio.csproj
│ │ ├── Controllers
│ │ │ ├── TwilioEmailController.cs
│ │ │ ├── TwilioInboundController.cs
│ │ │ ├── TwilioOutboundController.cs
│ │ │ ├── TwilioReconnectController.cs
│ │ │ ├── TwilioRecordController.cs
│ │ │ ├── TwilioTranscribeController.cs
│ │ │ └── TwilioVoiceController.cs
│ │ ├── Hooks
│ │ │ └── TwilioConversationHook.cs
│ │ ├── Interfaces
│ │ │ ├── ITwilioCallStatusHook.cs
│ │ │ ├── ITwilioSessionHook.cs
│ │ │ └── ITwilioSessionManager.cs
│ │ ├── Models
│ │ │ ├── AssistantMessage.cs
│ │ │ ├── CallerMessage.cs
│ │ │ ├── ConversationalVoiceRequest.cs
│ │ │ ├── ConversationalVoiceResponse.cs
│ │ │ └── Stream
│ │ │ │ ├── StreamEventDtmfResponse.cs
│ │ │ │ ├── StreamEventMediaResponse.cs
│ │ │ │ ├── StreamEventResponse.cs
│ │ │ │ ├── StreamEventStartResponse.cs
│ │ │ │ ├── StreamEventStopResponse.cs
│ │ │ │ └── TwilioHubCallerContext.cs
│ │ ├── OutboundPhoneCallHandler
│ │ │ ├── Enums
│ │ │ │ └── UtilityName.cs
│ │ │ ├── Functions
│ │ │ │ ├── HangupPhoneCallFn.cs
│ │ │ │ ├── LeaveVoicemailFn.cs
│ │ │ │ ├── OutboundPhoneCallFn.cs
│ │ │ │ ├── TextMessageFn.cs
│ │ │ │ └── TransferPhoneCallFn.cs
│ │ │ ├── Hooks
│ │ │ │ └── OutboundPhoneCallHandlerUtilityHook.cs
│ │ │ └── LlmContexts
│ │ │ │ ├── ForwardPhoneCallArgs.cs
│ │ │ │ ├── HangupPhoneCallArgs.cs
│ │ │ │ ├── LeaveVoicemailArgs.cs
│ │ │ │ ├── LlmContextIn.cs
│ │ │ │ └── LlmContextOut.cs
│ │ ├── Services
│ │ │ ├── TwilioMessageQueue.cs
│ │ │ ├── TwilioMessageQueueService.cs
│ │ │ ├── TwilioService.cs
│ │ │ └── TwilioSessionManager.cs
│ │ ├── Settings
│ │ │ └── TwilioSetting.cs
│ │ ├── TwilioPlugin.cs
│ │ ├── TwilioStreamMiddleware.cs
│ │ ├── Using.cs
│ │ └── data
│ │ │ └── agents
│ │ │ └── 6745151e-6d46-4a02-8de4-1c4f21c7da95
│ │ │ └── functions
│ │ │ ├── util-twilio-hangup_phone_call.json
│ │ │ ├── util-twilio-leave_voicemail.json
│ │ │ ├── util-twilio-outbound_phone_call.json
│ │ │ ├── util-twilio-text_message.json
│ │ │ └── util-twilio-transfer_phone_call.json
│ ├── BotSharp.Plugin.WeChat
│ │ ├── BotSharp.Plugin.WeChat.csproj
│ │ ├── BotSharpMessageHandler.cs
│ │ ├── IMessageQueue.cs
│ │ ├── README.md
│ │ ├── Users
│ │ │ ├── IWeChatAccountUserService.cs
│ │ │ └── WeChatAccountUserService.cs
│ │ ├── WeChatBackgroundService.cs
│ │ ├── WeChatMessage.cs
│ │ └── WeChatPlugin.cs
│ └── BotSharp.Plugin.WebDriver
│ │ ├── BotSharp.Plugin.WebDriver.csproj
│ │ ├── Drivers
│ │ └── PlaywrightDriver
│ │ │ ├── PlaywrightInstance.cs
│ │ │ ├── PlaywrightWebDriver.ActionOnElement.cs
│ │ │ ├── PlaywrightWebDriver.ChangeCheckbox.cs
│ │ │ ├── PlaywrightWebDriver.ChangeListValue.cs
│ │ │ ├── PlaywrightWebDriver.CheckRadioButton.cs
│ │ │ ├── PlaywrightWebDriver.ClickButton.cs
│ │ │ ├── PlaywrightWebDriver.ClickElement.cs
│ │ │ ├── PlaywrightWebDriver.CloseBrowser.cs
│ │ │ ├── PlaywrightWebDriver.CloseCurrentPage.cs
│ │ │ ├── PlaywrightWebDriver.DoAction.cs
│ │ │ ├── PlaywrightWebDriver.EvaluateScript.cs
│ │ │ ├── PlaywrightWebDriver.ExtractData.cs
│ │ │ ├── PlaywrightWebDriver.GetAttributeValue.cs
│ │ │ ├── PlaywrightWebDriver.GoToPage.cs
│ │ │ ├── PlaywrightWebDriver.HttpRequest.cs
│ │ │ ├── PlaywrightWebDriver.InputUserPassword.cs
│ │ │ ├── PlaywrightWebDriver.InputUserText.cs
│ │ │ ├── PlaywrightWebDriver.LaunchBrowser.cs
│ │ │ ├── PlaywrightWebDriver.LocateElement.cs
│ │ │ ├── PlaywrightWebDriver.Screenshot.cs
│ │ │ ├── PlaywrightWebDriver.ScrollPage.cs
│ │ │ └── PlaywrightWebDriver.cs
│ │ ├── Functions
│ │ ├── ChangeCheckboxFn.cs
│ │ ├── ChangeListValueFn.cs
│ │ ├── CheckRadioButtonFn.cs
│ │ ├── ClickButtonFn.cs
│ │ ├── ClickElementFn.cs
│ │ ├── CloseBrowserFn.cs
│ │ ├── EvaluateScriptFn.cs
│ │ ├── ExtractDataFn.cs
│ │ ├── GoToPageFn.cs
│ │ ├── HttpRequestFn.cs
│ │ ├── InputUserPasswordFn.cs
│ │ ├── InputUserTextFn.cs
│ │ ├── OpenBrowserFn.cs
│ │ ├── ScreenshotFn.cs
│ │ └── ScrollPageFn.cs
│ │ ├── Hooks
│ │ ├── WebDriverConversationHook.cs
│ │ └── WebUtilityHook.cs
│ │ ├── LlmContexts
│ │ └── HtmlElementContextOut.cs
│ │ ├── Models
│ │ └── MarkupProperties.cs
│ │ ├── README.md
│ │ ├── Services
│ │ ├── WebDriverService.AssembleMarkup.cs
│ │ ├── WebDriverService.ExtraData.cs
│ │ ├── WebDriverService.GetMessageContext.cs
│ │ ├── WebDriverService.InferElement.cs
│ │ ├── WebDriverService.ReplaceToken.cs
│ │ ├── WebDriverService.Screenshot.cs
│ │ └── WebDriverService.cs
│ │ ├── Using.cs
│ │ ├── UtilFunctions
│ │ ├── UtilWebActionOnElementFn.cs
│ │ ├── UtilWebCloseBrowserFn.cs
│ │ ├── UtilWebGoToPageFn.cs
│ │ └── UtilWebLocateElementFn.cs
│ │ ├── WebDriverPlugin.cs
│ │ ├── WebPageHelper.cs
│ │ └── data
│ │ └── agents
│ │ ├── 6745151e-6d46-4a02-8de4-1c4f21c7da95
│ │ ├── functions
│ │ │ ├── util-web-action_on_element.json
│ │ │ ├── util-web-close_browser.json
│ │ │ ├── util-web-go_to_page.json
│ │ │ └── util-web-locate_element.json
│ │ └── templates
│ │ │ ├── util-web-action_on_element.fn.liquid
│ │ │ └── util-web-go_to_page.fn.liquid
│ │ └── f3ae2a0f-e6ba-4ee1-a0b9-75d7431ff32b
│ │ ├── agent.json
│ │ ├── functions
│ │ ├── change_checkbox.json
│ │ ├── change_list_value.json
│ │ ├── check_radio_button.json
│ │ ├── click_button.json
│ │ ├── click_element.json
│ │ ├── close_browser.json
│ │ ├── extract_data_from_page.json
│ │ ├── go_to_page.json
│ │ ├── input_user_password.json
│ │ ├── input_user_text.json
│ │ ├── open_browser.json
│ │ ├── scroll_page.json
│ │ ├── send_http_request.json
│ │ └── take_screenshot.json
│ │ ├── instructions
│ │ └── instruction.liquid
│ │ └── templates
│ │ ├── extract_data.liquid
│ │ └── html_parser.liquid
└── WebStarter
│ ├── Program.cs
│ ├── Properties
│ └── launchSettings.json
│ ├── WebStarter.csproj
│ ├── WebStarter.sln
│ ├── appsettings.Development.json
│ ├── appsettings.json
│ └── wwwroot
│ └── favicon.ico
└── tests
├── BotSharp.LLM.Tests
├── BotSharp.LLM.Tests.csproj
├── ChatCompletionTests.cs
├── Core
│ ├── LLMProvider.cs
│ ├── NullConversationStateService.cs
│ ├── NullFileStorageService.cs
│ └── TestAgentService.cs
├── EmbeddingTests.cs
├── FunctionCallingTests.cs
├── GoogleRealTimeTests.cs
├── TestBase.cs
├── appsettings.Development.json
└── appsettings.json
├── BotSharp.PizzaBot.MCPServer
├── BotSharp.PizzaBot.MCPServer.csproj
├── Program.cs
├── Properties
│ └── launchSettings.json
└── Tools
│ ├── MakePayment.cs
│ ├── PizzaPrices.cs
│ └── PlaceOrder.cs
├── BotSharp.Plugin.PizzaBot
├── BotSharp.Plugin.PizzaBot.csproj
├── Functions
│ ├── GetOrderStatusFn.cs
│ ├── GetPizzaPricesFn.cs
│ ├── GetPizzaTypesFn.cs
│ ├── MakePaymentFn.cs
│ └── PlaceOrderFn.cs
├── Hooks
│ ├── CommonAgentHook.cs
│ ├── PizzaBotAgentHook.cs
│ └── PizzaBotConversationHook.cs
├── PizzaBotPlugin.cs
├── Using.cs
├── data
│ ├── agents
│ │ ├── 8970b1e5-d260-4e2c-90b1-f1415a257c18
│ │ │ ├── agent.json
│ │ │ └── templates
│ │ │ │ └── task.place_pizza_order.liquid
│ │ ├── b284db86-e9c2-4c25-a59e-4649797dd130
│ │ │ ├── agent.json
│ │ │ ├── functions
│ │ │ │ └── get_order_status.json
│ │ │ └── instructions
│ │ │ │ └── instruction.liquid
│ │ ├── c2b57a74-ae4e-4c81-b3ad-9ac5bff982bd
│ │ │ ├── agent.json
│ │ │ ├── functions
│ │ │ │ ├── get_pizza_price.json
│ │ │ │ ├── get_pizza_types.json
│ │ │ │ └── place_order.json
│ │ │ └── instructions
│ │ │ │ └── instruction.liquid
│ │ └── fe8c60aa-b114-4ef3-93cb-a8efeac80f75
│ │ │ ├── agent.json
│ │ │ ├── functions
│ │ │ └── make_payment.json
│ │ │ └── instructions
│ │ │ └── instruction.liquid
│ └── users
│ │ ├── 10d12798-08fb-4aa6-977b-5dd94d82dbfe
│ │ └── user.json
│ │ ├── 456e35c5-caf0-4d45-9084-b44a8ca717e4
│ │ └── user.json
│ │ ├── d0e6680d-03d5-4ed8-bdcd-aa7d86f2a1bc
│ │ └── user.json
│ │ └── e465af5f-044f-414b-b670-92834929b96c
│ │ └── user.json
└── documents
│ ├── RDD-ChicagoThinCrust.pdf
│ └── pizza-recipebooklet-1.pdf
├── BotSharp.Plugin.SemanticKernel.UnitTests
├── BotSharp.Plugin.SemanticKernel.UnitTests.csproj
├── Helpers
│ ├── ResultHelper.cs
│ └── SemanticKernelHelper.cs
├── SemanticKernelChatCompletionProviderTests.cs
├── SemanticKernelPluginTests.cs
├── SemanticKernelTextCompletionProviderTests.cs
└── Usings.cs
├── BotSharp.Test.BrowserUse
├── BotSharp.Test.BrowserUse.csproj
└── Program.cs
├── BotSharp.Test.ComputerUse
├── BotSharp.Test.ComputerUse.csproj
└── Program.cs
├── BotSharp.Test.RealtimeVoice
├── Audio
│ ├── AudioInStream.cs
│ └── AudioOut.cs
├── BotSharp.Test.RealtimeVoice.csproj
├── Enums
│ └── SessionMode.cs
├── Program.cs
├── Session
│ ├── ConsoleChatSession.CustomStream.cs
│ ├── ConsoleChatSession.StreamChannel.cs
│ └── ConsoleChatSession.cs
├── Using.cs
└── appsettings.json
└── UnitTest
├── MainTest.cs
├── UnitTest.csproj
└── Usings.cs
/.dockerignore:
--------------------------------------------------------------------------------
1 | bin/
2 | obj/
3 | node_modules/
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | If you are a .NET developer and want to use C# for natural language processing, or build an AI Bot platform to automate your business processes, please fork this project and submit a Pull Request.
2 | We would be very grateful if you star the project. Join us on Gitter (https://gitter.im/botsharpcore/Lobby).
3 |
--------------------------------------------------------------------------------
/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 | net8.0
4 | 12.0
5 | 5.0.0
6 | true
7 | false
8 |
9 |
--------------------------------------------------------------------------------
/IFunctionExecutor.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace BotSharp.Core.Routing
8 | {
9 | public interface IFunctionExecutor
10 | {
11 | public Task Execute(RoleDialogModel message);
12 |
13 | public Task GetIndication(RoleDialogModel message);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/arts/BotSharp.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/arts/BotSharp.gif
--------------------------------------------------------------------------------
/arts/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/arts/Icon.png
--------------------------------------------------------------------------------
/arts/Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/arts/Logo.png
--------------------------------------------------------------------------------
/dockerfiles/.env:
--------------------------------------------------------------------------------
1 | # MongoDB Configuration
2 | ENV_MONGO_DB_HOST=botsharp_mongo
3 | ENV_MONGO_DB_PORT=27017
4 | ENV_MONGO_DB_DATABASE=botsharp
5 | ENV_MONGO_INITDB_ROOT_USERNAME=root
6 | ENV_MONGO_INITDB_ROOT_PASSWORD=admin
7 | ASPNETCORE_HTTP_PORTS=5500
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/dockerfiles/Readme.md:
--------------------------------------------------------------------------------
1 | ## Run Container
2 |
3 | # Prerequisites:
4 | 1. Install Powershell
5 | 2. Install Docker Environment
6 |
7 | # start container
8 |
9 | ```
10 | run-docker-compose.ps1
11 | ```
12 |
13 | # stop container
14 | ```
15 | stop-docker-compose.ps1
16 | ```
17 |
--------------------------------------------------------------------------------
/dockerfiles/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3.0'
2 |
3 | services:
4 | botsharp:
5 | image: botsharpdocker/botsharp-core:latest
6 | build:
7 | context: ../
8 | dockerfile: dockerfiles/WebStarter.Dockerfile
9 | ports:
10 | - 5500:5500
11 | env_file:
12 | - ./.env
13 | volumes:
14 | - ./appsettings.json:/app/appsettings.json
15 | networks:
16 | - botsharp-network
17 |
--------------------------------------------------------------------------------
/dockerfiles/run-docker-compose.ps1:
--------------------------------------------------------------------------------
1 | docker network create botsharp-network
2 | docker-compose -f docker-compose.yml -f docker-compose.infrastructure.yml -f docker-compose.infrastructure.override.yml up -d
--------------------------------------------------------------------------------
/dockerfiles/stop-docker-compose.ps1:
--------------------------------------------------------------------------------
1 | docker-compose -f docker-compose.yml -f docker-compose.infrastructure.yml -f docker-compose.infrastructure.override.yml down
2 | docker network rm botsharp-network
--------------------------------------------------------------------------------
/docs/Name-Entity Recognition(NER) Comparation.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/Name-Entity Recognition(NER) Comparation.pdf
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # How to contribute docs
2 |
3 | We use [Sphinx](https://www.sphinx-doc.org/en/master/) to build document, please make sure you installed the appropriate Sphinx plugins before making the docs.
4 |
5 | ```shell
6 | pip install -U sphinx
7 | pip install recommonmark
8 | pip install sphinx_rtd_theme
9 | pip install myst-parser
10 | cd docs
11 | ./make html
12 | ```
--------------------------------------------------------------------------------
/docs/agent/assets/agent-creation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/agent/assets/agent-creation.png
--------------------------------------------------------------------------------
/docs/agent/assets/agent-update.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/agent/assets/agent-update.png
--------------------------------------------------------------------------------
/docs/agent/assets/conversation-creation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/agent/assets/conversation-creation.png
--------------------------------------------------------------------------------
/docs/agent/assets/conversation-send-message.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/agent/assets/conversation-send-message.png
--------------------------------------------------------------------------------
/docs/agent/assets/routing-calling-stack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/agent/assets/routing-calling-stack.png
--------------------------------------------------------------------------------
/docs/architecture/assets/account-creation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/architecture/assets/account-creation.png
--------------------------------------------------------------------------------
/docs/architecture/assets/account-token.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/architecture/assets/account-token.png
--------------------------------------------------------------------------------
/docs/architecture/assets/agent-utility/add-utility.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/architecture/assets/agent-utility/add-utility.png
--------------------------------------------------------------------------------
/docs/architecture/assets/agent-utility/agent-utility-code-structure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/architecture/assets/agent-utility/agent-utility-code-structure.png
--------------------------------------------------------------------------------
/docs/architecture/assets/agent-utility/agent-utility-example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/architecture/assets/agent-utility/agent-utility-example.png
--------------------------------------------------------------------------------
/docs/architecture/assets/agent-utility/chat-window-demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/architecture/assets/agent-utility/chat-window-demo.png
--------------------------------------------------------------------------------
/docs/architecture/assets/agent-utility/dummy-http.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/architecture/assets/agent-utility/dummy-http.png
--------------------------------------------------------------------------------
/docs/architecture/assets/agent-utility/register-assembly.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/architecture/assets/agent-utility/register-assembly.png
--------------------------------------------------------------------------------
/docs/architecture/assets/agent-utility/router-utility-ui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/architecture/assets/agent-utility/router-utility-ui.png
--------------------------------------------------------------------------------
/docs/architecture/assets/agent-utility/routing-arch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/architecture/assets/agent-utility/routing-arch.png
--------------------------------------------------------------------------------
/docs/architecture/assets/agent-utility/task-agent-utility-ui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/architecture/assets/agent-utility/task-agent-utility-ui.png
--------------------------------------------------------------------------------
/docs/architecture/assets/botsharp_diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/architecture/assets/botsharp_diagram.png
--------------------------------------------------------------------------------
/docs/architecture/assets/llm_diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/architecture/assets/llm_diagram.png
--------------------------------------------------------------------------------
/docs/architecture/assets/routing-reasoner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/architecture/assets/routing-reasoner.png
--------------------------------------------------------------------------------
/docs/architecture/assets/routing-redirection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/architecture/assets/routing-redirection.png
--------------------------------------------------------------------------------
/docs/architecture/data-persistence.md:
--------------------------------------------------------------------------------
1 | # Data Storage
--------------------------------------------------------------------------------
/docs/channels/wechat.md:
--------------------------------------------------------------------------------
1 | # WeChat
--------------------------------------------------------------------------------
/docs/conversation/hook.md:
--------------------------------------------------------------------------------
1 | # Conversation Hook
--------------------------------------------------------------------------------
/docs/conversation/state.md:
--------------------------------------------------------------------------------
1 | # Conversation State
2 |
3 | BotSharp has a built-in dialogue state management function, which automatically saves the input parameters of the function to the dialogue state by default, and is valid throughout the life cycle of the dialogue. If the parameter name is repeated, it will be overwritten.
--------------------------------------------------------------------------------
/docs/knowledge-base/assets/feed_knowledge_answer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/knowledge-base/assets/feed_knowledge_answer.png
--------------------------------------------------------------------------------
/docs/knowledge-base/assets/feed_knowledge_pdf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/knowledge-base/assets/feed_knowledge_pdf.png
--------------------------------------------------------------------------------
/docs/knowledge-base/similarity-search.md:
--------------------------------------------------------------------------------
1 | # Similarity Search
2 |
3 | After we have learned the concepts of `Text Embedding` and `Vector Database`, we can start to use BotSharp to actually build an LLM-based knowledge base question system.
4 | Below we will walk through how to use an existing PDF document to make a Q&A chatbot.
5 |
--------------------------------------------------------------------------------
/docs/knowledge-base/vector-database.md:
--------------------------------------------------------------------------------
1 | # Vector Database
2 |
3 | In order to use your own private data to build a knowledge base question answering system, you must first convert your documents into plain text, and then embed the text into the Vector database for indexing to improve subsequent search efficiency.
4 |
5 | ## Memory vector datbase
6 | `MemVecDb` is a lightweight memory vector database provided by BotSharp for rapid development and testing. It is not recommended to be used in the actual production environment.
--------------------------------------------------------------------------------
/docs/llama-sharp/assets/check-llamasharp-version.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/llama-sharp/assets/check-llamasharp-version.png
--------------------------------------------------------------------------------
/docs/llama-sharp/assets/choose-llamasharp-as-provider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/llama-sharp/assets/choose-llamasharp-as-provider.png
--------------------------------------------------------------------------------
/docs/llama-sharp/assets/click-test-button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/llama-sharp/assets/click-test-button.png
--------------------------------------------------------------------------------
/docs/llama-sharp/assets/console-output-in-botsharp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/llama-sharp/assets/console-output-in-botsharp.png
--------------------------------------------------------------------------------
/docs/llama-sharp/assets/converstaion-examples.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/llama-sharp/assets/converstaion-examples.png
--------------------------------------------------------------------------------
/docs/llama-sharp/assets/edit-agent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/llama-sharp/assets/edit-agent.png
--------------------------------------------------------------------------------
/docs/llama-sharp/assets/install-llamasharp-plugin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/llama-sharp/assets/install-llamasharp-plugin.png
--------------------------------------------------------------------------------
/docs/llm/few-shot-learning.md:
--------------------------------------------------------------------------------
1 | # Few-Shot Learning
--------------------------------------------------------------------------------
/docs/llm/prompt.md:
--------------------------------------------------------------------------------
1 | # Prompt Engineering
2 |
3 | LLM uses prompt as input, and the model produces different outputs according to the input.
4 |
--------------------------------------------------------------------------------
/docs/llm/template.md:
--------------------------------------------------------------------------------
1 | # Template
2 |
3 | We can define the prompt as a template, and the template can be changed according to variables, so that a instruction file can be used to generate a dynamic prompt.
4 | `BotSharp` uses [liquid](https://shopify.github.io/liquid/) templates to support various complex dynamic prompt engineering.
5 |
6 | `ITemplateRender`
7 | ```csharp
8 | bool Render(Agent agent, Dictionary dict)
9 | ```
--------------------------------------------------------------------------------
/docs/quick-start/assets/APIHome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/quick-start/assets/APIHome.png
--------------------------------------------------------------------------------
/docs/quick-start/assets/APIPostman.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/quick-start/assets/APIPostman.png
--------------------------------------------------------------------------------
/docs/quick-start/assets/BackendServiceHomeScreenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/quick-start/assets/BackendServiceHomeScreenshot.png
--------------------------------------------------------------------------------
/docs/quick-start/assets/BotSharp-UI-Router.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/quick-start/assets/BotSharp-UI-Router.png
--------------------------------------------------------------------------------
/docs/quick-start/assets/ChatbotUIHome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/quick-start/assets/ChatbotUIHome.png
--------------------------------------------------------------------------------
/docs/quick-start/assets/NuGet-Local-Whisper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/quick-start/assets/NuGet-Local-Whisper.png
--------------------------------------------------------------------------------
/docs/quick-start/assets/PizzaBotSample1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/quick-start/assets/PizzaBotSample1.png
--------------------------------------------------------------------------------
/docs/quick-start/assets/PizzaBotSample2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/quick-start/assets/PizzaBotSample2.png
--------------------------------------------------------------------------------
/docs/quick-start/assets/PizzaBotSample3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/quick-start/assets/PizzaBotSample3.png
--------------------------------------------------------------------------------
/docs/quick-start/assets/PizzaBotSample4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/quick-start/assets/PizzaBotSample4.png
--------------------------------------------------------------------------------
/docs/quick-start/assets/Result-Local-Whisper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/quick-start/assets/Result-Local-Whisper.png
--------------------------------------------------------------------------------
/docs/quick-start/assets/Steps-Local-Whisper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/quick-start/assets/Steps-Local-Whisper.png
--------------------------------------------------------------------------------
/docs/quick-start/assets/overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/quick-start/assets/overview.png
--------------------------------------------------------------------------------
/docs/requirements.txt:
--------------------------------------------------------------------------------
1 | sphinx == 6.2.1
2 | recommonmark == 0.7.1
3 | sphinx-rtd-theme == 1.2.2
4 | myst-parser
--------------------------------------------------------------------------------
/docs/static/logos/BotSharpEngine.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/static/logos/BotSharpEngine.jpg
--------------------------------------------------------------------------------
/docs/static/logos/Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/static/logos/Logo.png
--------------------------------------------------------------------------------
/docs/static/screenshots/BotSharp_arch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/static/screenshots/BotSharp_arch.png
--------------------------------------------------------------------------------
/docs/static/screenshots/agent-builder-agents.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/static/screenshots/agent-builder-agents.png
--------------------------------------------------------------------------------
/docs/static/screenshots/agent-builder-conversations.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/static/screenshots/agent-builder-conversations.png
--------------------------------------------------------------------------------
/docs/static/screenshots/web-live-chat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SciSharp/BotSharp/73934bf2b318dfd6a310557015c4f082ffe0fb6b/docs/static/screenshots/web-live-chat.png
--------------------------------------------------------------------------------
/src/BotSharp.AppHost/appsettings.Development.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "LogLevel": {
4 | "Default": "Information",
5 | "Microsoft.AspNetCore": "Warning"
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/BotSharp.AppHost/appsettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "Logging": {
3 | "LogLevel": {
4 | "Default": "Information",
5 | "Microsoft.AspNetCore": "Warning",
6 | "Aspire.Hosting.Dcp": "Warning"
7 | }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction.ComputerUse/MLTasks/IScreenshot.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.ComputerUse.MLTasks;
2 |
3 | public interface IScreenshot
4 | {
5 | (int x, int y) GetScreenSize(int screenIndex);
6 | byte[] CaptureScreen(int displayId);
7 | }
8 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction.ComputerUse/Models/ComputerUseArgs.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.ComputerUse.Models;
2 |
3 | public class ComputerUseArgs
4 | {
5 | ///
6 | /// Number of multi-screens
7 | ///
8 | public int DisplayId { get; set; }
9 | public int X { get; set; }
10 | public int Y { get; set; }
11 | public string Text { get; set; } = string.Empty;
12 | public MouseButton MouseButton { get; set; }
13 | public KeyCode KeyCode { get; set; }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction.ComputerUse/Models/ComputerUseOutput.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.ComputerUse.Models;
2 |
3 | public class ComputerUseOutput
4 | {
5 | ///
6 | /// Base64 encoded image
7 | ///
8 | public string? Screenshot { get; set; }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction.ComputerUse/Using.cs:
--------------------------------------------------------------------------------
1 | global using System.Threading.Tasks;
2 | global using BotSharp.Abstraction.ComputerUse.Models;
3 |
4 | global using SharpHook.Native;
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Agents/Constants/LlmConstant.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Agents.Constants;
2 |
3 | public static class LlmConstant
4 | {
5 | public const int DEFAULT_MAX_OUTPUT_TOKEN = 1024;
6 | }
7 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Agents/Enums/AgentRole.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Agents.Enums;
2 |
3 | public class AgentRole
4 | {
5 | public const string System = "system";
6 | public const string Assistant = "assistant";
7 | public const string User = "user";
8 | public const string Function = "function";
9 | public const string Model = "model";
10 | }
11 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Agents/IAgentUtilityHook.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Agents;
2 |
3 | public interface IAgentUtilityHook
4 | {
5 | void AddUtilities(List utilities);
6 | }
7 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Agents/Models/AgentRule.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Agents.Models;
2 |
3 | public class AgentRule
4 | {
5 | [JsonPropertyName("trigger_name")]
6 | public string TriggerName { get; set; }
7 |
8 | [JsonPropertyName("disabled")]
9 | public bool Disabled { get; set; }
10 |
11 | [JsonPropertyName("criteria")]
12 | public string Criteria { get; set; }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Agents/Models/AgentTemplate.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Agents.Models;
2 |
3 | public class AgentTemplate
4 | {
5 | public string Name { get; set; }
6 | public string Content { get; set; }
7 |
8 | public AgentTemplate()
9 | {
10 | }
11 |
12 | public AgentTemplate(string name, string content)
13 | {
14 | Name = name;
15 | Content = content;
16 | }
17 |
18 | public override string ToString()
19 | {
20 | return Name;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Agents/Models/ChannelInstruction.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Agents.Models;
2 |
3 | public class ChannelInstruction
4 | {
5 | public string Channel { get; set; }
6 | public string Instruction { get; set; }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Browsing/Enums/BroswerActionEnum.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Browsing.Enums;
2 |
3 | public enum BroswerActionEnum
4 | {
5 | Click = 1,
6 | InputText = 2,
7 | Typing = 3,
8 | Hover = 4,
9 | Scroll = 5,
10 | DragAndDrop = 6,
11 | DropDown = 7,
12 | FileUpload = 8
13 | }
14 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Browsing/IWebDriverHook.cs:
--------------------------------------------------------------------------------
1 | using BotSharp.Abstraction.Browsing.Models;
2 |
3 | namespace BotSharp.Abstraction.Browsing;
4 |
5 | public interface IWebDriverHook
6 | {
7 | Task> GetUploadFiles(MessageInfo message);
8 | }
9 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Browsing/IWebPageResponseHook.cs:
--------------------------------------------------------------------------------
1 | using BotSharp.Abstraction.Browsing.Models;
2 |
3 | namespace BotSharp.Abstraction.Browsing;
4 |
5 | public interface IWebPageResponseHook
6 | {
7 | void OnDataFetched(MessageInfo message, WebPageResponseData response);
8 | T? GetResponse(MessageInfo message, WebPageResponseFilter filter);
9 | }
10 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Browsing/Models/BrowserActionArgs.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Browsing.Models;
2 |
3 | public class BrowserActionArgs
4 | {
5 | public bool Headless { get; set; }
6 | public string? UserDataDir { get; set; }
7 | public string? RemoteHostUrl { get; set; }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Browsing/Models/ElementPosition.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Browsing.Models;
2 |
3 | public class ElementPosition
4 | {
5 | public float X { get; set; } = default!;
6 |
7 | public float Y { get; set; } = default!;
8 |
9 | public override string ToString()
10 | {
11 | return $"[{X}, {Y}]";
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Conversations/Enums/ConversationStatus.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Conversations.Enums;
2 |
3 | public class ConversationStatus
4 | {
5 | public const string Open = "open";
6 | public const string Closed = "closed";
7 | }
8 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Conversations/Enums/MessageTypeName.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Conversations.Enums;
2 |
3 | public static class MessageTypeName
4 | {
5 | public const string Plain = "plain";
6 | public const string Notification = "notification";
7 | public const string FunctionCall = "function";
8 | public const string Audio = "audio";
9 | public const string Error = "error";
10 | }
11 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Conversations/Enums/StateDataType.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Conversations.Enums;
2 |
3 | public class StateDataType
4 | {
5 | public const string String = "string";
6 | public const string Boolean = "boolean";
7 | public const string Number = "number";
8 | public const string Currency = "currency";
9 | public const string Date = "date";
10 | }
11 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Conversations/Enums/StateSource.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Conversations.Enums;
2 |
3 | public class StateSource
4 | {
5 | public const string External = "external";
6 | public const string Application = "application";
7 | public const string User = "user";
8 | }
9 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationProgressService.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Conversations;
2 |
3 | public delegate Task FunctionExecuting(RoleDialogModel msg);
4 | public delegate Task FunctionExecuted(RoleDialogModel msg);
5 |
6 | public interface IConversationProgressService
7 | {
8 | FunctionExecuted OnFunctionExecuted { get; set; }
9 | FunctionExecuting OnFunctionExecuting { get; set; }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationStorage.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Conversations;
2 |
3 | public interface IConversationStorage
4 | {
5 | void Append(string conversationId, RoleDialogModel dialog);
6 | void Append(string conversationId, IEnumerable dialogs);
7 | List GetDialogs(string conversationId);
8 | }
9 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Conversations/ITokenStatistics.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Conversations;
2 |
3 | public interface ITokenStatistics
4 | {
5 | int Total { get; }
6 | float AccumulatedCost { get; }
7 | float Cost { get; }
8 | void StartTimer();
9 | void StopTimer();
10 | void AddToken(TokenStatsModel stats, RoleDialogModel message);
11 | void PrintStatistics();
12 | }
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Conversations/Models/ConversationState.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Conversations.Models;
2 |
3 | public class ConversationState : Dictionary
4 | {
5 | public ConversationState()
6 | {
7 |
8 | }
9 |
10 | public ConversationState(List pairs)
11 | {
12 | foreach (var pair in pairs)
13 | {
14 | this[pair.Key] = pair;
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Conversations/Models/PostbackMessageModel.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Conversations.Models;
2 |
3 | public class PostbackMessageModel
4 | {
5 | public string FunctionName { get; set; } = string.Empty;
6 | public string Payload { get; set; } = string.Empty;
7 | ///
8 | /// Parent message id
9 | ///
10 | public string ParentId { get; set; } = string.Empty;
11 | }
12 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Conversations/Models/TruncateMessageRequest.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Conversations.Models;
2 |
3 | public class TruncateMessageRequest
4 | {
5 | [JsonPropertyName("is_new_message")]
6 | public bool isNewMessage { get; set; }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Conversations/Models/UpdateMessageRequest.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Conversations.Models;
2 |
3 | public class UpdateMessageRequest
4 | {
5 | public DialogElement Message { get; set; } = null!;
6 | public int InnderIndex { get; set; }
7 | }
8 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Conversations/Settings/RateLimitSetting.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Conversations.Settings;
2 |
3 | public class RateLimitSetting
4 | {
5 | public int MaxConversationPerDay { get; set; } = 100;
6 | public int MaxInputLengthPerRequest { get; set; } = 1024;
7 | public int MinTimeSecondsBetweenMessages { get; set; } = 2;
8 | }
9 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Crontab/ICrontabService.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Crontab;
2 |
3 | public interface ICrontabService
4 | {
5 | Task> GetCrontable();
6 | Task ScheduledTimeArrived(CrontabItem item);
7 | }
8 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Crontab/ICrontabSource.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Crontab;
2 |
3 | ///
4 | /// Provide a cron source for the crontab service.
5 | ///
6 | public interface ICrontabSource
7 | {
8 | ///
9 | /// Set to true if the cron is real-time like Change Data Capture (CDC).
10 | ///
11 | bool IsRealTime => false;
12 |
13 | CrontabItem GetCrontabItem();
14 | }
15 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Crontab/Models/TaskWaitArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace BotSharp.Abstraction.Crontab.Models;
8 |
9 | public class TaskWaitArgs
10 | {
11 |
12 | [JsonPropertyName("delay_time")]
13 | public int DelayTime { get; set; }
14 | }
15 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Crontab/Settings/CrontabSettings.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Crontab.Settings;
2 |
3 | public class CrontabSettings
4 | {
5 | public CrontabBaseSetting EventSubscriber { get; set; } = new();
6 | public CrontabBaseSetting Watcher { get; set; } = new();
7 | }
8 |
9 | public class CrontabBaseSetting
10 | {
11 | public bool Enabled { get; set; } = true;
12 | }
13 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Evaluations/IExecutionLogger.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Evaluations;
2 |
3 | public interface IExecutionLogger
4 | {
5 | void Append(string conversationId, string context);
6 | }
7 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Evaluations/Models/EvaluationResult.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Evaluations.Models;
2 |
3 | public class EvaluationResult
4 | {
5 | public List Dialogs { get; set; }
6 | public string TaskInstruction { get; set; }
7 | public string SystemPrompt { get; set; }
8 | public string GeneratedConversationId { get; set; }
9 | public string? MetricResult { get; set; }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Evaluations/Models/SimulationResult.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Evaluations.Models;
2 |
3 | public class SimulationResult
4 | {
5 | [JsonPropertyName("generated_message")]
6 | public string GeneratedMessage { get; set; }
7 |
8 | [JsonPropertyName("stop_conversation")]
9 | public bool Stop { get; set; }
10 |
11 | [JsonPropertyName("reason")]
12 | public string? Reason { get; set; }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Evaluations/Settings/EvaluatorSetting.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Evaluations.Settings;
2 |
3 | public class EvaluatorSetting
4 | {
5 | public string AgentId { get; set; }
6 | }
7 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Files/Constants/FileConstants.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Files.Constants;
2 |
3 | public class FileConstants
4 | {
5 | public static readonly IEnumerable AudioExtensions = new List
6 | {
7 | ".mp3", ".wav", ".flac", ".aac", ".ogg", ".wma"
8 | };
9 | }
10 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Files/Enums/FileSourceType.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Files.Enums;
2 |
3 | public static class FileSourceType
4 | {
5 | public const string User = "user";
6 | public const string Bot = "bot";
7 | }
8 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Files/Enums/FileStorageEnum.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Repositories.Enums;
2 |
3 | public static class FileStorageEnum
4 | {
5 | public const string LocalFileStorage = nameof(LocalFileStorage);
6 | public const string AmazonS3Storage = nameof(AmazonS3Storage);
7 | public const string AzureBlobStorage = nameof(AzureBlobStorage);
8 | public const string TencentCosStorage = nameof(TencentCosStorage);
9 | }
10 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Files/FileCoreSettings.cs:
--------------------------------------------------------------------------------
1 | using BotSharp.Abstraction.Repositories.Enums;
2 |
3 | namespace BotSharp.Abstraction.Files;
4 |
5 | public class FileCoreSettings
6 | {
7 | public string Storage { get; set; } = FileStorageEnum.LocalFileStorage;
8 | public SettingBase Pdf2TextConverter { get; set; }
9 | public SettingBase Pdf2ImageConverter { get; set; }
10 | }
11 |
12 | public class SettingBase
13 | {
14 | public string Provider { get; set; }
15 | }
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Files/Models/BotSharpFile.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace BotSharp.Abstraction.Files.Models;
3 |
4 | public class BotSharpFile : FileInformation
5 | {
6 | ///
7 | /// File data => format: "data:image/png;base64,aaaaaaaa"
8 | ///
9 | [JsonPropertyName("file_data")]
10 | [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
11 | public string? FileData { get; set; } = string.Empty;
12 | }
13 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Files/Models/FileBinaryDataModel.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Files.Models;
2 |
3 | public class FileBinaryDataModel
4 | {
5 | public string FileName { get; set; }
6 | public string ContentType { get; set; }
7 | public BinaryData FileBinaryData { get; set; }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Files/Models/FileSelectContext.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Files.Models;
2 |
3 | public class FileSelectContext
4 | {
5 | [JsonPropertyName("selected_ids")]
6 | [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
7 | public IEnumerable? Selecteds { get; set; }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Files/Models/ImageGeneration.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Files.Models;
2 |
3 | public class ImageGeneration
4 | {
5 | [JsonPropertyName("image_url")]
6 | public string? ImageUrl { get; set; }
7 |
8 | [JsonPropertyName("image_data")]
9 | public string? ImageData { get; set; }
10 |
11 | [JsonPropertyName("description")]
12 | public string Description { get; set; } = string.Empty;
13 | }
14 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Files/Models/KnowledgeFileModel.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Files.Models;
2 |
3 | public class KnowledgeFileModel
4 | {
5 | public Guid FileId { get; set; }
6 | public string FileName { get; set; }
7 | public string FileExtension { get; set; }
8 | public string FileSource { get; set; }
9 | public string ContentType { get; set; }
10 | public string FileUrl { get; set; }
11 | public DocMetaRefData? RefData { get; set; }
12 | }
13 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Google/Models/GoogleAddressResult.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Google.Models;
2 |
3 | public class GoogleAddressResult
4 | {
5 | public IList Results { get; set; } = new List();
6 | public string Status { get; set; }
7 | }
8 |
9 |
10 | public class GoogleAddress
11 | {
12 | [JsonPropertyName("formatted_address")]
13 | public string FormatedAddress { get; set; }
14 | }
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Graph/IGraphDb.cs:
--------------------------------------------------------------------------------
1 | using BotSharp.Abstraction.Graph.Models;
2 |
3 | namespace BotSharp.Abstraction.Graph;
4 |
5 | public interface IGraphDb
6 | {
7 | public string Provider { get; }
8 |
9 | Task Search(string query, GraphSearchOptions options);
10 | }
11 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Graph/Models/GraphSearchData.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Graph.Models;
2 |
3 | public class GraphSearchData
4 | {
5 | public string Result { get; set; }
6 | }
7 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Graph/Models/GraphSearchOptions.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Graph.Models;
2 |
3 | public class GraphSearchOptions
4 | {
5 | public string Method { get; set; }
6 | }
7 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Graph/Models/GraphSearchResult.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Graph.Models;
2 |
3 | public class GraphSearchResult
4 | {
5 | public string Result { get; set; }
6 | }
7 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Hooks/IHookBase.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Hooks;
2 |
3 | public interface IHookBase
4 | {
5 | ///
6 | /// Agent Id
7 | ///
8 | string SelfId => string.Empty;
9 | bool IsMatch(string agentId) => string.IsNullOrEmpty(SelfId) || SelfId == agentId;
10 | }
11 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Http/IHttpRequestHook.cs:
--------------------------------------------------------------------------------
1 | using System.Net.Http.Headers;
2 |
3 | namespace BotSharp.Abstraction.Http;
4 |
5 | public interface IHttpRequestHook
6 | {
7 | void OnAddHttpHeaders(HttpHeaders headers, Uri uri);
8 | }
9 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Infrastructures/Enums/CacheType.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Infrastructures.Enums;
2 |
3 | public enum CacheType
4 | {
5 | MemoryCache = 1,
6 | RedisCache = 2
7 | }
8 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Infrastructures/Enums/EventPriority.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Infrastructures.Enums;
2 |
3 | public enum EventPriority
4 | {
5 | Low = 1,
6 | Medium = 2,
7 | High = 3
8 | }
9 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Infrastructures/Enums/LanguageType.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Infrastructures.Enums;
2 |
3 | public class LanguageType
4 | {
5 | public const string UNKNOWN = "Unknown";
6 | public const string ENGLISH = "English";
7 | public const string SPANISH = "Spanish";
8 | public const string CHINESE = "Chinese";
9 | }
10 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Infrastructures/Events/IEventSubscriber.cs:
--------------------------------------------------------------------------------
1 | using System.Threading;
2 |
3 | namespace BotSharp.Abstraction.Infrastructures.Events;
4 |
5 | public interface IEventSubscriber
6 | {
7 | Task SubscribeAsync(string channel, Func received);
8 |
9 | Task SubscribeAsync(string channel, string group, int? port, bool priorityEnabled,
10 | Func received,
11 | CancellationToken? stoppingToken = null);
12 | }
13 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Infrastructures/HookEmitOption.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Infrastructures;
2 |
3 | public class HookEmitOption
4 | {
5 | public bool OnlyOnce { get; set; }
6 |
7 | ///
8 | /// Optional predicate to determine if the hook action should be executed for a specific hook instance.
9 | ///
10 | public Func? ShouldExecute { get; set; }
11 | }
12 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Infrastructures/HookEmittedResult.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Infrastructures;
2 |
3 | public class HookEmittedResult
4 | {
5 | }
6 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Infrastructures/ICacheKey.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Infrastructures;
2 |
3 | public interface ICacheKey
4 | {
5 | string GetCacheKey();
6 | }
7 |
--------------------------------------------------------------------------------
/src/Infrastructure/BotSharp.Abstraction/Infrastructures/ICacheService.cs:
--------------------------------------------------------------------------------
1 | namespace BotSharp.Abstraction.Infrastructures;
2 |
3 | public interface ICacheService
4 | {
5 | Task GetAsync(string key);
6 | Task