mirror of
https://github.com/crowetic/nc-talk-ai.git
synced 2026-09-07 07:32:31 +00:00
Talk AI is a multi-bot AI assistant manager for Nextcloud Talk: per-bot prompts and models, agentic tool calling (MCP + built-in tools), RAG over Nextcloud files, room-document search, vision and speech-to-text attachments, persistent bot wikis, approval workflows, rate limiting, and multi-provider LLM support (any OpenAI-compatible endpoint). Developed within EDUC - the European Digital UniverCity (https://educalliance.eu), where it runs as the 'EDUC AI' assistant on the alliance-wide Nextcloud portal. This public repository is the upstream point of truth; deployment-specific tools plug in via the tool-provider extension point (docs/TOOL_PROVIDERS.md). License: AGPL-3.0-or-later.
1 line
13 KiB
Plaintext
1 line
13 KiB
Plaintext
{"version":2,"defects":{"OCA\\EducAI\\Tests\\Unit\\Controller\\TalkBotControllerTest::testEnableBotReturnsForbiddenForNonModeratorsWhenBotIsDisabled":8,"OCA\\EducAI\\Tests\\Unit\\Controller\\TalkBotControllerTest::testEnableBotKeepsAlreadyEnabledResponseIdempotentForNonModerators":8,"OCA\\EducAI\\Tests\\Unit\\Service\\SettingsServiceTest::testUpdateSettingsPersistsEmbeddingRateLimitModeAndCustomValues":8,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testGenerateFallbackFromToolResultsUsesRoomSearchResults":8,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testSanitizeAssistantTextForUserRemovesThinkArtifactsAndAdjacentDuplicates":8,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunExecutesXmlWrappedJsonToolCall":8,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunExecutesXmlSubElementToolCall":8,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunUsesExplicitBuiltInToolsWithoutRegistryLookup":8,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunExecutesLegacyXmlArgumentPairToolCall":8,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunDoesNotStreamXmlToolArtifacts":8,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunUsesInitialToolChoiceOnlyUntilAudioToolCallIsSatisfied":8,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testGetPendingApprovalsIncludesReviewTargetFromPendingChanges":7,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testGenericForcedToolCallPrefersMcpSearchOverRoomSearch":7,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunExecutesMiniMaxInvokeToolCallAndNormalizesWikiTitle":7},"times":{"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunExecutesXmlWrappedJsonToolCall":0.006,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunExecutesXmlSubElementToolCall":0.001,"OCA\\EducAI\\Tests\\Unit\\Service\\SettingsServiceTest::testUpdateSettingsTriggersTalkBotRegistrationAfterPersistingSecret":0.001,"OCA\\EducAI\\Tests\\Unit\\Service\\SettingsServiceTest::testUpdateSettingsSkipsTalkRegistrationWhenWebhookSecretIsBlank":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testOwnerEditOfApprovedSharedBotCreatesScopedPendingChange":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testUpdatingVersionedPendingBotKeepsLiveVersionUntouched":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testApproveBotRejectsSelfApproval":0.001,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testStripXmlToolCallTagsRemovesArtifacts":0,"OCA\\EducAI\\Tests\\Unit\\Controller\\TalkBotControllerTest::testEnableBotReturnsForbiddenForNonModeratorsWhenBotIsDisabled":0.016,"OCA\\EducAI\\Tests\\Unit\\Controller\\TalkBotControllerTest::testEnableBotKeepsAlreadyEnabledResponseIdempotentForNonModerators":0,"OCA\\EducAI\\Tests\\Unit\\Service\\RateLimitServiceTest::testGetStatusReturnsSeparateChatAndEmbeddingStates":0.002,"OCA\\EducAI\\Tests\\Unit\\Service\\RateLimitServiceTest::testGetStatusLeavesEmbeddingStatusEmptyWhenNotObserved":0,"OCA\\EducAI\\Tests\\Unit\\Service\\RateLimitServiceTest::testGetStatusBuildsConfiguredEmbeddingStateWhenModeIsCustom":0,"OCA\\EducAI\\Tests\\Unit\\Service\\SettingsServiceTest::testUpdateSettingsPersistsEmbeddingRateLimitModeAndCustomValues":0,"OCA\\EducAI\\Tests\\Unit\\Service\\EmbeddingClientTest::testEmbedTextsTracksRateLimitStateOnEmbeddingEndpoint":0.001,"OCA\\EducAI\\Tests\\Unit\\Service\\OnboardingServiceTest::testInitializeRoomDeactivatesExistingAlwaysModeBots":0.001,"OCA\\EducAI\\Tests\\Unit\\Service\\OnboardingServiceTest::testSelectingAlwaysModeDemotesOtherAlwaysModeBotsInSameRoom":0,"OCA\\EducAI\\Tests\\Unit\\Webhook\\TalkMessageParserTest::testParseUsesStructuredContentParametersEvenWhenObjectNameIsEmpty":0,"OCA\\EducAI\\Tests\\Unit\\Webhook\\TalkMessageParserTest::testAttachmentNormalizerRejectsVideoAsUnsupported":0,"OCA\\EducAI\\Tests\\Unit\\Service\\AttachmentResolverTest::testResolveSourceFileFallsBackToOwnerTalkFolderPath":0.001,"OCA\\EducAI\\Tests\\Unit\\Service\\BuiltInToolProviderTest::testExecuteAttachmentImageAnalysisWithoutAttachmentContextReturnsError":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BuiltInToolProviderTest::testRoomSearchUsesRoomScopedMapperAndReturnsResults":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BuiltInToolProviderTest::testRoomSearchFallsBackToCurrentDocumentAtLowerThreshold":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BuiltInToolProviderTest::testRoomSearchFallsBackToRoomWideLowerThresholdWhenNeeded":0,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunUsesExplicitBuiltInToolsWithoutRegistryLookup":0,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunExecutesLegacyXmlArgumentPairToolCall":0,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunDoesNotStreamXmlToolArtifacts":0.001,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunUsesInitialToolChoiceOnlyUntilAudioToolCallIsSatisfied":0.001,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testPersonalBotUpgradeToSharedScopeBecomesDraftWithoutPublishRights":0.01,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testPersonalBotUpgradeToSharedScopePublishesDirectlyWhenAllowed":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testApproveBotRejectsOwnerWithoutApprovalRights":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testApproveBotAllowsOwnerWithApprovalRights":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testInitialPendingBotRequiresEnabledReviewerForAccess":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testInitialPendingBotIsHiddenFromPublicListingForRegularAudience":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testPendingUpdateKeepsApprovedLiveBotAccessible":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testPendingUpdateAllowsEnabledReviewerOutsideLiveScope":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testGetPendingApprovalsIncludesReviewTargetFromPendingChanges":0.001,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testGetPendingApprovalsIncludesOwnPendingBotWhenOwnerCanReview":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testResolveEffectiveToolLoadoutUsesPendingBuiltInAssignmentsForTestingReviewer":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testEnableTestingOverwritesPreviousReviewerSlot":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testShouldForceInitialAudioTranscriptionForSingleAudioOnlyAttachment":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testShouldNotForceInitialAudioTranscriptionForMixedAttachments":0,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testGenerateFallbackFromToolResultsUsesRoomSearchResults":0.017,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testSanitizeAssistantTextForUserRemovesThinkArtifactsAndAdjacentDuplicates":0.001,"OCA\\EducAI\\Tests\\Unit\\Service\\SettingsServiceTest::testBlankSecretsKeepExistingEncryptedValues":0,"OCA\\EducAI\\Tests\\Unit\\Service\\SettingsServiceTest::testUpdateSettingsPersistsSecondaryEndpointFallbackAndTimeouts":0,"OCA\\EducAI\\Tests\\Unit\\Service\\SettingsServiceTest::testSettingsJsonMasksSecondaryApiKeyAndIncludesLlmTimeouts":0,"OCA\\EducAI\\Tests\\Unit\\Service\\SettingsServiceTest::testEndpointSwapRemapsStoredModelReferences":0.001,"OCA\\EducAI\\Tests\\Unit\\Service\\SettingsServiceTest::testBlankOptionalFallbackFieldsAreCleared":0,"OCA\\EducAI\\Tests\\Unit\\Service\\SettingsServiceTest::testUpdateSettingsStoresDedicatedDoclingApiKeyEncrypted":0,"OCA\\EducAI\\Tests\\Unit\\Service\\SettingsServiceTest::testDoclingConfigPrefersDedicatedApiKeyAndFallsBackToMainKey":0,"OCA\\EducAI\\Tests\\Unit\\Service\\LLMClientTest::testListModelOptionsCombinesPrimaryAndSecondaryEndpoints":0,"OCA\\EducAI\\Tests\\Unit\\Service\\LLMClientTest::testSendChatCompletionRetriesFallbackOnTimeout":0,"OCA\\EducAI\\Tests\\Unit\\Service\\LLMClientTest::testUnprefixedModelRoutesToSecondaryWhenOnlySecondaryHasModelInCache":0.001,"OCA\\EducAI\\Tests\\Unit\\Service\\LLMClientTest::testUnprefixedModelPrefersPrimaryWhenBothEndpointsHaveModel":0,"OCA\\EducAI\\Tests\\Unit\\Service\\LLMClientTest::testSendChatCompletionDoesNotFallbackOnFourHundredErrors":0,"OCA\\EducAI\\Tests\\Unit\\Service\\WikiServiceTest::testPersonalBotWritesPageDirectly":0.016,"OCA\\EducAI\\Tests\\Unit\\Service\\WikiServiceTest::testSharedBotCreatesProposalInsteadOfDirectWrite":0.006,"OCA\\EducAI\\Tests\\Unit\\Service\\WikiServiceTest::testRejectsParentDirectorySegments":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testPendingReviewContextCanBeInspectedByApproverOrEnabledTester":0,"OCA\\EducAI\\Tests\\Unit\\Service\\CredentialServiceTest::testDecryptThrowsWhenEncryptedValueCannotBeDecrypted":0,"OCA\\EducAI\\Tests\\Unit\\Service\\CredentialServiceTest::testDecryptStillReturnsLegacyPlaintext":0,"OCA\\EducAI\\Tests\\Unit\\Service\\PermissionServiceTest::testCanApproveBotRequiresMatchingScope":0.001,"OCA\\EducAI\\Tests\\Unit\\Service\\PermissionServiceTest::testCanApproveBotAllowsOwnerWhenTheyCanManageTargetScope":0,"OCA\\EducAI\\Tests\\Unit\\Service\\PermissionServiceTest::testCanEditBotIsBoundToConcreteBotScope":0,"OCA\\EducAI\\Tests\\Unit\\Service\\PermissionServiceTest::testCanApproveBotUsesPendingTargetScopeForVersionedChanges":0,"OCA\\EducAI\\Tests\\Unit\\Service\\PermissionServiceTest::testCanPublishBotToScopeRequiresAllTeamAssignments":0,"OCA\\EducAI\\Tests\\Unit\\Service\\PermissionServiceTest::testCanApproveTeamBotRequiresConcreteTeamAdminEvenForGlobalAdmin":0,"OCA\\EducAI\\Tests\\Unit\\Service\\RateLimitServiceTest::testGetQueuedRequestReturnsNullWhenRequestDoesNotExist":0,"OCA\\EducAI\\Tests\\Unit\\Service\\RateLimitServiceTest::testGetQueuedRequestDoesNotSwallowMapperFailures":0,"OCA\\EducAI\\Tests\\Unit\\Service\\WikiServiceTest::testSharedBotCannotUseWikiService":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BuiltInToolProviderTest::testWikiWriteToolDoesNotExposeProposalMode":0.009,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testResolveEffectiveToolLoadoutStripsWikiToolsForNonPersonalPendingBot":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testResolveEffectiveToolLoadoutStripsStoredWikiToolsForNonPersonalBot":0,"OCA\\EducAI\\Tests\\Unit\\Service\\WikiServiceTest::testPersonalBotCanUseCustomWikiRootPath":0,"OCA\\EducAI\\Tests\\Unit\\Service\\WikiServiceTest::testRejectsInvalidCustomWikiRootPath":0.002,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testResolveEffectiveToolLoadoutExpandsPartialWikiToolsForPersonalBot":0,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunPassesExplicitBuiltInToolConfigToProvider":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testUpdatePersonalBotRejectsInvalidWikiRootPath":0,"OCA\\EducAI\\Tests\\Unit\\Service\\WikiServiceTest::testPersonalBotCanUseCollectiveWikiLocation":0.001,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testPersonalWikiAssignmentNormalizesCollectiveConfig":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testPersonalWikiAssignmentRejectsMissingCollective":0,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunSynthesizesFinalAnswerWhenToolRunEndsWithThinkOnlyContent":0.001,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testGenericForcedToolCallPrefersMcpSearchOverRoomSearch":0.001,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testGenericForcedToolSelectionSkipsBuiltInAndUnsafeTools":0,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testSanitizeAssistantTextForUserRemovesNamespacedToolCallArtifacts":0,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunExecutesMiniMaxInvokeToolCallAndNormalizesWikiTitle":0.009,"OCA\\EducAI\\Tests\\Unit\\Service\\AgentExecutorTest::testRunDoesNotStreamMiniMaxXmlToolArtifacts":0,"OCA\\EducAI\\Tests\\Unit\\Webhook\\TalkHandlerTest::testToolProgressPartialIsProgressOnly":0.017,"OCA\\EducAI\\Tests\\Unit\\Webhook\\TalkHandlerTest::testMultipleToolProgressPartialIsProgressOnly":0,"OCA\\EducAI\\Tests\\Unit\\Webhook\\TalkHandlerTest::testVisibleAssistantPartialIsNotProgressOnly":0,"OCA\\EducAI\\Tests\\Unit\\Service\\BotServiceTest::testProcessMessageIncludesWikiWriteInstructionWhenWikiToolsAreEnabled":0.002,"OCA\\EducAI\\Tests\\Unit\\Webhook\\TalkHandlerTest::testToolProgressPartialBypassesOpenThinkingBlock":0.004,"OCA\\EducAI\\Tests\\Unit\\Webhook\\TalkHandlerTest::testBuildMessageContextIngestsImageForRoomImageMemory":0.002,"OCA\\EducAI\\Tests\\Unit\\Webhook\\TalkHandlerTest::testResetCommandDeletesRoomImageMemory":0,"OCA\\EducAI\\Tests\\Unit\\Webhook\\TalkHandlerTest::testReplyTargetUsesThreadParentWhenPresent":0,"OCA\\EducAI\\Tests\\Unit\\Webhook\\TalkHandlerTest::testReplyTargetFallsBackToCurrentMessage":0,"OCA\\EducAI\\Tests\\Unit\\Webhook\\TalkHandlerTest::testThreadRootUsesExplicitThreadRoot":0,"OCA\\EducAI\\Tests\\Unit\\Webhook\\TalkHandlerTest::testThreadContextRepliesToCurrentMessageAndScopesHistory":0,"OCA\\EducAI\\Tests\\Unit\\Webhook\\TalkHandlerTest::testThreadStreamingKeepsReplyTargetAfterFirstChunk":0,"OCA\\EducAI\\Tests\\Unit\\Webhook\\TalkHandlerTest::testHandleIncomingIgnoresThreadCreatedSystemEvent":0}} |