Build Information
Successful build of SwiftLLMKit, reference 0.0.214 (29114a), with Swift 6.1 for macOS (SPM) on 9 Oct 2026 07:00:01 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .statsBuild Log
========================================
RunAll
========================================
Builder version: 5.1.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/drewster99/swift-llm-kit.git
Reference: 0.0.214
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/drewster99/swift-llm-kit
* tag 0.0.214 -> FETCH_HEAD
HEAD is now at 29114a0 Send reasoning_content on every assistant turn for replay models
Cloned https://github.com/drewster99/swift-llm-kit.git
Revision (git rev-parse @):
29114a0218f73b7a483d5ea61335d72ba72b0c0e
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/drewster99/swift-llm-kit.git at 0.0.214
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/drewster99/swift-llm-kit.git
https://github.com/drewster99/swift-llm-kit.git
{
"dependencies" : [
],
"manifest_display_name" : "SwiftLLMKit",
"name" : "SwiftLLMKit",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "15.0"
}
],
"products" : [
{
"name" : "SwiftLLMKit",
"targets" : [
"SwiftLLMKit"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "SwiftLLMKitTests",
"module_type" : "SwiftTarget",
"name" : "SwiftLLMKitTests",
"path" : "Tests/SwiftLLMKitTests",
"sources" : [
"BehaviorFlagsTests.swift",
"CapabilityProbeTests.swift",
"DeveloperRoleTests.swift",
"DocumentContentTests.swift",
"DownloadedOverridesTests.swift",
"ExtraJSONOverridesTests.swift",
"GeminiFunctionCallDummySignatureTests.swift",
"GeminiFunctionResponseNameTests.swift",
"GeminiThoughtSignatureLiveTests.swift",
"JSONMergeTests.swift",
"JSONSerializationDeterminismTests.swift",
"KeychainServiceAddStepTests.swift",
"LLMMessageFactoryTests.swift",
"LLMRequestLoggerStampTests.swift",
"LiteLLMProviderMatchingTests.swift",
"MaxOutputContextBoundTests.swift",
"ModelCapabilityTriStateTests.swift",
"ModelConfigurationOverrideTests.swift",
"ModelFactsMergeTests.swift",
"ModelInfoChatCapabilityTests.swift",
"ModelInfoProvenanceTests.swift",
"ModelProfileCodingKeyCoverageTests.swift",
"NewCapabilityPersistenceTests.swift",
"OllamaLibraryScraperTests.swift",
"OllamaRoleAlternationTests.swift",
"OpenAIArrayContentParseTests.swift",
"OpenAIReasoningContentReplayTests.swift",
"OpenRouterDynamicVariantTests.swift",
"OverrideChatFoldTests.swift",
"ProbeRecordStoreTests.swift",
"ProviderAPITypeForgivingDecodeTests.swift",
"ProviderContinuationTests.swift",
"ReasoningControlAndStructuredOutputTests.swift",
"ReasoningEnabledConfigurationTests.swift",
"RetryAfterParsingTests.swift",
"SeenModelsLedgerTests.swift",
"StupidBatchHardeningTests.swift",
"SwiftLLMKitTests.swift",
"TemperatureOptionalTests.swift",
"ThinkingBlockBindingTests.swift",
"ThinkingBudgetRangeTests.swift",
"TokenUsageParserTests.swift",
"TrailingSystemMessageTests.swift",
"V0_0_182_FinishReasonTests.swift",
"V0_0_184_CodexAuthTests.swift",
"V0_0_187_CodexResponsesTests.swift",
"V0_0_189_CodexLimitTests.swift",
"V0_0_191_CodexLiveSmokeTests.swift",
"V0_0_192_CodexUsageWindowTests.swift",
"V0_0_195_CodexAuthSharingTests.swift",
"V0_0_195_CodexItemKeyTests.swift",
"V0_0_195_CodexRefreshStormTests.swift",
"V0_0_196_CodexRefreshCancellationTests.swift",
"V0_0_197_CodexSerializerParityTests.swift",
"V0_0_206_ContentPolicyRefusalTests.swift",
"V0_0_209_ServerErrorObjectTests.swift",
"V0_0_26_Tests.swift",
"V0_0_27_Tests.swift",
"V0_0_28_Tests.swift",
"V0_0_30_ToolChoiceTests.swift"
],
"target_dependencies" : [
"SwiftLLMKit"
],
"type" : "test"
},
{
"c99name" : "SwiftLLMKit",
"module_type" : "SwiftTarget",
"name" : "SwiftLLMKit",
"path" : "Sources/SwiftLLMKit",
"product_memberships" : [
"SwiftLLMKit"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Resources/built_in_providers.json",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Resources/bundled_model_metadata.json",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Resources/bundled_probe_records.json",
"rule" : {
"process" : {
}
}
}
],
"sources" : [
"Auth/CodexAuth.swift",
"Evaluation/CapabilityProbe.swift",
"Evaluation/ModelProber.swift",
"Evaluation/ModelProfile.swift",
"Evaluation/ProbeFixtures.swift",
"Evaluation/ProbeRecordStore.swift",
"Models/BehaviorFlags.swift",
"Models/BuiltInProviders.swift",
"Models/BundledModelMetadata.swift",
"Models/EffortSupport.swift",
"Models/ModelAvailabilityState.swift",
"Models/ModelBenchmarks.swift",
"Models/ModelCapabilities.swift",
"Models/ModelConfiguration.swift",
"Models/ModelConfigurationOverride.swift",
"Models/ModelFacts.swift",
"Models/ModelInfo.swift",
"Models/ModelMetadataOverride.swift",
"Models/ModelPricing.swift",
"Models/ModelProvider.swift",
"Models/OpenRouterDynamicVariant.swift",
"Models/PreparedRequest.swift",
"Models/ProviderAPIType.swift",
"Models/ReasoningControl.swift",
"Models/SamplingDefaults.swift",
"Models/SeenModelsLedger.swift",
"Models/ThinkingBudget.swift",
"Models/ThinkingBudgetAccounting.swift",
"Persistence/StorageManager.swift",
"Providers/AnthropicProvider.swift",
"Providers/CodexLimit.swift",
"Providers/CodexResponsesProvider.swift",
"Providers/CodexUsageWindow.swift",
"Providers/GLMTemplateSalvage.swift",
"Providers/GeminiProvider.swift",
"Providers/JSONMerge.swift",
"Providers/LLMCallOverrides.swift",
"Providers/LLMMessage.swift",
"Providers/LLMProvider.swift",
"Providers/LLMProviderError.swift",
"Providers/LLMRequestLogger.swift",
"Providers/LLMResponse.swift",
"Providers/LLMResponseFormat.swift",
"Providers/LLMToolCall.swift",
"Providers/LLMToolChoice.swift",
"Providers/LLMToolDefinition.swift",
"Providers/OllamaProvider.swift",
"Providers/OpenAICompatibleProvider.swift",
"Providers/ProviderContinuation.swift",
"Services/KeychainService.swift",
"Services/ModelFactsMerge.swift",
"Services/ModelFetchService.swift",
"Services/ModelMetadataService.swift",
"Services/OllamaLibraryScraper.swift",
"SwiftLLMKit.swift"
],
"type" : "library"
}
],
"tools_version" : "6.0"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats
Building for debugging...
[0/5] Write sources
[0/5] Copying bundled_probe_records.json
[0/5] Copying bundled_model_metadata.json
[1/5] Copying built_in_providers.json
[4/5] Write swift-version-2F0A5646E1D333AE.txt
[6/57] Compiling SwiftLLMKit LLMCallOverrides.swift
[7/57] Compiling SwiftLLMKit LLMMessage.swift
[8/57] Compiling SwiftLLMKit LLMProvider.swift
[9/57] Compiling SwiftLLMKit LLMProviderError.swift
[10/57] Compiling SwiftLLMKit LLMRequestLogger.swift
[11/62] Emitting module SwiftLLMKit
[12/62] Compiling SwiftLLMKit BehaviorFlags.swift
[13/62] Compiling SwiftLLMKit BuiltInProviders.swift
[14/62] Compiling SwiftLLMKit BundledModelMetadata.swift
[15/62] Compiling SwiftLLMKit EffortSupport.swift
[16/62] Compiling SwiftLLMKit ModelAvailabilityState.swift
[17/62] Compiling SwiftLLMKit ModelBenchmarks.swift
[18/62] Compiling SwiftLLMKit LLMResponse.swift
[19/62] Compiling SwiftLLMKit LLMResponseFormat.swift
[20/62] Compiling SwiftLLMKit LLMToolCall.swift
[21/62] Compiling SwiftLLMKit LLMToolChoice.swift
[22/62] Compiling SwiftLLMKit LLMToolDefinition.swift
[23/62] Compiling SwiftLLMKit ModelPricing.swift
[24/62] Compiling SwiftLLMKit ModelProvider.swift
[25/62] Compiling SwiftLLMKit OpenRouterDynamicVariant.swift
[26/62] Compiling SwiftLLMKit PreparedRequest.swift
[27/62] Compiling SwiftLLMKit ProviderAPIType.swift
[28/62] Compiling SwiftLLMKit ReasoningControl.swift
[29/62] Compiling SwiftLLMKit OllamaProvider.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/ProviderContinuation.swift:72:14: warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
70 | self.anthropicThinkingBlocks = anthropicThinkingBlocks
71 | self.geminiResponseParts = geminiResponseParts
72 | self.geminiThoughtSignatures = geminiThoughtSignatures
| `- warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
73 | self.codexReasoningItems = codexReasoningItems
74 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/ProviderContinuation.swift:80:16: warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
78 | anthropicThinkingBlocks == nil
79 | && geminiResponseParts == nil
80 | && geminiThoughtSignatures == nil
| `- warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
81 | && codexReasoningItems == nil
82 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/ProviderContinuation.swift:93:14: warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
91 | self.anthropicThinkingBlocks = try c.decodeIfPresent([AnthropicThinkingBlock].self, forKey: .anthropicThinkingBlocks)
92 | self.geminiResponseParts = try c.decodeIfPresent([GeminiResponsePart].self, forKey: .geminiResponseParts)
93 | self.geminiThoughtSignatures = try c.decodeIfPresent([String: String].self, forKey: .geminiThoughtSignatures)
| `- warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
94 | self.codexReasoningItems = try c.decodeIfPresent([CodexReasoningItem].self, forKey: .codexReasoningItems)
95 | }
[30/62] Compiling SwiftLLMKit OpenAICompatibleProvider.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/ProviderContinuation.swift:72:14: warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
70 | self.anthropicThinkingBlocks = anthropicThinkingBlocks
71 | self.geminiResponseParts = geminiResponseParts
72 | self.geminiThoughtSignatures = geminiThoughtSignatures
| `- warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
73 | self.codexReasoningItems = codexReasoningItems
74 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/ProviderContinuation.swift:80:16: warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
78 | anthropicThinkingBlocks == nil
79 | && geminiResponseParts == nil
80 | && geminiThoughtSignatures == nil
| `- warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
81 | && codexReasoningItems == nil
82 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/ProviderContinuation.swift:93:14: warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
91 | self.anthropicThinkingBlocks = try c.decodeIfPresent([AnthropicThinkingBlock].self, forKey: .anthropicThinkingBlocks)
92 | self.geminiResponseParts = try c.decodeIfPresent([GeminiResponsePart].self, forKey: .geminiResponseParts)
93 | self.geminiThoughtSignatures = try c.decodeIfPresent([String: String].self, forKey: .geminiThoughtSignatures)
| `- warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
94 | self.codexReasoningItems = try c.decodeIfPresent([CodexReasoningItem].self, forKey: .codexReasoningItems)
95 | }
[31/62] Compiling SwiftLLMKit ProviderContinuation.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/ProviderContinuation.swift:72:14: warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
70 | self.anthropicThinkingBlocks = anthropicThinkingBlocks
71 | self.geminiResponseParts = geminiResponseParts
72 | self.geminiThoughtSignatures = geminiThoughtSignatures
| `- warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
73 | self.codexReasoningItems = codexReasoningItems
74 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/ProviderContinuation.swift:80:16: warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
78 | anthropicThinkingBlocks == nil
79 | && geminiResponseParts == nil
80 | && geminiThoughtSignatures == nil
| `- warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
81 | && codexReasoningItems == nil
82 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/ProviderContinuation.swift:93:14: warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
91 | self.anthropicThinkingBlocks = try c.decodeIfPresent([AnthropicThinkingBlock].self, forKey: .anthropicThinkingBlocks)
92 | self.geminiResponseParts = try c.decodeIfPresent([GeminiResponsePart].self, forKey: .geminiResponseParts)
93 | self.geminiThoughtSignatures = try c.decodeIfPresent([String: String].self, forKey: .geminiThoughtSignatures)
| `- warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
94 | self.codexReasoningItems = try c.decodeIfPresent([CodexReasoningItem].self, forKey: .codexReasoningItems)
95 | }
[32/62] Compiling SwiftLLMKit KeychainService.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/ProviderContinuation.swift:72:14: warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
70 | self.anthropicThinkingBlocks = anthropicThinkingBlocks
71 | self.geminiResponseParts = geminiResponseParts
72 | self.geminiThoughtSignatures = geminiThoughtSignatures
| `- warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
73 | self.codexReasoningItems = codexReasoningItems
74 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/ProviderContinuation.swift:80:16: warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
78 | anthropicThinkingBlocks == nil
79 | && geminiResponseParts == nil
80 | && geminiThoughtSignatures == nil
| `- warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
81 | && codexReasoningItems == nil
82 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/ProviderContinuation.swift:93:14: warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
91 | self.anthropicThinkingBlocks = try c.decodeIfPresent([AnthropicThinkingBlock].self, forKey: .anthropicThinkingBlocks)
92 | self.geminiResponseParts = try c.decodeIfPresent([GeminiResponsePart].self, forKey: .geminiResponseParts)
93 | self.geminiThoughtSignatures = try c.decodeIfPresent([String: String].self, forKey: .geminiThoughtSignatures)
| `- warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
94 | self.codexReasoningItems = try c.decodeIfPresent([CodexReasoningItem].self, forKey: .codexReasoningItems)
95 | }
[33/62] Compiling SwiftLLMKit ModelFactsMerge.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/ProviderContinuation.swift:72:14: warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
70 | self.anthropicThinkingBlocks = anthropicThinkingBlocks
71 | self.geminiResponseParts = geminiResponseParts
72 | self.geminiThoughtSignatures = geminiThoughtSignatures
| `- warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
73 | self.codexReasoningItems = codexReasoningItems
74 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/ProviderContinuation.swift:80:16: warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
78 | anthropicThinkingBlocks == nil
79 | && geminiResponseParts == nil
80 | && geminiThoughtSignatures == nil
| `- warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
81 | && codexReasoningItems == nil
82 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/ProviderContinuation.swift:93:14: warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
91 | self.anthropicThinkingBlocks = try c.decodeIfPresent([AnthropicThinkingBlock].self, forKey: .anthropicThinkingBlocks)
92 | self.geminiResponseParts = try c.decodeIfPresent([GeminiResponsePart].self, forKey: .geminiResponseParts)
93 | self.geminiThoughtSignatures = try c.decodeIfPresent([String: String].self, forKey: .geminiThoughtSignatures)
| `- warning: 'geminiThoughtSignatures' is deprecated: Superseded by geminiResponseParts in 0.0.26. Position-keyed signatures misalign when the factory collapses a multi-part response into a single .text/.toolCalls/.mixed content. Reads from disk for legacy saved conversations still work; new code path captures and replays the full parts structure.
94 | self.codexReasoningItems = try c.decodeIfPresent([CodexReasoningItem].self, forKey: .codexReasoningItems)
95 | }
[34/62] Compiling SwiftLLMKit SamplingDefaults.swift
[35/62] Compiling SwiftLLMKit SeenModelsLedger.swift
[36/62] Compiling SwiftLLMKit ThinkingBudget.swift
[37/62] Compiling SwiftLLMKit ThinkingBudgetAccounting.swift
[38/62] Compiling SwiftLLMKit StorageManager.swift
[39/62] Compiling SwiftLLMKit AnthropicProvider.swift
[40/62] Compiling SwiftLLMKit CodexLimit.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:305:50: warning: 'legacyGeminiSignatures(message:)' is deprecated
303 | // content-rendering with position-keyed sig attachment. Shape-fragile
304 | // but the best we can do for legacy data.
305 | let legacySignatures: [String: String] = legacyGeminiSignatures(message: message)
| `- warning: 'legacyGeminiSignatures(message:)' is deprecated
306 |
307 | func attachLegacySig(_ part: [String: Any], at index: Int) -> [String: Any] {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:625:28: warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated
623 | }
624 | )
625 | continuation = makeGeminiContinuation(
| `- warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated
626 | parts: capturedParts,
627 | legacySignatures: legacySigs
[41/62] Compiling SwiftLLMKit CodexResponsesProvider.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:305:50: warning: 'legacyGeminiSignatures(message:)' is deprecated
303 | // content-rendering with position-keyed sig attachment. Shape-fragile
304 | // but the best we can do for legacy data.
305 | let legacySignatures: [String: String] = legacyGeminiSignatures(message: message)
| `- warning: 'legacyGeminiSignatures(message:)' is deprecated
306 |
307 | func attachLegacySig(_ part: [String: Any], at index: Int) -> [String: Any] {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:625:28: warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated
623 | }
624 | )
625 | continuation = makeGeminiContinuation(
| `- warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated
626 | parts: capturedParts,
627 | legacySignatures: legacySigs
[42/62] Compiling SwiftLLMKit CodexUsageWindow.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:305:50: warning: 'legacyGeminiSignatures(message:)' is deprecated
303 | // content-rendering with position-keyed sig attachment. Shape-fragile
304 | // but the best we can do for legacy data.
305 | let legacySignatures: [String: String] = legacyGeminiSignatures(message: message)
| `- warning: 'legacyGeminiSignatures(message:)' is deprecated
306 |
307 | func attachLegacySig(_ part: [String: Any], at index: Int) -> [String: Any] {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:625:28: warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated
623 | }
624 | )
625 | continuation = makeGeminiContinuation(
| `- warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated
626 | parts: capturedParts,
627 | legacySignatures: legacySigs
[43/62] Compiling SwiftLLMKit GLMTemplateSalvage.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:305:50: warning: 'legacyGeminiSignatures(message:)' is deprecated
303 | // content-rendering with position-keyed sig attachment. Shape-fragile
304 | // but the best we can do for legacy data.
305 | let legacySignatures: [String: String] = legacyGeminiSignatures(message: message)
| `- warning: 'legacyGeminiSignatures(message:)' is deprecated
306 |
307 | func attachLegacySig(_ part: [String: Any], at index: Int) -> [String: Any] {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:625:28: warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated
623 | }
624 | )
625 | continuation = makeGeminiContinuation(
| `- warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated
626 | parts: capturedParts,
627 | legacySignatures: legacySigs
[44/62] Compiling SwiftLLMKit GeminiProvider.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:305:50: warning: 'legacyGeminiSignatures(message:)' is deprecated
303 | // content-rendering with position-keyed sig attachment. Shape-fragile
304 | // but the best we can do for legacy data.
305 | let legacySignatures: [String: String] = legacyGeminiSignatures(message: message)
| `- warning: 'legacyGeminiSignatures(message:)' is deprecated
306 |
307 | func attachLegacySig(_ part: [String: Any], at index: Int) -> [String: Any] {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:625:28: warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated
623 | }
624 | )
625 | continuation = makeGeminiContinuation(
| `- warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated
626 | parts: capturedParts,
627 | legacySignatures: legacySigs
[45/62] Compiling SwiftLLMKit JSONMerge.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:305:50: warning: 'legacyGeminiSignatures(message:)' is deprecated
303 | // content-rendering with position-keyed sig attachment. Shape-fragile
304 | // but the best we can do for legacy data.
305 | let legacySignatures: [String: String] = legacyGeminiSignatures(message: message)
| `- warning: 'legacyGeminiSignatures(message:)' is deprecated
306 |
307 | func attachLegacySig(_ part: [String: Any], at index: Int) -> [String: Any] {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:625:28: warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated
623 | }
624 | )
625 | continuation = makeGeminiContinuation(
| `- warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated
626 | parts: capturedParts,
627 | legacySignatures: legacySigs
[46/62] Compiling SwiftLLMKit ModelCapabilities.swift
[47/62] Compiling SwiftLLMKit ModelConfiguration.swift
[48/62] Compiling SwiftLLMKit ModelConfigurationOverride.swift
[49/62] Compiling SwiftLLMKit ModelFacts.swift
[50/62] Compiling SwiftLLMKit ModelInfo.swift
[51/62] Compiling SwiftLLMKit ModelMetadataOverride.swift
[52/62] Compiling SwiftLLMKit CodexAuth.swift
[53/62] Compiling SwiftLLMKit CapabilityProbe.swift
[54/62] Compiling SwiftLLMKit ModelProber.swift
[55/62] Compiling SwiftLLMKit ModelProfile.swift
[56/62] Compiling SwiftLLMKit ProbeFixtures.swift
[57/62] Compiling SwiftLLMKit ProbeRecordStore.swift
[58/62] Compiling SwiftLLMKit ModelFetchService.swift
[59/62] Compiling SwiftLLMKit ModelMetadataService.swift
[60/62] Compiling SwiftLLMKit OllamaLibraryScraper.swift
[61/62] Compiling SwiftLLMKit SwiftLLMKit.swift
[62/62] Compiling SwiftLLMKit resource_bundle_accessor.swift
Build complete! (8.70s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "SwiftLLMKit",
"name" : "SwiftLLMKit",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "15.0"
}
],
"products" : [
{
"name" : "SwiftLLMKit",
"targets" : [
"SwiftLLMKit"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "SwiftLLMKitTests",
"module_type" : "SwiftTarget",
"name" : "SwiftLLMKitTests",
"path" : "Tests/SwiftLLMKitTests",
"sources" : [
"BehaviorFlagsTests.swift",
"CapabilityProbeTests.swift",
"DeveloperRoleTests.swift",
"DocumentContentTests.swift",
"DownloadedOverridesTests.swift",
"ExtraJSONOverridesTests.swift",
"GeminiFunctionCallDummySignatureTests.swift",
"GeminiFunctionResponseNameTests.swift",
"GeminiThoughtSignatureLiveTests.swift",
"JSONMergeTests.swift",
"JSONSerializationDeterminismTests.swift",
"KeychainServiceAddStepTests.swift",
"LLMMessageFactoryTests.swift",
"LLMRequestLoggerStampTests.swift",
"LiteLLMProviderMatchingTests.swift",
"MaxOutputContextBoundTests.swift",
"ModelCapabilityTriStateTests.swift",
"ModelConfigurationOverrideTests.swift",
"ModelFactsMergeTests.swift",
"ModelInfoChatCapabilityTests.swift",
"ModelInfoProvenanceTests.swift",
"ModelProfileCodingKeyCoverageTests.swift",
"NewCapabilityPersistenceTests.swift",
"OllamaLibraryScraperTests.swift",
"OllamaRoleAlternationTests.swift",
"OpenAIArrayContentParseTests.swift",
"OpenAIReasoningContentReplayTests.swift",
"OpenRouterDynamicVariantTests.swift",
"OverrideChatFoldTests.swift",
"ProbeRecordStoreTests.swift",
"ProviderAPITypeForgivingDecodeTests.swift",
"ProviderContinuationTests.swift",
"ReasoningControlAndStructuredOutputTests.swift",
"ReasoningEnabledConfigurationTests.swift",
"RetryAfterParsingTests.swift",
"SeenModelsLedgerTests.swift",
"StupidBatchHardeningTests.swift",
"SwiftLLMKitTests.swift",
"TemperatureOptionalTests.swift",
"ThinkingBlockBindingTests.swift",
"ThinkingBudgetRangeTests.swift",
"TokenUsageParserTests.swift",
"TrailingSystemMessageTests.swift",
"V0_0_182_FinishReasonTests.swift",
"V0_0_184_CodexAuthTests.swift",
"V0_0_187_CodexResponsesTests.swift",
"V0_0_189_CodexLimitTests.swift",
"V0_0_191_CodexLiveSmokeTests.swift",
"V0_0_192_CodexUsageWindowTests.swift",
"V0_0_195_CodexAuthSharingTests.swift",
"V0_0_195_CodexItemKeyTests.swift",
"V0_0_195_CodexRefreshStormTests.swift",
"V0_0_196_CodexRefreshCancellationTests.swift",
"V0_0_197_CodexSerializerParityTests.swift",
"V0_0_206_ContentPolicyRefusalTests.swift",
"V0_0_209_ServerErrorObjectTests.swift",
"V0_0_26_Tests.swift",
"V0_0_27_Tests.swift",
"V0_0_28_Tests.swift",
"V0_0_30_ToolChoiceTests.swift"
],
"target_dependencies" : [
"SwiftLLMKit"
],
"type" : "test"
},
{
"c99name" : "SwiftLLMKit",
"module_type" : "SwiftTarget",
"name" : "SwiftLLMKit",
"path" : "Sources/SwiftLLMKit",
"product_memberships" : [
"SwiftLLMKit"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Resources/built_in_providers.json",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Resources/bundled_model_metadata.json",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Resources/bundled_probe_records.json",
"rule" : {
"process" : {
}
}
}
],
"sources" : [
"Auth/CodexAuth.swift",
"Evaluation/CapabilityProbe.swift",
"Evaluation/ModelProber.swift",
"Evaluation/ModelProfile.swift",
"Evaluation/ProbeFixtures.swift",
"Evaluation/ProbeRecordStore.swift",
"Models/BehaviorFlags.swift",
"Models/BuiltInProviders.swift",
"Models/BundledModelMetadata.swift",
"Models/EffortSupport.swift",
"Models/ModelAvailabilityState.swift",
"Models/ModelBenchmarks.swift",
"Models/ModelCapabilities.swift",
"Models/ModelConfiguration.swift",
"Models/ModelConfigurationOverride.swift",
"Models/ModelFacts.swift",
"Models/ModelInfo.swift",
"Models/ModelMetadataOverride.swift",
"Models/ModelPricing.swift",
"Models/ModelProvider.swift",
"Models/OpenRouterDynamicVariant.swift",
"Models/PreparedRequest.swift",
"Models/ProviderAPIType.swift",
"Models/ReasoningControl.swift",
"Models/SamplingDefaults.swift",
"Models/SeenModelsLedger.swift",
"Models/ThinkingBudget.swift",
"Models/ThinkingBudgetAccounting.swift",
"Persistence/StorageManager.swift",
"Providers/AnthropicProvider.swift",
"Providers/CodexLimit.swift",
"Providers/CodexResponsesProvider.swift",
"Providers/CodexUsageWindow.swift",
"Providers/GLMTemplateSalvage.swift",
"Providers/GeminiProvider.swift",
"Providers/JSONMerge.swift",
"Providers/LLMCallOverrides.swift",
"Providers/LLMMessage.swift",
"Providers/LLMProvider.swift",
"Providers/LLMProviderError.swift",
"Providers/LLMRequestLogger.swift",
"Providers/LLMResponse.swift",
"Providers/LLMResponseFormat.swift",
"Providers/LLMToolCall.swift",
"Providers/LLMToolChoice.swift",
"Providers/LLMToolDefinition.swift",
"Providers/OllamaProvider.swift",
"Providers/OpenAICompatibleProvider.swift",
"Providers/ProviderContinuation.swift",
"Services/KeychainService.swift",
"Services/ModelFactsMerge.swift",
"Services/ModelFetchService.swift",
"Services/ModelMetadataService.swift",
"Services/OllamaLibraryScraper.swift",
"SwiftLLMKit.swift"
],
"type" : "library"
}
],
"tools_version" : "6.0"
}
Done.