Build Information
Successful build of SwiftLLMKit, reference main (57a40d), with Swift 6.3 for macOS (SPM) on 9 Oct 2026 06:56:10 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-26.5.0.app xcrun swift build --arch arm64Build 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
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
"identity": ".resolve-product-dependencies",
"name": "resolve-dependencies",
"url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"traits": [
"default"
],
"dependencies": [
{
"identity": "swift-llm-kit",
"name": "SwiftLLMKit",
"url": "https://github.com/drewster99/swift-llm-kit.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-llm-kit",
"traits": [
"default"
],
"dependencies": [
]
}
]
}
Fetching https://github.com/drewster99/swift-llm-kit.git
[1/2877] Fetching swift-llm-kit
Fetched https://github.com/drewster99/swift-llm-kit.git from cache (1.52s)
Creating working copy for https://github.com/drewster99/swift-llm-kit.git
Working copy of https://github.com/drewster99/swift-llm-kit.git resolved at main (57a40d1)
warning: '.resolve-product-dependencies': dependency 'swift-llm-kit' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.3
Building package at path: $PWD
https://github.com/drewster99/swift-llm-kit.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.5.0.app xcrun swift build --arch arm64
Building for debugging...
[0/5] Copying built_in_providers.json
[0/5] Copying bundled_probe_records.json
[0/5] Write sources
[2/5] Copying bundled_model_metadata.json
[4/5] Write swift-version-69A768CDF2A0BEE1.txt
[6/57] Emitting module SwiftLLMKit
[7/62] Compiling SwiftLLMKit LLMResponse.swift
[8/62] Compiling SwiftLLMKit LLMResponseFormat.swift
[9/62] Compiling SwiftLLMKit LLMToolCall.swift
[10/62] Compiling SwiftLLMKit LLMToolChoice.swift
[11/62] Compiling SwiftLLMKit LLMToolDefinition.swift
[12/62] Compiling SwiftLLMKit SamplingDefaults.swift
[13/62] Compiling SwiftLLMKit SeenModelsLedger.swift
[14/62] Compiling SwiftLLMKit ThinkingBudget.swift
[15/62] Compiling SwiftLLMKit ThinkingBudgetAccounting.swift
[16/62] Compiling SwiftLLMKit StorageManager.swift
[17/62] Compiling SwiftLLMKit AnthropicProvider.swift
[18/62] Compiling SwiftLLMKit ModelPricing.swift
[19/62] Compiling SwiftLLMKit ModelProvider.swift
[20/62] Compiling SwiftLLMKit OpenRouterDynamicVariant.swift
[21/62] Compiling SwiftLLMKit PreparedRequest.swift
[22/62] Compiling SwiftLLMKit ProviderAPIType.swift
[23/62] Compiling SwiftLLMKit ReasoningControl.swift
[24/62] Compiling SwiftLLMKit LLMCallOverrides.swift
[25/62] Compiling SwiftLLMKit LLMMessage.swift
[26/62] Compiling SwiftLLMKit LLMProvider.swift
[27/62] Compiling SwiftLLMKit LLMProviderError.swift
[28/62] Compiling SwiftLLMKit LLMRequestLogger.swift
[29/62] Compiling SwiftLLMKit BehaviorFlags.swift
[30/62] Compiling SwiftLLMKit BuiltInProviders.swift
[31/62] Compiling SwiftLLMKit BundledModelMetadata.swift
[32/62] Compiling SwiftLLMKit EffortSupport.swift
[33/62] Compiling SwiftLLMKit ModelAvailabilityState.swift
[34/62] Compiling SwiftLLMKit ModelBenchmarks.swift
[35/62] Compiling SwiftLLMKit CodexLimit.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:305:50: warning: 'legacyGeminiSignatures(message:)' is deprecated [#DeprecatedDeclaration]
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 [#DeprecatedDeclaration]
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 [#DeprecatedDeclaration]
623 | }
624 | )
625 | continuation = makeGeminiContinuation(
| `- warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated [#DeprecatedDeclaration]
626 | parts: capturedParts,
627 | legacySignatures: legacySigs
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[36/62] Compiling SwiftLLMKit CodexResponsesProvider.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:305:50: warning: 'legacyGeminiSignatures(message:)' is deprecated [#DeprecatedDeclaration]
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 [#DeprecatedDeclaration]
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 [#DeprecatedDeclaration]
623 | }
624 | )
625 | continuation = makeGeminiContinuation(
| `- warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated [#DeprecatedDeclaration]
626 | parts: capturedParts,
627 | legacySignatures: legacySigs
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[37/62] Compiling SwiftLLMKit CodexUsageWindow.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:305:50: warning: 'legacyGeminiSignatures(message:)' is deprecated [#DeprecatedDeclaration]
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 [#DeprecatedDeclaration]
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 [#DeprecatedDeclaration]
623 | }
624 | )
625 | continuation = makeGeminiContinuation(
| `- warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated [#DeprecatedDeclaration]
626 | parts: capturedParts,
627 | legacySignatures: legacySigs
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[38/62] Compiling SwiftLLMKit GLMTemplateSalvage.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:305:50: warning: 'legacyGeminiSignatures(message:)' is deprecated [#DeprecatedDeclaration]
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 [#DeprecatedDeclaration]
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 [#DeprecatedDeclaration]
623 | }
624 | )
625 | continuation = makeGeminiContinuation(
| `- warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated [#DeprecatedDeclaration]
626 | parts: capturedParts,
627 | legacySignatures: legacySigs
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[39/62] Compiling SwiftLLMKit GeminiProvider.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:305:50: warning: 'legacyGeminiSignatures(message:)' is deprecated [#DeprecatedDeclaration]
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 [#DeprecatedDeclaration]
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 [#DeprecatedDeclaration]
623 | }
624 | )
625 | continuation = makeGeminiContinuation(
| `- warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated [#DeprecatedDeclaration]
626 | parts: capturedParts,
627 | legacySignatures: legacySigs
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[40/62] Compiling SwiftLLMKit JSONMerge.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftLLMKit/Providers/GeminiProvider.swift:305:50: warning: 'legacyGeminiSignatures(message:)' is deprecated [#DeprecatedDeclaration]
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 [#DeprecatedDeclaration]
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 [#DeprecatedDeclaration]
623 | }
624 | )
625 | continuation = makeGeminiContinuation(
| `- warning: 'makeGeminiContinuation(parts:legacySignatures:)' is deprecated [#DeprecatedDeclaration]
626 | parts: capturedParts,
627 | legacySignatures: legacySigs
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[41/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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
94 | self.codexReasoningItems = try c.decodeIfPresent([CodexReasoningItem].self, forKey: .codexReasoningItems)
95 | }
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[42/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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
94 | self.codexReasoningItems = try c.decodeIfPresent([CodexReasoningItem].self, forKey: .codexReasoningItems)
95 | }
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[43/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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
94 | self.codexReasoningItems = try c.decodeIfPresent([CodexReasoningItem].self, forKey: .codexReasoningItems)
95 | }
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[44/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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
94 | self.codexReasoningItems = try c.decodeIfPresent([CodexReasoningItem].self, forKey: .codexReasoningItems)
95 | }
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[45/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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
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. [#DeprecatedDeclaration]
94 | self.codexReasoningItems = try c.decodeIfPresent([CodexReasoningItem].self, forKey: .codexReasoningItems)
95 | }
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[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.07s)
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"
}
✅ Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path: $PWD/.docs/drewster99/swift-llm-kit/main
Repository: drewster99/swift-llm-kit
Swift version used: 6.3
Target: SwiftLLMKit
Extracting symbol information for 'SwiftLLMKit'...
Finished extracting symbol information for 'SwiftLLMKit'. (29.80s)
Building documentation for 'SwiftLLMKit'...
warning: Parameter 'providerID/modelID' not found in type method declaration
--> Sources/SwiftLLMKit/Evaluation/CapabilityProbe.swift:152:13-152:31
150 | /// - llm: a provider already bound to the model under test. It exposes no capability data,
151 | /// which is what keeps catalog claims out of a measurement of the truth.
152 + /// - providerID/modelID: recorded on the result; not consulted.
| ╰─suggestion: Replace 'providerID/modelID' with 'providerID'
153 | /// - Parameter capabilities: the model's record, so `toolChoiceForced` reflects whether the
154 | /// provider will actually EMIT `tool_choice` rather than assuming it did. Defaults to an
warning: Parameter 'modelID' is missing documentation
--> Sources/SwiftLLMKit/Evaluation/CapabilityProbe.swift:155:95-155:95
153 | /// - Parameter capabilities: the model's record, so `toolChoiceForced` reflects whether the
| ╰─suggestion: Document 'modelID' parameter
154 | /// provider will actually EMIT `tool_choice` rather than assuming it did. Defaults to an
155 + /// all-unknown set, which permits the field — the same fail-open the providers apply.
156 | public static func probeToolCalling(
157 | llm: any LLMProvider,
warning: Parameter 'calls' is missing documentation
--> Sources/SwiftLLMKit/Evaluation/CapabilityProbe.swift:155:95-155:95
153 | /// - Parameter capabilities: the model's record, so `toolChoiceForced` reflects whether the
154 | /// provider will actually EMIT `tool_choice` rather than assuming it did. Defaults to an
155 + /// all-unknown set, which permits the field — the same fail-open the providers apply.
| ╰─suggestion: Document 'calls' parameter
156 | public static func probeToolCalling(
157 | llm: any LLMProvider,
warning: Parameter 'providerID' is missing documentation
--> Sources/SwiftLLMKit/Evaluation/CapabilityProbe.swift:155:95-155:95
153 | /// - Parameter capabilities: the model's record, so `toolChoiceForced` reflects whether the
| ╰─suggestion: Document 'providerID' parameter
154 | /// provider will actually EMIT `tool_choice` rather than assuming it did. Defaults to an
155 + /// all-unknown set, which permits the field — the same fail-open the providers apply.
156 | public static func probeToolCalling(
157 | llm: any LLMProvider,
warning: 'probe(llm:providerID:modelID:skip:effortLevelsToProbe:)' doesn't exist at '/SwiftLLMKit/ModelProber'
--> Sources/SwiftLLMKit/Evaluation/ModelProber.swift:23:7-23:62
21 | ///
22 | /// Each probe is also a standalone `public` function — the common case is a full sweep via
23 + /// ``probe(llm:providerID:modelID:skip:effortLevelsToProbe:)``, but any single capability can be
| ╰─suggestion: Replace 'probe(llm:providerID:modelID:skip:effortLevelsToProbe:)' with 'probe(llm:seed:effortLevelsToProbe:supportsUnconditionalGeneralEffortEmission:preferLowImageDetail:modelCapabilities:)'
24 | /// checked on its own without one.
25 | public enum ModelProber {
warning: 'probeParameterAcceptance' doesn't exist at '/SwiftLLMKit/ModelProber/probe(llm:seed:effortLevelsToProbe:supportsUnconditionalGeneralEffortEmission:preferLowImageDetail:modelCapabilities:)'
--> Sources/SwiftLLMKit/Evaluation/ModelProber.swift:284:15-284:39
282 | /// emission is flag-gated (OpenAI-compatible), build per-level providers whose
283 | /// configuration forces the field via `extraJSONOverrides` and use
284 + /// ``probeParameterAcceptance`` instead.
285 | public static func probe(
286 | llm: any LLMProvider,
warning: Parameter 'seed' is missing documentation
--> Sources/SwiftLLMKit/Evaluation/ModelProber.swift:284:50-284:50
282 | /// emission is flag-gated (OpenAI-compatible), build per-level providers whose
283 | /// configuration forces the field via `extraJSONOverrides` and use
284 + /// ``probeParameterAcceptance`` instead.
285 | public static func probe(
286 | llm: any LLMProvider,
warning: Parameter 'preferLowImageDetail' is missing documentation
--> Sources/SwiftLLMKit/Evaluation/ModelProber.swift:284:50-284:50
282 | /// emission is flag-gated (OpenAI-compatible), build per-level providers whose
283 | /// configuration forces the field via `extraJSONOverrides` and use
284 + /// ``probeParameterAcceptance`` instead.
285 | public static func probe(
286 | llm: any LLMProvider,
warning: 'makeProbeTool' doesn't exist at '/SwiftLLMKit/CapabilityProbe'
--> Sources/SwiftLLMKit/Evaluation/ModelProber.swift:530:86-530:99
528 | /// nonce from the top and fabricate a pass; the caller gates that out by `apiType`.
529 | ///
530 + /// **Say plainly that this is a capability test**, exactly as ``CapabilityProbe/makeProbeTool``
| ╰─suggestion: Replace 'makeProbeTool' with 'makeProbeTool()'
531 | /// and the chat probe do: a nonce to echo, and a sentence saying why. The first version dressed
532 | /// it up as an access-code extraction and models refused it (measured 2026-07-26: `claude-fable-5`
warning: 'makeTrailingSystemTurnTest' doesn't exist at '/SwiftLLMKit/ModelProber/probeTrailingSystemTurn(llm:test:modelID:calls:)'
--> Sources/SwiftLLMKit/Evaluation/ModelProber.swift:559:11-559:37
557 | ///
558 | /// Hand this a provider built with ``BehaviorFlags/supportsTrailingSystemMessage`` forced on and
559 + /// ``makeTrailingSystemTurnTest``'s messages: the provider's own consumer keeps the trailing turn
560 | /// in place, so this measures the real production shape (base system prompt + trailing turn).
561 | ///
warning: Parameter 'calls' is missing documentation
--> Sources/SwiftLLMKit/Evaluation/ModelProber.swift:1271:69-1271:69
1269 | /// inconclusive. Three paid calls per model, three capabilities that could never be established,
1270 | /// and 45 records in the local corpus in exactly that state. This function's own doc argues the
1271 + /// point for `tool_choice` and then violated it one field over.
| ╰─suggestion: Document 'calls' parameter
1272 | public static func probeToolChoice(
1273 | _ choice: LLMToolChoice,
warning: Parameter 'apiType' is missing documentation
--> Sources/SwiftLLMKit/Evaluation/ModelProber.swift:1271:69-1271:69
1269 | /// inconclusive. Three paid calls per model, three capabilities that could never be established,
1270 | /// and 45 records in the local corpus in exactly that state. This function's own doc argues the
1271 + /// point for `tool_choice` and then violated it one field over.
1272 | public static func probeToolChoice(
1273 | _ choice: LLMToolChoice,
warning: Parameter 'choice' is missing documentation
--> Sources/SwiftLLMKit/Evaluation/ModelProber.swift:1271:69-1271:69
1269 | /// inconclusive. Three paid calls per model, three capabilities that could never be established,
1270 | /// and 45 records in the local corpus in exactly that state. This function's own doc argues the
1271 + /// point for `tool_choice` and then violated it one field over.
1272 | public static func probeToolChoice(
1273 | _ choice: LLMToolChoice,
warning: Parameter 'makeProviderForcing' is missing documentation
--> Sources/SwiftLLMKit/Evaluation/ModelProber.swift:1271:69-1271:69
1269 | /// inconclusive. Three paid calls per model, three capabilities that could never be established,
1270 | /// and 45 records in the local corpus in exactly that state. This function's own doc argues the
1271 + /// point for `tool_choice` and then violated it one field over.
| ╰─suggestion: Document 'makeProviderForcing' parameter
1272 | public static func probeToolChoice(
1273 | _ choice: LLMToolChoice,
warning: 'probeThinkingBudgetRange' doesn't exist at '/SwiftLLMKit/ModelProber/probeThinkingBudgetMinimum(knownAcceptedBudget:searchCap:makeProviderWithBudget:calls:)'
--> Sources/SwiftLLMKit/Evaluation/ModelProber.swift:1446:23-1446:47
1444 | /// ``ThinkingBudget/minimumTokens`` is a constant applied to every model by
1445 | /// ``ThinkingBudget/effective(_:measuredMaximum:measuredMinimum:)``, and nothing had ever
1446 + /// checked it: ``probeThinkingBudgetRange`` reaches the floor only when the CEILING is
1447 | /// rejected, so on the common path (ceiling accepted first try) it returned without ever
1448 | /// asking. A model whose real minimum sits above 1024 would take a rejected budget from
warning: 'reasoningMechanisms(for:)' doesn't exist at '/SwiftLLMKit/ModelProber/ReasoningMechanismFindings/mechanismWasDemonstrated'
--> Sources/SwiftLLMKit/Evaluation/ModelProber.swift:1909:39-1909:64
1907 | /// that reasons unconditionally — the norm across the OpenAI-compatible family — emits
1908 | /// reasoning whatever it is sent, so every candidate "demonstrates" and the winner is
1909 + /// decided by the order of ``reasoningMechanisms(for:)``. Recording that as an established
1910 | /// fact would pin a request-builder branch on list order.
1911 | public let mechanismWasDemonstrated: Bool
warning: 'probeReasoningToggle' doesn't exist at '/SwiftLLMKit/ModelProber/probeThinkingKeep(reasoningControl:acceptedThinkingBlock:makeProviderForcing:calls:)'
--> Sources/SwiftLLMKit/Evaluation/ModelProber.swift:2170:24-2170:44
2168 | /// unreachable in practice — it recorded `nil` for all six models of the 2026-08-03 run and
2169 | /// could not have recorded anything else. The measured fallback is the `thinking.type=enabled`
2170 + /// finding from ``probeReasoningToggle``, which establishes BY ACCEPTANCE that this endpoint
2171 | /// has a thinking block: the same fact, observed rather than declared.
2172 | public static func probeThinkingKeep(
warning: Parameter 'includeAccountScoped' is missing documentation
--> Sources/SwiftLLMKit/Evaluation/ProbeRecordStore.swift:329:74-329:74
327 | /// - Parameter proberVersion: the version that wrote this profile's record, which decides which
| ╰─suggestion: Document 'includeAccountScoped' parameter
328 | /// levels the complete-ladder gate may demand — see
329 + /// ``EffortRank/levelsRequiredForCompleteLadder(proberVersion:)``.
330 | public func asEmpiricalFacts(includeAccountScoped: Bool,
331 | proberVersion: Int = ModelProber.proberVersion) -> ModelFacts {
warning: 'levels(_:)' is ambiguous at '/SwiftLLMKit/EffortSupport'
--> Sources/SwiftLLMKit/Models/EffortSupport.swift:36:9-36:19
34 | /// | ``unsupported`` | the parameter is rejected, or no level works |
35 | /// | ``supportedLevelsUnknown`` | the parameter is accepted; which values, we don't know |
36 + /// | ``levels(_:)`` | the parameter is accepted, and exactly these values are legal |
| ├─suggestion: Insert '-enum.case' for 'case levels(_: EffortSupport.OrderedLevels)'
| ╰─suggestion: Insert '-type.method' for 'static func levels(_ values: [String]) -> EffortSupport'
37 | ///
38 | /// `supportedLevelsUnknown` is not a placeholder — it is the majority state for OpenAI, which
warning: 'levels(_:)' is ambiguous at '/SwiftLLMKit/EffortSupport'
--> Sources/SwiftLLMKit/Models/EffortSupport.swift:58:46-58:56
56 |
57 | /// Wrapper whose initializer is private to the file, so the empty ladder cannot be built from
58 + /// outside. Callers use ``EffortSupport/levels(_:)`` or ``EffortSupport/init(levels:)``.
| ├─suggestion: Insert '-enum.case' for 'case levels(_: EffortSupport.OrderedLevels)'
| ╰─suggestion: Insert '-type.method' for 'static func levels(_ values: [String]) -> EffortSupport'
59 | public struct OrderedLevels: Sendable, Equatable, Hashable, RandomAccessCollection {
60 | public let values: [String]
warning: 'satisfies(requiredCapabilities:mustNotBePresent:includedAvailabilityStates:)' doesn't exist at '/SwiftLLMKit/ModelCapabilities'
--> Sources/SwiftLLMKit/Models/ModelCapabilities.swift:234:27-234:103
232 | /// false); ABSENT is **unknown** (never measured / provider silent). This distinction is the whole
233 | /// point — a required-capability filter can then reject only an *explicit* false and leave unprobed
234 + /// models visible (see ``satisfies(requiredCapabilities:mustNotBePresent:includedAvailabilityStates:)``).
235 | ///
236 | /// The historical `var …: Bool` accessors are preserved as a 2-state VIEW where unknown reads as
warning: 'toolChoice' doesn't exist at '/SwiftLLMKit/ModelCapability'
--> Sources/SwiftLLMKit/Models/ModelCapabilities.swift:408:70-408:80
406 | /// Whether a `tool_choice` carrying this option would actually be emitted.
407 | ///
408 + /// Two facts, because the decoders write two: ``ModelCapability/toolChoice`` is "this endpoint
| ├─suggestion: Replace 'toolChoice' with 'toolChoiceSupported'
| ├─suggestion: Replace 'toolChoice' with 'toolChoiceSupportsValueNone'
| ├─suggestion: Replace 'toolChoice' with 'toolChoiceSupportsNamedFunction'
| ╰─suggestion: Replace 'toolChoice' with 'toolChoiceSupportsValueRequired'
409 | /// accepts the PARAMETER at all" (LiteLLM's `supportsToolChoice`, OpenRouter's
410 | /// `supported_parameters`), and the per-option capability is that option's own veto.
warning: 'malformedResponse' doesn't exist at '/SwiftLLMKit/LLMProviderError/invalidRequest(detail:)'
--> Sources/SwiftLLMKit/Providers/LLMProviderError.swift:13:11-13:28
11 | /// The request body could not be built into valid JSON before sending — e.g. a caller-supplied
12 | /// non-finite sampling parameter (NaN/±Inf temperature/top_p). Kept distinct from
13 + /// ``malformedResponse`` because this is our request's fault, not the server's.
14 | case invalidRequest(detail: String)
15 | /// The server accepted the request and then declared the RESPONSE failed — the Responses API's
warning: 'malformedResponse' doesn't exist at '/SwiftLLMKit/LLMProviderError/responseFailed(code:message:)'
--> Sources/SwiftLLMKit/Providers/LLMProviderError.swift:19:30-19:47
17 | /// `code` is the server's own error code, verbatim, and is the only signal that separates a
18 | /// refusal of the request's CONTENT (which no retry can change) from a backend fault.
19 + /// Kept distinct from ``malformedResponse``: the stream parsed fine, the provider said no.
20 | case responseFailed(code: String?, message: String)
21 |
warning: 'responseFailed' doesn't exist at '/SwiftLLMKit/LLMProviderError/contentPolicyRefusal(finishReason:)'
--> Sources/SwiftLLMKit/Providers/LLMProviderError.swift:45:69-45:83
43 | ///
44 | /// The vocabulary is per provider and passed through `LLMResponse.finishReason` verbatim, so
45 + /// each adapter consults this table at parse time and throws ``responseFailed`` — the same
46 | /// error the Responses API reports for the same fact — instead of returning a success whose
47 | /// text the server already withheld.
warning: 'responseFailed' doesn't exist at '/SwiftLLMKit/LLMProviderError/serverMemoryExhaustion'
--> Sources/SwiftLLMKit/Providers/LLMProviderError.swift:75:19-75:33
73 | /// The typed memory-exhaustion rejection this error carries, or nil when it is not one.
74 | ///
75 + /// Reads a ``responseFailed`` code (the error object arrived on an HTTP 200) and also an
76 | /// ``httpError`` body's error object, so the answer doesn't change if a server starts sending
77 | /// the same rejection with a non-2xx status.
warning: 'httpError' doesn't exist at '/SwiftLLMKit/LLMProviderError/serverMemoryExhaustion'
--> Sources/SwiftLLMKit/Providers/LLMProviderError.swift:76:11-76:20
74 | ///
75 | /// Reads a ``responseFailed`` code (the error object arrived on an HTTP 200) and also an
76 + /// ``httpError`` body's error object, so the answer doesn't change if a server starts sending
77 | /// the same rejection with a non-2xx status.
78 | public var serverMemoryExhaustion: ServerMemoryExhaustionCode? {
warning: Parameter 'statusCode' is missing documentation
--> Sources/SwiftLLMKit/Providers/LLMRequestLogger.swift:207:100-207:100
205 | /// names the response file with the REQUEST's stamp, so the pair shares a prefix and sorts
206 | /// adjacent, and prints the round-trip latency. Passing `nil` means what it says — no request
207 + /// was logged for this response — and the file falls back to a stamp of its own, unpaired.
208 | public static func logResponse(
209 | label: String,
warning: Parameter 'data' is missing documentation
--> Sources/SwiftLLMKit/Providers/LLMRequestLogger.swift:207:100-207:100
205 | /// names the response file with the REQUEST's stamp, so the pair shares a prefix and sorts
206 | /// adjacent, and prints the round-trip latency. Passing `nil` means what it says — no request
207 + /// was logged for this response — and the file falls back to a stamp of its own, unpaired.
208 | public static func logResponse(
209 | label: String,
warning: Parameter 'label' is missing documentation
--> Sources/SwiftLLMKit/Providers/LLMRequestLogger.swift:207:100-207:100
205 | /// names the response file with the REQUEST's stamp, so the pair shares a prefix and sorts
206 | /// adjacent, and prints the round-trip latency. Passing `nil` means what it says — no request
207 + /// was logged for this response — and the file falls back to a stamp of its own, unpaired.
208 | public static func logResponse(
209 | label: String,
warning: 'toolChoice' doesn't exist at '/SwiftLLMKit/ModelCapability'
--> Sources/SwiftLLMKit/Providers/LLMToolChoice.swift:57:91-57:101
55 |
56 | public extension LLMToolChoice {
57 + /// Which capability governs this option. `.auto` rides the general ``ModelCapability/toolChoice``
| ├─suggestion: Replace 'toolChoice' with 'toolChoiceSupported'
| ├─suggestion: Replace 'toolChoice' with 'toolChoiceSupportsValueNone'
| ├─suggestion: Replace 'toolChoice' with 'toolChoiceSupportsNamedFunction'
| ╰─suggestion: Replace 'toolChoice' with 'toolChoiceSupportsValueRequired'
58 | /// because it is the endpoint's own default whenever tools are present.
59 | var requiredCapability: ModelCapability {
warning: Parameter 'modelID' is missing documentation
--> Sources/SwiftLLMKit/SwiftLLMKit.swift:258:78-258:78
256 | /// record's version instead: the record's ladder was measured by the older prober, and the
257 | /// complete-ladder gate reads the stamped version to know which levels it may demand.
258 + /// Stamping it current would "launder" the record and void its ladder.
259 | @discardableResult
260 | public func storeProbeResult(profile: ModelProfile, provider: ModelProvider, modelID: String,
warning: Parameter 'provider' is missing documentation
--> Sources/SwiftLLMKit/SwiftLLMKit.swift:258:78-258:78
256 | /// record's version instead: the record's ladder was measured by the older prober, and the
257 | /// complete-ladder gate reads the stamped version to know which levels it may demand.
258 + /// Stamping it current would "launder" the record and void its ladder.
259 | @discardableResult
260 | public func storeProbeResult(profile: ModelProfile, provider: ModelProvider, modelID: String,
warning: Parameter 'profile' is missing documentation
--> Sources/SwiftLLMKit/SwiftLLMKit.swift:258:78-258:78
256 | /// record's version instead: the record's ladder was measured by the older prober, and the
257 | /// complete-ladder gate reads the stamped version to know which levels it may demand.
258 + /// Stamping it current would "launder" the record and void its ladder.
259 | @discardableResult
260 | public func storeProbeResult(profile: ModelProfile, provider: ModelProvider, modelID: String,
warning: 'makeProvider(configuration:provider:)' doesn't exist at '/SwiftLLMKit/LLMKitManager/makeProvider(configuration:)'
--> Sources/SwiftLLMKit/SwiftLLMKit.swift:1403:30-1403:67
1401 |
1402 | /// Resolves the `ModelProvider` for a caller-supplied configuration, then builds the
1403 + /// `LLMProvider`. See ``makeProvider(configuration:provider:)`` for the implementation.
1404 | public func makeProvider(configuration config: ModelConfiguration) throws -> any LLMProvider {
1405 | guard let modelProvider = providers.first(where: { $0.id == config.providerID }) else {
Finished building documentation for 'SwiftLLMKit' (1.49s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/drewster99/swift-llm-kit/main
Fetching https://github.com/swiftlang/swift-docc-plugin
[1/2345] Fetching swift-docc-plugin
Fetched https://github.com/swiftlang/swift-docc-plugin from cache (1.40s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.5.0 (3.62s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3834] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (1.21s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.89s)
Creating working copy for https://github.com/swiftlang/swift-docc-plugin
Working copy of https://github.com/swiftlang/swift-docc-plugin resolved at 1.5.0
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Building for debugging...
[0/8] Write sources
[0/8] Write snippet-extract-tool-entitlement.plist
[0/8] Write sources
[4/8] Write swift-version-69A768CDF2A0BEE1.txt
[6/54] Compiling SymbolKit DeclarationFragments.swift
[7/54] Compiling SymbolKit Fragment.swift
[8/54] Compiling SymbolKit FragmentKind.swift
[9/54] Compiling SymbolKit FunctionParameter.swift
[10/54] Compiling SymbolKit FunctionSignature.swift
[11/58] Emitting module SymbolKit
[12/58] Compiling SymbolKit Mixin+Equals.swift
[13/58] Compiling SymbolKit Mixin+Hash.swift
[14/58] Compiling SymbolKit Mixin.swift
[15/58] Compiling SymbolKit LineList.swift
[16/58] Compiling SymbolKit Position.swift
[17/58] Compiling Snippets SnippetLanguage.swift
[18/58] Compiling Snippets SnippetParser.swift
[19/58] Compiling Snippets Snippet.swift
[20/58] Emitting module Snippets
[21/58] Compiling SymbolKit SemanticVersion.swift
[22/58] Compiling SymbolKit AccessControl.swift
[23/58] Compiling SymbolKit Availability.swift
[24/58] Compiling SymbolKit AvailabilityItem.swift
[25/58] Compiling SymbolKit Domain.swift
[26/58] Compiling SymbolKit GenericConstraint.swift
[27/58] Compiling SymbolKit GenericParameter.swift
[28/58] Compiling SymbolKit Generics.swift
[29/58] Compiling SymbolKit Namespace.swift
[30/58] Compiling SymbolKit SourceRange.swift
[31/58] Compiling SymbolKit Metadata.swift
[32/58] Compiling SymbolKit Module.swift
[33/58] Compiling SymbolKit OperatingSystem.swift
[34/58] Compiling SymbolKit Platform.swift
[35/58] Compiling SymbolKit Relationship.swift
[36/58] Compiling SymbolKit RelationshipKind.swift
[37/58] Compiling SymbolKit SourceOrigin.swift
[38/58] Compiling SymbolKit GenericConstraints.swift
[39/58] Compiling SymbolKit Swift.swift
[40/58] Compiling SymbolKit Identifier.swift
[41/58] Compiling SymbolKit KindIdentifier.swift
[42/58] Compiling SymbolKit Location.swift
[43/58] Compiling SymbolKit Mutability.swift
[44/58] Compiling SymbolKit Names.swift
[45/58] Compiling SymbolKit SPI.swift
[46/58] Compiling SymbolKit Snippet.swift
[47/58] Compiling SymbolKit Extension.swift
[48/58] Compiling SymbolKit Symbol.swift
[49/58] Compiling SymbolKit SymbolKind.swift
[50/58] Compiling SymbolKit SymbolGraph.swift
[51/58] Compiling SymbolKit GraphCollector.swift
[52/58] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[53/58] Compiling SymbolKit UnifiedSymbol.swift
[54/58] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[55/58] Compiling SymbolKit UnifiedSymbolGraph.swift
[56/62] Compiling snippet_extract SymbolGraph+Snippet.swift
[57/62] Compiling snippet_extract SnippetBuildCommand.swift
[58/62] Emitting module snippet_extract
[59/62] Compiling snippet_extract URL+Status.swift
[59/62] Write Objects.LinkFileList
[60/62] Linking snippet-extract-tool
[61/62] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (4.46s)
Building for debugging...
[0/1] Write swift-version-69A768CDF2A0BEE1.txt
Build of target: 'SwiftLLMKit' complete! (0.29s)
3064
19 /Users/admin/builder/spi-builder-workspace/.docs/drewster99/swift-llm-kit/main
✅ Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/drewster99/swift-llm-kit/main
File count: 3064
Doc size: 19.0MB
Preparing doc bundle ...
Using presigned URL upload - AWS credentials not required
Uploading -drewster99-swift-llm-kit-main-b27f2cc5.zip to presigned URL
Starting upload of 4249321 bytes...
Upload completed successfully
Done.