Build Information
Successful build of HybridRouterKit, reference 0.11.0 (4e4033), with Swift 6.4 for macOS (SPM) on 5 Nov 2026 07:05:13 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-27.0.0.app xcrun swift build --arch arm64Build Log
========================================
RunAll
========================================
Builder version: 5.1.4
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/jaichaudhry/HybridRouter.git
Reference: 0.11.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/jaichaudhry/HybridRouter
* tag 0.11.0 -> FETCH_HEAD
HEAD is now at 4e40339 Docs: private passages come with the question
Cloned https://github.com/jaichaudhry/HybridRouter.git
Revision (git rev-parse @):
4e40339fa4837d95a8a790564f058ce58b68f8d1
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/jaichaudhry/HybridRouter.git at 0.11.0
Fetching https://github.com/anthropics/ClaudeForFoundationModels
[1/416] Fetching claudeforfoundationmodels
Fetched https://github.com/anthropics/ClaudeForFoundationModels (1.04s)
Computing version for https://github.com/anthropics/ClaudeForFoundationModels
Computed https://github.com/anthropics/ClaudeForFoundationModels at 0.2.3 (1.73s)
Creating working copy for https://github.com/anthropics/ClaudeForFoundationModels
Working copy of https://github.com/anthropics/ClaudeForFoundationModels resolved at 0.2.3
========================================
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": "hybridrouter",
"name": "HybridRouterKit",
"url": "https://github.com/jaichaudhry/HybridRouter.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/HybridRouter",
"traits": [
"default"
],
"dependencies": [
{
"identity": "claudeforfoundationmodels",
"name": "ClaudeForFoundationModels",
"url": "https://github.com/anthropics/ClaudeForFoundationModels",
"version": "0.2.3",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/ClaudeForFoundationModels",
"traits": [
"default"
],
"dependencies": [
]
}
]
}
]
}
Fetching https://github.com/jaichaudhry/HybridRouter.git
[1/2285] Fetching hybridrouter
Fetched https://github.com/jaichaudhry/HybridRouter.git (4.65s)
Fetching https://github.com/anthropics/ClaudeForFoundationModels from cache
Fetched https://github.com/anthropics/ClaudeForFoundationModels from cache (0.54s)
Computing version for https://github.com/anthropics/ClaudeForFoundationModels
Computed https://github.com/anthropics/ClaudeForFoundationModels at 0.2.3 (0.63s)
Creating working copy for https://github.com/jaichaudhry/HybridRouter.git
Working copy of https://github.com/jaichaudhry/HybridRouter.git resolved at 0.11.0 (4e40339)
Creating working copy for https://github.com/anthropics/ClaudeForFoundationModels
Working copy of https://github.com/anthropics/ClaudeForFoundationModels resolved at 0.2.3
warning: '.resolve-product-dependencies': dependency 'hybridrouter' is not used by any target
Found 1 product dependencies
- ClaudeForFoundationModels
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.4
Building package at path: $PWD
https://github.com/jaichaudhry/HybridRouter.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-27.0.0.app xcrun swift build --arch arm64
Building for debugging...
[Computing dependencies]
[Pre-planning 1 / 357]
[Planning deferred tasks]
[67 / 129] HybridRouterKit_HybridRouterKitTests
[77 / 129]
[78 / 130] ClaudeAPI
[88 / 175]
[93 / 175]
[96 / 175]
[97 / 175]
[101 / 175]
[103 / 175]
[106 / 175]
[109 / 175]
[111 / 175]
[112 / 175]
[123 / 175] ClaudeAPI
[124 / 175] ClaudeAPI
[132 / 176] ClaudeForFoundationModels
[141 / 199]
[142 / 199]
[144 / 199]
[155 / 199] ClaudeForFoundationModels
[162 / 200]
[162 / 200] ClaudeForFoundationModels
[169 / 216]
[180 / 216] HybridRouterKit
[189 / 219] HybridRouterKit
[189 / 219] HybridRouterKitTesting
[194 / 224] HybridRouterKit
[200 / 224] HybridRouterKitVoice
[213 / 266]
[224 / 266]
[227 / 266]
[233 / 266] HybridRouterKit-product
[235 / 266]
[238 / 266]
[239 / 266]
[244 / 266]
[248 / 266] HybridRouterKitSiri
[254 / 266] HybridRouterKitVoice
[260 / 266] HybridRouterKitSiri
[260 / 266] HybridRouterKitVoice
[263 / 266] HybridRouterKitSiri
Build complete! (16.55 sec)
/Users/admin/builder/spi-builder-workspace/Packages/HybridRouterKit/Sources/HybridRouterKit/Knowledge/KnowledgeBase.swift:283:5: [1;33mwarning: [1;39m'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Void', consider removing it[0;0m
[0;36m281 |[0;0m
[0;36m282 |[0;0m /// Asks once for the English part-of-speech model, which a device may not have downloaded.
[0;36m283 |[0;0m nonisolated(unsafe) private static let requestTaggerAssets: Void = {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Void', consider removing it[0;0m
[0;36m284 |[0;0m NLTagger.requestAssets(for: .english, tagScheme: .lexicalClass) { _, _ in }
[0;36m285 |[0;0m }()
/Users/admin/builder/spi-builder-workspace/Packages/HybridRouterKit/Sources/HybridRouterKit/Knowledge/KnowledgeBase.swift:283:5: [1;33mwarning: [1;39m'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Void', consider removing it[0;0m
[0;36m281 |[0;0m
[0;36m282 |[0;0m /// Asks once for the English part-of-speech model, which a device may not have downloaded.
[0;36m283 |[0;0m nonisolated(unsafe) private static let requestTaggerAssets: Void = {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Void', consider removing it[0;0m
[0;36m284 |[0;0m NLTagger.requestAssets(for: .english, tagScheme: .lexicalClass) { _, _ in }
[0;36m285 |[0;0m }()
/Users/admin/builder/spi-builder-workspace/Packages/HybridRouterKit/Sources/HybridRouterKitSiri/SiriAnswerCard.swift:89:55: [1;33mwarning: [1;39mcall to main actor-isolated initializer 'init(answer:)' in a synchronous nonisolated context[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/actor-isolated-call\ActorIsolatedCall]8;;\]
[0;36m12 |[0;0m let answer: SiriAnswer
[0;36m13 |[0;0m
[0;36m14 |[0;0m public init(answer: SiriAnswer) {
[0;36m|[0;0m |- [1;39mnote: [1;39mcalls to initializer 'init(answer:)' from outside of its actor context are implicitly asynchronous[0;0m
[0;36m|[0;0m `- [1;39mnote: [1;39mmain actor isolation inferred from conformance to protocol 'View'[0;0m
[0;36m15 |[0;0m self.answer = answer
[0;36m16 |[0;0m }
[0;36m:[0;0m
[0;36m86 |[0;0m /// The intent result for this answer: the text for Siri as the value, the dialog, and the
[0;36m87 |[0;0m /// card. An App Intent's `perform()` can return it directly.
[0;36m88 |[0;0m public func intentResult() -> some IntentResult & ReturnsValue<String> & ProvidesDialog & ShowsSnippetView {
[0;36m|[0;0m `- [1;39mnote: [1;39madd '@MainActor' to make instance method 'intentResult()' part of global actor 'MainActor'[0;0m
[0;36m89 |[0;0m .result(value: forSiri, dialog: dialog, view: SiriAnswerCard(answer: self))
[0;36m|[0;0m `- [1;33mwarning: [1;39mcall to main actor-isolated initializer 'init(answer:)' in a synchronous nonisolated context[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/actor-isolated-call\ActorIsolatedCall]8;;\]
[0;36m90 |[0;0m }
[0;36m91 |[0;0m }
[#ActorIsolatedCall]: <https://docs.swift.org/compiler/documentation/diagnostics/actor-isolated-call>
Build complete.
{
"dependencies" : [
{
"identity" : "claudeforfoundationmodels",
"requirement" : {
"range" : [
{
"lower_bound" : "0.2.2",
"upper_bound" : "1.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/anthropics/ClaudeForFoundationModels"
}
],
"manifest_display_name" : "HybridRouterKit",
"name" : "HybridRouterKit",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "27.0"
},
{
"name" : "macos",
"version" : "27.0"
}
],
"products" : [
{
"name" : "HybridRouterKit",
"targets" : [
"HybridRouterKit"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "HybridRouterKitVoice",
"targets" : [
"HybridRouterKitVoice"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "HybridRouterKitSiri",
"targets" : [
"HybridRouterKitSiri"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "HybridRouterKitTesting",
"targets" : [
"HybridRouterKitTesting"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"swift_languages_versions" : [
"6"
],
"targets" : [
{
"c99name" : "HybridRouterKitVoice",
"module_type" : "SwiftTarget",
"name" : "HybridRouterKitVoice",
"path" : "Packages/HybridRouterKit/Sources/HybridRouterKitVoice",
"product_memberships" : [
"HybridRouterKitVoice"
],
"sources" : [
"HybridAssistant+Voice.swift",
"VoiceInput.swift"
],
"target_dependencies" : [
"HybridRouterKit"
],
"type" : "library"
},
{
"c99name" : "HybridRouterKitTests",
"module_type" : "SwiftTarget",
"name" : "HybridRouterKitTests",
"path" : "Packages/HybridRouterKit/Tests/HybridRouterKitTests",
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Packages/HybridRouterKit/Tests/HybridRouterKitTests/Fixtures",
"rule" : {
"copy" : {
}
}
}
],
"sources" : [
"AttachmentsAndToolsTests.swift",
"BusyModelTests.swift",
"ClaudeAuthSourceTests.swift",
"EscalationPolicyTests.swift",
"FollowUpTests.swift",
"HistoryPolicyTests.swift",
"HybridAssistantTests.swift",
"KnowledgeTests.swift",
"MultiTurnBenchmarkTests.swift",
"OpenRouterAuthTests.swift",
"OpenRouterTests.swift",
"PrivacyGuardTests.swift",
"PrivateHistoryTests.swift",
"ProviderTests.swift",
"QualityBenchmarkTests.swift",
"RouteTests.swift",
"RoutedSessionTests.swift",
"RouterTests.swift",
"RoutingBenchmarkTests.swift",
"RoutingRulesTests.swift",
"RoutingSupportTests.swift",
"SiriTests.swift",
"SnapshotTests.swift",
"TelemetryTests.swift",
"TranscriptPersistenceTests.swift",
"TranscriptScoreTests.swift",
"TurnCoordinatorTests.swift",
"VoiceInputTests.swift"
],
"target_dependencies" : [
"HybridRouterKit",
"HybridRouterKitTesting",
"HybridRouterKitVoice",
"HybridRouterKitSiri"
],
"type" : "test"
},
{
"c99name" : "HybridRouterKitTesting",
"module_type" : "SwiftTarget",
"name" : "HybridRouterKitTesting",
"path" : "Packages/HybridRouterKit/Sources/HybridRouterKitTesting",
"product_memberships" : [
"HybridRouterKitTesting"
],
"sources" : [
"FakeAnswerJudge.swift",
"FakeClassifier.swift",
"FakeLanguageModel.swift",
"FixedTokenEstimator.swift"
],
"target_dependencies" : [
"HybridRouterKit"
],
"type" : "library"
},
{
"c99name" : "HybridRouterKitSiri",
"module_type" : "SwiftTarget",
"name" : "HybridRouterKitSiri",
"path" : "Packages/HybridRouterKit/Sources/HybridRouterKitSiri",
"product_memberships" : [
"HybridRouterKitSiri"
],
"sources" : [
"SiriAnswer.swift",
"SiriAnswerCard.swift",
"SiriAssistant.swift"
],
"target_dependencies" : [
"HybridRouterKit"
],
"type" : "library"
},
{
"c99name" : "HybridRouterKit",
"module_type" : "SwiftTarget",
"name" : "HybridRouterKit",
"path" : "Packages/HybridRouterKit/Sources/HybridRouterKit",
"product_dependencies" : [
"ClaudeForFoundationModels"
],
"product_memberships" : [
"HybridRouterKit",
"HybridRouterKitVoice",
"HybridRouterKitSiri",
"HybridRouterKitTesting"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Packages/HybridRouterKit/Sources/HybridRouterKit/Resources/prices.json",
"rule" : {
"process" : {
}
}
}
],
"sources" : [
"Assistant/HybridAssistant.swift",
"Auth/ClaudeAuthSource.swift",
"Auth/KeychainStore.swift",
"Auth/OpenRouterAuth.swift",
"Evaluation/AnswerJudge.swift",
"Evaluation/CloudTap.swift",
"Evaluation/MultiTurnBenchmark.swift",
"Evaluation/MultiTurnBenchmarkRunner.swift",
"Evaluation/MultiTurnReport.swift",
"Evaluation/QualityBenchmark.swift",
"Evaluation/QualityBenchmarkRunner.swift",
"Evaluation/QualityReplay.swift",
"Evaluation/QualityReport.swift",
"Evaluation/RetrievalSpike.swift",
"Evaluation/TranscriptScore.swift",
"Knowledge/KnowledgeBase.swift",
"Knowledge/KnowledgeSearchTool.swift",
"Privacy/PrivacyGuard.swift",
"Privacy/PrivateDataSignal.swift",
"Providers/AppleCloudProvider.swift",
"Providers/ClaudeProvider.swift",
"Providers/MisplacedProvider.swift",
"Providers/ModelProvider.swift",
"Providers/MuseProvider.swift",
"Providers/OnDeviceProvider.swift",
"Providers/OpenRouterModel.swift",
"Providers/OpenRouterProvider.swift",
"Providers/SimulatedAppleCloudProvider.swift",
"Routing/CloudModel.swift",
"Routing/EscalationPolicy.swift",
"Routing/ExactAnswerDetector.swift",
"Routing/NetworkMonitor.swift",
"Routing/Route.swift",
"Routing/RouteClassification.swift",
"Routing/RouteClassifier.swift",
"Routing/RouteDecision.swift",
"Routing/Router.swift",
"Routing/RoutingBenchmark.swift",
"Routing/RoutingRules.swift",
"Routing/TokenEstimator.swift",
"Session/ConversationSnapshot.swift",
"Session/HistoryPolicy.swift",
"Session/ImageInput.swift",
"Session/PrivacyLedger.swift",
"Session/RoutedSession.swift",
"Session/RoutingProfile.swift",
"Session/TurnCoordinator.swift",
"Telemetry/CostTable.swift",
"Telemetry/StepMetrics.swift"
],
"type" : "library"
}
],
"tools_version" : "6.2"
}
✅ Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path: $PWD/.docs/jaichaudhry/hybridrouter/0.11.0
Repository: jaichaudhry/HybridRouter
Swift version used: 6.4
Target: HybridRouterKit
Extracting symbol information for 'HybridRouterKit'...
Finished extracting symbol information for 'HybridRouterKit'. (3.67s)
Building documentation for 'HybridRouterKit'...
warning: Parameter 'images' is missing documentation
--> ../Assistant/HybridAssistant.swift:211:97-211:97
209 | /// - route: run on this route instead of letting the router pick.
210 | /// - streams: stream the reply from the model internally. Pass false from the background,
211 + /// e.g. an App Intent: Apple's on-device model rate-limits background apps that stream.
212 | public func respond(
213 | to prompt: String,
warning: Parameter 'prompt' is missing documentation
--> ../Assistant/HybridAssistant.swift:211:97-211:97
209 | /// - route: run on this route instead of letting the router pick.
210 | /// - streams: stream the reply from the model internally. Pass false from the background,
211 + /// e.g. an App Intent: Apple's on-device model rate-limits background apps that stream.
212 | public func respond(
213 | to prompt: String,
warning: Parameter 'onProgress' is missing documentation
--> ../Evaluation/MultiTurnBenchmarkRunner.swift:82:67-82:67
80 | /// Runs every conversation and strategy not already in the result. Stops early when cancelled
81 | /// or at the cap.
82 + /// - Parameter only: conversation IDs to run, or nil for all.
| ╰─suggestion: Document 'onProgress' parameter
83 | @discardableResult
84 | public func run(
warning: Parameter 'dataset' is missing documentation
--> ../Evaluation/MultiTurnReport.swift:77:79-77:79
75 | public let judgeErrors: Int
76 |
77 + /// - Parameter split: "tuning", "heldout", or nil for every conversation.
| ╰─suggestion: Document 'dataset' parameter
78 | public init(_ run: MultiTurnBenchmark.RunResult, dataset: MultiTurnBenchmark.Dataset, split: String? = nil) {
79 | self.split = split
warning: Parameter 'run' is missing documentation
--> ../Evaluation/MultiTurnReport.swift:77:79-77:79
75 | public let judgeErrors: Int
76 |
77 + /// - Parameter split: "tuning", "heldout", or nil for every conversation.
| ╰─suggestion: Document 'run' parameter
78 | public init(_ run: MultiTurnBenchmark.RunResult, dataset: MultiTurnBenchmark.Dataset, split: String? = nil) {
79 | self.split = split
warning: Parameter 'device, classifierName, judgeModelID' not found in initializer declaration
--> ../Evaluation/QualityBenchmarkRunner.swift:46:13-46:49
44 | /// - checkpoint: where to save progress after each prompt. An existing checkpoint with the
45 | /// same columns is resumed.
46 + /// - device, classifierName, judgeModelID: recorded in the result.
| ╰─suggestion: Replace 'device, classifierName, judgeModelID' with 'classifierName'
47 | /// - detectsExactAnswers: route with the exact-answer detector, as the app does.
48 | /// - only: measure just these columns, e.g. to skip Opus on a test set. Others are listed
warning: Parameter 'classifier' is missing documentation
--> ../Evaluation/QualityBenchmarkRunner.swift:49:63-49:63
47 | /// - detectsExactAnswers: route with the exact-answer detector, as the app does.
48 | /// - only: measure just these columns, e.g. to skip Opus on a test set. Others are listed
49 + /// as not measured. Nil measures every available one.
50 | public init(
51 | makeSession: @escaping SessionFactory,
warning: Parameter 'startedAt' is missing documentation
--> ../Evaluation/QualityBenchmarkRunner.swift:49:63-49:63
47 | /// - detectsExactAnswers: route with the exact-answer detector, as the app does.
| ╰─suggestion: Document 'startedAt' parameter
48 | /// - only: measure just these columns, e.g. to skip Opus on a test set. Others are listed
49 + /// as not measured. Nil measures every available one.
50 | public init(
51 | makeSession: @escaping SessionFactory,
warning: Parameter 'judge' is missing documentation
--> ../Evaluation/QualityBenchmarkRunner.swift:49:63-49:63
47 | /// - detectsExactAnswers: route with the exact-answer detector, as the app does.
48 | /// - only: measure just these columns, e.g. to skip Opus on a test set. Others are listed
49 + /// as not measured. Nil measures every available one.
50 | public init(
51 | makeSession: @escaping SessionFactory,
warning: Parameter 'judgeModelID' is missing documentation
--> ../Evaluation/QualityBenchmarkRunner.swift:49:63-49:63
47 | /// - detectsExactAnswers: route with the exact-answer detector, as the app does.
| ╰─suggestion: Document 'judgeModelID' parameter
48 | /// - only: measure just these columns, e.g. to skip Opus on a test set. Others are listed
49 + /// as not measured. Nil measures every available one.
50 | public init(
51 | makeSession: @escaping SessionFactory,
warning: Parameter 'device' is missing documentation
--> ../Evaluation/QualityBenchmarkRunner.swift:49:63-49:63
47 | /// - detectsExactAnswers: route with the exact-answer detector, as the app does.
| ╰─suggestion: Document 'device' parameter
48 | /// - only: measure just these columns, e.g. to skip Opus on a test set. Others are listed
49 + /// as not measured. Nil measures every available one.
50 | public init(
51 | makeSession: @escaping SessionFactory,
warning: Parameter 'mapping' is missing documentation
--> ../Evaluation/QualityBenchmarkRunner.swift:49:63-49:63
47 | /// - detectsExactAnswers: route with the exact-answer detector, as the app does.
48 | /// - only: measure just these columns, e.g. to skip Opus on a test set. Others are listed
49 + /// as not measured. Nil measures every available one.
50 | public init(
51 | makeSession: @escaping SessionFactory,
warning: Parameter 'classifierName' is missing documentation
--> ../Evaluation/QualityBenchmarkRunner.swift:49:63-49:63
47 | /// - detectsExactAnswers: route with the exact-answer detector, as the app does.
| ╰─suggestion: Document 'classifierName' parameter
48 | /// - only: measure just these columns, e.g. to skip Opus on a test set. Others are listed
49 + /// as not measured. Nil measures every available one.
50 | public init(
51 | makeSession: @escaping SessionFactory,
warning: Parameter 'router' is missing documentation
--> ../Evaluation/QualityReplay.swift:11:65-11:65
9 | /// The router sees the run's measured routes as available, as in the benchmark itself.
10 | /// - Parameter split: replay only this split's prompts ("heldout", "tuning", "test"); others
| ╰─suggestion: Document 'router' parameter
11 + /// are dropped from the result. Nil replays every prompt.
12 | @MainActor
13 | public static func reroute(
warning: Parameter 'run' is missing documentation
--> ../Evaluation/QualityReplay.swift:11:65-11:65
9 | /// The router sees the run's measured routes as available, as in the benchmark itself.
10 | /// - Parameter split: replay only this split's prompts ("heldout", "tuning", "test"); others
| ╰─suggestion: Document 'run' parameter
11 + /// are dropped from the result. Nil replays every prompt.
12 | @MainActor
13 | public static func reroute(
warning: Parameter 'onProgress' is missing documentation
--> ../Evaluation/QualityReplay.swift:11:65-11:65
9 | /// The router sees the run's measured routes as available, as in the benchmark itself.
10 | /// - Parameter split: replay only this split's prompts ("heldout", "tuning", "test"); others
11 + /// are dropped from the result. Nil replays every prompt.
| ╰─suggestion: Document 'onProgress' parameter
12 | @MainActor
13 | public static func reroute(
warning: Parameter 'run' is missing documentation
--> ../Evaluation/QualityReport.swift:78:73-78:73
76 | public let judgeErrors: Int
77 |
78 + /// - Parameter split: "tuning", "heldout", or nil for every prompt.
| ╰─suggestion: Document 'run' parameter
79 | public init(_ run: QualityBenchmark.RunResult, split: String? = nil) {
80 | let cases = run.cases.filter { split == nil || $0.case.split == split }
warning: Parameter 'knowledge' is missing documentation
--> ../Evaluation/RetrievalSpike.swift:334:75-334:75
332 | /// - Parameters:
333 | /// - routesByDocuments: false routes as 0.9.0 did, for comparison.
| ╰─suggestion: Document 'knowledge' parameter
334 + /// - onDeviceOnly: answer on-device whatever the router would pick.
335 | /// - Returns: the row, and what judging cost.
336 | public static func runAssistant(
warning: Parameter 'markers' is missing documentation
--> ../Evaluation/RetrievalSpike.swift:334:75-334:75
332 | /// - Parameters:
333 | /// - routesByDocuments: false routes as 0.9.0 did, for comparison.
334 + /// - onDeviceOnly: answer on-device whatever the router would pick.
| ╰─suggestion: Document 'markers' parameter
335 | /// - Returns: the row, and what judging cost.
336 | public static func runAssistant(
warning: Parameter 'arm' is missing documentation
--> ../Evaluation/RetrievalSpike.swift:334:75-334:75
332 | /// - Parameters:
333 | /// - routesByDocuments: false routes as 0.9.0 did, for comparison.
| ╰─suggestion: Document 'arm' parameter
334 + /// - onDeviceOnly: answer on-device whatever the router would pick.
335 | /// - Returns: the row, and what judging cost.
336 | public static func runAssistant(
warning: Parameter 'judge' is missing documentation
--> ../Evaluation/RetrievalSpike.swift:334:75-334:75
332 | /// - Parameters:
333 | /// - routesByDocuments: false routes as 0.9.0 did, for comparison.
334 + /// - onDeviceOnly: answer on-device whatever the router would pick.
| ╰─suggestion: Document 'judge' parameter
335 | /// - Returns: the row, and what judging cost.
336 | public static func runAssistant(
warning: Parameter 'cloud' is missing documentation
--> ../Evaluation/RetrievalSpike.swift:334:75-334:75
332 | /// - Parameters:
333 | /// - routesByDocuments: false routes as 0.9.0 did, for comparison.
| ╰─suggestion: Document 'cloud' parameter
334 + /// - onDeviceOnly: answer on-device whatever the router would pick.
335 | /// - Returns: the row, and what judging cost.
336 | public static func runAssistant(
warning: Parameter 'question' is missing documentation
--> ../Evaluation/RetrievalSpike.swift:334:75-334:75
332 | /// - Parameters:
333 | /// - routesByDocuments: false routes as 0.9.0 did, for comparison.
| ╰─suggestion: Document 'question' parameter
334 + /// - onDeviceOnly: answer on-device whatever the router would pick.
335 | /// - Returns: the row, and what judging cost.
336 | public static func runAssistant(
warning: Parameter 'documents' is missing documentation
--> ../Knowledge/KnowledgeBase.swift:88:89-88:89
86 | /// - about: what the documents are, for the search tool's description.
87 | /// - domain: keeps this base's documents apart from others in the app's index.
| ╰─suggestion: Document 'documents' parameter
88 + /// - privateLabel: the reason shown when a private document keeps a turn private.
89 | public convenience init(
90 | about: String,
warning: Parameter 'query' is missing documentation
--> ../Knowledge/KnowledgeBase.swift:143:97-143:97
141 |
142 | /// Passages matching the query's keywords, best first.
143 + /// - Parameter includesPrivate: false leaves private documents out, as for the cloud route.
| ╰─suggestion: Document 'query' parameter
144 | public func search(_ query: String, includesPrivate: Bool = true, limit: Int = 3) async throws -> [Hit] {
145 | try await ranked(query, includesPrivate: includesPrivate).hits.prefix(limit).map { $0 }
warning: Parameter 'limit' is missing documentation
--> ../Knowledge/KnowledgeBase.swift:143:97-143:97
141 |
142 | /// Passages matching the query's keywords, best first.
143 + /// - Parameter includesPrivate: false leaves private documents out, as for the cloud route.
| ╰─suggestion: Document 'limit' parameter
144 | public func search(_ query: String, includesPrivate: Bool = true, limit: Int = 3) async throws -> [Hit] {
145 | try await ranked(query, includesPrivate: includesPrivate).hits.prefix(limit).map { $0 }
warning: Parameter 'knowledge' is missing documentation
--> ../Knowledge/KnowledgeSearchTool.swift:25:88-25:88
23 | /// - includesPrivate: false for a tool the cloud model may call.
| ╰─suggestion: Document 'knowledge' parameter
24 | /// - limit: passages returned per search.
25 + /// - privateData: the session's signal, told when a private passage is returned.
26 | public init(knowledge: KnowledgeBase, includesPrivate: Bool, limit: Int = 3, privateData: PrivateDataSignal? = nil) {
27 | self.knowledge = knowledge
warning: Parameter 'route' is missing documentation
--> ../Routing/CloudModel.swift:76:60-76:60
74 |
75 | /// - Parameter modelID: the model that actually answered, if known, so earlier replies keep
| ╰─suggestion: Document 'route' parameter
76 + /// their own name after the cloud model is switched.
77 | public func name(_ route: Route, modelID: String? = nil) -> String {
78 | guard route == .cloud else { return route.displayName }
warning: Parameter 'prompt' is missing documentation
--> ../Routing/RoutingRules.swift:156:105-156:105
154 | public enum RouteMention {
155 | /// The single route named in the message, or nil if none or both are named.
156 + /// - Parameter cloudName: the name of the model serving the cloud route, e.g. from ``RouteLabels``.
| ╰─suggestion: Document 'prompt' parameter
157 | public static func named(in prompt: String, cloudName: String? = nil) -> Route? {
158 | let cloudNames = ["claude", "muse wonder"] + aliases(of: cloudName)
warning: Parameter 'onDevice, appleCloud, cloud' not found in initializer declaration
--> ../Session/RoutedSession.swift:56:13-56:40
54 | /// - privateData: shared with tools that may return private data; a turn they mark is
55 | /// withheld from the cloud model afterwards.
56 + /// - onDevice, appleCloud, cloud: the provider for each route. A provider whose `route`
| ╰─suggestion: Replace 'onDevice, appleCloud, cloud' with 'onDevice'
57 | /// doesn't match its slot reports the route unavailable instead of serving it.
58 | /// - history: an earlier conversation to continue.
warning: Parameter 'onDevice' is missing documentation
--> ../Session/RoutedSession.swift:61:98-61:98
59 | /// - privatePromptIDs: earlier private turns, from ``privatePromptIDs`` on the old session.
60 | /// - historyPolicy: how much of the conversation each route sees.
61 + /// - lastRoute: the route of the last reply in `history`, so a bare follow-up stays on it.
62 | public init(
63 | instructions: String,
warning: Parameter 'appleCloud' is missing documentation
--> ../Session/RoutedSession.swift:61:98-61:98
59 | /// - privatePromptIDs: earlier private turns, from ``privatePromptIDs`` on the old session.
60 | /// - historyPolicy: how much of the conversation each route sees.
61 + /// - lastRoute: the route of the last reply in `history`, so a bare follow-up stays on it.
62 | public init(
63 | instructions: String,
warning: Parameter 'cloud' is missing documentation
--> ../Session/RoutedSession.swift:61:98-61:98
59 | /// - privatePromptIDs: earlier private turns, from ``privatePromptIDs`` on the old session.
60 | /// - historyPolicy: how much of the conversation each route sees.
61 + /// - lastRoute: the route of the last reply in `history`, so a bare follow-up stays on it.
62 | public init(
63 | instructions: String,
warning: Parameter 'costTable' is missing documentation
--> ../Session/RoutedSession.swift:61:98-61:98
59 | /// - privatePromptIDs: earlier private turns, from ``privatePromptIDs`` on the old session.
60 | /// - historyPolicy: how much of the conversation each route sees.
61 + /// - lastRoute: the route of the last reply in `history`, so a bare follow-up stays on it.
62 | public init(
63 | instructions: String,
Finished building documentation for 'HybridRouterKit' (0.75s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/jaichaudhry/hybridrouter/0.11.0
Updating https://github.com/anthropics/ClaudeForFoundationModels
Fetching https://github.com/swiftlang/swift-docc-plugin
Updated https://github.com/anthropics/ClaudeForFoundationModels (0.55s)
[1/2345] Fetching swift-docc-plugin
Fetched https://github.com/swiftlang/swift-docc-plugin (1.35s)
Computing version for https://github.com/anthropics/ClaudeForFoundationModels
Computed https://github.com/anthropics/ClaudeForFoundationModels at 0.2.3 (1.97s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.5.0 (2.48s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3862] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit (1.40s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (2.23s)
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...
[Planning deferred tasks]
[18 / 41]
[20 / 43] Snippets
[30 / 92]
[35 / 92]
[38 / 92]
[39 / 92]
[43 / 92]
[45 / 92]
[48 / 92]
[51 / 92]
[53 / 92]
[54 / 92]
[65 / 92] SymbolKit
[66 / 92] Snippets
[84 / 93] SymbolKit
[84 / 93] Snippets
[86 / 93] SymbolKit
[92 / 97] snippet-extract-product
[93 / 97] snippet-extract-product
[95 / 97] snippet-extract-product
Build complete! (4.55 sec)
Building for debugging...
[Planning 1 / 124]
[Planning deferred tasks]
[4 / 30] ClaudeAPI
[15 / 41] ClaudeAPI
[19 / 38] ClaudeAPI
[31 / 48] ClaudeForFoundationModels
[36 / 44] HybridRouterKit
[47 / 55] HybridRouterKit
/Users/admin/builder/spi-builder-workspace/Packages/HybridRouterKit/Sources/HybridRouterKit/Knowledge/KnowledgeBase.swift:283:5: [1;33mwarning: [1;39m'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Void', consider removing it[0;0m
[0;36m281 |[0;0m
[0;36m282 |[0;0m /// Asks once for the English part-of-speech model, which a device may not have downloaded.
[0;36m283 |[0;0m nonisolated(unsafe) private static let requestTaggerAssets: Void = {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Void', consider removing it[0;0m
[0;36m284 |[0;0m NLTagger.requestAssets(for: .english, tagScheme: .lexicalClass) { _, _ in }
[0;36m285 |[0;0m }()
/Users/admin/builder/spi-builder-workspace/Packages/HybridRouterKit/Sources/HybridRouterKit/Knowledge/KnowledgeBase.swift:283:5: [1;33mwarning: [1;39m'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Void', consider removing it[0;0m
[0;36m281 |[0;0m
[0;36m282 |[0;0m /// Asks once for the English part-of-speech model, which a device may not have downloaded.
[0;36m283 |[0;0m nonisolated(unsafe) private static let requestTaggerAssets: Void = {
[0;36m|[0;0m `- [1;33mwarning: [1;39m'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Void', consider removing it[0;0m
[0;36m284 |[0;0m NLTagger.requestAssets(for: .english, tagScheme: .lexicalClass) { _, _ in }
[0;36m285 |[0;0m }()
[49 / 51] HybridRouterKit
Build complete! (3.44 sec)
2796
18 /Users/admin/builder/spi-builder-workspace/.docs/jaichaudhry/hybridrouter/0.11.0
✅ Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/jaichaudhry/hybridrouter/0.11.0
File count: 2796
Doc size: 18.0MB
Preparing doc bundle ...
Using presigned URL upload - AWS credentials not required
Uploading -jaichaudhry-hybridrouter-0.11.0-cc31d203.zip to presigned URL
Starting upload of 3899825 bytes...
Upload completed successfully
Done.