Implement initial song project domain models
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
public protocol AIService: Sendable {
|
||||
func planSongProject(from request: SongPlanningRequest) async throws -> SongPlanningDraft
|
||||
}
|
||||
|
||||
public struct SongPlanningRequest: Equatable, Sendable {
|
||||
public let userIntent: String
|
||||
|
||||
public init(userIntent: String) {
|
||||
self.userIntent = userIntent
|
||||
}
|
||||
}
|
||||
|
||||
public struct SongPlanningDraft: Equatable, Sendable {
|
||||
public let summary: String
|
||||
|
||||
public init(summary: String) {
|
||||
self.summary = summary
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
public protocol PromptCompiling: Sendable {
|
||||
associatedtype Project
|
||||
|
||||
func compile(project: Project) throws -> CompiledSunoOutput
|
||||
}
|
||||
|
||||
public struct CompiledSunoOutput: Equatable, Sendable {
|
||||
public let lyricsText: String
|
||||
public let stylePrompt: String
|
||||
|
||||
public init(lyricsText: String, stylePrompt: String) {
|
||||
self.lyricsText = lyricsText
|
||||
self.stylePrompt = stylePrompt
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user