* feat: add Apple Intelligence post-processing provider Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> * feat: guide apple intelligence output Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> * fix(build): add fallback stub for Apple Intelligence on older SDKs - Checks if 'FoundationModels.framework' is present in the macOS SDK. - If missing, compiles a stub Swift file that returns 'unavailable' errors instead of failing the build. - Prevents build errors on older Xcode versions (or macOS versions < 26.0) where the macros are not supported. * fix(ui): hide Apple Intelligence option when unavailable - Checks for runtime availability of Apple Intelligence (via 'check_apple_intelligence_availability') in 'settings.rs'. - Only adds the Apple Intelligence provider to the default settings if it is actually available on the device. - Ensures the option does not appear in the UI for unsupported Macs (e.g., Intel or older macOS versions), even if the app was built with support enabled. * move some files around as well as some ui text * format --------- Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> Co-authored-by: CJ Pais <cj@cjpais.com>
44 lines
1.4 KiB
Swift
44 lines
1.4 KiB
Swift
import Foundation
|
|
|
|
// Stub implementation when FoundationModels is not available
|
|
// This file is compiled via Cargo build script when the build environment
|
|
// does not support Apple Intelligence (e.g. older Xcode/SDK).
|
|
|
|
private typealias ResponsePointer = UnsafeMutablePointer<AppleLLMResponse>
|
|
|
|
@_cdecl("is_apple_intelligence_available")
|
|
public func isAppleIntelligenceAvailable() -> Int32 {
|
|
return 0
|
|
}
|
|
|
|
@_cdecl("process_text_with_apple_llm")
|
|
public func processTextWithAppleLLM(
|
|
_ prompt: UnsafePointer<CChar>,
|
|
maxTokens: Int32
|
|
) -> UnsafeMutablePointer<AppleLLMResponse> {
|
|
let responsePtr = ResponsePointer.allocate(capacity: 1)
|
|
// Initialize with safe defaults
|
|
responsePtr.initialize(to: AppleLLMResponse(response: nil, success: 0, error_message: nil))
|
|
|
|
let msg = "Apple Intelligence is not available in this build (SDK requirement not met)."
|
|
|
|
// Duplicate the string for the C caller to own
|
|
responsePtr.pointee.error_message = strdup(msg)
|
|
|
|
return responsePtr
|
|
}
|
|
|
|
@_cdecl("free_apple_llm_response")
|
|
public func freeAppleLLMResponse(_ response: UnsafeMutablePointer<AppleLLMResponse>?) {
|
|
guard let response = response else { return }
|
|
|
|
if let responseStr = response.pointee.response {
|
|
free(UnsafeMutablePointer(mutating: responseStr))
|
|
}
|
|
|
|
if let errorStr = response.pointee.error_message {
|
|
free(UnsafeMutablePointer(mutating: errorStr))
|
|
}
|
|
|
|
response.deallocate()
|
|
}
|