mac app new task
This commit is contained in:
@@ -105,6 +105,7 @@ struct SwitcherRow: Identifiable {
|
||||
case task(Project, ByreTask, Int)
|
||||
case project(Project)
|
||||
case newTask(Project, String)
|
||||
case startTask(Project, String)
|
||||
case startWorkflow(Project, String)
|
||||
case workflow(Project, String, WorkflowSummary)
|
||||
}
|
||||
@@ -196,6 +197,7 @@ final class SwitcherModel {
|
||||
let fallback = store.focusedProject() ?? store.projects.first
|
||||
for project in title.isEmpty ? [] : targets ?? (fallback.map { [$0] } ?? []) {
|
||||
rows.append(SwitcherRow(id: "new:\(project.id)", kind: .newTask(project, title)))
|
||||
rows.append(SwitcherRow(id: "go:\(project.id)", kind: .startTask(project, title)))
|
||||
rows.append(SwitcherRow(id: "start:\(project.id)", kind: .startWorkflow(project, title)))
|
||||
}
|
||||
return (rows, "No active tasks. Type a title to create one.")
|
||||
@@ -227,11 +229,13 @@ final class SwitcherModel {
|
||||
close()
|
||||
store.focusProject(p.id)
|
||||
case .newTask(let p, let title):
|
||||
create(p.id, title, nil)
|
||||
create(p.id, .init(title: title))
|
||||
case .startTask(let p, let title):
|
||||
create(p.id, .init(title: title, prompt: title, model: models[0]))
|
||||
case .startWorkflow(let p, let title):
|
||||
pickWorkflow(p, title)
|
||||
case .workflow(let p, let title, let w):
|
||||
create(p.id, title, w.name)
|
||||
create(p.id, .init(title: title, workflow: w.name))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -262,11 +266,11 @@ final class SwitcherModel {
|
||||
}
|
||||
}
|
||||
|
||||
private func create(_ projectId: String, _ title: String, _ workflow: String?) {
|
||||
private func create(_ projectId: String, _ body: Components.Schemas.TaskCreate) {
|
||||
close()
|
||||
Task {
|
||||
do {
|
||||
let task = try await store.api.client.createTask(path: .init(projectId: projectId), body: .json(.init(title: title, workflow: workflow))).created.body.json
|
||||
let task = try await store.api.client.createTask(path: .init(projectId: projectId), body: .json(body)).created.body.json
|
||||
go(task.id)
|
||||
} catch {
|
||||
overlays.showAlert(errorText(error))
|
||||
@@ -426,6 +430,12 @@ private struct SwitcherRowView: View {
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
state(models[0])
|
||||
.help("Model for the first message")
|
||||
case .startTask(let p, let title):
|
||||
Text(created([("Start in ", nil), (p.name, Palette.muted), (": \(title)", nil)]))
|
||||
.foregroundStyle(Palette.accent)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
state(models[0])
|
||||
.help("The title is the agent's first message")
|
||||
case .startWorkflow(let p, let title):
|
||||
Text(created([("Start workflow… in ", nil), (p.name, Palette.muted), (": \(title)", nil)]))
|
||||
.foregroundStyle(Palette.accent)
|
||||
|
||||
Reference in New Issue
Block a user