The Swift Package Index logo.Swift Package Index

Build Information

Successful build of SwiftLLMKit, reference main (57a40d), with Swift 6.1 for macOS (SPM) on 9 Oct 2026 07:10: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 .stats

Build Log

========================================
RunAll
========================================
Builder version: 5.1.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/drewster99/swift-llm-kit.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/drewster99/swift-llm-kit
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 57a40d1 CLAUDE.md: merge duplicated rules, tighten references
Cloned https://github.com/drewster99/swift-llm-kit.git
Revision (git rev-parse @):
57a40d16018c1c92482e2ecb0fde74a15d1e9774
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/drewster99/swift-llm-kit.git at main
========================================
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
[2/5] Copying built_in_providers.json
[2/5] Copying bundled_model_metadata.json
[4/5] Write swift-version-2F0A5646E1D333AE.txt
[6/57] Emitting module SwiftLLMKit
[7/62] Compiling SwiftLLMKit BehaviorFlags.swift
[8/62] Compiling SwiftLLMKit BuiltInProviders.swift
[9/62] Compiling SwiftLLMKit BundledModelMetadata.swift
[10/62] Compiling SwiftLLMKit EffortSupport.swift
[11/62] Compiling SwiftLLMKit ModelAvailabilityState.swift
[12/62] Compiling SwiftLLMKit ModelBenchmarks.swift
[13/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 |     }
[14/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 |     }
[15/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 |     }
[16/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 |     }
[17/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 |     }
[18/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
[19/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
[20/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
[21/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
[22/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
[23/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
[24/62] Compiling SwiftLLMKit ModelPricing.swift
[25/62] Compiling SwiftLLMKit ModelProvider.swift
[26/62] Compiling SwiftLLMKit OpenRouterDynamicVariant.swift
[27/62] Compiling SwiftLLMKit PreparedRequest.swift
[28/62] Compiling SwiftLLMKit ProviderAPIType.swift
[29/62] Compiling SwiftLLMKit ReasoningControl.swift
[30/62] Compiling SwiftLLMKit SamplingDefaults.swift
[31/62] Compiling SwiftLLMKit SeenModelsLedger.swift
[32/62] Compiling SwiftLLMKit ThinkingBudget.swift
[33/62] Compiling SwiftLLMKit ThinkingBudgetAccounting.swift
[34/62] Compiling SwiftLLMKit StorageManager.swift
[35/62] Compiling SwiftLLMKit AnthropicProvider.swift
[36/62] Compiling SwiftLLMKit LLMResponse.swift
[37/62] Compiling SwiftLLMKit LLMResponseFormat.swift
[38/62] Compiling SwiftLLMKit LLMToolCall.swift
[39/62] Compiling SwiftLLMKit LLMToolChoice.swift
[40/62] Compiling SwiftLLMKit LLMToolDefinition.swift
[41/62] Compiling SwiftLLMKit LLMCallOverrides.swift
[42/62] Compiling SwiftLLMKit LLMMessage.swift
[43/62] Compiling SwiftLLMKit LLMProvider.swift
[44/62] Compiling SwiftLLMKit LLMProviderError.swift
[45/62] Compiling SwiftLLMKit LLMRequestLogger.swift
[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.31s)
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.