diff --git a/api/openapi.yaml b/api/openapi.yaml index 35bd86e..e1bc604 100644 --- a/api/openapi.yaml +++ b/api/openapi.yaml @@ -2232,7 +2232,7 @@ components: Schedule: type: object - required: [id, project_id, owner, title, every, weekdays, hour, minute, day_of_month, prompt, model, workflow, next_run] + required: [id, project_id, owner, title, every, weekdays, hour, minute, day_of_month, prompt, workflow, next_run] properties: id: { type: string } project_id: { type: string } @@ -2243,14 +2243,13 @@ components: hour: { type: integer, description: "0 to 23, in the server's local time; 0 for an hourly schedule." } minute: { type: integer, description: "0 to 59; for an hourly schedule, the minute past each hour." } day_of_month: { type: integer, description: "1 to 31 for a monthly schedule, which runs on the month's last day in shorter months; 0 otherwise." } - prompt: { type: string, description: "The task's first message, or with workflow, the run's brief." } - model: { type: string, description: "The task's agent's model; empty with workflow." } - workflow: { type: string, description: "The workflow each run starts, by name; empty for a single agent." } + prompt: { type: string, description: "The run's brief, given to every stage; may be empty." } + workflow: { type: string, description: "The workflow each run starts, by name." } next_run: { type: string, format: date-time } ScheduleSave: type: object - required: [title, every, hour, minute] + required: [title, every, hour, minute, workflow] properties: title: { type: string, minLength: 1 } every: { $ref: "#/components/schemas/ScheduleEvery" } @@ -2258,9 +2257,8 @@ components: hour: { type: integer, minimum: 0, maximum: 23 } minute: { type: integer, minimum: 0, maximum: 59 } day_of_month: { type: integer, minimum: 1, maximum: 31, description: "Required, and only allowed, for a monthly schedule." } - prompt: { type: string, description: "Required without workflow." } - model: { type: string, description: "Required without workflow, refused with it." } - workflow: { type: string } + prompt: { type: string } + workflow: { type: string, minLength: 1 } Permission: type: object diff --git a/internal/agents/lead.go b/internal/agents/lead.go index 0d249ca..4a6df2c 100644 --- a/internal/agents/lead.go +++ b/internal/agents/lead.go @@ -33,7 +33,7 @@ const leadGuidance = `You are the human's lead agent in byre, shown in the left - You can create tasks, start TODO items, message, interrupt and compact task agents, and merge or discard tasks. Merge pushes to the default branch and Discard destroys work: do either only when the human asks for it. - Projects: when the human asks you to add a project, create it with create_project from its name and the path of its git repository on this machine. - Workflows: you manage the server's workflows with list_workflows, read_workflow, save_workflow and delete_workflow, and run one by giving its name to create_task or start_todo. A workflow is a tree of steps run in order, each a stage, an order or a parallel; every stage runs as its own task on the stage's model once the step before it has finished, so stages fan out (a parallel after a stage) and fan in (a stage after a parallel); a stage's agent calls finish_stage to hand its output to the stages after it, signals tell you when a stage starts and when the workflow finishes, and the workflow finishes once every stage has; byre then discards the run's other stage tasks, leaving the task of each last stage (one per branch when it ends in a parallel) to merge. Each last stage's agent is asked whether its task is ready to merge as soon as its own stage has finished and been reviewed, without waiting for the other last stages. Whenever you show or propose a workflow, draw it as a fenced diagram block (its format is the diagrams knowledge-base article) of its stage names only, with no models: one row per step, a parallel's stages side by side in one row, and an arrow into each stage from the stages before it. For example, rows holding Build; Review and Test; Fix, with the arrows "build -> review", "build -> test", "review -> fix" and "test -> fix". -- Schedules: when the human asks for work to run on a timer (every Monday, nightly), you manage it with list_schedules, save_schedule and delete_schedule; the human sees and edits the same schedules on the project's dashboard. On each run, byre creates a task from a schedule's prompt or workflow as create_task would, created by byre, and you get its created signal; a run that fails to start reaches you as a signal. +- Schedules: when the human asks for work to run on a timer (every Monday, nightly), you manage it with list_schedules, save_schedule and delete_schedule; the human sees and edits the same schedules on the project's dashboard. Every schedule runs a saved workflow: for a one-agent chore, save a one-stage workflow with save_workflow first. On each run, byre starts the schedule's workflow as create_task with workflow would, created by byre, and you get its created signal; a run that fails to start reaches you as a signal. - Whenever you name a task in a message, link it as a Markdown link to #/task/, for example [Fix login redirect](#/task/tskDa7e4K7305e). byre draws it in that task's color, and clicking it shows the task in the right pane. To also open one of its other views over the human's left pane, append it: #/task//, where view is changes, files, terminal or board. To show a project's dashboard in the right pane, link to #/project/. - Keep messages short; the human reads them in half the screen. Put long detail in collapsed sections: a line
Title, the Markdown content, then a line
. - You are long-running. Your context window is large. byre sends you a signal once your context passes a quarter of its window; then call compact_self at a logical point (a piece of work wrapped up, a topic closed), and not before; when the turn ends, byre replaces you with a fresh session that starts from your handoff. diff --git a/internal/agents/leadtools.go b/internal/agents/leadtools.go index 9d6edfc..321a779 100644 --- a/internal/agents/leadtools.go +++ b/internal/agents/leadtools.go @@ -570,7 +570,7 @@ func (m *Manager) leadTools(l *live) []mcp.Tool { m.mu.Unlock() return "byre will ask for your handoff once this turn ends.", nil }), - }, append(append(m.workflowTools(tool), m.scheduleTools(l, tool)...), m.noteTools(tool)...)...) + }, append(append(m.workflowTools(tool), m.scheduleTools(tool)...), m.noteTools(tool)...)...) } func (m *Manager) SetFocus(ctx context.Context, login string, f api.Focus, actor string) error { diff --git a/internal/agents/schedule.go b/internal/agents/schedule.go index c0cfa9c..d3c17f3 100644 --- a/internal/agents/schedule.go +++ b/internal/agents/schedule.go @@ -20,20 +20,10 @@ func (m *Manager) SaveSchedule(ctx context.Context, projectID, scheduleID string return api.Schedule{}, err } sc.Prompt = strings.TrimSpace(deref(save.Prompt)) - sc.Model = strings.TrimSpace(deref(save.Model)) - sc.Workflow = strings.TrimSpace(deref(save.Workflow)) - switch { - case sc.Workflow != "" && sc.Model != "": - return api.Schedule{}, errModelWithWorkflow - case sc.Workflow == "" && sc.Prompt == "": - return api.Schedule{}, fmt.Errorf("%w: prompt is required without a workflow", ErrInvalid) - case sc.Workflow == "" && sc.Model == "": - return api.Schedule{}, fmt.Errorf("%w: model is required without a workflow", ErrInvalid) - case sc.Workflow != "": - _, err = m.store.GetWorkflow(ctx, sc.Workflow) - if err != nil { - return api.Schedule{}, err - } + sc.Workflow = strings.TrimSpace(save.Workflow) + _, err = m.store.GetWorkflow(ctx, sc.Workflow) + if err != nil { + return api.Schedule{}, err } if scheduleID != "" { @@ -118,19 +108,8 @@ func (m *Manager) startScheduled(ctx context.Context, sc api.Schedule) error { if user.GitName == "" || user.GitEmail == "" { return ErrNoGitIdentity } - if sc.Workflow != "" { - _, err = m.StartWorkflow(ctx, project, user, sc.Title, project.DefaultBranch, "byre", sc.Workflow, sc.Prompt, nil, "") - return err - } - task, err := m.CreateTask(ctx, project, sc.Title, user.Login, project.DefaultBranch, "byre") - if err != nil { - return err - } - _, err = m.create(ctx, task, user, "", sc.Prompt, sc.Model, "byre", "", "", nil) - if err != nil { - return fmt.Errorf("task %s created, but its agent did not start: %w", task.Id, err) - } - return nil + _, err = m.StartWorkflow(ctx, project, user, sc.Title, project.DefaultBranch, "byre", sc.Workflow, sc.Prompt, nil, "") + return err } func scheduleText(sc api.Schedule) string { @@ -150,22 +129,17 @@ func scheduleText(sc api.Schedule) string { default: fmt.Fprintf(b, " at %02d:%02d", sc.Hour, sc.Minute) } - fmt.Fprintf(b, ", next run %s", sc.NextRun.Local().Format(time.RFC3339)) - if sc.Workflow != "" { - fmt.Fprintf(b, ", workflow %q", sc.Workflow) - } else { - fmt.Fprintf(b, ", model %s", sc.Model) - } + fmt.Fprintf(b, ", next run %s, workflow %q", sc.NextRun.Local().Format(time.RFC3339), sc.Workflow) if sc.Prompt != "" { fmt.Fprintf(b, "\n prompt: %s", clip(sc.Prompt, 500)) } return b.String() } -func (m *Manager) scheduleTools(l *live, tool func(name, description, schema string, run func(ctx context.Context, user api.User, raw json.RawMessage) (string, error)) mcp.Tool) []mcp.Tool { +func (m *Manager) scheduleTools(tool func(name, description, schema string, run func(ctx context.Context, user api.User, raw json.RawMessage) (string, error)) mcp.Tool) []mcp.Tool { return []mcp.Tool{ tool("list_schedules", - "List the schedules: each one's id, project, owner, title, timing, model or workflow, prompt, and next run in the server's local time. Give project_id for one project's.", + "List the schedules: each one's id, project, owner, title, timing, workflow, prompt, and next run in the server's local time. Give project_id for one project's.", `{"type": "object", "properties": {"project_id": {"type": "string"}}}`, func(ctx context.Context, user api.User, raw json.RawMessage) (string, error) { args := struct { @@ -190,25 +164,24 @@ func (m *Manager) scheduleTools(l *live, tool func(name, description, schema str }), tool("save_schedule", - "Create a schedule, or with schedule_id replace one's settings (project_id is then ignored). On each run byre creates a task in the project from its default branch, as create_task does, "+ - "as the schedule's owner (you, for one you create), and you get its created signal. Times are the server's local time. "+ + "Create a schedule, or with schedule_id replace one's settings (project_id is then ignored). On each run byre starts the workflow in the project from its default branch, as create_task with workflow does, "+ + "as the schedule's owner (you, for one you create). Times are the server's local time. "+ "every hour runs at minute past each hour (hour 0); day at hour:minute; week at hour:minute on each of weekdays; month at hour:minute on day_of_month, or the month's last day when shorter. "+ - "weekdays only for week, day_of_month only for month. Each run's agent sees nothing else, so the prompt must be a complete brief. "+ - "With workflow, each run starts that workflow, prompt is optional and is its brief, and model can't be given; the workflow is looked up by name at each run. "+ + "weekdays only for week, day_of_month only for month. prompt is optional and is added to every stage's first message as the run's brief. "+ + "The workflow is looked up by name at each run. "+ "A run missed while byre was down happens once when it starts. The human sees and edits schedules on the project's dashboard. Only when the human asks.", `{"type": "object", "properties": { "project_id": {"type": "string"}, "schedule_id": {"type": "string"}, - "title": {"type": "string", "description": "The title of each task it creates."}, + "title": {"type": "string", "description": "The title of each run."}, "every": {"type": "string", "enum": ["hour", "day", "week", "month"]}, "weekdays": {"type": "array", "items": {"type": "string", "enum": ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]}}, "hour": {"type": "integer", "minimum": 0, "maximum": 23}, "minute": {"type": "integer", "minimum": 0, "maximum": 59}, "day_of_month": {"type": "integer", "minimum": 1, "maximum": 31}, "prompt": {"type": "string"}, - "model": {"type": "string", "description": "Without workflow, the agent's model; defaults to yours."}, "workflow": {"type": "string", "description": "The name of a workflow for each run to freeze a copy of and run."} - }, "required": ["title", "every", "hour", "minute"]}`, + }, "required": ["title", "every", "hour", "minute", "workflow"]}`, func(ctx context.Context, user api.User, raw json.RawMessage) (string, error) { args := struct { ProjectID string `json:"project_id"` @@ -223,10 +196,6 @@ func (m *Manager) scheduleTools(l *live, tool func(name, description, schema str if err != nil { return "", err } - if deref(save.Workflow) == "" { - model := m.modelOr(deref(save.Model), l) - save.Model = &model - } sc, err := m.SaveSchedule(ctx, args.ProjectID, args.ScheduleID, save, user.Login, leadActor(user.Login)) if err != nil { return "", err diff --git a/internal/api/api.gen.go b/internal/api/api.gen.go index bc9f1e7..92730f2 100644 --- a/internal/api/api.gen.go +++ b/internal/api/api.gen.go @@ -1336,17 +1336,14 @@ type Schedule struct { Id string `json:"id"` // Minute 0 to 59; for an hourly schedule, the minute past each hour. - Minute int `json:"minute"` - - // Model The task's agent's model; empty with workflow. - Model string `json:"model"` + Minute int `json:"minute"` NextRun time.Time `json:"next_run"` // Owner The login each run's task is created as. Owner string `json:"owner"` ProjectId string `json:"project_id"` - // Prompt The task's first message, or with workflow, the run's brief. + // Prompt The run's brief, given to every stage; may be empty. Prompt string `json:"prompt"` // Title The title of each task it creates. @@ -1355,7 +1352,7 @@ type Schedule struct { // Weekdays The days a weekly schedule runs on, Monday first; empty otherwise. Weekdays []Weekday `json:"weekdays"` - // Workflow The workflow each run starts, by name; empty for a single agent. + // Workflow The workflow each run starts, by name. Workflow string `json:"workflow"` } @@ -1369,17 +1366,12 @@ type ScheduleSave struct { Every ScheduleEvery `json:"every"` Hour int `json:"hour"` Minute int `json:"minute"` - - // Model Required without workflow, refused with it. - Model *string `json:"model,omitempty"` - - // Prompt Required without workflow. - Prompt *string `json:"prompt,omitempty"` - Title string `json:"title"` + Prompt *string `json:"prompt,omitempty"` + Title string `json:"title"` // Weekdays Required, and only allowed, for a weekly schedule. Weekdays *[]Weekday `json:"weekdays,omitempty"` - Workflow *string `json:"workflow,omitempty"` + Workflow string `json:"workflow"` } // SessionCreate defines model for SessionCreate. @@ -4829,359 +4821,358 @@ func HandlerWithOptions(si ServerInterface, options StdHTTPServerOptions) http.H // const string: with thousands of chunks the chained `+` fold is several // times slower for the Go compiler than parsing a slice literal. var swaggerSpec = []string{ - "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", - "iEyh7ecrYTUicRMmooABvgNm8qtRUn/48P8PAA==", + "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", } // decodeSpec returns the embedded OpenAPI spec as raw JSON bytes, diff --git a/internal/store/migrateschedules.go b/internal/store/migrateschedules.go new file mode 100644 index 0000000..72f36b1 --- /dev/null +++ b/internal/store/migrateschedules.go @@ -0,0 +1,55 @@ +package store + +import ( + "context" + "database/sql" + "fmt" + + "g.fc.run/ai/byre/internal/api" +) + +func migrateScheduleWorkflows(tx *sql.Tx, _ string) error { + rows, err := tx.Query(`SELECT id, title, model, prompt FROM schedules WHERE workflow = ''`) + if err != nil { + return err + } + type row struct{ id, title, model, prompt string } + all := []row{} + for rows.Next() { + r := row{} + err = rows.Scan(&r.id, &r.title, &r.model, &r.prompt) + if err != nil { + rows.Close() + return err + } + all = append(all, r) + } + rows.Close() + err = rows.Err() + if err != nil { + return err + } + + ctx := context.Background() + for _, r := range all { + def := api.WorkflowDefinition{ + Description: r.title, + Steps: []api.WorkflowStep{{Stage: r.title, Model: r.model, Prompt: r.prompt}}, + } + id, err := insertDefinition(ctx, tx, def) + if err != nil { + return fmt.Errorf("schedule %s: %w", r.id, err) + } + _, err = tx.Exec(`INSERT INTO workflows (name, definition_id) VALUES (?, ?)`, r.title, id) + if err != nil { + return fmt.Errorf("schedule %s: workflow %q: %w", r.id, r.title, err) + } + _, err = tx.Exec(`UPDATE schedules SET workflow = ?, prompt = '' WHERE id = ?`, r.title, r.id) + if err != nil { + return err + } + } + + _, err = tx.Exec(`ALTER TABLE schedules DROP COLUMN model`) + return err +} diff --git a/internal/store/schedule.go b/internal/store/schedule.go index b2e9dfa..8af587b 100644 --- a/internal/store/schedule.go +++ b/internal/store/schedule.go @@ -13,7 +13,7 @@ import ( "g.fc.run/ai/byre/internal/schedule" ) -const scheduleColumns = `id, project_id, owner, title, every, hour, minute, day_of_month, prompt, model, workflow, next_run_at` +const scheduleColumns = `id, project_id, owner, title, every, hour, minute, day_of_month, prompt, workflow, next_run_at` func querySchedules(ctx context.Context, q querier, where string, args ...any) ([]api.Schedule, error) { rows, err := q.QueryContext(ctx, `SELECT `+scheduleColumns+` FROM schedules `+where+` ORDER BY next_run_at, id`, args...) @@ -24,7 +24,7 @@ func querySchedules(ctx context.Context, q querier, where string, args ...any) ( for rows.Next() { sc := api.Schedule{Weekdays: []api.Weekday{}} next := "" - err = rows.Scan(&sc.Id, &sc.ProjectId, &sc.Owner, &sc.Title, &sc.Every, &sc.Hour, &sc.Minute, &sc.DayOfMonth, &sc.Prompt, &sc.Model, &sc.Workflow, &next) + err = rows.Scan(&sc.Id, &sc.ProjectId, &sc.Owner, &sc.Title, &sc.Every, &sc.Hour, &sc.Minute, &sc.DayOfMonth, &sc.Prompt, &sc.Workflow, &next) if err != nil { rows.Close() return nil, err @@ -95,14 +95,14 @@ func (s *Store) SaveSchedule(ctx context.Context, sc api.Schedule, actor string) err := s.write(ctx, func(tx *sql.Tx, emit emitFunc) error { if sc.Id == "" { sc.Id = ids.New(ids.Schedule) - _, err := tx.ExecContext(ctx, `INSERT INTO schedules (`+scheduleColumns+`, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, - sc.Id, sc.ProjectId, sc.Owner, sc.Title, string(sc.Every), sc.Hour, sc.Minute, sc.DayOfMonth, sc.Prompt, sc.Model, sc.Workflow, formatTime(sc.NextRun), now()) + _, err := tx.ExecContext(ctx, `INSERT INTO schedules (`+scheduleColumns+`, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, + sc.Id, sc.ProjectId, sc.Owner, sc.Title, string(sc.Every), sc.Hour, sc.Minute, sc.DayOfMonth, sc.Prompt, sc.Workflow, formatTime(sc.NextRun), now()) if err != nil { return err } } else { - _, err := tx.ExecContext(ctx, `UPDATE schedules SET title = ?, every = ?, hour = ?, minute = ?, day_of_month = ?, prompt = ?, model = ?, workflow = ?, next_run_at = ? WHERE id = ?`, - sc.Title, string(sc.Every), sc.Hour, sc.Minute, sc.DayOfMonth, sc.Prompt, sc.Model, sc.Workflow, formatTime(sc.NextRun), sc.Id) + _, err := tx.ExecContext(ctx, `UPDATE schedules SET title = ?, every = ?, hour = ?, minute = ?, day_of_month = ?, prompt = ?, workflow = ?, next_run_at = ? WHERE id = ?`, + sc.Title, string(sc.Every), sc.Hour, sc.Minute, sc.DayOfMonth, sc.Prompt, sc.Workflow, formatTime(sc.NextRun), sc.Id) if err != nil { return err } diff --git a/internal/store/store.go b/internal/store/store.go index 1ee120b..cf01b99 100644 --- a/internal/store/store.go +++ b/internal/store/store.go @@ -35,6 +35,7 @@ var goMigrations = map[string]func(tx *sql.Tx, dataDir string) error{ "078-normalize-workflow-definitions": migrateWorkflowDefinitions, "085-prefix-ids": migratePrefixIDs, "088-workflow-run-tasks": migrateRunTasks, + "100-schedule-workflows": migrateScheduleWorkflows, } func loadMigrations() ([]migration, error) { diff --git a/mac/Sources/Byre/Schedules.swift b/mac/Sources/Byre/Schedules.swift index dc79113..4a5efb7 100644 --- a/mac/Sources/Byre/Schedules.swift +++ b/mac/Sources/Byre/Schedules.swift @@ -85,7 +85,7 @@ struct ScheduleRows: View { .font(Fonts.font(11)) .foregroundStyle(Palette.muted) } - .help(sc.workflow.isEmpty ? "Runs one agent on \(sc.model)" : "Runs workflow \(sc.workflow)") + .help("Runs workflow \(sc.workflow)") } } .padding(.bottom, 8) @@ -102,12 +102,11 @@ private final class ScheduleDraft { var minute: Int var dayOfMonth: Int var workflow: String - var model: String var prompt: String var workflows: [String] = [] var failure = "" - init(_ sc: Schedule?, defaultModel: String) { + init(_ sc: Schedule?) { title = sc?.title ?? "" every = sc?.every ?? .week weekdays = Set(sc?.weekdays ?? [.mon]) @@ -115,12 +114,11 @@ private final class ScheduleDraft { minute = sc?.minute ?? 0 dayOfMonth = sc.map { $0.dayOfMonth == 0 ? 1 : $0.dayOfMonth } ?? 1 workflow = sc?.workflow ?? "" - model = sc.map { $0.model.isEmpty ? defaultModel : $0.model } ?? defaultModel prompt = sc?.prompt ?? "" } var valid: Bool { - !trimmed(title).isEmpty && (every != .week || !weekdays.isEmpty) && (!workflow.isEmpty || !trimmed(prompt).isEmpty) + !trimmed(title).isEmpty && (every != .week || !weekdays.isEmpty) && !workflow.isEmpty } var save: ScheduleSave { @@ -132,17 +130,19 @@ private final class ScheduleDraft { minute: minute, dayOfMonth: every == .month ? dayOfMonth : nil, prompt: prompt, - model: workflow.isEmpty ? model : nil, - workflow: workflow.isEmpty ? nil : workflow + workflow: workflow ) } } @MainActor func editSchedule(_ project: Project, _ existing: Schedule?, _ store: Store, _ overlays: Overlays) async { - let draft = ScheduleDraft(existing, defaultModel: store.defaultModel) + let draft = ScheduleDraft(existing) Task { draft.workflows = (try? await store.api.client.listWorkflows().ok.body.json.map(\.name)) ?? [] + if draft.workflow.isEmpty, let first = draft.workflows.first { + draft.workflow = first + } } while true { let buttons = existing == nil @@ -183,10 +183,10 @@ private struct ScheduleEditor: View { var body: some View { VStack(alignment: .leading, spacing: 12) { - Text("Schedule a task in \(project.name), started from \(project.defaultBranch). Times are the server's.") + Text("Schedule a workflow run in \(project.name), started from \(project.defaultBranch). Times are the server's.") .foregroundStyle(Palette.muted) .fixedSize(horizontal: false, vertical: true) - TextField("Task title", text: $draft.title) + TextField("Title", text: $draft.title) .modifier(FieldStyle()) HStack(alignment: .firstTextBaseline, spacing: 8) { Text("Every").foregroundStyle(Palette.muted) @@ -213,15 +213,11 @@ private struct ScheduleEditor: View { } } HStack(alignment: .firstTextBaseline, spacing: 8) { - Text("Run").foregroundStyle(Palette.muted) + Text("Run workflow").foregroundStyle(Palette.muted) let names = draft.workflow.isEmpty || draft.workflows.contains(draft.workflow) ? draft.workflows : [draft.workflow] + draft.workflows - ChoiceMenu(value: $draft.workflow, options: [("", "one agent")] + names.map { ($0, "workflow \($0)") }) - if draft.workflow.isEmpty { - Text("on").foregroundStyle(Palette.muted) - ModelPicker(model: $draft.model) - } + ChoiceMenu(value: $draft.workflow, options: names.map { ($0, $0) }) } - Text(draft.workflow.isEmpty ? "The agent's first message: a complete brief, since it sees nothing else." : "The workflow's brief, given to every stage (optional).") + Text("The workflow's brief, given to every stage (optional).") .foregroundStyle(Palette.muted) .fixedSize(horizontal: false, vertical: true) PromptEditor(text: $draft.prompt)