Skip to content

Commit ecbbcdf

Browse files
committed
Cleanup
1 parent 10f63d9 commit ecbbcdf

File tree

5 files changed

+62
-57
lines changed

5 files changed

+62
-57
lines changed

Sources/CompilerSwiftAI/Auth/KeychainHelper.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import AuthenticationServices
44
import SwiftUI
55

66
/// Helper for Keychain operations
7-
actor KeychainHelper: Actor {
7+
actor KeychainHelper {
88
static let standard = KeychainHelper()
99

1010
func save(_ data: String, service: String, account: String) async {

Sources/CompilerSwiftAI/Model Calling/CompilerClient+Streaming.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,9 @@ extension CompilerClient {
129129

130130
// Capture metadata values before the closure to prevent data races
131131
let provider = metadata.provider
132-
let modelID = metadata.id
132+
let modelID = metadata.modelID
133133
let capabilities = metadata.capabilities
134-
let capturedMetadata = ModelMetadata(provider: provider, capabilities: capabilities, id: modelID)
134+
let capturedMetadata = ModelMetadata(provider: provider, capabilities: capabilities, modelID: modelID)
135135

136136
return AsyncThrowingStream { continuation in
137137
Task {
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// Copyright © 2025 Compiler, Inc. All rights reserved.
2+
3+
import Combine
4+
import SwiftUI
5+
6+
struct Message: Codable, Sendable, Identifiable, Equatable {
7+
let id: UUID
8+
let role: Role
9+
let content: String
10+
var state: MessageState
11+
12+
enum Role: String, Codable, Sendable {
13+
case system
14+
case user
15+
case assistant
16+
}
17+
18+
enum MessageState: Codable, Sendable, Equatable {
19+
case complete
20+
case streaming(String)
21+
22+
var isStreaming: Bool {
23+
if case .streaming = self { return true }
24+
return false
25+
}
26+
27+
var currentContent: String {
28+
switch self {
29+
case .complete: return ""
30+
case .streaming(let partial): return partial
31+
}
32+
}
33+
}
34+
35+
init(role: Role, content: String) {
36+
self.id = UUID()
37+
self.role = role
38+
self.content = content
39+
self.state = .complete
40+
}
41+
42+
init(id: UUID = UUID(), role: Role, content: String, state: MessageState = .complete) {
43+
self.id = id
44+
self.role = role
45+
self.content = content
46+
self.state = state
47+
}
48+
}
49+

Sources/CompilerSwiftAI/Model Calling/ModelCall.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ struct APIMessage: Codable {
1111
/// Request format for model calls, matching the backend API contract
1212
struct ModelCallRequest: Codable {
1313
let provider: ModelProvider
14-
let model: ModelID
14+
let modelID: ModelID
1515
let messages: [APIMessage]
1616

1717
init(using metadata: ModelMetadata, messages: [Message]) {
1818
self.provider = metadata.provider
19-
self.model = metadata.id
19+
self.modelID = metadata.modelID
2020

2121
Logger.modelCalls.debug("Converting \(messages.count) messages to API format")
2222
let apiMessages = messages.map { message in

Sources/CompilerSwiftAI/Model Calling/ModelMetadata.swift

Lines changed: 8 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -13,81 +13,37 @@ enum ModelCapability: String, Codable, Sendable, Equatable {
1313
}
1414

1515
struct ModelMetadata: Codable, Sendable, Equatable {
16-
let id: ModelID
16+
let modelID: ModelID
1717
let provider: ModelProvider
1818
let capabilities: [ModelCapability]
1919

20-
init(provider: ModelProvider, capabilities: [ModelCapability] = [.chat], id: ModelID) {
20+
init(provider: ModelProvider, capabilities: [ModelCapability] = [.chat], modelID: ModelID) {
2121
self.provider = provider
2222
self.capabilities = capabilities
23-
self.id = id
23+
self.modelID = modelID
2424
}
2525

2626
// Convenience initializers for each provider's Models
2727
static func openAI(_ model: OpenAIModel) -> ModelMetadata {
28-
ModelMetadata(provider: .OpenAI, id: model.rawValue)
28+
ModelMetadata(provider: .OpenAI, modelID: model.rawValue)
2929
}
3030

3131
static func anthropic(_ model: AnthropicModel) -> ModelMetadata {
32-
ModelMetadata(provider: .Anthropic, id: model.rawValue)
32+
ModelMetadata(provider: .Anthropic, modelID: model.rawValue)
3333
}
3434

3535
static func perplexity(_ model: PerplexityModel) -> ModelMetadata {
36-
ModelMetadata(provider: .Perplexity, id: model.rawValue)
36+
ModelMetadata(provider: .Perplexity, modelID: model.rawValue)
3737
}
3838

3939
static func deepseek(_ model: DeepSeekModel) -> ModelMetadata {
40-
ModelMetadata(provider: .DeepSeek, id: model.rawValue)
40+
ModelMetadata(provider: .DeepSeek, modelID: model.rawValue)
4141
}
4242

4343
static func == (lhs: ModelMetadata, rhs: ModelMetadata) -> Bool {
44-
lhs.id == rhs.id
44+
lhs.modelID == rhs.modelID
4545
&& lhs.provider == rhs.provider
4646
&& lhs.capabilities == rhs.capabilities
4747
}
4848
}
4949

50-
struct Message: Codable, Sendable, Identifiable, Equatable {
51-
let id: UUID
52-
let role: Role
53-
let content: String
54-
var state: MessageState
55-
56-
enum Role: String, Codable, Sendable {
57-
case system
58-
case user
59-
case assistant
60-
}
61-
62-
enum MessageState: Codable, Sendable, Equatable {
63-
case complete
64-
case streaming(String)
65-
66-
var isStreaming: Bool {
67-
if case .streaming = self { return true }
68-
return false
69-
}
70-
71-
var currentContent: String {
72-
switch self {
73-
case .complete: return ""
74-
case .streaming(let partial): return partial
75-
}
76-
}
77-
}
78-
79-
init(role: Role, content: String) {
80-
self.id = UUID()
81-
self.role = role
82-
self.content = content
83-
self.state = .complete
84-
}
85-
86-
init(id: UUID = UUID(), role: Role, content: String, state: MessageState = .complete) {
87-
self.id = id
88-
self.role = role
89-
self.content = content
90-
self.state = state
91-
}
92-
}
93-

0 commit comments

Comments
 (0)