The Swift Package Index logo.Swift Package Index

Build Information

Failed to build swift-context-management, reference 0.0.3 (d87f52), with Swift 6.4 for watchOS using Xcode 27.0 on 24 Sep 2026 01:16:09 UTC.

Build Command

env DEVELOPER_DIR=/Applications/Xcode-27.0.0-Release.Candidate.app xcrun xcodebuild -IDEClonedSourcePackagesDirPathOverride=$PWD/.dependencies -skipMacroValidation -skipPackagePluginValidation -derivedDataPath $PWD/.derivedData build -scheme swift-context-management -destination generic/platform=watchOS

Build Log

 7 |     private let extractFunction: @Sendable ([Transcript.Entry]) async throws -> StructuredState
 8 |
   :
10 |     ///
11 |     /// - Parameter extractFunction: An async function that takes conversation entries and returns a `StructuredState`.
12 |     public init(
   |            `- note: add '@available' attribute to enclosing initializer
13 |         extractFunction: @escaping @Sendable ([Transcript.Entry]) async throws -> StructuredState
   |                                                `- error: 'Transcript' is only available in watchOS 27.0 or newer
14 |     ) {
15 |         self.extractFunction = extractFunction
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/CustomStateExtractor.swift:18:45: error: 'Transcript' is only available in watchOS 27.0 or newer
 4 | /// A state extractor implementation that uses a custom extraction function.
 5 | /// This allows users to provide their own state extraction logic.
 6 | public struct CustomStateExtractor: StateExtractor {
   |               `- note: add '@available' attribute to enclosing struct
 7 |     private let extractFunction: @Sendable ([Transcript.Entry]) async throws -> StructuredState
 8 |
   :
16 |     }
17 |
18 |     public func extractState(from entries: [Transcript.Entry]) async throws -> StructuredState {
   |                 |                           `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                 `- note: add '@available' attribute to enclosing instance method
19 |         return try await extractFunction(entries)
20 |     }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/FoundationModelsStateExtractor.swift:15:45: error: 'Transcript' is only available in watchOS 27.0 or newer
  2 |
  3 | /// A state extractor that uses FoundationModels to extract structured state.
  4 | public struct FoundationModelsStateExtractor: StateExtractor {
    |               `- note: add '@available' attribute to enclosing struct
  5 |     public init() {}
  6 |
    :
 13 |     /// - Returns: A structured state containing extracted information.
 14 |     /// - Throws: An error if state extraction fails.
 15 |     public func extractState(from entries: [Transcript.Entry]) async throws -> StructuredState {
    |                 |                           `- error: 'Transcript' is only available in watchOS 27.0 or newer
    |                 `- note: add '@available' attribute to enclosing instance method
 16 |         guard !entries.isEmpty else {
 17 |             return StructuredState(information: [])
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/FoundationModelsStateExtractor.swift:29:42: error: 'Transcript' is only available in watchOS 27.0 or newer
 22 | }
 23 |
 24 | private extension FoundationModelsStateExtractor {
    |         `- note: add '@available' attribute to enclosing extension
 25 |     /// Attempts to extract state, automatically splitting if context window is exceeded.
 26 |     ///
 27 |     /// - Parameter entries: The entries to extract state from.
 28 |     /// - Returns: A structured state.
 29 |     func extractStateWithRetry(entries: [Transcript.Entry]) async throws -> StructuredState {
    |          |                               `- error: 'Transcript' is only available in watchOS 27.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
 30 |         do {
 31 |             return try await extractStateDirectly(entries: entries)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/FoundationModelsStateExtractor.swift:41:41: error: 'Transcript' is only available in watchOS 27.0 or newer
 22 | }
 23 |
 24 | private extension FoundationModelsStateExtractor {
    |         `- note: add '@available' attribute to enclosing extension
 25 |     /// Attempts to extract state, automatically splitting if context window is exceeded.
 26 |     ///
    :
 39 |
 40 |     /// Extracts state directly in a single LLM call.
 41 |     func extractStateDirectly(entries: [Transcript.Entry]) async throws -> StructuredState {
    |          |                              `- error: 'Transcript' is only available in watchOS 27.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
 42 |         let conversationText = entries.enumerated().map { index, entry in
 43 |             if let text = TranscriptHelpers.extractText(from: entry) {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/FoundationModelsStateExtractor.swift:73:40: error: 'Transcript' is only available in watchOS 27.0 or newer
 22 | }
 23 |
 24 | private extension FoundationModelsStateExtractor {
    |         `- note: add '@available' attribute to enclosing extension
 25 |     /// Attempts to extract state, automatically splitting if context window is exceeded.
 26 |     ///
    :
 71 |
 72 |     /// Splits entries into parts, extracts state from each part, then combines the results.
 73 |     func extractStateInParts(entries: [Transcript.Entry]) async throws -> StructuredState {
    |          |                             `- error: 'Transcript' is only available in watchOS 27.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
 74 |         guard entries.count > 1 else {
 75 |             return try await extractStateFromSingleEntry(entries[0])
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/FoundationModelsStateExtractor.swift:89:47: error: 'Transcript' is only available in watchOS 27.0 or newer
 22 | }
 23 |
 24 | private extension FoundationModelsStateExtractor {
    |         `- note: add '@available' attribute to enclosing extension
 25 |     /// Attempts to extract state, automatically splitting if context window is exceeded.
 26 |     ///
    :
 87 |
 88 |     /// Handles a single entry that is too large by extracting from its text.
 89 |     func extractStateFromSingleEntry(_ entry: Transcript.Entry) async throws -> StructuredState {
    |          |                                    `- error: 'Transcript' is only available in watchOS 27.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
 90 |         guard let text = TranscriptHelpers.extractText(from: entry) else {
 91 |             return StructuredState(information: [])
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:4:2: error: 'Generable(description:)' is only available in watchOS 27.0 or newer
 2 |
 3 | /// A key-value fact extracted from conversation history.
 4 | @Generable
   |  `- error: 'Generable(description:)' is only available in watchOS 27.0 or newer
 5 | public struct ExtractedFact: Sendable {
 6 |     @Guide(description: "The key or name of this piece of information (e.g., 'name', 'date', 'constraint_quiet_table')")
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:6:6: error: 'Guide(description:)' is only available in watchOS 27.0 or newer
 3 | /// A key-value fact extracted from conversation history.
 4 | @Generable
 5 | public struct ExtractedFact: Sendable {
   |               `- note: add '@available' attribute to enclosing struct
 6 |     @Guide(description: "The key or name of this piece of information (e.g., 'name', 'date', 'constraint_quiet_table')")
   |      `- error: 'Guide(description:)' is only available in watchOS 27.0 or newer
 7 |     public let key: String
 8 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:9:6: error: 'Guide(description:)' is only available in watchOS 27.0 or newer
 3 | /// A key-value fact extracted from conversation history.
 4 | @Generable
 5 | public struct ExtractedFact: Sendable {
   |               `- note: add '@available' attribute to enclosing struct
 6 |     @Guide(description: "The key or name of this piece of information (e.g., 'name', 'date', 'constraint_quiet_table')")
 7 |     public let key: String
 8 |
 9 |     @Guide(description: "The value of this piece of information")
   |      `- error: 'Guide(description:)' is only available in watchOS 27.0 or newer
10 |     public let value: String
11 | }
macro expansion @Generable:1:66: error: 'GenerationSchema' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:11:1: note: expanded code originates here
 2 |
 3 | /// A key-value fact extracted from conversation history.
 4 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
   | `- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
 5 | public struct ExtractedFact: Sendable {
   |               `- note: add '@available' attribute to enclosing struct
 6 |     @Guide(description: "The key or name of this piece of information (e.g., 'name', 'date', 'constraint_quiet_table')")
 7 |     public let key: String
   :
 9 |     @Guide(description: "The value of this piece of information")
10 |     public let value: String
11 | }
   +--- macro expansion @Generable -------------------------------------
   | 1 | nonisolated public static var generationSchema: FoundationModels.GenerationSchema {
   |   |                               |                                  `- error: 'GenerationSchema' is only available in watchOS 27.0 or newer
   |   |                               `- note: add '@available' attribute to enclosing static property
   | 2 |     FoundationModels.GenerationSchema(
   | 3 |         type: Self.self,
   +--------------------------------------------------------------------
12 |
13 | @Generable
macro expansion @Generable:11:42: error: 'GeneratedContent' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:11:1: note: expanded code originates here
 2 |
 3 | /// A key-value fact extracted from conversation history.
 4 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
   | `- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
 5 | public struct ExtractedFact: Sendable {
   |               `- note: add '@available' attribute to enclosing struct
 6 |     @Guide(description: "The key or name of this piece of information (e.g., 'name', 'date', 'constraint_quiet_table')")
 7 |     public let key: String
   :
 9 |     @Guide(description: "The value of this piece of information")
10 |     public let value: String
11 | }
   +--- macro expansion @Generable -------------------------------------
   | 9 | }
   |10 |
   |11 | nonisolated public var generatedContent: GeneratedContent {
   |   |                        |                 `- error: 'GeneratedContent' is only available in watchOS 27.0 or newer
   |   |                        `- note: add '@available' attribute to enclosing property
   |12 |     let explicitNil = false
   |13 |     var properties = [(name: String, value: any ConvertibleToGeneratedContent)]()
   +--------------------------------------------------------------------
12 |
13 | @Generable
macro expansion @Generable:33:20: error: 'GenerationID' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:11:1: note: expanded code originates here
 2 |
 3 | /// A key-value fact extracted from conversation history.
 4 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
   | `- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
 5 | public struct ExtractedFact: Sendable {
 6 |     @Guide(description: "The key or name of this piece of information (e.g., 'name', 'date', 'constraint_quiet_table')")
   :
 9 |     @Guide(description: "The value of this piece of information")
10 |     public let value: String
11 | }
   +--- macro expansion @Generable -------------------------------------
   |30 | }
   |31 |
   |32 | nonisolated public struct PartiallyGenerated: Identifiable, nonisolated FoundationModels.ConvertibleFromGeneratedContent {
   |   |                           `- note: add '@available' attribute to enclosing struct
   |33 |     public var id: GenerationID
   |   |                    `- error: 'GenerationID' is only available in watchOS 27.0 or newer
   |34 |     public var key: String.PartiallyGenerated?
   |35 |     public var value: String.PartiallyGenerated?
   +--------------------------------------------------------------------
12 |
13 | @Generable
macro expansion @Generable:34:28: error: 'PartiallyGenerated' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:11:1: note: expanded code originates here
 2 |
 3 | /// A key-value fact extracted from conversation history.
 4 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
   | `- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
 5 | public struct ExtractedFact: Sendable {
 6 |     @Guide(description: "The key or name of this piece of information (e.g., 'name', 'date', 'constraint_quiet_table')")
   :
 9 |     @Guide(description: "The value of this piece of information")
10 |     public let value: String
11 | }
   +--- macro expansion @Generable -------------------------------------
   |30 | }
   |31 |
   |32 | nonisolated public struct PartiallyGenerated: Identifiable, nonisolated FoundationModels.ConvertibleFromGeneratedContent {
   |   |                           `- note: add '@available' attribute to enclosing struct
   |33 |     public var id: GenerationID
   |34 |     public var key: String.PartiallyGenerated?
   |   |                            `- error: 'PartiallyGenerated' is only available in watchOS 27.0 or newer
   |35 |     public var value: String.PartiallyGenerated?
   |36 |     nonisolated public init(_ content: FoundationModels.GeneratedContent) throws {
   +--------------------------------------------------------------------
12 |
13 | @Generable
macro expansion @Generable:35:30: error: 'PartiallyGenerated' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:11:1: note: expanded code originates here
 2 |
 3 | /// A key-value fact extracted from conversation history.
 4 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
   | `- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
 5 | public struct ExtractedFact: Sendable {
 6 |     @Guide(description: "The key or name of this piece of information (e.g., 'name', 'date', 'constraint_quiet_table')")
   :
 9 |     @Guide(description: "The value of this piece of information")
10 |     public let value: String
11 | }
   +--- macro expansion @Generable -------------------------------------
   |30 | }
   |31 |
   |32 | nonisolated public struct PartiallyGenerated: Identifiable, nonisolated FoundationModels.ConvertibleFromGeneratedContent {
   |   |                           `- note: add '@available' attribute to enclosing struct
   |33 |     public var id: GenerationID
   |34 |     public var key: String.PartiallyGenerated?
   |35 |     public var value: String.PartiallyGenerated?
   |   |                              `- error: 'PartiallyGenerated' is only available in watchOS 27.0 or newer
   |36 |     nonisolated public init(_ content: FoundationModels.GeneratedContent) throws {
   |37 |         self.id = content.id ?? GenerationID()
   +--------------------------------------------------------------------
12 |
13 | @Generable
macro expansion @Generable:36:57: error: 'GeneratedContent' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:11:1: note: expanded code originates here
 2 |
 3 | /// A key-value fact extracted from conversation history.
 4 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
   | |- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
   | `- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
 5 | public struct ExtractedFact: Sendable {
 6 |     @Guide(description: "The key or name of this piece of information (e.g., 'name', 'date', 'constraint_quiet_table')")
   :
 9 |     @Guide(description: "The value of this piece of information")
10 |     public let value: String
11 | }
   +--- macro expansion @Generable -------------------------------------
   |30 | }
   |31 |
   |32 | nonisolated public struct PartiallyGenerated: Identifiable, nonisolated FoundationModels.ConvertibleFromGeneratedContent {
   |   |                           `- note: add '@available' attribute to enclosing struct
   |33 |     public var id: GenerationID
   |34 |     public var key: String.PartiallyGenerated?
   |35 |     public var value: String.PartiallyGenerated?
   |36 |     nonisolated public init(_ content: FoundationModels.GeneratedContent) throws {
   |   |                        |                                `- error: 'GeneratedContent' is only available in watchOS 27.0 or newer
   |   |                        `- note: add '@available' attribute to enclosing initializer
   |37 |         self.id = content.id ?? GenerationID()
   |38 |         self.key = try content.value(forProperty: "key")
   +--------------------------------------------------------------------
12 |
13 | @Generable
macro expansion @Generable:32:27: warning: protocol 'Identifiable' requires 'GenerationID' to be available in watchOS 26.0 and newer; this will be an error in a future Swift language mode
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:11:1: note: expanded code originates here
 2 |
 3 | /// A key-value fact extracted from conversation history.
 4 | @Generable
   | `- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
 5 | public struct ExtractedFact: Sendable {
 6 |     @Guide(description: "The key or name of this piece of information (e.g., 'name', 'date', 'constraint_quiet_table')")
   :
 9 |     @Guide(description: "The value of this piece of information")
10 |     public let value: String
11 | }
   +--- macro expansion @Generable -------------------------------------
   |30 | }
   |31 |
   |32 | nonisolated public struct PartiallyGenerated: Identifiable, nonisolated FoundationModels.ConvertibleFromGeneratedContent {
   |   |                           `- warning: protocol 'Identifiable' requires 'GenerationID' to be available in watchOS 26.0 and newer; this will be an error in a future Swift language mode
   |33 |     public var id: GenerationID
   |34 |     public var key: String.PartiallyGenerated?
   +--------------------------------------------------------------------
12 |
13 | @Generable
FoundationModels.GenerationID:3:15: note: 'GenerationID' declared here
1 | @available(iOS 26.0, macOS 26.0, watchOS 27.0, *)
2 | @available(tvOS, unavailable)
3 | public struct GenerationID : Sendable, Hashable {
  |               `- note: 'GenerationID' declared here
4 |     public static func == (a: GenerationID, b: GenerationID) -> Bool
5 |     public func hash(into hasher: inout Hasher)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:4:2: error: 'Generable(description:)' is only available in watchOS 27.0 or newer
 2 |
 3 | /// A key-value fact extracted from conversation history.
 4 | @Generable
   |  `- error: 'Generable(description:)' is only available in watchOS 27.0 or newer
 5 | public struct ExtractedFact: Sendable {
   |               `- note: add '@available' attribute to enclosing struct
 6 |     @Guide(description: "The key or name of this piece of information (e.g., 'name', 'date', 'constraint_quiet_table')")
 7 |     public let key: String
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:15:6: error: 'Guide(description:)' is only available in watchOS 27.0 or newer
12 |
13 | @Generable
14 | public struct StructuredState: Sendable {
   |               `- note: add '@available' attribute to enclosing struct
15 |     @Guide(description: "Extract all important information as key-value pairs. Use descriptive keys that indicate the type of information.")
   |      `- error: 'Guide(description:)' is only available in watchOS 27.0 or newer
16 |     public let information: [ExtractedFact]
17 | }
macro expansion @Generable:1:66: error: 'GenerationSchema' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:17:1: note: expanded code originates here
11 | }
12 |
13 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'StructuredState' here
   | `- note: in expansion of macro 'Generable' on struct 'StructuredState' here
14 | public struct StructuredState: Sendable {
   |               `- note: add '@available' attribute to enclosing struct
15 |     @Guide(description: "Extract all important information as key-value pairs. Use descriptive keys that indicate the type of information.")
16 |     public let information: [ExtractedFact]
17 | }
   +--- macro expansion @Generable -------------------------------------
   | 1 | nonisolated public static var generationSchema: FoundationModels.GenerationSchema {
   |   |                               |                                  `- error: 'GenerationSchema' is only available in watchOS 27.0 or newer
   |   |                               `- note: add '@available' attribute to enclosing static property
   | 2 |     FoundationModels.GenerationSchema(
   | 3 |         type: Self.self,
   +--------------------------------------------------------------------
18 |
macro expansion @Generable:10:42: error: 'GeneratedContent' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:17:1: note: expanded code originates here
11 | }
12 |
13 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'StructuredState' here
   | `- note: in expansion of macro 'Generable' on struct 'StructuredState' here
14 | public struct StructuredState: Sendable {
   |               `- note: add '@available' attribute to enclosing struct
15 |     @Guide(description: "Extract all important information as key-value pairs. Use descriptive keys that indicate the type of information.")
16 |     public let information: [ExtractedFact]
17 | }
   +--- macro expansion @Generable -------------------------------------
   | 8 | }
   | 9 |
   |10 | nonisolated public var generatedContent: GeneratedContent {
   |   |                        |                 `- error: 'GeneratedContent' is only available in watchOS 27.0 or newer
   |   |                        `- note: add '@available' attribute to enclosing property
   |11 |     let explicitNil = false
   |12 |     var properties = [(name: String, value: any ConvertibleToGeneratedContent)]()
   +--------------------------------------------------------------------
18 |
macro expansion @Generable:31:20: error: 'GenerationID' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:17:1: note: expanded code originates here
11 | }
12 |
13 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'StructuredState' here
   | `- note: in expansion of macro 'Generable' on struct 'StructuredState' here
14 | public struct StructuredState: Sendable {
15 |     @Guide(description: "Extract all important information as key-value pairs. Use descriptive keys that indicate the type of information.")
16 |     public let information: [ExtractedFact]
17 | }
   +--- macro expansion @Generable -------------------------------------
   |28 | }
   |29 |
   |30 | nonisolated public struct PartiallyGenerated: Identifiable, nonisolated FoundationModels.ConvertibleFromGeneratedContent {
   |   |                           `- note: add '@available' attribute to enclosing struct
   |31 |     public var id: GenerationID
   |   |                    `- error: 'GenerationID' is only available in watchOS 27.0 or newer
   |32 |     public var information: [ExtractedFact].PartiallyGenerated?
   |33 |     nonisolated public init(_ content: FoundationModels.GeneratedContent) throws {
   +--------------------------------------------------------------------
18 |
macro expansion @Generable:32:45: error: 'PartiallyGenerated' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:17:1: note: expanded code originates here
11 | }
12 |
13 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'StructuredState' here
   | `- note: in expansion of macro 'Generable' on struct 'StructuredState' here
14 | public struct StructuredState: Sendable {
15 |     @Guide(description: "Extract all important information as key-value pairs. Use descriptive keys that indicate the type of information.")
16 |     public let information: [ExtractedFact]
17 | }
   +--- macro expansion @Generable -------------------------------------
   |28 | }
   |29 |
   |30 | nonisolated public struct PartiallyGenerated: Identifiable, nonisolated FoundationModels.ConvertibleFromGeneratedContent {
   |   |                           `- note: add '@available' attribute to enclosing struct
   |31 |     public var id: GenerationID
   |32 |     public var information: [ExtractedFact].PartiallyGenerated?
   |   |                                             `- error: 'PartiallyGenerated' is only available in watchOS 27.0 or newer
   |33 |     nonisolated public init(_ content: FoundationModels.GeneratedContent) throws {
   |34 |         self.id = content.id ?? GenerationID()
   +--------------------------------------------------------------------
18 |
macro expansion @Generable:33:57: error: 'GeneratedContent' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:17:1: note: expanded code originates here
11 | }
12 |
13 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'StructuredState' here
   | |- note: in expansion of macro 'Generable' on struct 'StructuredState' here
   | `- note: in expansion of macro 'Generable' on struct 'StructuredState' here
14 | public struct StructuredState: Sendable {
15 |     @Guide(description: "Extract all important information as key-value pairs. Use descriptive keys that indicate the type of information.")
16 |     public let information: [ExtractedFact]
17 | }
   +--- macro expansion @Generable -------------------------------------
   |28 | }
   |29 |
   |30 | nonisolated public struct PartiallyGenerated: Identifiable, nonisolated FoundationModels.ConvertibleFromGeneratedContent {
   |   |                           `- note: add '@available' attribute to enclosing struct
   |31 |     public var id: GenerationID
   |32 |     public var information: [ExtractedFact].PartiallyGenerated?
   |33 |     nonisolated public init(_ content: FoundationModels.GeneratedContent) throws {
   |   |                        |                                `- error: 'GeneratedContent' is only available in watchOS 27.0 or newer
   |   |                        `- note: add '@available' attribute to enclosing initializer
   |34 |         self.id = content.id ?? GenerationID()
   |35 |         self.information = try content.value(forProperty: "information")
   +--------------------------------------------------------------------
18 |
macro expansion @Generable:30:27: warning: protocol 'Identifiable' requires 'GenerationID' to be available in watchOS 26.0 and newer; this will be an error in a future Swift language mode
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:17:1: note: expanded code originates here
11 | }
12 |
13 | @Generable
   | `- note: in expansion of macro 'Generable' on struct 'StructuredState' here
14 | public struct StructuredState: Sendable {
15 |     @Guide(description: "Extract all important information as key-value pairs. Use descriptive keys that indicate the type of information.")
16 |     public let information: [ExtractedFact]
17 | }
   +--- macro expansion @Generable -------------------------------------
   |28 | }
   |29 |
   |30 | nonisolated public struct PartiallyGenerated: Identifiable, nonisolated FoundationModels.ConvertibleFromGeneratedContent {
   |   |                           `- warning: protocol 'Identifiable' requires 'GenerationID' to be available in watchOS 26.0 and newer; this will be an error in a future Swift language mode
   |31 |     public var id: GenerationID
   |32 |     public var information: [ExtractedFact].PartiallyGenerated?
   +--------------------------------------------------------------------
18 |
FoundationModels.GenerationID:3:15: note: 'GenerationID' declared here
1 | @available(iOS 26.0, macOS 26.0, watchOS 27.0, *)
2 | @available(tvOS, unavailable)
3 | public struct GenerationID : Sendable, Hashable {
  |               `- note: 'GenerationID' declared here
4 |     public static func == (a: GenerationID, b: GenerationID) -> Bool
5 |     public func hash(into hasher: inout Hasher)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:13:2: error: 'Generable(description:)' is only available in watchOS 27.0 or newer
11 | }
12 |
13 | @Generable
   |  `- error: 'Generable(description:)' is only available in watchOS 27.0 or newer
14 | public struct StructuredState: Sendable {
   |               `- note: add '@available' attribute to enclosing struct
15 |     @Guide(description: "Extract all important information as key-value pairs. Use descriptive keys that indicate the type of information.")
16 |     public let information: [ExtractedFact]
macro expansion @Generable:2:57: error: 'GeneratedContent' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:17:2: note: expanded code originates here
11 | }
12 |
13 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'StructuredState' here
   | |- note: in expansion of macro 'Generable' on struct 'StructuredState' here
   | `- note: in expansion of macro 'Generable' on struct 'StructuredState' here
14 | public struct StructuredState: Sendable {
15 |     @Guide(description: "Extract all important information as key-value pairs. Use descriptive keys that indicate the type of information.")
16 |     public let information: [ExtractedFact]
17 | }
   +--- macro expansion @Generable -------------------------------------
   |1 | extension StructuredState: nonisolated FoundationModels.Generable {
   |  | `- note: add '@available' attribute to enclosing extension
   |2 |     nonisolated public init(_ content: FoundationModels.GeneratedContent) throws {
   |  |                        |                                `- error: 'GeneratedContent' is only available in watchOS 27.0 or newer
   |  |                        `- note: add '@available' attribute to enclosing initializer
   |3 |         self.information = try content.value(forProperty: "information")
   |4 |     }
   +--------------------------------------------------------------------
18 |
macro expansion @Generable:2:57: error: 'GeneratedContent' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:11:2: note: expanded code originates here
 2 |
 3 | /// A key-value fact extracted from conversation history.
 4 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
   | |- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
   | `- note: in expansion of macro 'Generable' on struct 'ExtractedFact' here
 5 | public struct ExtractedFact: Sendable {
 6 |     @Guide(description: "The key or name of this piece of information (e.g., 'name', 'date', 'constraint_quiet_table')")
   :
 9 |     @Guide(description: "The value of this piece of information")
10 |     public let value: String
11 | }
   +--- macro expansion @Generable -------------------------------------
   |1 | extension ExtractedFact: nonisolated FoundationModels.Generable {
   |  | `- note: add '@available' attribute to enclosing extension
   |2 |     nonisolated public init(_ content: FoundationModels.GeneratedContent) throws {
   |  |                        |                                `- error: 'GeneratedContent' is only available in watchOS 27.0 or newer
   |  |                        `- note: add '@available' attribute to enclosing initializer
   |3 |         self.key = try content.value(forProperty: "key")
   |4 |         self.value = try content.value(forProperty: "value")
   +--------------------------------------------------------------------
12 |
13 | @Generable
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/StateExtractor.swift:9:38: error: 'Transcript' is only available in watchOS 27.0 or newer
 2 |
 3 | /// Protocol for extracting structured state from conversation history.
 4 | public protocol StateExtractor: Sendable {
   |                 `- note: add '@available' attribute to enclosing protocol
 5 |     /// Extracts a structured state from the given conversation entries.
 6 |     ///
 7 |     /// - Parameter entries: The conversation entries to analyze.
 8 |     /// - Returns: A `StructuredState` containing important facts, constraints, and decisions.
 9 |     func extractState(from entries: [Transcript.Entry]) async throws -> StructuredState
   |          |                           `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
10 | }
11 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/CustomLLMSummarizer.swift:7:48: error: 'Transcript' is only available in watchOS 27.0 or newer
 4 | /// A summarizer implementation that uses a custom LLM function.
 5 | /// This allows users to provide their own summarization logic.
 6 | public struct CustomLLMSummarizer: Summarizer {
   |               `- note: add '@available' attribute to enclosing struct
 7 |     private let summarizeFunction: @Sendable ([Transcript.Entry], String?, Locale) async throws -> String
   |                                                `- error: 'Transcript' is only available in watchOS 27.0 or newer
 8 |
 9 |     /// Creates a custom LLM summarizer with a user-provided summarization function.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/CustomLLMSummarizer.swift:13:50: error: 'Transcript' is only available in watchOS 27.0 or newer
 4 | /// A summarizer implementation that uses a custom LLM function.
 5 | /// This allows users to provide their own summarization logic.
 6 | public struct CustomLLMSummarizer: Summarizer {
   |               `- note: add '@available' attribute to enclosing struct
 7 |     private let summarizeFunction: @Sendable ([Transcript.Entry], String?, Locale) async throws -> String
 8 |
   :
10 |     ///
11 |     /// - Parameter summarizeFunction: An async function that takes conversation entries, optional instructions, and locale, and returns a summary string.
12 |     public init(
   |            `- note: add '@available' attribute to enclosing initializer
13 |         summarizeFunction: @escaping @Sendable ([Transcript.Entry], String?, Locale) async throws -> String
   |                                                  `- error: 'Transcript' is only available in watchOS 27.0 or newer
14 |     ) {
15 |         self.summarizeFunction = summarizeFunction
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/CustomLLMSummarizer.swift:19:19: error: 'Transcript' is only available in watchOS 27.0 or newer
 4 | /// A summarizer implementation that uses a custom LLM function.
 5 | /// This allows users to provide their own summarization logic.
 6 | public struct CustomLLMSummarizer: Summarizer {
   |               `- note: add '@available' attribute to enclosing struct
 7 |     private let summarizeFunction: @Sendable ([Transcript.Entry], String?, Locale) async throws -> String
 8 |
   :
16 |     }
17 |
18 |     public func summarize(
   |                 `- note: add '@available' attribute to enclosing instance method
19 |         entries: [Transcript.Entry],
   |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
20 |         instructions: String?,
21 |         locale: Locale
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:31:19: error: 'Transcript' is only available in watchOS 27.0 or newer
  9 |
 10 | /// A default summarizer implementation using FoundationModels.
 11 | public struct FoundationModelsSummarizer: Summarizer {
    |               `- note: add '@available' attribute to enclosing struct
 12 |     private static let defaultSummarizationInstructions = """
 13 |     Summarize the following conversation briefly, preserving only essential facts and decisions. Remove examples, repetition, and implementation details. Provide only the summary content directly without any introductory phrases, explanations, or meta-commentary. Start immediately with the summary.
    :
 28 |     /// - Returns: A summary of the conversation.
 29 |     /// - Throws: An error if the summarization fails.
 30 |     public func summarize(
    |                 `- note: add '@available' attribute to enclosing instance method
 31 |         entries: [Transcript.Entry],
    |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
 32 |         instructions: String?,
 33 |         locale: Locale = .enUS
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:56:19: error: 'Transcript' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 53 |     ///   - instructions: The summarization instructions.
 54 |     /// - Returns: A summary string.
 55 |     func summarizeWithRetry(
    |          `- note: add '@available' attribute to enclosing instance method
 56 |         entries: [Transcript.Entry],
    |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
 57 |         instructions: String
 58 |     ) async throws -> String {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:74:19: error: 'Transcript' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 71 |
 72 |     /// Summarizes entries directly in a single LLM call.
 73 |     func summarizeDirectly(
    |          `- note: add '@available' attribute to enclosing instance method
 74 |         entries: [Transcript.Entry],
    |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
 75 |         instructions: String
 76 |     ) async throws -> String {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:97:19: error: 'Transcript' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 94 |
 95 |     /// Splits entries into parts, summarizes each part, then combines the summaries.
 96 |     func summarizeInParts(
    |          `- note: add '@available' attribute to enclosing instance method
 97 |         entries: [Transcript.Entry],
    |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
 98 |         instructions: String
 99 |     ) async throws -> String {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:120:18: error: 'Transcript' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
117 |
118 |     /// Handles the edge case of a single entry that's too large for the context window.
119 |     func summarizeLargeEntry(
    |          `- note: add '@available' attribute to enclosing instance method
120 |         _ entry: Transcript.Entry,
    |                  `- error: 'Transcript' is only available in watchOS 27.0 or newer
121 |         instructions: String
122 |     ) async throws -> String {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/Summarizer.swift:16:19: error: 'Transcript' is only available in watchOS 27.0 or newer
 4 | /// A protocol for summarizing conversation history.
 5 | /// Implementations can use different models or strategies for summarization.
 6 | public protocol Summarizer: Sendable {
   |                 `- note: add '@available' attribute to enclosing protocol
 7 |     /// Summarizes a collection of conversation entries.
 8 |     ///
   :
13 |     /// - Returns: A summary string of the conversation entries.
14 |     /// - Throws: An error if summarization fails.
15 |     func summarize(
   |          `- note: add '@available' attribute to enclosing instance method
16 |         entries: [Transcript.Entry],
   |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
17 |         instructions: String?,
18 |         locale: Locale
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/FoundationModelsTopicDetector.swift:6:26: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 3 | /// A default topic detector implementation using FoundationModels.
 4 | /// Uses the LLM to identify topics and group conversation entries accordingly.
 5 | public struct FoundationModelsTopicDetector: TopicDetector {
   |               `- note: add '@available' attribute to enclosing struct
 6 |     private let session: LanguageModelSession
   |                          `- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 7 |
 8 |     /// Creates a FoundationModels topic detector.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/FoundationModelsTopicDetector.swift:11:26: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 3 | /// A default topic detector implementation using FoundationModels.
 4 | /// Uses the LLM to identify topics and group conversation entries accordingly.
 5 | public struct FoundationModelsTopicDetector: TopicDetector {
   |               `- note: add '@available' attribute to enclosing struct
 6 |     private let session: LanguageModelSession
 7 |
   :
 9 |     ///
10 |     /// - Parameter session: An optional LanguageModelSession. If `nil`, creates a new session.
11 |     public init(session: LanguageModelSession? = nil) {
   |            |             `- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
   |            `- note: add '@available' attribute to enclosing initializer
12 |         self.session = session ?? LanguageModelSession()
13 |     }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/FoundationModelsTopicDetector.swift:15:43: error: 'Transcript' is only available in watchOS 27.0 or newer
 3 | /// A default topic detector implementation using FoundationModels.
 4 | /// Uses the LLM to identify topics and group conversation entries accordingly.
 5 | public struct FoundationModelsTopicDetector: TopicDetector {
   |               `- note: add '@available' attribute to enclosing struct
 6 |     private let session: LanguageModelSession
 7 |
   :
13 |     }
14 |
15 |     public func detectTopics(in entries: [Transcript.Entry]) async throws -> [[Transcript.Entry]] {
   |                 |                         `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                 `- note: add '@available' attribute to enclosing instance method
16 |         let conversationText = entries.enumerated().map { index, entry in
17 |             if let text = TranscriptHelpers.extractText(from: entry) {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/FoundationModelsTopicDetector.swift:15:80: error: 'Transcript' is only available in watchOS 27.0 or newer
 3 | /// A default topic detector implementation using FoundationModels.
 4 | /// Uses the LLM to identify topics and group conversation entries accordingly.
 5 | public struct FoundationModelsTopicDetector: TopicDetector {
   |               `- note: add '@available' attribute to enclosing struct
 6 |     private let session: LanguageModelSession
 7 |
   :
13 |     }
14 |
15 |     public func detectTopics(in entries: [Transcript.Entry]) async throws -> [[Transcript.Entry]] {
   |                 |                                                              `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                 `- note: add '@available' attribute to enclosing instance method
16 |         let conversationText = entries.enumerated().map { index, entry in
17 |             if let text = TranscriptHelpers.extractText(from: entry) {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/Models/TopicDetectionResult.swift:4:2: error: 'Generable(description:)' is only available in watchOS 27.0 or newer
 2 |
 3 | /// Result of topic detection containing a topic and the indices of related entries.
 4 | @Generable
   |  `- error: 'Generable(description:)' is only available in watchOS 27.0 or newer
 5 | public struct TopicDetectionResult {
 6 |     @Guide(description: "The topic of the entries")
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/FoundationModelsTopicDetector.swift:63:19: error: 'Transcript' is only available in watchOS 27.0 or newer
51 | }
52 |
53 | private extension FoundationModelsTopicDetector {
   |         `- note: add '@available' attribute to enclosing extension
54 |     /// Groups entries based on topic detection results.
55 |     ///
   :
59 |     /// - Returns: An array of entry groups, where each group represents a topic.
60 |     /// - Throws: An error if grouping fails (e.g., invalid indices).
61 |     func groupEntriesByTopics(
   |          `- note: add '@available' attribute to enclosing instance method
62 |         results: [TopicDetectionResult],
63 |         entries: [Transcript.Entry]
   |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
64 |     ) throws -> [[Transcript.Entry]] {
65 |         var topicGroups: [[Transcript.Entry]] = []
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/FoundationModelsTopicDetector.swift:64:19: error: 'Transcript' is only available in watchOS 27.0 or newer
51 | }
52 |
53 | private extension FoundationModelsTopicDetector {
   |         `- note: add '@available' attribute to enclosing extension
54 |     /// Groups entries based on topic detection results.
55 |     ///
   :
59 |     /// - Returns: An array of entry groups, where each group represents a topic.
60 |     /// - Throws: An error if grouping fails (e.g., invalid indices).
61 |     func groupEntriesByTopics(
   |          `- note: add '@available' attribute to enclosing instance method
62 |         results: [TopicDetectionResult],
63 |         entries: [Transcript.Entry]
64 |     ) throws -> [[Transcript.Entry]] {
   |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
65 |         var topicGroups: [[Transcript.Entry]] = []
66 |         var usedIndices = Set<Int>()
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/Models/TopicDetectionResult.swift:6:6: error: 'Guide(description:)' is only available in watchOS 27.0 or newer
 3 | /// Result of topic detection containing a topic and the indices of related entries.
 4 | @Generable
 5 | public struct TopicDetectionResult {
   |               `- note: add '@available' attribute to enclosing struct
 6 |     @Guide(description: "The topic of the entries")
   |      `- error: 'Guide(description:)' is only available in watchOS 27.0 or newer
 7 |     public let topic: String
 8 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/Models/TopicDetectionResult.swift:9:6: error: 'Guide(description:)' is only available in watchOS 27.0 or newer
 3 | /// Result of topic detection containing a topic and the indices of related entries.
 4 | @Generable
 5 | public struct TopicDetectionResult {
   |               `- note: add '@available' attribute to enclosing struct
 6 |     @Guide(description: "The topic of the entries")
 7 |     public let topic: String
 8 |
 9 |     @Guide(description: "The indices of the entries that are related to the topic")
   |      `- error: 'Guide(description:)' is only available in watchOS 27.0 or newer
10 |     public let entryIndices: [Int]
11 | }
macro expansion @Generable:1:66: error: 'GenerationSchema' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/Models/TopicDetectionResult.swift:11:1: note: expanded code originates here
 2 |
 3 | /// Result of topic detection containing a topic and the indices of related entries.
 4 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
   | `- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
 5 | public struct TopicDetectionResult {
   |               `- note: add '@available' attribute to enclosing struct
 6 |     @Guide(description: "The topic of the entries")
 7 |     public let topic: String
   :
 9 |     @Guide(description: "The indices of the entries that are related to the topic")
10 |     public let entryIndices: [Int]
11 | }
   +--- macro expansion @Generable -------------------------------------
   | 1 | nonisolated public static var generationSchema: FoundationModels.GenerationSchema {
   |   |                               |                                  `- error: 'GenerationSchema' is only available in watchOS 27.0 or newer
   |   |                               `- note: add '@available' attribute to enclosing static property
   | 2 |     FoundationModels.GenerationSchema(
   | 3 |         type: Self.self,
   +--------------------------------------------------------------------
12 |
macro expansion @Generable:11:42: error: 'GeneratedContent' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/Models/TopicDetectionResult.swift:11:1: note: expanded code originates here
 2 |
 3 | /// Result of topic detection containing a topic and the indices of related entries.
 4 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
   | `- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
 5 | public struct TopicDetectionResult {
   |               `- note: add '@available' attribute to enclosing struct
 6 |     @Guide(description: "The topic of the entries")
 7 |     public let topic: String
   :
 9 |     @Guide(description: "The indices of the entries that are related to the topic")
10 |     public let entryIndices: [Int]
11 | }
   +--- macro expansion @Generable -------------------------------------
   | 9 | }
   |10 |
   |11 | nonisolated public var generatedContent: GeneratedContent {
   |   |                        |                 `- error: 'GeneratedContent' is only available in watchOS 27.0 or newer
   |   |                        `- note: add '@available' attribute to enclosing property
   |12 |     let explicitNil = false
   |13 |     var properties = [(name: String, value: any ConvertibleToGeneratedContent)]()
   +--------------------------------------------------------------------
12 |
macro expansion @Generable:33:20: error: 'GenerationID' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/Models/TopicDetectionResult.swift:11:1: note: expanded code originates here
 2 |
 3 | /// Result of topic detection containing a topic and the indices of related entries.
 4 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
   | `- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
 5 | public struct TopicDetectionResult {
 6 |     @Guide(description: "The topic of the entries")
   :
 9 |     @Guide(description: "The indices of the entries that are related to the topic")
10 |     public let entryIndices: [Int]
11 | }
   +--- macro expansion @Generable -------------------------------------
   |30 | }
   |31 |
   |32 | nonisolated public struct PartiallyGenerated: Identifiable, nonisolated FoundationModels.ConvertibleFromGeneratedContent {
   |   |                           `- note: add '@available' attribute to enclosing struct
   |33 |     public var id: GenerationID
   |   |                    `- error: 'GenerationID' is only available in watchOS 27.0 or newer
   |34 |     public var topic: String.PartiallyGenerated?
   |35 |     public var entryIndices: [Int].PartiallyGenerated?
   +--------------------------------------------------------------------
12 |
macro expansion @Generable:34:30: error: 'PartiallyGenerated' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/Models/TopicDetectionResult.swift:11:1: note: expanded code originates here
 2 |
 3 | /// Result of topic detection containing a topic and the indices of related entries.
 4 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
   | `- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
 5 | public struct TopicDetectionResult {
 6 |     @Guide(description: "The topic of the entries")
   :
 9 |     @Guide(description: "The indices of the entries that are related to the topic")
10 |     public let entryIndices: [Int]
11 | }
   +--- macro expansion @Generable -------------------------------------
   |30 | }
   |31 |
   |32 | nonisolated public struct PartiallyGenerated: Identifiable, nonisolated FoundationModels.ConvertibleFromGeneratedContent {
   |   |                           `- note: add '@available' attribute to enclosing struct
   |33 |     public var id: GenerationID
   |34 |     public var topic: String.PartiallyGenerated?
   |   |                              `- error: 'PartiallyGenerated' is only available in watchOS 27.0 or newer
   |35 |     public var entryIndices: [Int].PartiallyGenerated?
   |36 |     nonisolated public init(_ content: FoundationModels.GeneratedContent) throws {
   +--------------------------------------------------------------------
12 |
macro expansion @Generable:35:36: error: 'PartiallyGenerated' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/Models/TopicDetectionResult.swift:11:1: note: expanded code originates here
 2 |
 3 | /// Result of topic detection containing a topic and the indices of related entries.
 4 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
   | `- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
 5 | public struct TopicDetectionResult {
 6 |     @Guide(description: "The topic of the entries")
   :
 9 |     @Guide(description: "The indices of the entries that are related to the topic")
10 |     public let entryIndices: [Int]
11 | }
   +--- macro expansion @Generable -------------------------------------
   |30 | }
   |31 |
   |32 | nonisolated public struct PartiallyGenerated: Identifiable, nonisolated FoundationModels.ConvertibleFromGeneratedContent {
   |   |                           `- note: add '@available' attribute to enclosing struct
   |33 |     public var id: GenerationID
   |34 |     public var topic: String.PartiallyGenerated?
   |35 |     public var entryIndices: [Int].PartiallyGenerated?
   |   |                                    `- error: 'PartiallyGenerated' is only available in watchOS 27.0 or newer
   |36 |     nonisolated public init(_ content: FoundationModels.GeneratedContent) throws {
   |37 |         self.id = content.id ?? GenerationID()
   +--------------------------------------------------------------------
12 |
macro expansion @Generable:36:57: error: 'GeneratedContent' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/Models/TopicDetectionResult.swift:11:1: note: expanded code originates here
 2 |
 3 | /// Result of topic detection containing a topic and the indices of related entries.
 4 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
   | |- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
   | `- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
 5 | public struct TopicDetectionResult {
 6 |     @Guide(description: "The topic of the entries")
   :
 9 |     @Guide(description: "The indices of the entries that are related to the topic")
10 |     public let entryIndices: [Int]
11 | }
   +--- macro expansion @Generable -------------------------------------
   |30 | }
   |31 |
   |32 | nonisolated public struct PartiallyGenerated: Identifiable, nonisolated FoundationModels.ConvertibleFromGeneratedContent {
   |   |                           `- note: add '@available' attribute to enclosing struct
   |33 |     public var id: GenerationID
   |34 |     public var topic: String.PartiallyGenerated?
   |35 |     public var entryIndices: [Int].PartiallyGenerated?
   |36 |     nonisolated public init(_ content: FoundationModels.GeneratedContent) throws {
   |   |                        |                                `- error: 'GeneratedContent' is only available in watchOS 27.0 or newer
   |   |                        `- note: add '@available' attribute to enclosing initializer
   |37 |         self.id = content.id ?? GenerationID()
   |38 |         self.topic = try content.value(forProperty: "topic")
   +--------------------------------------------------------------------
12 |
macro expansion @Generable:32:27: warning: protocol 'Identifiable' requires 'GenerationID' to be available in watchOS 26.0 and newer; this will be an error in a future Swift language mode
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/Models/TopicDetectionResult.swift:11:1: note: expanded code originates here
 2 |
 3 | /// Result of topic detection containing a topic and the indices of related entries.
 4 | @Generable
   | `- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
 5 | public struct TopicDetectionResult {
 6 |     @Guide(description: "The topic of the entries")
   :
 9 |     @Guide(description: "The indices of the entries that are related to the topic")
10 |     public let entryIndices: [Int]
11 | }
   +--- macro expansion @Generable -------------------------------------
   |30 | }
   |31 |
   |32 | nonisolated public struct PartiallyGenerated: Identifiable, nonisolated FoundationModels.ConvertibleFromGeneratedContent {
   |   |                           `- warning: protocol 'Identifiable' requires 'GenerationID' to be available in watchOS 26.0 and newer; this will be an error in a future Swift language mode
   |33 |     public var id: GenerationID
   |34 |     public var topic: String.PartiallyGenerated?
   +--------------------------------------------------------------------
12 |
FoundationModels.GenerationID:3:15: note: 'GenerationID' declared here
1 | @available(iOS 26.0, macOS 26.0, watchOS 27.0, *)
2 | @available(tvOS, unavailable)
3 | public struct GenerationID : Sendable, Hashable {
  |               `- note: 'GenerationID' declared here
4 |     public static func == (a: GenerationID, b: GenerationID) -> Bool
5 |     public func hash(into hasher: inout Hasher)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/Models/TopicDetectionResult.swift:4:2: error: 'Generable(description:)' is only available in watchOS 27.0 or newer
 2 |
 3 | /// Result of topic detection containing a topic and the indices of related entries.
 4 | @Generable
   |  `- error: 'Generable(description:)' is only available in watchOS 27.0 or newer
 5 | public struct TopicDetectionResult {
   |               `- note: add '@available' attribute to enclosing struct
 6 |     @Guide(description: "The topic of the entries")
 7 |     public let topic: String
macro expansion @Generable:2:57: error: 'GeneratedContent' is only available in watchOS 27.0 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/Models/TopicDetectionResult.swift:11:2: note: expanded code originates here
 2 |
 3 | /// Result of topic detection containing a topic and the indices of related entries.
 4 | @Generable
   | |- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
   | |- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
   | `- note: in expansion of macro 'Generable' on struct 'TopicDetectionResult' here
 5 | public struct TopicDetectionResult {
 6 |     @Guide(description: "The topic of the entries")
   :
 9 |     @Guide(description: "The indices of the entries that are related to the topic")
10 |     public let entryIndices: [Int]
11 | }
   +--- macro expansion @Generable -------------------------------------
   |1 | extension TopicDetectionResult: nonisolated FoundationModels.Generable {
   |  | `- note: add '@available' attribute to enclosing extension
   |2 |     nonisolated public init(_ content: FoundationModels.GeneratedContent) throws {
   |  |                        |                                `- error: 'GeneratedContent' is only available in watchOS 27.0 or newer
   |  |                        `- note: add '@available' attribute to enclosing initializer
   |3 |         self.topic = try content.value(forProperty: "topic")
   |4 |         self.entryIndices = try content.value(forProperty: "entryIndices")
   +--------------------------------------------------------------------
12 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/TopicDetector.swift:11:36: error: 'Transcript' is only available in watchOS 27.0 or newer
 3 | /// A protocol for detecting topics in conversation history.
 4 | /// Implementations can use different strategies to group entries by topic.
 5 | public protocol TopicDetector: Sendable {
   |                 `- note: add '@available' attribute to enclosing protocol
 6 |     /// Detects topics in conversation entries and groups them accordingly.
 7 |     ///
   :
 9 |     /// - Returns: An array of topic groups, where each group contains entries that belong to the same topic. Each group is represented as an array of entries.
10 |     /// - Throws: An error if topic detection fails.
11 |     func detectTopics(in entries: [Transcript.Entry]) async throws -> [[Transcript.Entry]]
   |          |                         `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
12 | }
13 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/TopicDetector.swift:11:73: error: 'Transcript' is only available in watchOS 27.0 or newer
 3 | /// A protocol for detecting topics in conversation history.
 4 | /// Implementations can use different strategies to group entries by topic.
 5 | public protocol TopicDetector: Sendable {
   |                 `- note: add '@available' attribute to enclosing protocol
 6 |     /// Detects topics in conversation entries and groups them accordingly.
 7 |     ///
   :
 9 |     /// - Returns: An array of topic groups, where each group contains entries that belong to the same topic. Each group is represented as an array of entries.
10 |     /// - Throws: An error if topic detection fails.
11 |     func detectTopics(in entries: [Transcript.Entry]) async throws -> [[Transcript.Entry]]
   |          |                                                              `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
12 | }
13 |
Failed frontend command:
/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -emit-module -experimental-skip-non-inlinable-function-bodies-without-types /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/ContextReducer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HeadTailWindowReducer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HierarchicalSummaryReducer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/NoOpReducer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/RollingSummaryReducer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/SlidingWindowReducer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/StructuredStateReducer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReductionEngine.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReductionLogLevel.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReductionObserver.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReductionPolicy.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextualSession.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Helpers/Constants.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Helpers/ContextReductionLogger.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Helpers/ConversationChunker.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Helpers/Extensions/Locale+Extensions.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Helpers/Extensions/Transcript+Extensions.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Helpers/TranscriptHelpers.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ReductionInfo.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/CustomStateExtractor.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/FoundationModelsStateExtractor.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredStateConfiguration.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/StateExtractor.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/CustomLLMSummarizer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/Models/HierarchicalSummaryConfiguration.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/Models/RollingSummaryConfiguration.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/Models/SummaryGranularity.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/Summarizer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/FoundationModelsTopicDetector.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/Models/TopicDetectionResult.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/TopicDetection/TopicDetector.swift -target arm64-apple-watchos26.0 -disable-cross-import-overlay-search -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/lib/swift/host/plugins/libFoundationMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/bin/swift-plugin-server\#FoundationMacros -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/lib/swift/host/plugins/libFoundationModelsMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/bin/swift-plugin-server\#FoundationModelsMacros -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/lib/swift/host/plugins/libObservationMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/bin/swift-plugin-server\#ObservationMacros -load-resolved-plugin /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/lib/swift/host/plugins/libSwiftMacros.dylib\#/Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/bin/swift-plugin-server\#SwiftMacros -disable-implicit-swift-modules -Xcc -fno-implicit-modules -Xcc -fno-implicit-module-maps -explicit-swift-module-map-file /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/swift-context-management.build/Debug-watchos/SwiftContextManagement-t.build/Objects-normal/arm64/SwiftContextManagement-dependencies-1.json -Xllvm -aarch64-use-tbi -enable-objc-interop -stack-check -sdk /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk -I /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug-watchos -Isystem /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/usr/lib -F /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug-watchos -F /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/Library/Frameworks -F /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS27.0.sdk/Developer/Library/Frameworks -module-cache-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -no-color-diagnostics -Xcc -fno-color-diagnostics -enable-testing -g -debug-info-format\=dwarf -dwarf-version\=5 -profile-generate -profile-coverage-mapping -swift-version 6 -Onone -D SWIFT_PACKAGE -D DEBUG -D SWIFT_MODULE_RESOURCE_BUNDLE_UNAVAILABLE -D Xcode -serialize-debugging-options -enable-experimental-feature DebugDescriptionMacro -empty-abi-descriptor -validate-clang-modules-once -clang-build-session-file /Users/admin/builder/spi-builder-workspace/.derivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -working-directory -Xcc /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode -enable-anonymous-context-mangled-names -file-compilation-dir /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode -Xcc -D_LIBCPP_HARDENING_MODE\=_LIBCPP_HARDENING_MODE_DEBUG -Xcc -ivfsstatcache -Xcc /Users/admin/builder/spi-builder-workspace/.derivedData/SDKStatCaches.noindex/watchos27.0-24R360-e829b21a6f8c9b70876ba0858053c04477534ef55a1706bf4c1112bbb242f0a2.sdkstatcache -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Products/Debug-watchos/include -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/swift-context-management.build/Debug-watchos/SwiftContextManagement-t.build/DerivedSources-normal/arm64 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/swift-context-management.build/Debug-watchos/SwiftContextManagement-t.build/DerivedSources/arm64 -Xcc -I/Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/swift-context-management.build/Debug-watchos/SwiftContextManagement-t.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -no-auto-bridging-header-chaining -module-name SwiftContextManagement -package-name spi_builder_workspace -const-gather-protocols-file /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/swift-context-management.build/Debug-watchos/SwiftContextManagement-t.build/Objects-normal/arm64/SwiftContextManagement_const_extract_protocols.json -disable-clang-spi -clang-target arm64-apple-watchos27.0 -target-sdk-version 27.0 -target-sdk-name watchos27.0 -in-process-plugin-server-path /Applications/Xcode-27.0.0-Release.Candidate.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/host/libSwiftInProcPluginServer.dylib -emit-module-doc-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/swift-context-management.build/Debug-watchos/SwiftContextManagement-t.build/Objects-normal/arm64/SwiftContextManagement.swiftdoc -emit-module-source-info-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/swift-context-management.build/Debug-watchos/SwiftContextManagement-t.build/Objects-normal/arm64/SwiftContextManagement.swiftsourceinfo -emit-objc-header-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/swift-context-management.build/Debug-watchos/SwiftContextManagement-t.build/Objects-normal/arm64/SwiftContextManagement-Swift.h -serialize-diagnostics-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/swift-context-management.build/Debug-watchos/SwiftContextManagement-t.build/Objects-normal/arm64/SwiftContextManagement-primary-emit-module.dia -emit-dependencies-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/swift-context-management.build/Debug-watchos/SwiftContextManagement-t.build/Objects-normal/arm64/SwiftContextManagement-primary-emit-module.d -parse-as-library -o /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/swift-context-management.build/Debug-watchos/SwiftContextManagement-t.build/Objects-normal/arm64/SwiftContextManagement.swiftmodule -emit-abi-descriptor-path /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/swift-context-management.build/Debug-watchos/SwiftContextManagement-t.build/Objects-normal/arm64/SwiftContextManagement.abi.json
SwiftCompile normal arm64 (in target 'SwiftContextManagement' from project 'swift-context-management')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode

SwiftCompile normal arm64_32 Compiling\ CustomLLMSummarizer.swift,\ FoundationModelsSummarizer.swift,\ HierarchicalSummaryConfiguration.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/CustomLLMSummarizer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/Models/HierarchicalSummaryConfiguration.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/CustomLLMSummarizer.swift:7:48: error: 'Transcript' is only available in watchOS 27.0 or newer
 4 | /// A summarizer implementation that uses a custom LLM function.
 5 | /// This allows users to provide their own summarization logic.
 6 | public struct CustomLLMSummarizer: Summarizer {
   |               `- note: add '@available' attribute to enclosing struct
 7 |     private let summarizeFunction: @Sendable ([Transcript.Entry], String?, Locale) async throws -> String
   |                                                `- error: 'Transcript' is only available in watchOS 27.0 or newer
 8 |
 9 |     /// Creates a custom LLM summarizer with a user-provided summarization function.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/CustomLLMSummarizer.swift:13:50: error: 'Transcript' is only available in watchOS 27.0 or newer
 4 | /// A summarizer implementation that uses a custom LLM function.
 5 | /// This allows users to provide their own summarization logic.
 6 | public struct CustomLLMSummarizer: Summarizer {
   |               `- note: add '@available' attribute to enclosing struct
 7 |     private let summarizeFunction: @Sendable ([Transcript.Entry], String?, Locale) async throws -> String
 8 |
   :
10 |     ///
11 |     /// - Parameter summarizeFunction: An async function that takes conversation entries, optional instructions, and locale, and returns a summary string.
12 |     public init(
   |            `- note: add '@available' attribute to enclosing initializer
13 |         summarizeFunction: @escaping @Sendable ([Transcript.Entry], String?, Locale) async throws -> String
   |                                                  `- error: 'Transcript' is only available in watchOS 27.0 or newer
14 |     ) {
15 |         self.summarizeFunction = summarizeFunction
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/CustomLLMSummarizer.swift:19:19: error: 'Transcript' is only available in watchOS 27.0 or newer
 4 | /// A summarizer implementation that uses a custom LLM function.
 5 | /// This allows users to provide their own summarization logic.
 6 | public struct CustomLLMSummarizer: Summarizer {
   |               `- note: add '@available' attribute to enclosing struct
 7 |     private let summarizeFunction: @Sendable ([Transcript.Entry], String?, Locale) async throws -> String
 8 |
   :
16 |     }
17 |
18 |     public func summarize(
   |                 `- note: add '@available' attribute to enclosing instance method
19 |         entries: [Transcript.Entry],
   |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
20 |         instructions: String?,
21 |         locale: Locale
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:31:19: error: 'Transcript' is only available in watchOS 27.0 or newer
  9 |
 10 | /// A default summarizer implementation using FoundationModels.
 11 | public struct FoundationModelsSummarizer: Summarizer {
    |               `- note: add '@available' attribute to enclosing struct
 12 |     private static let defaultSummarizationInstructions = """
 13 |     Summarize the following conversation briefly, preserving only essential facts and decisions. Remove examples, repetition, and implementation details. Provide only the summary content directly without any introductory phrases, explanations, or meta-commentary. Start immediately with the summary.
    :
 28 |     /// - Returns: A summary of the conversation.
 29 |     /// - Throws: An error if the summarization fails.
 30 |     public func summarize(
    |                 `- note: add '@available' attribute to enclosing instance method
 31 |         entries: [Transcript.Entry],
    |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
 32 |         instructions: String?,
 33 |         locale: Locale = .enUS
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:56:19: error: 'Transcript' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 53 |     ///   - instructions: The summarization instructions.
 54 |     /// - Returns: A summary string.
 55 |     func summarizeWithRetry(
    |          `- note: add '@available' attribute to enclosing instance method
 56 |         entries: [Transcript.Entry],
    |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
 57 |         instructions: String
 58 |     ) async throws -> String {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:74:19: error: 'Transcript' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 71 |
 72 |     /// Summarizes entries directly in a single LLM call.
 73 |     func summarizeDirectly(
    |          `- note: add '@available' attribute to enclosing instance method
 74 |         entries: [Transcript.Entry],
    |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
 75 |         instructions: String
 76 |     ) async throws -> String {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:97:19: error: 'Transcript' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 94 |
 95 |     /// Splits entries into parts, summarizes each part, then combines the summaries.
 96 |     func summarizeInParts(
    |          `- note: add '@available' attribute to enclosing instance method
 97 |         entries: [Transcript.Entry],
    |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
 98 |         instructions: String
 99 |     ) async throws -> String {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:120:18: error: 'Transcript' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
117 |
118 |     /// Handles the edge case of a single entry that's too large for the context window.
119 |     func summarizeLargeEntry(
    |          `- note: add '@available' attribute to enclosing instance method
120 |         _ entry: Transcript.Entry,
    |                  `- error: 'Transcript' is only available in watchOS 27.0 or newer
121 |         instructions: String
122 |     ) async throws -> String {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:62:30: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 53 |     ///   - instructions: The summarization instructions.
 54 |     /// - Returns: A summary string.
 55 |     func summarizeWithRetry(
    |          `- note: add '@available' attribute to enclosing instance method
 56 |         entries: [Transcript.Entry],
 57 |         instructions: String
    :
 60 |             // Try to summarize directly
 61 |             return try await summarizeDirectly(entries: entries, instructions: instructions)
 62 |         } catch let error as LanguageModelSession.GenerationError {
    |                              |- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
    |                              `- note: add 'if #available' version check
 63 |             // Check if it's a context window error
 64 |             if case .exceededContextWindowSize = error {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:62:30: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 53 |     ///   - instructions: The summarization instructions.
 54 |     /// - Returns: A summary string.
 55 |     func summarizeWithRetry(
    |          `- note: add '@available' attribute to enclosing instance method
 56 |         entries: [Transcript.Entry],
 57 |         instructions: String
    :
 60 |             // Try to summarize directly
 61 |             return try await summarizeDirectly(entries: entries, instructions: instructions)
 62 |         } catch let error as LanguageModelSession.GenerationError {
    |                              |- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
    |                              `- note: add 'if #available' version check
 63 |             // Check if it's a context window error
 64 |             if case .exceededContextWindowSize = error {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:90:23: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 71 |
 72 |     /// Summarizes entries directly in a single LLM call.
 73 |     func summarizeDirectly(
    |          `- note: add '@available' attribute to enclosing instance method
 74 |         entries: [Transcript.Entry],
 75 |         instructions: String
    :
 88 |         """
 89 |
 90 |         let session = LanguageModelSession()
    |                       |- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
    |                       `- note: add 'if #available' version check
 91 |         let response = try await session.respond(to: prompt)
 92 |         return response.content
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:90:23: error: 'init(model:tools:instructions:)' is unavailable in watchOS
 88 |         """
 89 |
 90 |         let session = LanguageModelSession()
    |                       `- error: 'init(model:tools:instructions:)' is unavailable in watchOS
 91 |         let response = try await session.respond(to: prompt)
 92 |         return response.content
FoundationModels.LanguageModelSession.init:2:20: note: 'init(model:tools:instructions:)' has been explicitly marked unavailable here
1 | class LanguageModelSession {
2 | public convenience init(model: SystemLanguageModel = .default, tools: [any Tool] = [], instructions: Instructions? = nil)}
  |                    `- note: 'init(model:tools:instructions:)' has been explicitly marked unavailable here
3 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:91:42: error: 'respond(to:options:)' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 71 |
 72 |     /// Summarizes entries directly in a single LLM call.
 73 |     func summarizeDirectly(
    |          `- note: add '@available' attribute to enclosing instance method
 74 |         entries: [Transcript.Entry],
 75 |         instructions: String
    :
 89 |
 90 |         let session = LanguageModelSession()
 91 |         let response = try await session.respond(to: prompt)
    |                                          |- error: 'respond(to:options:)' is only available in watchOS 27.0 or newer
    |                                          `- note: add 'if #available' version check
 92 |         return response.content
 93 |     }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:91:13: error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 71 |
 72 |     /// Summarizes entries directly in a single LLM call.
 73 |     func summarizeDirectly(
    |          `- note: add '@available' attribute to enclosing instance method
 74 |         entries: [Transcript.Entry],
 75 |         instructions: String
    :
 89 |
 90 |         let session = LanguageModelSession()
 91 |         let response = try await session.respond(to: prompt)
    |             |- error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
    |             `- note: add 'if #available' version check
 92 |         return response.content
 93 |     }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:92:25: error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 71 |
 72 |     /// Summarizes entries directly in a single LLM call.
 73 |     func summarizeDirectly(
    |          `- note: add '@available' attribute to enclosing instance method
 74 |         entries: [Transcript.Entry],
 75 |         instructions: String
    :
 90 |         let session = LanguageModelSession()
 91 |         let response = try await session.respond(to: prompt)
 92 |         return response.content
    |                         |- error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
    |                         `- note: add 'if #available' version check
 93 |     }
 94 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:155:27: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
139 |
140 |     /// Summarizes raw text with retry on context window errors.
141 |     func summarizeText(
    |          `- note: add '@available' attribute to enclosing instance method
142 |         _ text: String,
143 |         instructions: String
    :
153 |
154 |         do {
155 |             let session = LanguageModelSession()
    |                           |- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
    |                           `- note: add 'if #available' version check
156 |             let response = try await session.respond(to: prompt)
157 |             return response.content
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:155:27: error: 'init(model:tools:instructions:)' is unavailable in watchOS
153 |
154 |         do {
155 |             let session = LanguageModelSession()
    |                           `- error: 'init(model:tools:instructions:)' is unavailable in watchOS
156 |             let response = try await session.respond(to: prompt)
157 |             return response.content
FoundationModels.LanguageModelSession.init:2:20: note: 'init(model:tools:instructions:)' has been explicitly marked unavailable here
1 | class LanguageModelSession {
2 | public convenience init(model: SystemLanguageModel = .default, tools: [any Tool] = [], instructions: Instructions? = nil)}
  |                    `- note: 'init(model:tools:instructions:)' has been explicitly marked unavailable here
3 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:156:46: error: 'respond(to:options:)' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
139 |
140 |     /// Summarizes raw text with retry on context window errors.
141 |     func summarizeText(
    |          `- note: add '@available' attribute to enclosing instance method
142 |         _ text: String,
143 |         instructions: String
    :
154 |         do {
155 |             let session = LanguageModelSession()
156 |             let response = try await session.respond(to: prompt)
    |                                              |- error: 'respond(to:options:)' is only available in watchOS 27.0 or newer
    |                                              `- note: add 'if #available' version check
157 |             return response.content
158 |         } catch let error as LanguageModelSession.GenerationError {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:156:17: error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
139 |
140 |     /// Summarizes raw text with retry on context window errors.
141 |     func summarizeText(
    |          `- note: add '@available' attribute to enclosing instance method
142 |         _ text: String,
143 |         instructions: String
    :
154 |         do {
155 |             let session = LanguageModelSession()
156 |             let response = try await session.respond(to: prompt)
    |                 |- error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
    |                 `- note: add 'if #available' version check
157 |             return response.content
158 |         } catch let error as LanguageModelSession.GenerationError {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:157:29: error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
139 |
140 |     /// Summarizes raw text with retry on context window errors.
141 |     func summarizeText(
    |          `- note: add '@available' attribute to enclosing instance method
142 |         _ text: String,
143 |         instructions: String
    :
155 |             let session = LanguageModelSession()
156 |             let response = try await session.respond(to: prompt)
157 |             return response.content
    |                             |- error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
    |                             `- note: add 'if #available' version check
158 |         } catch let error as LanguageModelSession.GenerationError {
159 |             if case .exceededContextWindowSize = error {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:158:30: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
139 |
140 |     /// Summarizes raw text with retry on context window errors.
141 |     func summarizeText(
    |          `- note: add '@available' attribute to enclosing instance method
142 |         _ text: String,
143 |         instructions: String
    :
156 |             let response = try await session.respond(to: prompt)
157 |             return response.content
158 |         } catch let error as LanguageModelSession.GenerationError {
    |                              |- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
    |                              `- note: add 'if #available' version check
159 |             if case .exceededContextWindowSize = error {
160 |                 // Text still too large, split it further
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:158:30: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
139 |
140 |     /// Summarizes raw text with retry on context window errors.
141 |     func summarizeText(
    |          `- note: add '@available' attribute to enclosing instance method
142 |         _ text: String,
143 |         instructions: String
    :
156 |             let response = try await session.respond(to: prompt)
157 |             return response.content
158 |         } catch let error as LanguageModelSession.GenerationError {
    |                              |- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
    |                              `- note: add 'if #available' version check
159 |             if case .exceededContextWindowSize = error {
160 |                 // Text still too large, split it further
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:196:27: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
179 |
180 |     /// Combines multiple summaries into one coherent summary.
181 |     func combineSummaries(_ summaries: [String]) async throws -> String {
    |          `- note: add '@available' attribute to enclosing instance method
182 |         let combinedText = summaries.enumerated()
183 |             .map { "Part \($0.offset + 1):\n\($0.element)" }
    :
194 |
195 |         do {
196 |             let session = LanguageModelSession()
    |                           |- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
    |                           `- note: add 'if #available' version check
197 |             let response = try await session.respond(to: prompt)
198 |             return response.content
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:196:27: error: 'init(model:tools:instructions:)' is unavailable in watchOS
194 |
195 |         do {
196 |             let session = LanguageModelSession()
    |                           `- error: 'init(model:tools:instructions:)' is unavailable in watchOS
197 |             let response = try await session.respond(to: prompt)
198 |             return response.content
FoundationModels.LanguageModelSession.init:2:20: note: 'init(model:tools:instructions:)' has been explicitly marked unavailable here
1 | class LanguageModelSession {
2 | public convenience init(model: SystemLanguageModel = .default, tools: [any Tool] = [], instructions: Instructions? = nil)}
  |                    `- note: 'init(model:tools:instructions:)' has been explicitly marked unavailable here
3 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:197:46: error: 'respond(to:options:)' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
179 |
180 |     /// Combines multiple summaries into one coherent summary.
181 |     func combineSummaries(_ summaries: [String]) async throws -> String {
    |          `- note: add '@available' attribute to enclosing instance method
182 |         let combinedText = summaries.enumerated()
183 |             .map { "Part \($0.offset + 1):\n\($0.element)" }
    :
195 |         do {
196 |             let session = LanguageModelSession()
197 |             let response = try await session.respond(to: prompt)
    |                                              |- error: 'respond(to:options:)' is only available in watchOS 27.0 or newer
    |                                              `- note: add 'if #available' version check
198 |             return response.content
199 |         } catch let error as LanguageModelSession.GenerationError {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:197:17: error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
179 |
180 |     /// Combines multiple summaries into one coherent summary.
181 |     func combineSummaries(_ summaries: [String]) async throws -> String {
    |          `- note: add '@available' attribute to enclosing instance method
182 |         let combinedText = summaries.enumerated()
183 |             .map { "Part \($0.offset + 1):\n\($0.element)" }
    :
195 |         do {
196 |             let session = LanguageModelSession()
197 |             let response = try await session.respond(to: prompt)
    |                 |- error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
    |                 `- note: add 'if #available' version check
198 |             return response.content
199 |         } catch let error as LanguageModelSession.GenerationError {
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/CustomLLMSummarizer.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile CustomLLMSummarizer.swift
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile FoundationModelsSummarizer.swift
SwiftCompile normal arm64_32 /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/Models/HierarchicalSummaryConfiguration.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile HierarchicalSummaryConfiguration.swift
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:198:29: error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
179 |
180 |     /// Combines multiple summaries into one coherent summary.
181 |     func combineSummaries(_ summaries: [String]) async throws -> String {
    |          `- note: add '@available' attribute to enclosing instance method
182 |         let combinedText = summaries.enumerated()
183 |             .map { "Part \($0.offset + 1):\n\($0.element)" }
    :
196 |             let session = LanguageModelSession()
197 |             let response = try await session.respond(to: prompt)
198 |             return response.content
    |                             |- error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
    |                             `- note: add 'if #available' version check
199 |         } catch let error as LanguageModelSession.GenerationError {
200 |             if case .exceededContextWindowSize = error {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:199:30: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
179 |
180 |     /// Combines multiple summaries into one coherent summary.
181 |     func combineSummaries(_ summaries: [String]) async throws -> String {
    |          `- note: add '@available' attribute to enclosing instance method
182 |         let combinedText = summaries.enumerated()
183 |             .map { "Part \($0.offset + 1):\n\($0.element)" }
    :
197 |             let response = try await session.respond(to: prompt)
198 |             return response.content
199 |         } catch let error as LanguageModelSession.GenerationError {
    |                              |- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
    |                              `- note: add 'if #available' version check
200 |             if case .exceededContextWindowSize = error {
201 |                 // Too many summaries to combine at once - split them
SwiftCompile normal arm64 Compiling\ ContextReducer.swift,\ HeadTailWindowReducer.swift,\ HierarchicalSummaryReducer.swift,\ NoOpReducer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/ContextReducer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HeadTailWindowReducer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HierarchicalSummaryReducer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/NoOpReducer.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/ContextReducer.swift:5:31: error: 'Transcript' is only available in watchOS 27.0 or newer
 2 |
 3 | /// Protocol for context reduction strategies.
 4 | protocol ContextReducer: Sendable {
   |          `- note: add '@available' attribute to enclosing protocol
 5 |     func reduce(_ transcript: Transcript) async throws -> Transcript
   |          |                    `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
 6 | }
 7 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/ContextReducer.swift:5:59: error: 'Transcript' is only available in watchOS 27.0 or newer
 2 |
 3 | /// Protocol for context reduction strategies.
 4 | protocol ContextReducer: Sendable {
   |          `- note: add '@available' attribute to enclosing protocol
 5 |     func reduce(_ transcript: Transcript) async throws -> Transcript
   |          |                                                `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
 6 | }
 7 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/ContextReducer.swift:9:63: error: 'Transcript' is only available in watchOS 27.0 or newer
 6 | }
 7 |
 8 | extension ContextReducer {
   | `- note: add '@available' attribute to enclosing extension
 9 |     func extractInstructionsAndConversations(from transcript: Transcript) -> (instructions: [Transcript.Entry], conversations: [Transcript.Entry]) {
   |          |                                                    `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
10 |         var instructions: [Transcript.Entry] = []
11 |         var conversations: [Transcript.Entry] = []
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/ContextReducer.swift:9:94: error: 'Transcript' is only available in watchOS 27.0 or newer
 6 | }
 7 |
 8 | extension ContextReducer {
   | `- note: add '@available' attribute to enclosing extension
 9 |     func extractInstructionsAndConversations(from transcript: Transcript) -> (instructions: [Transcript.Entry], conversations: [Transcript.Entry]) {
   |          |                                                                                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
10 |         var instructions: [Transcript.Entry] = []
11 |         var conversations: [Transcript.Entry] = []
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/ContextReducer.swift:9:129: error: 'Transcript' is only available in watchOS 27.0 or newer
 6 | }
 7 |
 8 | extension ContextReducer {
   | `- note: add '@available' attribute to enclosing extension
 9 |     func extractInstructionsAndConversations(from transcript: Transcript) -> (instructions: [Transcript.Entry], conversations: [Transcript.Entry]) {
   |          |                                                                                                                      `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
10 |         var instructions: [Transcript.Entry] = []
11 |         var conversations: [Transcript.Entry] = []
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/ContextReducer.swift:10:28: error: 'Transcript' is only available in watchOS 27.0 or newer
 6 | }
 7 |
 8 | extension ContextReducer {
   | `- note: add '@available' attribute to enclosing extension
 9 |     func extractInstructionsAndConversations(from transcript: Transcript) -> (instructions: [Transcript.Entry], conversations: [Transcript.Entry]) {
   |          `- note: add '@available' attribute to enclosing instance method
10 |         var instructions: [Transcript.Entry] = []
   |                            |- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                            `- note: add 'if #available' version check
11 |         var conversations: [Transcript.Entry] = []
12 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/ContextReducer.swift:11:29: error: 'Transcript' is only available in watchOS 27.0 or newer
 6 | }
 7 |
 8 | extension ContextReducer {
   | `- note: add '@available' attribute to enclosing extension
 9 |     func extractInstructionsAndConversations(from transcript: Transcript) -> (instructions: [Transcript.Entry], conversations: [Transcript.Entry]) {
   |          `- note: add '@available' attribute to enclosing instance method
10 |         var instructions: [Transcript.Entry] = []
11 |         var conversations: [Transcript.Entry] = []
   |                             |- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                             `- note: add 'if #available' version check
12 |
13 |         for index in transcript.indices {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/ContextReducer.swift:13:33: error: conformance of 'Transcript' to 'RandomAccessCollection' is only available in watchOS 27.0 or newer
 6 | }
 7 |
 8 | extension ContextReducer {
   | `- note: add '@available' attribute to enclosing extension
 9 |     func extractInstructionsAndConversations(from transcript: Transcript) -> (instructions: [Transcript.Entry], conversations: [Transcript.Entry]) {
   |          `- note: add '@available' attribute to enclosing instance method
10 |         var instructions: [Transcript.Entry] = []
11 |         var conversations: [Transcript.Entry] = []
12 |
13 |         for index in transcript.indices {
   |                                 |- error: conformance of 'Transcript' to 'RandomAccessCollection' is only available in watchOS 27.0 or newer
   |                                 `- note: add 'if #available' version check
14 |             let entry = transcript[index]
15 |             if case .instructions = entry {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/ContextReducer.swift:14:25: error: 'subscript(_:)' is only available in watchOS 27.0 or newer
 6 | }
 7 |
 8 | extension ContextReducer {
   | `- note: add '@available' attribute to enclosing extension
 9 |     func extractInstructionsAndConversations(from transcript: Transcript) -> (instructions: [Transcript.Entry], conversations: [Transcript.Entry]) {
   |          `- note: add '@available' attribute to enclosing instance method
10 |         var instructions: [Transcript.Entry] = []
11 |         var conversations: [Transcript.Entry] = []
12 |
13 |         for index in transcript.indices {
14 |             let entry = transcript[index]
   |                         |- error: 'subscript(_:)' is only available in watchOS 27.0 or newer
   |                         `- note: add 'if #available' version check
15 |             if case .instructions = entry {
16 |                 instructions.append(entry)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HeadTailWindowReducer.swift:32:31: error: 'Transcript' is only available in watchOS 27.0 or newer
 8 | /// This strategy is useful when you want to maintain the model's behavioral instructions while
 9 | /// preserving recent context, even if older conversation history is removed.
10 | struct HeadTailWindowReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
11 |     private let tailTurns: Int
12 |
   :
30 |     /// - Returns: A new transcript containing the preserved entries (all instructions plus recent conversation entries).
31 |     /// - Throws: This method doesn't currently throw, but the signature allows for future error handling.
32 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          |                    `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
33 |         var newEntries = [Transcript.Entry]()
34 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HeadTailWindowReducer.swift:32:59: error: 'Transcript' is only available in watchOS 27.0 or newer
 8 | /// This strategy is useful when you want to maintain the model's behavioral instructions while
 9 | /// preserving recent context, even if older conversation history is removed.
10 | struct HeadTailWindowReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
11 |     private let tailTurns: Int
12 |
   :
30 |     /// - Returns: A new transcript containing the preserved entries (all instructions plus recent conversation entries).
31 |     /// - Throws: This method doesn't currently throw, but the signature allows for future error handling.
32 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          |                                                `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
33 |         var newEntries = [Transcript.Entry]()
34 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HeadTailWindowReducer.swift:33:27: error: 'Transcript' is only available in watchOS 27.0 or newer
 8 | /// This strategy is useful when you want to maintain the model's behavioral instructions while
 9 | /// preserving recent context, even if older conversation history is removed.
10 | struct HeadTailWindowReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
11 |     private let tailTurns: Int
12 |
   :
30 |     /// - Returns: A new transcript containing the preserved entries (all instructions plus recent conversation entries).
31 |     /// - Throws: This method doesn't currently throw, but the signature allows for future error handling.
32 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          `- note: add '@available' attribute to enclosing instance method
33 |         var newEntries = [Transcript.Entry]()
   |                           |- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                           `- note: add 'if #available' version check
34 |
35 |         let (instructionEntries, conversationEntries) = extractInstructionsAndConversations(from: transcript)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HeadTailWindowReducer.swift:44:16: error: 'Transcript' is only available in watchOS 27.0 or newer
 8 | /// This strategy is useful when you want to maintain the model's behavioral instructions while
 9 | /// preserving recent context, even if older conversation history is removed.
10 | struct HeadTailWindowReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
11 |     private let tailTurns: Int
12 |
   :
30 |     /// - Returns: A new transcript containing the preserved entries (all instructions plus recent conversation entries).
31 |     /// - Throws: This method doesn't currently throw, but the signature allows for future error handling.
32 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          `- note: add '@available' attribute to enclosing instance method
33 |         var newEntries = [Transcript.Entry]()
34 |
   :
42 |         newEntries.append(contentsOf: tailEntries)
43 |
44 |         return Transcript(entries: newEntries)
   |                |- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                `- note: add 'if #available' version check
45 |     }
46 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HierarchicalSummaryReducer.swift:25:31: error: 'Transcript' is only available in watchOS 27.0 or newer
  4 | /// A context reducer that implements a hierarchical summary strategy, maintaining multiple summaries
  5 | /// at different granularities (per turn, per topic, global) while keeping recent turns verbatim.
  6 | struct HierarchicalSummaryReducer: ContextReducer {
    |        `- note: add '@available' attribute to enclosing struct
  7 |     private let configuration: HierarchicalSummaryConfiguration
  8 |
    :
 23 |     /// - Returns: A new transcript containing instructions (if enabled), summary entries at different granularities, and recent conversation entries.
 24 |     /// - Throws: An error if summarization fails.
 25 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
    |          |                    `- error: 'Transcript' is only available in watchOS 27.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
 26 |         var newEntries = [Transcript.Entry]()
 27 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HierarchicalSummaryReducer.swift:25:59: error: 'Transcript' is only available in watchOS 27.0 or newer
  4 | /// A context reducer that implements a hierarchical summary strategy, maintaining multiple summaries
  5 | /// at different granularities (per turn, per topic, global) while keeping recent turns verbatim.
  6 | struct HierarchicalSummaryReducer: ContextReducer {
    |        `- note: add '@available' attribute to enclosing struct
  7 |     private let configuration: HierarchicalSummaryConfiguration
  8 |
    :
 23 |     /// - Returns: A new transcript containing instructions (if enabled), summary entries at different granularities, and recent conversation entries.
 24 |     /// - Throws: An error if summarization fails.
 25 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
    |          |                                                `- error: 'Transcript' is only available in watchOS 27.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
 26 |         var newEntries = [Transcript.Entry]()
 27 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HierarchicalSummaryReducer.swift:73:23: error: 'Transcript' is only available in watchOS 27.0 or newer
 62 | }
 63 |
 64 | private extension HierarchicalSummaryReducer {
    |         `- note: add '@available' attribute to enclosing extension
 65 |     /// Creates a summary for the given entries at the specified granularity level.
 66 |     ///
    :
 70 |     /// - Returns: A summary string.
 71 |     /// - Throws: An error if summarization fails.
 72 |     func createSummary(
    |          `- note: add '@available' attribute to enclosing instance method
 73 |         for entries: [Transcript.Entry],
    |                       `- error: 'Transcript' is only available in watchOS 27.0 or newer
 74 |         granularity: SummaryGranularity
 75 |     ) async throws -> String {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HierarchicalSummaryReducer.swift:120:44: error: 'Transcript' is only available in watchOS 27.0 or newer
 62 | }
 63 |
 64 | private extension HierarchicalSummaryReducer {
    |         `- note: add '@available' attribute to enclosing extension
 65 |     /// Creates a summary for the given entries at the specified granularity level.
 66 |     ///
    :
118 |     /// - Parameter entries: The conversation entries to group.
119 |     /// - Returns: An array of arrays, where each inner array represents a turn.
120 |     func groupEntriesIntoTurns(_ entries: [Transcript.Entry]) -> [[Transcript.Entry]] {
    |          |                                 `- error: 'Transcript' is only available in watchOS 27.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
121 |         var turns: [[Transcript.Entry]] = []
122 |         var currentTurn: [Transcript.Entry] = []
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HierarchicalSummaryReducer.swift:120:68: error: 'Transcript' is only available in watchOS 27.0 or newer
 62 | }
 63 |
 64 | private extension HierarchicalSummaryReducer {
    |         `- note: add '@available' attribute to enclosing extension
 65 |     /// Creates a summary for the given entries at the specified granularity level.
 66 |     ///
    :
118 |     /// - Parameter entries: The conversation entries to group.
119 |     /// - Returns: An array of arrays, where each inner array represents a turn.
120 |     func groupEntriesIntoTurns(_ entries: [Transcript.Entry]) -> [[Transcript.Entry]] {
    |          |                                                         `- error: 'Transcript' is only available in watchOS 27.0 or newer
    |          `- note: add '@available' attribute to enclosing instance method
121 |         var turns: [[Transcript.Entry]] = []
122 |         var currentTurn: [Transcript.Entry] = []
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HierarchicalSummaryReducer.swift:26:27: error: 'Transcript' is only available in watchOS 27.0 or newer
  4 | /// A context reducer that implements a hierarchical summary strategy, maintaining multiple summaries
  5 | /// at different granularities (per turn, per topic, global) while keeping recent turns verbatim.
  6 | struct HierarchicalSummaryReducer: ContextReducer {
    |        `- note: add '@available' attribute to enclosing struct
  7 |     private let configuration: HierarchicalSummaryConfiguration
  8 |
    :
 23 |     /// - Returns: A new transcript containing instructions (if enabled), summary entries at different granularities, and recent conversation entries.
 24 |     /// - Throws: An error if summarization fails.
 25 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
    |          `- note: add '@available' attribute to enclosing instance method
 26 |         var newEntries = [Transcript.Entry]()
    |                           |- error: 'Transcript' is only available in watchOS 27.0 or newer
    |                           `- note: add 'if #available' version check
 27 |
 28 |         let (instructionEntries, conversationEntries) = extractInstructionsAndConversations(from: transcript)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HierarchicalSummaryReducer.swift:44:37: error: 'Transcript' is only available in watchOS 27.0 or newer
  4 | /// A context reducer that implements a hierarchical summary strategy, maintaining multiple summaries
  5 | /// at different granularities (per turn, per topic, global) while keeping recent turns verbatim.
  6 | struct HierarchicalSummaryReducer: ContextReducer {
    |        `- note: add '@available' attribute to enclosing struct
  7 |     private let configuration: HierarchicalSummaryConfiguration
  8 |
    :
 23 |     /// - Returns: A new transcript containing instructions (if enabled), summary entries at different granularities, and recent conversation entries.
 24 |     /// - Throws: An error if summarization fails.
 25 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
    |          `- note: add '@available' attribute to enclosing instance method
 26 |         var newEntries = [Transcript.Entry]()
 27 |
    :
 42 |                 )
 43 |
 44 |                 let summaryPrompt = Transcript.Prompt(
    |                                     |- error: 'Transcript' is only available in watchOS 27.0 or newer
    |                                     `- note: add 'if #available' version check
 45 |                     segments: [
 46 |                         .text(
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HierarchicalSummaryReducer.swift:44:48: error: 'init(id:segments:options:responseFormat:)' is only available in watchOS 27.0 or newer
  4 | /// A context reducer that implements a hierarchical summary strategy, maintaining multiple summaries
  5 | /// at different granularities (per turn, per topic, global) while keeping recent turns verbatim.
  6 | struct HierarchicalSummaryReducer: ContextReducer {
    |        `- note: add '@available' attribute to enclosing struct
  7 |     private let configuration: HierarchicalSummaryConfiguration
  8 |
    :
 23 |     /// - Returns: A new transcript containing instructions (if enabled), summary entries at different granularities, and recent conversation entries.
 24 |     /// - Throws: An error if summarization fails.
 25 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
    |          `- note: add '@available' attribute to enclosing instance method
 26 |         var newEntries = [Transcript.Entry]()
 27 |
    :
 42 |                 )
 43 |
 44 |                 let summaryPrompt = Transcript.Prompt(
    |                                                |- error: 'init(id:segments:options:responseFormat:)' is only available in watchOS 27.0 or newer
    |                                                `- note: add 'if #available' version check
 45 |                     segments: [
 46 |                         .text(
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HierarchicalSummaryReducer.swift:47:29: error: 'Transcript' is only available in watchOS 27.0 or newer
  4 | /// A context reducer that implements a hierarchical summary strategy, maintaining multiple summaries
  5 | /// at different granularities (per turn, per topic, global) while keeping recent turns verbatim.
  6 | struct HierarchicalSummaryReducer: ContextReducer {
    |        `- note: add '@available' attribute to enclosing struct
  7 |     private let configuration: HierarchicalSummaryConfiguration
  8 |
    :
 23 |     /// - Returns: A new transcript containing instructions (if enabled), summary entries at different granularities, and recent conversation entries.
 24 |     /// - Throws: An error if summarization fails.
 25 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
    |          `- note: add '@available' attribute to enclosing instance method
 26 |         var newEntries = [Transcript.Entry]()
 27 |
    :
 45 |                     segments: [
 46 |                         .text(
 47 |                             Transcript.TextSegment(
    |                             |- error: 'Transcript' is only available in watchOS 27.0 or newer
    |                             `- note: add 'if #available' version check
 48 |                                 content: "\(granularity.description) Summary: \(summaryText)"
 49 |                             )
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HierarchicalSummaryReducer.swift:60:16: error: 'Transcript' is only available in watchOS 27.0 or newer
  4 | /// A context reducer that implements a hierarchical summary strategy, maintaining multiple summaries
  5 | /// at different granularities (per turn, per topic, global) while keeping recent turns verbatim.
  6 | struct HierarchicalSummaryReducer: ContextReducer {
    |        `- note: add '@available' attribute to enclosing struct
  7 |     private let configuration: HierarchicalSummaryConfiguration
  8 |
    :
 23 |     /// - Returns: A new transcript containing instructions (if enabled), summary entries at different granularities, and recent conversation entries.
 24 |     /// - Throws: An error if summarization fails.
 25 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
    |          `- note: add '@available' attribute to enclosing instance method
 26 |         var newEntries = [Transcript.Entry]()
 27 |
    :
 58 |         newEntries.append(contentsOf: recentEntries)
 59 |
 60 |         return Transcript(entries: newEntries)
    |                |- error: 'Transcript' is only available in watchOS 27.0 or newer
    |                `- note: add 'if #available' version check
 61 |     }
 62 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HierarchicalSummaryReducer.swift:121:22: error: 'Transcript' is only available in watchOS 27.0 or newer
 62 | }
 63 |
 64 | private extension HierarchicalSummaryReducer {
    |         `- note: add '@available' attribute to enclosing extension
 65 |     /// Creates a summary for the given entries at the specified granularity level.
 66 |     ///
    :
118 |     /// - Parameter entries: The conversation entries to group.
119 |     /// - Returns: An array of arrays, where each inner array represents a turn.
120 |     func groupEntriesIntoTurns(_ entries: [Transcript.Entry]) -> [[Transcript.Entry]] {
    |          `- note: add '@available' attribute to enclosing instance method
121 |         var turns: [[Transcript.Entry]] = []
    |                      |- error: 'Transcript' is only available in watchOS 27.0 or newer
    |                      `- note: add 'if #available' version check
122 |         var currentTurn: [Transcript.Entry] = []
123 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HierarchicalSummaryReducer.swift:122:27: error: 'Transcript' is only available in watchOS 27.0 or newer
 62 | }
 63 |
 64 | private extension HierarchicalSummaryReducer {
    |         `- note: add '@available' attribute to enclosing extension
 65 |     /// Creates a summary for the given entries at the specified granularity level.
 66 |     ///
    :
118 |     /// - Parameter entries: The conversation entries to group.
119 |     /// - Returns: An array of arrays, where each inner array represents a turn.
120 |     func groupEntriesIntoTurns(_ entries: [Transcript.Entry]) -> [[Transcript.Entry]] {
    |          `- note: add '@available' attribute to enclosing instance method
121 |         var turns: [[Transcript.Entry]] = []
122 |         var currentTurn: [Transcript.Entry] = []
    |                           |- error: 'Transcript' is only available in watchOS 27.0 or newer
    |                           `- note: add 'if #available' version check
123 |
124 |         for entry in entries {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/NoOpReducer.swift:6:31: error: 'Transcript' is only available in watchOS 27.0 or newer
 3 | /// A reducer that does nothing - returns the transcript unchanged.
 4 | /// Used for unimplemented policies.
 5 | struct NoOpReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 6 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          |                    `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
 7 |         // Return the transcript unchanged
 8 |         return transcript
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/ContextReducer.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile ContextReducer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HeadTailWindowReducer.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile HeadTailWindowReducer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/HierarchicalSummaryReducer.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile HierarchicalSummaryReducer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/NoOpReducer.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile NoOpReducer.swift
SwiftCompile normal arm64 Compiling\ CustomLLMSummarizer.swift,\ FoundationModelsSummarizer.swift,\ HierarchicalSummaryConfiguration.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/CustomLLMSummarizer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/Models/HierarchicalSummaryConfiguration.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/CustomLLMSummarizer.swift:7:48: error: 'Transcript' is only available in watchOS 27.0 or newer
 4 | /// A summarizer implementation that uses a custom LLM function.
 5 | /// This allows users to provide their own summarization logic.
 6 | public struct CustomLLMSummarizer: Summarizer {
   |               `- note: add '@available' attribute to enclosing struct
 7 |     private let summarizeFunction: @Sendable ([Transcript.Entry], String?, Locale) async throws -> String
   |                                                `- error: 'Transcript' is only available in watchOS 27.0 or newer
 8 |
 9 |     /// Creates a custom LLM summarizer with a user-provided summarization function.
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/CustomLLMSummarizer.swift:13:50: error: 'Transcript' is only available in watchOS 27.0 or newer
 4 | /// A summarizer implementation that uses a custom LLM function.
 5 | /// This allows users to provide their own summarization logic.
 6 | public struct CustomLLMSummarizer: Summarizer {
   |               `- note: add '@available' attribute to enclosing struct
 7 |     private let summarizeFunction: @Sendable ([Transcript.Entry], String?, Locale) async throws -> String
 8 |
   :
10 |     ///
11 |     /// - Parameter summarizeFunction: An async function that takes conversation entries, optional instructions, and locale, and returns a summary string.
12 |     public init(
   |            `- note: add '@available' attribute to enclosing initializer
13 |         summarizeFunction: @escaping @Sendable ([Transcript.Entry], String?, Locale) async throws -> String
   |                                                  `- error: 'Transcript' is only available in watchOS 27.0 or newer
14 |     ) {
15 |         self.summarizeFunction = summarizeFunction
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/CustomLLMSummarizer.swift:19:19: error: 'Transcript' is only available in watchOS 27.0 or newer
 4 | /// A summarizer implementation that uses a custom LLM function.
 5 | /// This allows users to provide their own summarization logic.
 6 | public struct CustomLLMSummarizer: Summarizer {
   |               `- note: add '@available' attribute to enclosing struct
 7 |     private let summarizeFunction: @Sendable ([Transcript.Entry], String?, Locale) async throws -> String
 8 |
   :
16 |     }
17 |
18 |     public func summarize(
   |                 `- note: add '@available' attribute to enclosing instance method
19 |         entries: [Transcript.Entry],
   |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
20 |         instructions: String?,
21 |         locale: Locale
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:31:19: error: 'Transcript' is only available in watchOS 27.0 or newer
  9 |
 10 | /// A default summarizer implementation using FoundationModels.
 11 | public struct FoundationModelsSummarizer: Summarizer {
    |               `- note: add '@available' attribute to enclosing struct
 12 |     private static let defaultSummarizationInstructions = """
 13 |     Summarize the following conversation briefly, preserving only essential facts and decisions. Remove examples, repetition, and implementation details. Provide only the summary content directly without any introductory phrases, explanations, or meta-commentary. Start immediately with the summary.
    :
 28 |     /// - Returns: A summary of the conversation.
 29 |     /// - Throws: An error if the summarization fails.
 30 |     public func summarize(
    |                 `- note: add '@available' attribute to enclosing instance method
 31 |         entries: [Transcript.Entry],
    |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
 32 |         instructions: String?,
 33 |         locale: Locale = .enUS
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:56:19: error: 'Transcript' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 53 |     ///   - instructions: The summarization instructions.
 54 |     /// - Returns: A summary string.
 55 |     func summarizeWithRetry(
    |          `- note: add '@available' attribute to enclosing instance method
 56 |         entries: [Transcript.Entry],
    |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
 57 |         instructions: String
 58 |     ) async throws -> String {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:74:19: error: 'Transcript' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 71 |
 72 |     /// Summarizes entries directly in a single LLM call.
 73 |     func summarizeDirectly(
    |          `- note: add '@available' attribute to enclosing instance method
 74 |         entries: [Transcript.Entry],
    |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
 75 |         instructions: String
 76 |     ) async throws -> String {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:97:19: error: 'Transcript' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 94 |
 95 |     /// Splits entries into parts, summarizes each part, then combines the summaries.
 96 |     func summarizeInParts(
    |          `- note: add '@available' attribute to enclosing instance method
 97 |         entries: [Transcript.Entry],
    |                   `- error: 'Transcript' is only available in watchOS 27.0 or newer
 98 |         instructions: String
 99 |     ) async throws -> String {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:120:18: error: 'Transcript' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
117 |
118 |     /// Handles the edge case of a single entry that's too large for the context window.
119 |     func summarizeLargeEntry(
    |          `- note: add '@available' attribute to enclosing instance method
120 |         _ entry: Transcript.Entry,
    |                  `- error: 'Transcript' is only available in watchOS 27.0 or newer
121 |         instructions: String
122 |     ) async throws -> String {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:62:30: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 53 |     ///   - instructions: The summarization instructions.
 54 |     /// - Returns: A summary string.
 55 |     func summarizeWithRetry(
    |          `- note: add '@available' attribute to enclosing instance method
 56 |         entries: [Transcript.Entry],
 57 |         instructions: String
    :
 60 |             // Try to summarize directly
 61 |             return try await summarizeDirectly(entries: entries, instructions: instructions)
 62 |         } catch let error as LanguageModelSession.GenerationError {
    |                              |- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
    |                              `- note: add 'if #available' version check
 63 |             // Check if it's a context window error
 64 |             if case .exceededContextWindowSize = error {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:62:30: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 53 |     ///   - instructions: The summarization instructions.
 54 |     /// - Returns: A summary string.
 55 |     func summarizeWithRetry(
    |          `- note: add '@available' attribute to enclosing instance method
 56 |         entries: [Transcript.Entry],
 57 |         instructions: String
    :
 60 |             // Try to summarize directly
 61 |             return try await summarizeDirectly(entries: entries, instructions: instructions)
 62 |         } catch let error as LanguageModelSession.GenerationError {
    |                              |- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
    |                              `- note: add 'if #available' version check
 63 |             // Check if it's a context window error
 64 |             if case .exceededContextWindowSize = error {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:90:23: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 71 |
 72 |     /// Summarizes entries directly in a single LLM call.
 73 |     func summarizeDirectly(
    |          `- note: add '@available' attribute to enclosing instance method
 74 |         entries: [Transcript.Entry],
 75 |         instructions: String
    :
 88 |         """
 89 |
 90 |         let session = LanguageModelSession()
    |                       |- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
    |                       `- note: add 'if #available' version check
 91 |         let response = try await session.respond(to: prompt)
 92 |         return response.content
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:90:23: error: 'init(model:tools:instructions:)' is unavailable in watchOS
 88 |         """
 89 |
 90 |         let session = LanguageModelSession()
    |                       `- error: 'init(model:tools:instructions:)' is unavailable in watchOS
 91 |         let response = try await session.respond(to: prompt)
 92 |         return response.content
FoundationModels.LanguageModelSession.init:2:20: note: 'init(model:tools:instructions:)' has been explicitly marked unavailable here
1 | class LanguageModelSession {
2 | public convenience init(model: SystemLanguageModel = .default, tools: [any Tool] = [], instructions: Instructions? = nil)}
  |                    `- note: 'init(model:tools:instructions:)' has been explicitly marked unavailable here
3 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:91:42: error: 'respond(to:options:)' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 71 |
 72 |     /// Summarizes entries directly in a single LLM call.
 73 |     func summarizeDirectly(
    |          `- note: add '@available' attribute to enclosing instance method
 74 |         entries: [Transcript.Entry],
 75 |         instructions: String
    :
 89 |
 90 |         let session = LanguageModelSession()
 91 |         let response = try await session.respond(to: prompt)
    |                                          |- error: 'respond(to:options:)' is only available in watchOS 27.0 or newer
    |                                          `- note: add 'if #available' version check
 92 |         return response.content
 93 |     }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:91:13: error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 71 |
 72 |     /// Summarizes entries directly in a single LLM call.
 73 |     func summarizeDirectly(
    |          `- note: add '@available' attribute to enclosing instance method
 74 |         entries: [Transcript.Entry],
 75 |         instructions: String
    :
 89 |
 90 |         let session = LanguageModelSession()
 91 |         let response = try await session.respond(to: prompt)
    |             |- error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
    |             `- note: add 'if #available' version check
 92 |         return response.content
 93 |     }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:92:25: error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
 71 |
 72 |     /// Summarizes entries directly in a single LLM call.
 73 |     func summarizeDirectly(
    |          `- note: add '@available' attribute to enclosing instance method
 74 |         entries: [Transcript.Entry],
 75 |         instructions: String
    :
 90 |         let session = LanguageModelSession()
 91 |         let response = try await session.respond(to: prompt)
 92 |         return response.content
    |                         |- error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
    |                         `- note: add 'if #available' version check
 93 |     }
 94 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:155:27: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
139 |
140 |     /// Summarizes raw text with retry on context window errors.
141 |     func summarizeText(
    |          `- note: add '@available' attribute to enclosing instance method
142 |         _ text: String,
143 |         instructions: String
    :
153 |
154 |         do {
155 |             let session = LanguageModelSession()
    |                           |- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
    |                           `- note: add 'if #available' version check
156 |             let response = try await session.respond(to: prompt)
157 |             return response.content
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:155:27: error: 'init(model:tools:instructions:)' is unavailable in watchOS
153 |
154 |         do {
155 |             let session = LanguageModelSession()
    |                           `- error: 'init(model:tools:instructions:)' is unavailable in watchOS
156 |             let response = try await session.respond(to: prompt)
157 |             return response.content
FoundationModels.LanguageModelSession.init:2:20: note: 'init(model:tools:instructions:)' has been explicitly marked unavailable here
1 | class LanguageModelSession {
2 | public convenience init(model: SystemLanguageModel = .default, tools: [any Tool] = [], instructions: Instructions? = nil)}
  |                    `- note: 'init(model:tools:instructions:)' has been explicitly marked unavailable here
3 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:156:46: error: 'respond(to:options:)' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
139 |
140 |     /// Summarizes raw text with retry on context window errors.
141 |     func summarizeText(
    |          `- note: add '@available' attribute to enclosing instance method
142 |         _ text: String,
143 |         instructions: String
    :
154 |         do {
155 |             let session = LanguageModelSession()
156 |             let response = try await session.respond(to: prompt)
    |                                              |- error: 'respond(to:options:)' is only available in watchOS 27.0 or newer
    |                                              `- note: add 'if #available' version check
157 |             return response.content
158 |         } catch let error as LanguageModelSession.GenerationError {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:156:17: error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
139 |
140 |     /// Summarizes raw text with retry on context window errors.
141 |     func summarizeText(
    |          `- note: add '@available' attribute to enclosing instance method
142 |         _ text: String,
143 |         instructions: String
    :
154 |         do {
155 |             let session = LanguageModelSession()
156 |             let response = try await session.respond(to: prompt)
    |                 |- error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
    |                 `- note: add 'if #available' version check
157 |             return response.content
158 |         } catch let error as LanguageModelSession.GenerationError {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:157:29: error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
139 |
140 |     /// Summarizes raw text with retry on context window errors.
141 |     func summarizeText(
    |          `- note: add '@available' attribute to enclosing instance method
142 |         _ text: String,
143 |         instructions: String
    :
155 |             let session = LanguageModelSession()
156 |             let response = try await session.respond(to: prompt)
157 |             return response.content
    |                             |- error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
    |                             `- note: add 'if #available' version check
158 |         } catch let error as LanguageModelSession.GenerationError {
159 |             if case .exceededContextWindowSize = error {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:158:30: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
139 |
140 |     /// Summarizes raw text with retry on context window errors.
141 |     func summarizeText(
    |          `- note: add '@available' attribute to enclosing instance method
142 |         _ text: String,
143 |         instructions: String
    :
156 |             let response = try await session.respond(to: prompt)
157 |             return response.content
158 |         } catch let error as LanguageModelSession.GenerationError {
    |                              |- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
    |                              `- note: add 'if #available' version check
159 |             if case .exceededContextWindowSize = error {
160 |                 // Text still too large, split it further
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:158:30: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
139 |
140 |     /// Summarizes raw text with retry on context window errors.
141 |     func summarizeText(
    |          `- note: add '@available' attribute to enclosing instance method
142 |         _ text: String,
143 |         instructions: String
    :
156 |             let response = try await session.respond(to: prompt)
157 |             return response.content
158 |         } catch let error as LanguageModelSession.GenerationError {
    |                              |- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
    |                              `- note: add 'if #available' version check
159 |             if case .exceededContextWindowSize = error {
160 |                 // Text still too large, split it further
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:196:27: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
179 |
180 |     /// Combines multiple summaries into one coherent summary.
181 |     func combineSummaries(_ summaries: [String]) async throws -> String {
    |          `- note: add '@available' attribute to enclosing instance method
182 |         let combinedText = summaries.enumerated()
183 |             .map { "Part \($0.offset + 1):\n\($0.element)" }
    :
194 |
195 |         do {
196 |             let session = LanguageModelSession()
    |                           |- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
    |                           `- note: add 'if #available' version check
197 |             let response = try await session.respond(to: prompt)
198 |             return response.content
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:196:27: error: 'init(model:tools:instructions:)' is unavailable in watchOS
194 |
195 |         do {
196 |             let session = LanguageModelSession()
    |                           `- error: 'init(model:tools:instructions:)' is unavailable in watchOS
197 |             let response = try await session.respond(to: prompt)
198 |             return response.content
FoundationModels.LanguageModelSession.init:2:20: note: 'init(model:tools:instructions:)' has been explicitly marked unavailable here
1 | class LanguageModelSession {
2 | public convenience init(model: SystemLanguageModel = .default, tools: [any Tool] = [], instructions: Instructions? = nil)}
  |                    `- note: 'init(model:tools:instructions:)' has been explicitly marked unavailable here
3 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:197:46: error: 'respond(to:options:)' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
179 |
180 |     /// Combines multiple summaries into one coherent summary.
181 |     func combineSummaries(_ summaries: [String]) async throws -> String {
    |          `- note: add '@available' attribute to enclosing instance method
182 |         let combinedText = summaries.enumerated()
183 |             .map { "Part \($0.offset + 1):\n\($0.element)" }
    :
195 |         do {
196 |             let session = LanguageModelSession()
197 |             let response = try await session.respond(to: prompt)
    |                                              |- error: 'respond(to:options:)' is only available in watchOS 27.0 or newer
    |                                              `- note: add 'if #available' version check
198 |             return response.content
199 |         } catch let error as LanguageModelSession.GenerationError {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:197:17: error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
179 |
180 |     /// Combines multiple summaries into one coherent summary.
181 |     func combineSummaries(_ summaries: [String]) async throws -> String {
    |          `- note: add '@available' attribute to enclosing instance method
182 |         let combinedText = summaries.enumerated()
183 |             .map { "Part \($0.offset + 1):\n\($0.element)" }
    :
195 |         do {
196 |             let session = LanguageModelSession()
197 |             let response = try await session.respond(to: prompt)
    |                 |- error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
    |                 `- note: add 'if #available' version check
198 |             return response.content
199 |         } catch let error as LanguageModelSession.GenerationError {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:198:29: error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
179 |
180 |     /// Combines multiple summaries into one coherent summary.
181 |     func combineSummaries(_ summaries: [String]) async throws -> String {
    |          `- note: add '@available' attribute to enclosing instance method
182 |         let combinedText = summaries.enumerated()
183 |             .map { "Part \($0.offset + 1):\n\($0.element)" }
    :
196 |             let session = LanguageModelSession()
197 |             let response = try await session.respond(to: prompt)
198 |             return response.content
    |                             |- error: conformance of 'String' to 'Generable' is only available in watchOS 27.0 or newer
    |                             `- note: add 'if #available' version check
199 |         } catch let error as LanguageModelSession.GenerationError {
200 |             if case .exceededContextWindowSize = error {
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift:199:30: error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
 46 | }
 47 |
 48 | private extension FoundationModelsSummarizer {
    |         `- note: add '@available' attribute to enclosing extension
 49 |     /// Attempts to summarize entries, automatically splitting if context window is exceeded.
 50 |     ///
    :
179 |
180 |     /// Combines multiple summaries into one coherent summary.
181 |     func combineSummaries(_ summaries: [String]) async throws -> String {
    |          `- note: add '@available' attribute to enclosing instance method
182 |         let combinedText = summaries.enumerated()
183 |             .map { "Part \($0.offset + 1):\n\($0.element)" }
    :
197 |             let response = try await session.respond(to: prompt)
198 |             return response.content
199 |         } catch let error as LanguageModelSession.GenerationError {
    |                              |- error: 'LanguageModelSession' is only available in watchOS 27.0 or newer
    |                              `- note: add 'if #available' version check
200 |             if case .exceededContextWindowSize = error {
201 |                 // Too many summaries to combine at once - split them
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/CustomLLMSummarizer.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile CustomLLMSummarizer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/FoundationModelsSummarizer.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile FoundationModelsSummarizer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/Summarization/Models/HierarchicalSummaryConfiguration.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile HierarchicalSummaryConfiguration.swift
SwiftCompile normal arm64 Compiling\ RollingSummaryReducer.swift,\ SlidingWindowReducer.swift,\ StructuredStateReducer.swift,\ ContextReductionEngine.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/RollingSummaryReducer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/SlidingWindowReducer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/StructuredStateReducer.swift /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReductionEngine.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/RollingSummaryReducer.swift:24:31: error: 'Transcript' is only available in watchOS 27.0 or newer
 3 | /// A context reducer that implements a rolling summary strategy, replacing older conversation history
 4 | /// with a single running summary while keeping recent turns verbatim.
 5 | struct RollingSummaryReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 6 |     private let configuration: RollingSummaryConfiguration
 7 |
   :
22 |     /// - Returns: A new transcript containing instructions (if enabled), a summary entry, and recent conversation entries.
23 |     /// - Throws: An error if summarization fails.
24 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          |                    `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
25 |         var newEntries = [Transcript.Entry]()
26 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/RollingSummaryReducer.swift:24:59: error: 'Transcript' is only available in watchOS 27.0 or newer
 3 | /// A context reducer that implements a rolling summary strategy, replacing older conversation history
 4 | /// with a single running summary while keeping recent turns verbatim.
 5 | struct RollingSummaryReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 6 |     private let configuration: RollingSummaryConfiguration
 7 |
   :
22 |     /// - Returns: A new transcript containing instructions (if enabled), a summary entry, and recent conversation entries.
23 |     /// - Throws: An error if summarization fails.
24 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          |                                                `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
25 |         var newEntries = [Transcript.Entry]()
26 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/RollingSummaryReducer.swift:25:27: error: 'Transcript' is only available in watchOS 27.0 or newer
 3 | /// A context reducer that implements a rolling summary strategy, replacing older conversation history
 4 | /// with a single running summary while keeping recent turns verbatim.
 5 | struct RollingSummaryReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 6 |     private let configuration: RollingSummaryConfiguration
 7 |
   :
22 |     /// - Returns: A new transcript containing instructions (if enabled), a summary entry, and recent conversation entries.
23 |     /// - Throws: An error if summarization fails.
24 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          `- note: add '@available' attribute to enclosing instance method
25 |         var newEntries = [Transcript.Entry]()
   |                           |- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                           `- note: add 'if #available' version check
26 |
27 |         let (instructionEntries, conversationEntries) = extractInstructionsAndConversations(from: transcript)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/RollingSummaryReducer.swift:44:33: error: 'Transcript' is only available in watchOS 27.0 or newer
 3 | /// A context reducer that implements a rolling summary strategy, replacing older conversation history
 4 | /// with a single running summary while keeping recent turns verbatim.
 5 | struct RollingSummaryReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 6 |     private let configuration: RollingSummaryConfiguration
 7 |
   :
22 |     /// - Returns: A new transcript containing instructions (if enabled), a summary entry, and recent conversation entries.
23 |     /// - Throws: An error if summarization fails.
24 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          `- note: add '@available' attribute to enclosing instance method
25 |         var newEntries = [Transcript.Entry]()
26 |
   :
42 |
43 |             // Create a summary entry (using a prompt entry to represent the summary)
44 |             let summaryPrompt = Transcript.Prompt(
   |                                 |- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                                 `- note: add 'if #available' version check
45 |                 segments: [
46 |                     .text(
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/RollingSummaryReducer.swift:44:44: error: 'init(id:segments:options:responseFormat:)' is only available in watchOS 27.0 or newer
 3 | /// A context reducer that implements a rolling summary strategy, replacing older conversation history
 4 | /// with a single running summary while keeping recent turns verbatim.
 5 | struct RollingSummaryReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 6 |     private let configuration: RollingSummaryConfiguration
 7 |
   :
22 |     /// - Returns: A new transcript containing instructions (if enabled), a summary entry, and recent conversation entries.
23 |     /// - Throws: An error if summarization fails.
24 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          `- note: add '@available' attribute to enclosing instance method
25 |         var newEntries = [Transcript.Entry]()
26 |
   :
42 |
43 |             // Create a summary entry (using a prompt entry to represent the summary)
44 |             let summaryPrompt = Transcript.Prompt(
   |                                            |- error: 'init(id:segments:options:responseFormat:)' is only available in watchOS 27.0 or newer
   |                                            `- note: add 'if #available' version check
45 |                 segments: [
46 |                     .text(
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/RollingSummaryReducer.swift:47:25: error: 'Transcript' is only available in watchOS 27.0 or newer
 3 | /// A context reducer that implements a rolling summary strategy, replacing older conversation history
 4 | /// with a single running summary while keeping recent turns verbatim.
 5 | struct RollingSummaryReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 6 |     private let configuration: RollingSummaryConfiguration
 7 |
   :
22 |     /// - Returns: A new transcript containing instructions (if enabled), a summary entry, and recent conversation entries.
23 |     /// - Throws: An error if summarization fails.
24 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          `- note: add '@available' attribute to enclosing instance method
25 |         var newEntries = [Transcript.Entry]()
26 |
   :
45 |                 segments: [
46 |                     .text(
47 |                         Transcript.TextSegment(
   |                         |- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                         `- note: add 'if #available' version check
48 |                             content: "Summary of previous conversation: \(summaryText)"
49 |                         )
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/RollingSummaryReducer.swift:58:16: error: 'Transcript' is only available in watchOS 27.0 or newer
 3 | /// A context reducer that implements a rolling summary strategy, replacing older conversation history
 4 | /// with a single running summary while keeping recent turns verbatim.
 5 | struct RollingSummaryReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 6 |     private let configuration: RollingSummaryConfiguration
 7 |
   :
22 |     /// - Returns: A new transcript containing instructions (if enabled), a summary entry, and recent conversation entries.
23 |     /// - Throws: An error if summarization fails.
24 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          `- note: add '@available' attribute to enclosing instance method
25 |         var newEntries = [Transcript.Entry]()
26 |
   :
56 |         newEntries.append(contentsOf: recentEntries)
57 |
58 |         return Transcript(entries: newEntries)
   |                |- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                `- note: add 'if #available' version check
59 |     }
60 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/SlidingWindowReducer.swift:33:31: error: 'Transcript' is only available in watchOS 27.0 or newer
 6 | /// The sliding window approach discards older conversation history, keeping only the most recent N turns
 7 | /// to stay within the context window size.
 8 | struct SlidingWindowReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 9 |     private let turns: Int
10 |     private let shouldKeepInstructions: Bool
   :
31 |     /// - Returns: A new transcript containing only the preserved entries (instructions if enabled, plus recent conversation turns).
32 |     /// - Throws: This method doesn't currently throw, but the signature allows for future error handling.
33 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          |                    `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
34 |         var newEntries = [Transcript.Entry]()
35 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/SlidingWindowReducer.swift:33:59: error: 'Transcript' is only available in watchOS 27.0 or newer
 6 | /// The sliding window approach discards older conversation history, keeping only the most recent N turns
 7 | /// to stay within the context window size.
 8 | struct SlidingWindowReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 9 |     private let turns: Int
10 |     private let shouldKeepInstructions: Bool
   :
31 |     /// - Returns: A new transcript containing only the preserved entries (instructions if enabled, plus recent conversation turns).
32 |     /// - Throws: This method doesn't currently throw, but the signature allows for future error handling.
33 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          |                                                `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
34 |         var newEntries = [Transcript.Entry]()
35 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/SlidingWindowReducer.swift:34:27: error: 'Transcript' is only available in watchOS 27.0 or newer
 6 | /// The sliding window approach discards older conversation history, keeping only the most recent N turns
 7 | /// to stay within the context window size.
 8 | struct SlidingWindowReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 9 |     private let turns: Int
10 |     private let shouldKeepInstructions: Bool
   :
31 |     /// - Returns: A new transcript containing only the preserved entries (instructions if enabled, plus recent conversation turns).
32 |     /// - Throws: This method doesn't currently throw, but the signature allows for future error handling.
33 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          `- note: add '@available' attribute to enclosing instance method
34 |         var newEntries = [Transcript.Entry]()
   |                           |- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                           `- note: add 'if #available' version check
35 |
36 |         let (instructionEntries, conversationEntries) = extractInstructionsAndConversations(from: transcript)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/SlidingWindowReducer.swift:45:16: error: 'Transcript' is only available in watchOS 27.0 or newer
 6 | /// The sliding window approach discards older conversation history, keeping only the most recent N turns
 7 | /// to stay within the context window size.
 8 | struct SlidingWindowReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 9 |     private let turns: Int
10 |     private let shouldKeepInstructions: Bool
   :
31 |     /// - Returns: A new transcript containing only the preserved entries (instructions if enabled, plus recent conversation turns).
32 |     /// - Throws: This method doesn't currently throw, but the signature allows for future error handling.
33 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          `- note: add '@available' attribute to enclosing instance method
34 |         var newEntries = [Transcript.Entry]()
35 |
   :
43 |         newEntries.append(contentsOf: recentEntries)
44 |
45 |         return Transcript(entries: newEntries)
   |                |- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                `- note: add 'if #available' version check
46 |     }
47 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/StructuredStateReducer.swift:11:31: error: 'Transcript' is only available in watchOS 27.0 or newer
 2 |
 3 | /// A context reducer that extracts structured state from conversation history.
 4 | struct StructuredStateReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 5 |     private let configuration: StructuredStateConfiguration
 6 |
   :
 9 |     }
10 |
11 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          |                    `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
12 |         var newEntries: [Transcript.Entry] = []
13 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/StructuredStateReducer.swift:11:59: error: 'Transcript' is only available in watchOS 27.0 or newer
 2 |
 3 | /// A context reducer that extracts structured state from conversation history.
 4 | struct StructuredStateReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 5 |     private let configuration: StructuredStateConfiguration
 6 |
   :
 9 |     }
10 |
11 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          |                                                `- error: 'Transcript' is only available in watchOS 27.0 or newer
   |          `- note: add '@available' attribute to enclosing instance method
12 |         var newEntries: [Transcript.Entry] = []
13 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:13:2: error: 'Generable(description:)' is only available in watchOS 27.0 or newer
11 | }
12 |
13 | @Generable
   |  `- error: 'Generable(description:)' is only available in watchOS 27.0 or newer
14 | public struct StructuredState: Sendable {
15 |     @Guide(description: "Extract all important information as key-value pairs. Use descriptive keys that indicate the type of information.")
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/StructuredStateReducer.swift:12:26: error: 'Transcript' is only available in watchOS 27.0 or newer
 2 |
 3 | /// A context reducer that extracts structured state from conversation history.
 4 | struct StructuredStateReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 5 |     private let configuration: StructuredStateConfiguration
 6 |
   :
 9 |     }
10 |
11 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          `- note: add '@available' attribute to enclosing instance method
12 |         var newEntries: [Transcript.Entry] = []
   |                          |- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                          `- note: add 'if #available' version check
13 |
14 |         let (instructionEntries, conversationEntries) = extractInstructionsAndConversations(from: transcript)
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/StructuredStateReducer.swift:30:31: error: 'Transcript' is only available in watchOS 27.0 or newer
 2 |
 3 | /// A context reducer that extracts structured state from conversation history.
 4 | struct StructuredStateReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 5 |     private let configuration: StructuredStateConfiguration
 6 |
   :
 9 |     }
10 |
11 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          `- note: add '@available' attribute to enclosing instance method
12 |         var newEntries: [Transcript.Entry] = []
13 |
   :
28 |             let stateText = formatStructuredState(structuredState)
29 |
30 |             let statePrompt = Transcript.Prompt(
   |                               |- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                               `- note: add 'if #available' version check
31 |                 segments: [
32 |                     .text(
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/StructuredStateReducer.swift:30:42: error: 'init(id:segments:options:responseFormat:)' is only available in watchOS 27.0 or newer
 2 |
 3 | /// A context reducer that extracts structured state from conversation history.
 4 | struct StructuredStateReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 5 |     private let configuration: StructuredStateConfiguration
 6 |
   :
 9 |     }
10 |
11 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          `- note: add '@available' attribute to enclosing instance method
12 |         var newEntries: [Transcript.Entry] = []
13 |
   :
28 |             let stateText = formatStructuredState(structuredState)
29 |
30 |             let statePrompt = Transcript.Prompt(
   |                                          |- error: 'init(id:segments:options:responseFormat:)' is only available in watchOS 27.0 or newer
   |                                          `- note: add 'if #available' version check
31 |                 segments: [
32 |                     .text(
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/StructuredStateReducer.swift:33:25: error: 'Transcript' is only available in watchOS 27.0 or newer
 2 |
 3 | /// A context reducer that extracts structured state from conversation history.
 4 | struct StructuredStateReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 5 |     private let configuration: StructuredStateConfiguration
 6 |
   :
 9 |     }
10 |
11 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          `- note: add '@available' attribute to enclosing instance method
12 |         var newEntries: [Transcript.Entry] = []
13 |
   :
31 |                 segments: [
32 |                     .text(
33 |                         Transcript.TextSegment(
   |
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/RollingSummaryReducer.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile RollingSummaryReducer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/SlidingWindowReducer.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile SlidingWindowReducer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/StructuredStateReducer.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile StructuredStateReducer.swift
SwiftCompile normal arm64 /Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReductionEngine.swift (in target 'SwiftContextManagement' from project 'swift-context-management')
    cd /Users/admin/builder/spi-builder-workspace/.swiftpm/xcode
    builtin-SwiftPerFileCompile ContextReductionEngine.swift
                     |- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                         `- note: add 'if #available' version check
34 |                             content: """
35 |                             Structured state extracted from previous conversation:
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReducers/StructuredStateReducer.swift:49:16: error: 'Transcript' is only available in watchOS 27.0 or newer
 2 |
 3 | /// A context reducer that extracts structured state from conversation history.
 4 | struct StructuredStateReducer: ContextReducer {
   |        `- note: add '@available' attribute to enclosing struct
 5 |     private let configuration: StructuredStateConfiguration
 6 |
   :
 9 |     }
10 |
11 |     func reduce(_ transcript: Transcript) async throws -> Transcript {
   |          `- note: add '@available' attribute to enclosing instance method
12 |         var newEntries: [Transcript.Entry] = []
13 |
   :
47 |         newEntries.append(contentsOf: recentEntries)
48 |
49 |         return Transcript(entries: newEntries)
   |                |- error: 'Transcript' is only available in watchOS 27.0 or newer
   |                `- note: add 'if #available' version check
50 |     }
51 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:4:2: error: 'Generable(description:)' is only available in watchOS 27.0 or newer
 2 |
 3 | /// A key-value fact extracted from conversation history.
 4 | @Generable
   |  `- error: 'Generable(description:)' is only available in watchOS 27.0 or newer
 5 | public struct ExtractedFact: Sendable {
 6 |     @Guide(description: "The key or name of this piece of information (e.g., 'name', 'date', 'constraint_quiet_table')")
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:15:6: error: 'Guide(description:)' is only available in watchOS 27.0 or newer
12 |
13 | @Generable
14 | public struct StructuredState: Sendable {
   |               `- note: add '@available' attribute to enclosing struct
15 |     @Guide(description: "Extract all important information as key-value pairs. Use descriptive keys that indicate the type of information.")
   |      `- error: 'Guide(description:)' is only available in watchOS 27.0 or newer
16 |     public let information: [ExtractedFact]
17 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:6:6: error: 'Guide(description:)' is only available in watchOS 27.0 or newer
 3 | /// A key-value fact extracted from conversation history.
 4 | @Generable
 5 | public struct ExtractedFact: Sendable {
   |               `- note: add '@available' attribute to enclosing struct
 6 |     @Guide(description: "The key or name of this piece of information (e.g., 'name', 'date', 'constraint_quiet_table')")
   |      `- error: 'Guide(description:)' is only available in watchOS 27.0 or newer
 7 |     public let key: String
 8 |
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/StateExtraction/Models/StructuredState.swift:9:6: error: 'Guide(description:)' is only available in watchOS 27.0 or newer
 3 | /// A key-value fact extracted from conversation history.
 4 | @Generable
 5 | public struct ExtractedFact: Sendable {
   |               `- note: add '@available' attribute to enclosing struct
 6 |     @Guide(description: "The key or name of this piece of information (e.g., 'name', 'date', 'constraint_quiet_table')")
 7 |     public let key: String
 8 |
 9 |     @Guide(description: "The value of this piece of information")
   |      `- error: 'Guide(description:)' is only available in watchOS 27.0 or newer
10 |     public let value: String
11 | }
/Users/admin/builder/spi-builder-workspace/Sources/SwiftContextManagement/ContextReductionEngine.swift:21:21: error: 'Transcript' is only available in watchOS 27.0 or newer
 2 |
 3 | /// Engine that performs context reduction based on a specified policy.
 4 | public struct ContextReductionEngine: Sendable {
   |               `- note: add '@available' attribute to enclosing struct
 5 |     private let policy: ContextReductionPolicy
 6 |
   :
18 |     /// - Returns: A reduced transcript that fits within the context window.
19 |     /// - Throws: An error if reduction fails (e.g., summarization errors).
20 |     public func reduce(
   |                 `- note: add '@available' attribute to enclosing instance method
21 |         transcript: Transcript,
   |                     `- error: 'Transcript' is only available in watchOS 27.0 or newer
22 |     ) async throws -> Transcript {
23 |         let reducer = createReducer(for: policy)
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/SDKExplicitPrecompiledModules
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules
PruneExplicitPrecompiledModules /Users/admin/builder/spi-builder-workspace/.derivedData/Build/Intermediates.noindex/ExplicitPrecompiledModules
2026-09-23 21:16:07.932 xcodebuild[766:4629] [MT] IDERunDestination: Supported platforms for the buildables in the current scheme is empty.
2026-09-23 21:16:08.075 xcodebuild[766:4629] [MT] IDERunDestination: Supported platforms for the buildables in the current scheme is empty.
** BUILD FAILED **
The following build commands failed:
	SwiftCompile normal arm64_32 (in target 'SwiftContextManagement' from project 'swift-context-management')
	SwiftEmitModule normal arm64_32 Emitting\ module\ for\ SwiftContextManagement (in target 'SwiftContextManagement' from project 'swift-context-management')
	SwiftEmitModule normal arm64 Emitting\ module\ for\ SwiftContextManagement (in target 'SwiftContextManagement' from project 'swift-context-management')
	SwiftCompile normal arm64 (in target 'SwiftContextManagement' from project 'swift-context-management')
	Building workspace swift-context-management with scheme swift-context-management
(5 failures)
BUILD FAILURE 6.4 watchOS