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=watchOSBuild 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