MCPcopy Create free account
hub / github.com/altic-dev/FluidVoice / processTextWithAI

Method processTextWithAI

Sources/Fluid/ContentView.swift:1793–2026  ·  view source on GitHub ↗
(_ inputText: String, overrideSystemPrompt: String?, dictationSlot: SettingsStore.DictationShortcutSlot?, streamHandler: PrivateAIStreamHandler?)

Source from the content-addressed store, hash-verified

1791 // MARK: - Modular AI Processing
1792
1793 private func processTextWithAI(
1794 _ inputText: String,
1795 overrideSystemPrompt: String? = nil,
1796 dictationSlot: SettingsStore.DictationShortcutSlot? = nil,
1797 streamHandler: PrivateAIStreamHandler? = nil
1798 ) async throws -> String {
1799 let appInfo = self.recordingAppInfo ?? self.getCurrentAppInfo()
1800 let route = DictationProviderRoute.resolve(
1801 settings: SettingsStore.shared,
1802 dictationSlot: dictationSlot,
1803 appBundleID: appInfo.bundleId
1804 )
1805 let currentSelectedProviderID = route.providerID
1806 let derivedCurrentProvider = route.providerKey
1807 let derivedBaseURL = route.baseURL
1808 let derivedSelectedModel = route.model
1809
1810 guard !derivedCurrentProvider.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else {
1811 throw AIProcessingError.noVerifiedProvider
1812 }
1813 if derivedSelectedModel.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
1814 throw AIProcessingError.missingModel(provider: derivedCurrentProvider)
1815 }
1816
1817 DebugLogger.shared.debug("processTextWithAI using provider=\(derivedCurrentProvider), model=\(derivedSelectedModel)", source: "ContentView")
1818
1819 let isDictationCall = overrideSystemPrompt != nil || dictationSlot != nil
1820 let isPrivateAIProvider = route.usesPrivateAI
1821 let usePrivateAIProvider = overrideSystemPrompt == nil &&
1822 isDictationCall &&
1823 (isPrivateAIProvider || PrivateAIIntegrationService.shouldHandleDictation(model: derivedSelectedModel))
1824
1825 if usePrivateAIProvider {
1826 if self.shouldTracePromptProcessing {
1827 self.logDictationPromptTrace("Private AI Provider task", value: "dictationEnhancement")
1828 self.logDictationPromptTrace("Input transcription (Q)", value: inputText)
1829 self.logDictationPromptTrace("Selected context text", value: "<none (dictation mode)>")
1830 }
1831
1832 let response = try await PrivateAIIntegrationService.shared.enhanceDictation(
1833 inputText,
1834 runtime: PrivateAIIntegrationService.RuntimeConfiguration(
1835 selectedProviderID: currentSelectedProviderID,
1836 providerKey: derivedCurrentProvider,
1837 baseURL: derivedBaseURL,
1838 model: derivedSelectedModel,
1839 apiKey: route.apiKey,
1840 localModelPath: PrivateAIIntegrationService.configuredLocalModelPath,
1841 usesStablePromptPrefixKVCache: SettingsStore.shared.privateAIPrefixKVCacheEnabled,
1842 usesFluid1Boost: SettingsStore.shared.privateAIBoostEnabled,
1843 contextTokenLimit: SettingsStore.shared.privateAIContextTokenLimit
1844 ),
1845 context: PrivateAIIntegrationService.AppContext(
1846 appName: appInfo.name,
1847 bundleID: appInfo.bundleId,
1848 windowTitle: appInfo.windowTitle,
1849 appVersion: Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String
1850 ),

Callers 2

Calls 15

getCurrentAppInfoMethod · 0.95
buildSystemPromptMethod · 0.95
isLocalEndpointMethod · 0.95
providerKeyMethod · 0.95
resolveMethod · 0.80
debugMethod · 0.80

Tested by

no test coverage detected