mac app new task

This commit is contained in:
Ian Gulliver
2026-10-17 08:34:49 -07:00
parent 57a99f2ed2
commit aea1a81b2c
6 changed files with 33 additions and 14 deletions
+14 -4
View File
@@ -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)