diff --git a/api/openapi.yaml b/api/openapi.yaml index da3fdbd..4f5e67e 100644 --- a/api/openapi.yaml +++ b/api/openapi.yaml @@ -389,7 +389,10 @@ paths: merge it (queued if it is mid-turn), and the subtask closes as merged once its branch is in the parent's HEAD at the end of one of the parent's turns (merging_into_parent is set until then). Refused while the subtask's turn is running or it is already merging into its parent. Either target is refused while the - task has active subtasks of its own. + task has active subtasks of its own. With after_review, nothing starts yet: the request is recorded + (merge_after_review is set) and made, as this caller and with this target, when the review of the + task's latest snapshot finishes with no findings, that snapshot is still the latest and no turn is + running; otherwise it is dropped with a transcript note. Refused (409) unless that review is running. requestBody: required: true content: @@ -404,9 +407,10 @@ paths: enum: [main, parent] x-enum-varnames: [MergeTargetMain, MergeTargetParent] description: "main (the default): squash onto the project's default branch. parent: merge into the parent task's branch; only for a subtask." + after_review: { type: boolean, description: "Merge once the running review of the latest snapshot finishes with no findings, instead of now." } responses: "202": - description: The merge was started or held. + description: The merge was started, held, or set to start after the review. content: application/json: schema: { $ref: "#/components/schemas/Task" } @@ -414,6 +418,20 @@ paths: "404": { $ref: "#/components/responses/Error" } "409": { $ref: "#/components/responses/Error" } + /api/tasks/{taskId}/merge-after-review: + parameters: + - { name: taskId, in: path, required: true, schema: { type: string } } + delete: + operationId: cancelMergeAfterReview + description: Withdraws a Merge with after_review that is still waiting for its review; nothing is merged. + responses: + "200": + description: The request was withdrawn. + content: + application/json: + schema: { $ref: "#/components/schemas/Task" } + "404": { $ref: "#/components/responses/Error" } + /api/tasks/{taskId}/merge-in: parameters: - { name: taskId, in: path, required: true, schema: { type: string } } @@ -1029,7 +1047,7 @@ components: Task: type: object - required: [id, project_id, title, merge_title, branch, worktree_path, base_ref, port_base, color, status, created_by, created_at, state, merging, discarding, merging_into_parent, summary_seq] + required: [id, project_id, title, merge_title, branch, worktree_path, base_ref, port_base, color, status, created_by, created_at, state, merging, discarding, merging_into_parent, merge_after_review, summary_seq] properties: id: { type: string } project_id: { type: string } @@ -1064,6 +1082,7 @@ components: discarding: { type: boolean, description: "Whether a Discard was started and the task isn't closed yet: its summary turn is waiting for the running turn, running, or done and the task is being removed." } parent_task_id: { type: string, description: "The task whose agent created this one as its subtask; absent for other tasks." } merging_into_parent: { type: boolean, description: "Whether a merge of this subtask into its parent was requested and the parent hasn't merged it yet." } + merge_after_review: { type: boolean, description: "Whether a Merge with after_review is waiting for the running review of the latest snapshot to finish." } summary_seq: { type: integer, format: int64, description: "The seq of the task's latest turn.ended event with summary: true; 0 when it has none." } Todo: diff --git a/docs/operations.md b/docs/operations.md index 4abb9d8..e75d24f 100644 --- a/docs/operations.md +++ b/docs/operations.md @@ -30,7 +30,7 @@ Every task worktree is made by `createTask` (`internal/agents/tasks.go`): new ta ## Closing a task -A task ends `merged` or `discarded`; either way its sessions are stopped, its snapshot refs, worktree and branch are removed, its `open` inbox items become `dismissed` (resolved by whoever closed it), and its record, summary and events remain. `GET /api/tasks/{id}/unmerged` reports what would be lost or merged: commits on the branch that aren't on the default branch, and files, lines and uncommitted paths that differ from the merge base. The UI's Merge and Discard buttons each ask a confirmation, opened just below the button like the task picker's switcher (centred when ⌘S opens Merge's from a tab without the button), and are disabled while the task's session is `running`. Merge is also disabled until `unmerged` reports a commit or a changed file; the transcript fetches it when the task is opened and again shortly after each tool result or turn end. Merge's confirmation (`confirmMerge` in `web/src/task.ts`) is kept brief: the commit title as text with a ✎ button that swaps in an input, a collapsed "N co-authors" line holding the trailers, and one warning line for each thing worth stopping for. Those are the latest snapshot's review still running, failed, missing or with findings that weren't ignored (counted by severity); the task's open inbox questions, which merging dismisses; the worktree differing from the latest snapshot (`changes?since=` its commit), or no snapshot at all; and "Review status unavailable" when those fetches fail. Earlier snapshots' reviews aren't mentioned. Warnings never block Merge. The review and question warnings link to the Reviews tab at that snapshot or the Inbox tab; following one closes the dialog and keeps the title in the page, so the next Merge opens with it. While open, the dialog refetches on the task's `snapshot.created` and `review.*` events and redraws on inbox changes. +A task ends `merged` or `discarded`; either way its sessions are stopped, its snapshot refs, worktree and branch are removed, its `open` inbox items become `dismissed` (resolved by whoever closed it), and its record, summary and events remain. `GET /api/tasks/{id}/unmerged` reports what would be lost or merged: commits on the branch that aren't on the default branch, and files, lines and uncommitted paths that differ from the merge base. The UI's Merge and Discard buttons each ask a confirmation, opened just below the button like the task picker's switcher (centred when ⌘S opens Merge's from a tab without the button), and are disabled while the task's session is `running`. Merge is also disabled until `unmerged` reports a commit or a changed file; the transcript fetches it when the task is opened and again shortly after each tool result or turn end. Merge's confirmation (`confirmMerge` in `web/src/task.ts`) is kept brief: the commit title as text with a ✎ button that swaps in an input, a collapsed "N co-authors" line holding the trailers, and one warning line for each thing worth stopping for. Those are the latest snapshot's review still running, failed, missing or with findings that weren't ignored (counted by severity); the task's open inbox questions, which merging dismisses; the worktree differing from the latest snapshot (`changes?since=` its commit), or no snapshot at all; and "Review status unavailable" when those fetches fail. Earlier snapshots' reviews aren't mentioned. Warnings never block Merge. When the latest snapshot's review is running as the dialog opens, its buttons are Cancel, **Merge now** and **After review**, the default (Enter picks it); otherwise Cancel and **Merge**. The buttons are chosen once at opening, so a review that finishes while the dialog is open leaves **After review** there and choosing it is refused. The review and question warnings link to the Reviews tab at that snapshot or the Inbox tab; following one closes the dialog and keeps the title in the page, so the next Merge opens with it. While open, the dialog refetches on the task's `snapshot.created` and `review.*` events and redraws on inbox changes. A task's summary is what its agent writes, before the task closes, about the whole task: what it set out to do, what was built or tried, the key decisions and why, and what was left out. The agent sets it with the `set_task_summary` MCP tool (`internal/agents/summary.go`), any time while the task is active; each call replaces `tasks.summary` and records a `task.summary` event carrying it, which the transcript shows as a note. The Merge turn's prompt and the discard turn's prompt (`summaryRequest`) both ask for it. Turn summaries don't stand in for it: each covers only its own turn, and a merged task's last one is always the Merge turn's. Tasks closed before the column existed have none. `sqlite3 byre.db "SELECT id, status, summary FROM tasks WHERE status != 'active' ORDER BY closed_at DESC LIMIT 5"` shows recent ones. @@ -80,6 +80,8 @@ git's network commands (`git fetch` and `git push`, through `runNetwork` in `int One merge runs per project at a time. The Manager keeps, per project, a lock and the task holding that project's merge in memory (`projectMerge` in `internal/agents/mergein.go`, in `Manager.merges`), from just before the fetch until the merge closes the task, fails, or is abandoned as above, or the task is discarded; on startup it is rebuilt from the active tasks with `merging_by` set. Starting a merge holds only its project's lock through the fetch, so a stalled remote delays merges in that project alone, while Merge requests and held-merge starts in the same project wait behind it and then see its holder. Merge on another task of that project while one is held doesn't fetch or start a turn: it records the request in `tasks.merge_queued_by` and `merge_queued_at` (`merge_queued_at` on the Task), emits `task.merge_queued` (a transcript note), and returns the task with 202. A second Merge on a held or merging task is a 409. Whenever a project's merge is released, any task turn in it ends, and on startup, byre starts the oldest held merge in the project whose task session is not `running`: it clears the request (emitting `task.merge_unqueued`, not drawn) and goes through the same fetch and turn as a direct Merge by the user who asked, so it merges in what the earlier merge pushed. If that start fails (the fetch, or the user has no git identity), byre files the error in the task's inbox and tries the next held merge. The Merge button reads **Merge held**, disabled, while the task has `merge_queued_at`; discarding the task drops the request. `sqlite3 byre.db "SELECT id, merge_queued_by, merge_queued_at FROM tasks WHERE merge_queued_by != ''"` lists held merges. +`POST /api/tasks/{id}/merge` with `after_review: true` (the dialog's **After review**) starts nothing (`MergeAfterReview` in `internal/agents/afterreview.go`). It checks what the chosen target's Merge would (git identity and title for `main`, a parent for `parent`, no subtasks, not already merging, held or merging into the parent), stores the title like Merge does, and records the requesting user, the running review of the latest snapshot and the target in `tasks.merge_after_review_by`, `merge_after_review_id` and `merge_after_review_target` (`merge_after_review` on the Task; a `task.merge_after_review` event, drawn as a note). It is a 409 when that review isn't running. Asking again replaces the request. Whenever a review finishes (submitted, failed, interrupted, or failed by a restart or the task closing), `reviewFinished` takes the request if it names that review (emitting `task.merge_after_review_ended`, not drawn) and makes the merge as that user, through the same `Merge` or `MergeIntoParent` as a direct request, when the review is `done` with no findings, its snapshot is still the latest, the task is active and not being discarded, and no turn is running. Otherwise, or when that merge is refused, it drops the request with a `task.merge_after_review_dropped` event carrying the reason, drawn as a note. On startup, `recoverMergeAfterReviews` runs the same check for every request whose review is no longer `running`, so one left by a restart between the review finishing and its request being taken still merges or is dropped. A direct Merge (either target) clears the request; so do Discard and closing the task. `DELETE /api/tasks/{id}/merge-after-review` withdraws it (404 when none is waiting), emitting `task.merge_after_review_cancelled`, drawn as a note naming who cancelled. The transcript's `task.merge_after_review` note carries a **Cancel** button that calls it; only the last such note in the transcript shows the button, and only while the task has `merge_after_review` (`syncMergeAfterReview` in `web/src/task.ts`, rerun on each render and on every tasks update). The Merge button reads **Merge after review**, still enabled so the dialog can merge now, and the task state label is **Merge after review**. `sqlite3 byre.db "SELECT id, merge_after_review_by, merge_after_review_id FROM tasks WHERE merge_after_review_by != ''"` lists them. + ## Subtasks A task's agent starts a subtask with the `create_subtask` MCP tool (`internal/agents/subtasks.go`): `title`, `prompt` and optional `model` (default: the caller's session model; `gpt-*` runs on Codex). It is a real task, with its own branch, worktree, port block, snapshots and reviews, made by `createTask` from the parent worktree's `HEAD` (the parent's last end-of-turn commit), with `tasks.parent_task_id` (`parent_task_id` on the Task) naming the parent. Its session is created by the caller's session creator, so commits use that user's git identity, and gets `prompt` as its first message (actor `agent`). A fork of a subtask is a subtask of the same parent. `Store.CreateTask` refuses a subtask (409, and the new worktree is removed) unless, in the same transaction, the parent is active and not being discarded, and `Store.RequestDiscard` refuses a task that has active subtasks or is merging into its parent in the transaction that starts the discard, so a parent's discard and its subtasks never overlap. The lead's `create_task`, `POST /api/projects/{id}/tasks` and `start_todo` make top-level tasks. `sqlite3 byre.db "SELECT id, title, parent_task_id, parent_merge_by FROM tasks WHERE parent_task_id != '' AND status = 'active'"` lists active subtasks. @@ -184,7 +186,7 @@ Messages byre itself sends an agent (actor `byre`: the restart notice, Sync and The task switcher (⌘K, or the project ▸ task picker centred in the right pane's top row) lists active tasks with their task state and open inbox item count (the Project tab shows the same state), live while it is open. Tasks with inbox items come first; within each group, the task least recently visited in this browser comes first (never-visited tasks before all others, the right pane's own task after all others, ties in the server's order: projects by name, tasks newest first), so ⌘K Enter repeated cycles through the tasks. Visit times are kept in the browser's localStorage under `byre.visits`, stamped when a task is selected and again when it is left. After the tasks come the projects, one row each; picking one points the right pane at the project with no task, on the Project tab. Typing filters both and adds a last row that creates a task with the typed text as its title, in the right pane's project (the first project when there is none); Enter picks the highlighted row. Text before a first colon that starts at least one project's name (ignoring case, no spaces) picks those projects instead: `by: fix` lists only their tasks whose titles contain "fix", their project rows that match, and one row per project creating the task titled "fix" there. When no project name starts with it, the whole text is the title, so "Fix: login" stays as typed. A create row shows `models[0]` from `web/src/task.ts`, the model the composer offers first for the new task's first message; the task itself starts with no session. Picking a task points the right pane at it on the Inbox tab when it has open inbox items, otherwise on the Transcript tab, scrolled to its latest summary when that is unread (see below and "Lead agent"). -**Task state.** The switcher and the Project tab show one label per task in place of its raw session state, the first that applies (`taskState` in `web/src/state.ts`), with a dot and a tooltip saying why: **Needs your answer** (an open `question` inbox item), **Merging** (`merging` or `merging_into_parent`), **Merge held** (`merge_queued_at`), **Error** (an open `session_error` or `rate_limited` inbox item), **Working** (the task's `state` is `running`, `review_pending`, `reviewing` or `discarding`; see "Task state in the store"), **Idle** (anything else, including no session). The Project tab, in its task list and TODO items, draws a spinner in place of the dot for **Working** and **Merging**. The label follows the tasks and inbox state the page already holds, so it needs no extra fetch. +**Task state.** The switcher and the Project tab show one label per task in place of its raw session state, the first that applies (`taskState` in `web/src/state.ts`), with a dot and a tooltip saying why: **Needs your answer** (an open `question` inbox item), **Merging** (`merging` or `merging_into_parent`), **Merge held** (`merge_queued_at`), **Merge after review** (`merge_after_review`), **Error** (an open `session_error` or `rate_limited` inbox item), **Working** (the task's `state` is `running`, `review_pending`, `reviewing` or `discarding`; see "Task state in the store"), **Idle** (anything else, including no session). The Project tab, in its task list and TODO items, draws a spinner in place of the dot for **Working** and **Merging**. The label follows the tasks and inbox state the page already holds, so it needs no extra fetch. **Unread summaries.** A Task's `summary_seq` is the seq of its latest `turn.ended` event with `summary: true` (0 for none), read through the partial index `events_summary`, so the page knows of unread summaries without loading transcripts; a `turn.ended` with `summary: true` on the global stream raises it in the page. The switcher's and the Project tab's task rows show a **new summary** state label while `summary_seq` is above the seq the user has read (`unreadSummary` in `web/src/state.ts`), except on tasks of a workflow run, which close too soon for their summaries to be read. Picking such a row (in the switcher, only when the task has no open inbox items) points the right pane at the task's Transcript and scrolls it to that turn's final message (`state.jump`, applied by the transcript once the event is drawn). Read state is per user on the server: `summary_reads` holds one highest-read seq per user and task. `GET /api/me/summary-reads` returns the caller's, for active tasks, as a map from task id to seq, and `PUT /api/tasks/{taskId}/summary-read` with `{seq}` raises it, emitting `summary.read` (`task_id`, `seq`) owned by the user only when it went up, so every page the user has open clears the label. A summary counts as read only when the summary turn's end line (`.turn-end[data-seq]`) is inside a mounted transcript's visible area while the page is visible (an `IntersectionObserver` in `mountChat`), so selecting the task on another tab leaves it unread. `sqlite3 byre.db 'SELECT * FROM summary_reads'` shows the read seqs. @@ -200,7 +202,7 @@ Each user has one long-running lead agent, shown in the left pane. It is not tie - **Signals.** Every published event goes through `Manager.Observe`. These become signals in `lead_inputs` for every user who has a lead session: `inbox.created` (a question with its choices and recommendation, an error or rate limit), `inbox.updated` when a human answered a question or error (a question's signal also carries its text and the agent's recommendation, so the lead sees where the human departed from it), `task.created` (naming the TODO item it was started from, or a subtask's parent, if any), `task.merge_started` (" is merging, started by ."), `task.merged`, `task.discarded`, `turn.ended` with `summary: true` (" finished a turn:" with its `result` cut to 1500 characters), `task.workflow_stage` (" started stage "" of workflow "".") and `task.workflow_finished` (" finished workflow "":" with its output cut to 1500 characters), `review.started` (" started a review of snapshot ."), `review.finished` (" review of snapshot :" with the review's summary, `change` and findings, or why it failed or was skipped; `reviewLine` in `internal/agents/review.go`), `user.message` on a task from a human (see "Pane lock"), and `task.state` (" state: → .", or " state: ." for a new task; see "Task state in the store"). The store hands `Observe` all of one transaction's events together, and they become one signal, its `task.state` lines first, so a turn's summary always arrives with the state its turn end left the task in. The human switching the right pane is not a signal. A signal caused by the lead itself (actor ` (lead)`) is skipped, as is the update from an answer it gave. A task's `task.created` event carries the actor that created it, separately from its `created_by` login: tasks the lead creates with `create_task` or `start_todo` keep the human's login as `created_by` but have actor ` (lead)`. Whenever the lead is idle, byre sends the oldest held message from the human as its own turn, or else every held signal as one `byre` message headed "Signals since your last turn (n)", followed by "Tasks now:" with the `list_tasks` text and a line saying what the lead's right pane shows (task or project, and selected tab) and whether the human is working in it (`leadStateText` in `internal/agents/lead.go`). If collecting that fails, for example because a project's repository is gone, the batch is still sent, ending instead with "The task list and right pane state are unavailable:" and the error, which is also logged as `lead state`. Its guidance tells it not to respond to the human's own actions, and to make its final message exactly `NO_REPLY` when a batch needs nothing from it. A transcript (`quietReply` in `web/src/task.ts`) never draws an `agent.message` whose last line is `NO_REPLY` (the model sometimes writes a sentence before it), and hides the live partial message while its text is still a prefix of it; the partial message starts hidden and is first shown by its 100ms render, so an empty one never takes up space. A lead turn that byre starts without a handoff (a signal batch or a handoff continuation) is held (`ctx.held`): its `byre` message is never drawn, and the turn isn't opened, so the scanner stays off, and its partial message stays hidden, until the lead draws something else, such as a tool call, thinking or a real message. When such a turn ends in `NO_REPLY`, everything it drew is removed with it (tool calls, thinking), so the transcript keeps nothing of it; a turn that ends in a real message keeps all of it. - **Tools.** `list_tasks` (each project's active tasks with their state, each subtask noting its parent, then a line listing the titles of its `TODO.md` items on the default branch that no active task was started from), `read_transcript` (a task's events in brief, the last `limit` or those after `after_seq`; closed tasks too), `search_closed_tasks` (see "Closing a task"), `read_inbox`, `answer_question` (an `option`, `other` or `dismiss` response recorded as the user, through the same checks as `POST /api/inbox/responses`), `send_message` (starts the task's agent if it has none; refused while it is mid-turn), `create_task` and `start_todo` (each with an optional `workflow` to freeze and run), `interrupt`, `compact_task`, `merge_task` (optional `target`: `main`, or `parent` for a subtask, see "Subtasks"), `discard_task`, `show`, `compact_self`, the note tools (see "Notes") and the workflow tools (see "Workflows"). The lead also has Claude Code's own tools and reads worktrees by path. Messages it sends task agents have actor ` (lead)`, so they don't make the user a participant; tasks, merges, discards and answers are done as the user. Its guidance says to answer a question only when the answer is clear or the human gave it, and to merge or discard only when the human asks. - **Focus.** `users.focus` holds what the user's right pane shows: `project_id`, `task_id`, `tabs` (the tabs put first, in order) and `tab` (the selected one). With a `task_id`, `project_id` is always that task's project, filled in by the server; with only a `project_id`, the pane shows that project with no task, which only the Project tab has anything for. `GET /api/me/focus` reads it; `PUT /api/me/focus` and the lead's `show` set it, refusing an unknown tab, a task that isn't active or an unknown project, and record a `focus.updated` event owned by the user. The page applies the focus on load and on every `focus.updated` it didn't cause itself; the human's own changes (⌘K, the right pane's task picker, clicking a tab, a task link, a notification) are sent with `PUT /api/me/focus`. The URL follows the focus: `#/task/`, `#/project/`, or `#/` for neither. -- **Pane lock.** A `show` of what the pane already shows (the same task, or the same project with no task, on the same selected tab; `sameView`) tells the lead so and applies only its `tabs` order, whether or not the human is in the pane, so the human's selected tab stays selected. Otherwise, while the human is working in the right pane, the lead's `show` is refused with an error telling it to say in chat what it would have shown, unless its selected tab is `project` (the fallback the lead shows when nothing needs the human, so the human being there doesn't hold it) or the pane is finished (`Manager.paneFinished`): its task is merged, discarded or merging (`merging_by` or `finalizing` set), or its selected tab is `inbox` and the task has no open items, or the human is waiting on the task's agent (`Manager.paneWaiting`): the selected tab is `transcript`, the task's implementer session is running, the page reports no unsent text in the pane, and either the `user.message` that started the running turn came from the user after the pane last moved, or the pane last moved 10 seconds ago or more (`watchHold`). The pane's last move is the last `PUT /api/me/focus` or `show` that set it (`Manager.paneMoved`, in memory, so a restart counts as long ago). For the user's own message, unsent text reported before the turn started doesn't count, since the page's report of the composer emptying on send can arrive after the message does. A `user.message` on a task from a human (not `byre`, an agent or a lead) signals every lead " sent a message; its agent is working on it.", and the sender's own lead, when its pane shows that task and is waiting that way, also gets "Your right pane is free: the human is waiting on 's agent." Each `PUT /api/me/focus` from the user starts a 10-second timer (`endWatchHold`); when it fires, if the pane hasn't moved since, the page still reports the human in it, the user hasn't messaged the task since the move (that already freed it, above), and the pane is waiting that way, the lead gets the signal "Your right pane is free: the human has watched 's agent work for 10 seconds without typing." The lead's own `show` starts no timer. When an `inbox.updated`, `task.merge_started`, `task.merged` or `task.discarded` event leaves a user's focused task finished that way, that user's signal for it gets a line "Your right pane is free: has nothing left in its inbox." (or "is merging."/"is merged."/"is discarded."), even when the event itself makes no signal, such as a dismissed error; `inbox.updated` on a task that is no longer active adds none. The lead's guidance tells it to show the next thing that needs the human on that line, or, when nothing does, the project's Project tab with a short status in chat: one line per active task, then up to three TODO items it would start next, each with a reason, starting one only when the human picks it. It writes each item as a link to `#/todo//`; Markdown views draw that (`web/src/todolink.ts`) as the title followed by small accent-coloured `start · discuss` text links (borderless buttons) that call `POST /api/projects/{id}/todo/tasks` with the first model, as the Project tab's do, or, once an active task was started from that item, the task's colour, dot and state, linking to it. A chat view refills them whenever its transcript grows or tasks or sessions change. When that status says nothing new since its last one, it replies `NO_REPLY` instead. The page sends `PUT /api/me/pane-focus` with `focused` and `drafting` whenever either changes: `focused` is true while the browser window has focus and the focused element is inside the right pane, and `drafting` while any textarea in the right pane (other than xterm's helper) holds non-blank text, checked on focus changes, `input` and `submit`. The pane itself is focusable (`tabIndex` -1), so a click anywhere in it counts, not only on inputs and buttons; a re-render that removes the focused element hands focus back to the pane rather than counting as leaving. The page sends false on `pagehide` (with `keepalive`) and resends true when its event stream reconnects. byre keeps both flags and the time of the last report in memory per user (`Manager.paneFocus`, `Manager.paneReported`), so they start false after a restart until the page resends them. +- **Pane lock.** A `show` of what the pane already shows (the same task, or the same project with no task, on the same selected tab; `sameView`) tells the lead so and applies only its `tabs` order, whether or not the human is in the pane, so the human's selected tab stays selected. Otherwise, while the human is working in the right pane, the lead's `show` is refused with an error telling it to say in chat what it would have shown, unless its selected tab is `project` (the fallback the lead shows when nothing needs the human, so the human being there doesn't hold it) or the pane is finished (`Manager.paneFinished`): its task is merged, discarded or merging (`merging_by` or `finalizing` set), or its selected tab is `inbox` and the task has no open items, or the human is waiting on the task's agent (`Manager.paneWaiting`): the selected tab is `transcript`, the task's implementer session is running, the page reports no unsent text in the pane, and either the `user.message` that started the running turn came from the user after the pane last moved, or the pane last moved 10 seconds ago or more (`watchHold`). The pane's last move is the last `PUT /api/me/focus` or `show` that set it (`Manager.paneMoved`, in memory, so a restart counts as long ago). For the user's own message, unsent text reported before the turn started doesn't count, since the page's report of the composer emptying on send can arrive after the message does. A `user.message` on a task from a human (not `byre`, an agent or a lead) signals every lead " sent a message; its agent is working on it.", and the sender's own lead, when its pane shows that task and is waiting that way, also gets "Your right pane is free: the human is waiting on 's agent." Each `PUT /api/me/focus` from the user starts a 10-second timer (`endWatchHold`); when it fires, if the pane hasn't moved since, the page still reports the human in it, the user hasn't messaged the task since the move (that already freed it, above), and the pane is waiting that way, the lead gets the signal "Your right pane is free: the human has watched 's agent work for 10 seconds without typing." The lead's own `show` starts no timer. When an `inbox.updated`, `task.merge_started`, `task.merged` or `task.discarded` event leaves a user's focused task finished that way, that user's signal for it gets a line "Your right pane is free: has nothing left in its inbox." (or "is merging."/"is merged."/"is discarded."), even when the event itself makes no signal, such as a dismissed error; `inbox.updated` on a task that is no longer active adds none. The lead's guidance tells it to show the next thing that needs the human on that line, or, when nothing does, the project's Project tab with a short status in chat: one line per active task, then up to three TODO items it would start next, each with a reason, starting one only when the human picks it. It writes each item as a link to `#/todo//`; Markdown views draw that (`web/src/todolink.ts`) as the title followed by small `start` and `discuss` buttons, styled like a snapshot row's, that call `POST /api/projects/{id}/todo/tasks` with the first model, as the Project tab's do, or, once an active task was started from that item, the task's colour, dot and state, linking to it. A chat view refills them whenever its transcript grows or tasks or sessions change. When that status says nothing new since its last one, it replies `NO_REPLY` instead. The page sends `PUT /api/me/pane-focus` with `focused` and `drafting` whenever either changes: `focused` is true while the browser window has focus and the focused element is inside the right pane, and `drafting` while any textarea in the right pane (other than xterm's helper) holds non-blank text, checked on focus changes, `input` and `submit`. The pane itself is focusable (`tabIndex` -1), so a click anywhere in it counts, not only on inputs and buttons; a re-render that removes the focused element hands focus back to the pane rather than counting as leaving. The page sends false on `pagehide` (with `keepalive`) and resends true when its event stream reconnects. byre keeps both flags and the time of the last report in memory per user (`Manager.paneFocus`, `Manager.paneReported`), so they start false after a restart until the page resends them. - **Move hold.** Each `PUT /api/me/focus` from the user (switching task or tab, by any means: the switcher, a tab, a link, a notification, or the page's own switch to Inbox when a question arrives) records the time in `Manager.humanMoved`, and for 10 seconds after it (`moveHold`) every `show` that would change the view is refused, whatever the pane lock above would allow, with an error giving how long ago the move was. A `show` of what the pane already shows still applies its tab order. When the 10 seconds pass without another move by the user (`endMoveHold`, on a timer), byre clears it and sends the lead the signal "The move hold is over: …", every time, whether or not a `show` was refused; its guidance tells it to show what it held back if the pane's other rules allow, or reply `NO_REPLY`. It is in memory, so a restart clears it. - **Start hold.** Start on a TODO item in the Project tab leaves the pane where it is. When the user starts one themselves (`StartTodo` with the user as actor, not the lead's `start_todo`), byre records the time in `Manager.startedTodo` for them, and for 10 seconds after it (`startHold`), while the pane's selected tab is `project`, every `show` that would change the view is refused, focused or not, with an error telling the lead the human is likely to start more. The user's own `PUT /api/me/focus` (switching task or tab) or a message to the lead clears it. The refusal and the `show` tool's description both tell the lead the hold lasts 10 seconds. When the 10 seconds pass without it being cleared or restarted by another Start (`endStartHold`, on a timer), byre clears it and, if the pane's selected tab is still `project`, sends the lead the signal "The start hold is over: …" so it can show what it held back; its guidance tells it to reply `NO_REPLY` when nothing was. It is in memory, so a restart clears it. - **Compaction.** The pane's **Compact** button asks the lead for a handoff (`leadHandoffPrompt`). The lead can't see its own context size, so the first time one of its turns ends (other than a handoff or a `compact_self` turn) with the latest `session.context` `used` at a quarter of its `window` or more, byre holds a signal for it giving the percentage and asking it to call `compact_self` at the next logical point (`warnLeadContext` in `internal/agents/lead.go`); it is sent once per live process, so a byre restart can send it again once the window is known. The lead calls `compact_self`; when that turn ends normally, byre sends the same request. The handoff turn ends the session, and a new lead session starts from `leadHandoffPreamble` plus the handoff; held input follows once that turn ends. diff --git a/internal/agents/afterreview.go b/internal/agents/afterreview.go new file mode 100644 index 0000000..3ebc42a --- /dev/null +++ b/internal/agents/afterreview.go @@ -0,0 +1,177 @@ +package agents + +import ( + "context" + "errors" + "fmt" + "log/slog" + + "g.fc.run/misc/byre/internal/api" + "g.fc.run/misc/byre/internal/store" +) + +func (m *Manager) MergeAfterReview(ctx context.Context, task api.Task, user api.User, target api.MergeTaskJSONBodyTarget, title string) (api.Task, error) { + if task.MergeQueuedAt != nil || task.Merging { + return api.Task{}, fmt.Errorf("%w: task %s is already merging or waiting to merge", ErrConflict, task.Id) + } + if task.MergingIntoParent { + return api.Task{}, fmt.Errorf("%w: task %s is merging into its parent", ErrConflict, task.Id) + } + err := m.checkNoSubtasks(ctx, task) + if err != nil { + return api.Task{}, err + } + if target == api.MergeTargetParent && task.ParentTaskId == nil { + return api.Task{}, fmt.Errorf("%w: task %s is not a subtask", ErrInvalid, task.Id) + } + if target == api.MergeTargetMain { + if user.GitName == "" || user.GitEmail == "" { + return api.Task{}, ErrNoGitIdentity + } + title, err = cleanMergeTitle(title) + if err != nil { + return api.Task{}, err + } + } + + snaps, err := m.store.ListSnapshots(ctx, task.Id) + if err != nil { + return api.Task{}, err + } + if len(snaps) == 0 { + return api.Task{}, fmt.Errorf("%w: task %s has no snapshot under review", ErrConflict, task.Id) + } + latest := snaps[len(snaps)-1] + reviews, err := m.store.ListReviews(ctx, task.Id) + if err != nil { + return api.Task{}, err + } + reviewID := "" + for _, r := range reviews { + if r.SnapshotN == latest.N && r.State == api.ReviewStateRunning { + reviewID = r.Id + } + } + if reviewID == "" { + return api.Task{}, fmt.Errorf("%w: the review of snapshot %d of task %s isn't running", ErrConflict, latest.N, task.Id) + } + + if target == api.MergeTargetMain && title != task.MergeTitle { + err = m.storeMergeTitle(ctx, task.Id, title, user.Login) + if err != nil { + return api.Task{}, err + } + } + err = m.store.SetMergeAfterReview(ctx, task.Id, store.MergeAfterReview{By: user.Login, ReviewID: reviewID, Target: target}) + if errors.Is(err, store.ErrNotFound) { + return api.Task{}, fmt.Errorf("%w: task %s is closed, being discarded or merging, or its review has finished", ErrConflict, task.Id) + } + if err != nil { + return api.Task{}, err + } + return m.store.GetTask(ctx, task.Id) +} + +func (m *Manager) clearMergeAfterReview(ctx context.Context, taskID string) { + _, err := m.store.TakeMergeAfterReview(ctx, taskID, "") + if err != nil { + slog.Error("clear merge after review", "task", taskID, "err", err) + } +} + +func (m *Manager) recoverMergeAfterReviews(ctx context.Context) { + ids, err := m.store.FinishedMergeAfterReviews(ctx) + if err != nil { + slog.Error("list merges after finished reviews", "err", err) + return + } + for _, id := range ids { + m.reviewFinished(id) + } +} + +func (m *Manager) reviewFinished(reviewID string) { + ctx := context.Background() + r, err := m.store.GetReview(ctx, reviewID) + if err != nil { + slog.Error("load finished review", "review", reviewID, "err", err) + return + } + mar, err := m.store.TakeMergeAfterReview(ctx, r.TaskId, r.Id) + if err != nil { + slog.Error("take merge after review", "task", r.TaskId, "err", err) + return + } + if mar.By == "" { + return + } + reason := m.startMergeAfterReview(ctx, r, mar) + if reason == "" { + slog.Info("merge after review started", "task", r.TaskId, "review", r.Id, "by", mar.By) + return + } + slog.Info("merge after review dropped", "task", r.TaskId, "review", r.Id, "reason", reason) + task, err := m.store.GetTask(ctx, r.TaskId) + if err != nil { + slog.Error("load task for dropped merge after review", "task", r.TaskId, "err", err) + return + } + err = m.store.AppendEvent(ctx, api.Event{Kind: "task.merge_after_review_dropped", ProjectId: &task.ProjectId, TaskId: &task.Id, Actor: "byre", Payload: map[string]any{"id": task.Id, "reason": reason}}) + if err != nil { + slog.Error("record dropped merge after review", "task", task.Id, "err", err) + } +} + +func (m *Manager) startMergeAfterReview(ctx context.Context, r api.Review, mar store.MergeAfterReview) string { + switch { + case r.State == api.ReviewStateFailed: + return "the review failed" + case r.State != api.ReviewStateDone: + return fmt.Sprintf("the review ended %s", r.State) + } + findings := []any{} + if r.Result != nil { + findings, _ = (*r.Result)["findings"].([]any) + } + switch len(findings) { + case 0: + case 1: + return "the review found 1 finding" + default: + return fmt.Sprintf("the review found %d findings", len(findings)) + } + task, project, err := m.activeTask(ctx, r.TaskId) + if err != nil { + return err.Error() + } + if task.Discarding { + return "the task is being discarded" + } + snaps, err := m.store.ListSnapshots(ctx, task.Id) + if err != nil { + return err.Error() + } + if len(snaps) == 0 || snaps[len(snaps)-1].N != r.SnapshotN { + return "a newer snapshot was taken" + } + sess, found, err := m.liveSession(ctx, task.Id) + if err != nil { + return err.Error() + } + if found && sess.State == api.AgentSessionStateRunning { + return "the agent is mid-turn" + } + user, err := m.store.GetUser(ctx, mar.By) + if err != nil { + return err.Error() + } + if mar.Target == api.MergeTargetParent { + _, err = m.MergeIntoParent(ctx, task, user) + } else { + _, err = m.Merge(ctx, task, project, user, task.MergeTitle) + } + if err != nil { + return err.Error() + } + return "" +} diff --git a/internal/agents/manager.go b/internal/agents/manager.go index 76e97e7..d11f045 100644 --- a/internal/agents/manager.go +++ b/internal/agents/manager.go @@ -378,6 +378,7 @@ func (m *Manager) Recover(ctx context.Context) error { go m.deliverAllLeads() go m.deliverAllQueued(context.Background()) go m.startHeldMerges(context.Background()) + go m.recoverMergeAfterReviews(context.Background()) return nil } diff --git a/internal/agents/mergein.go b/internal/agents/mergein.go index 70e4d39..7fa626f 100644 --- a/internal/agents/mergein.go +++ b/internal/agents/mergein.go @@ -96,6 +96,7 @@ func (m *Manager) Merge(ctx context.Context, task api.Task, project api.Project, return api.Task{}, err } } + m.clearMergeAfterReview(ctx, task.Id) return m.store.GetTask(ctx, task.Id) } diff --git a/internal/agents/review.go b/internal/agents/review.go index 61344ef..9abb72f 100644 --- a/internal/agents/review.go +++ b/internal/agents/review.go @@ -328,6 +328,7 @@ func (m *Manager) submitReview(ctx context.Context, l *live, raw json.RawMessage if len(findings) > 0 { go m.forwardFindings(l.taskID, l.reviewID) } + go m.reviewFinished(l.reviewID) return "Review recorded. End your turn now with one line.", nil } @@ -504,6 +505,7 @@ func (m *Manager) failReview(ctx context.Context, reviewID, reason string) { return } slog.Info("review failed", "review", reviewID, "reason", reason) + go m.reviewFinished(reviewID) } func (m *Manager) cancelReviews(ctx context.Context, task api.Task, project api.Project) { diff --git a/internal/agents/subtasks.go b/internal/agents/subtasks.go index 747c9eb..91f3618 100644 --- a/internal/agents/subtasks.go +++ b/internal/agents/subtasks.go @@ -343,6 +343,7 @@ func (m *Manager) MergeIntoParent(ctx context.Context, task api.Task, user api.U } return api.Task{}, err } + m.clearMergeAfterReview(ctx, task.Id) return m.store.GetTask(ctx, task.Id) } diff --git a/internal/api/api.gen.go b/internal/api/api.gen.go index 016c1b9..d3cb717 100644 --- a/internal/api/api.gen.go +++ b/internal/api/api.gen.go @@ -1076,6 +1076,9 @@ type Task struct { ForkedFrom *string `json:"forked_from,omitempty"` Id string `json:"id"` + // MergeAfterReview Whether a Merge with after_review is waiting for the running review of the latest snapshot to finish. + MergeAfterReview bool `json:"merge_after_review"` + // MergeCommit merged: the squash commit on the default branch; empty when there was nothing to merge. MergeCommit *string `json:"merge_commit,omitempty"` @@ -1353,6 +1356,9 @@ type GetTaskImageParams struct { // MergeTaskJSONBody defines parameters for MergeTask. type MergeTaskJSONBody struct { + // AfterReview Merge once the running review of the latest snapshot finishes with no findings, instead of now. + AfterReview *bool `json:"after_review,omitempty"` + // MergeTitle The squash commit's title: one line, at most 72 characters. Required for target main. MergeTitle *string `json:"merge_title,omitempty"` @@ -1537,6 +1543,9 @@ type ServerInterface interface { // (POST /api/tasks/{taskId}/merge) MergeTask(w http.ResponseWriter, r *http.Request, taskId string) + // (DELETE /api/tasks/{taskId}/merge-after-review) + CancelMergeAfterReview(w http.ResponseWriter, r *http.Request, taskId string) + // (POST /api/tasks/{taskId}/merge-in) MergeIn(w http.ResponseWriter, r *http.Request, taskId string) @@ -2771,6 +2780,32 @@ func (siw *ServerInterfaceWrapper) MergeTask(w http.ResponseWriter, r *http.Requ handler.ServeHTTP(w, r) } +// CancelMergeAfterReview operation middleware +func (siw *ServerInterfaceWrapper) CancelMergeAfterReview(w http.ResponseWriter, r *http.Request) { + + var err error + _ = err + + // ------------- Path parameter "taskId" ------------- + var taskId string + + err = runtime.BindStyledParameterWithOptions("simple", "taskId", r.PathValue("taskId"), &taskId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: "", ValueIsUnescaped: true}) + if err != nil { + siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "taskId", Err: err}) + return + } + + handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + siw.Handler.CancelMergeAfterReview(w, r, taskId) + })) + + for _, middleware := range siw.HandlerMiddlewares { + handler = middleware(handler) + } + + handler.ServeHTTP(w, r) +} + // MergeIn operation middleware func (siw *ServerInterfaceWrapper) MergeIn(w http.ResponseWriter, r *http.Request) { @@ -3359,6 +3394,7 @@ func HandlerWithOptions(si ServerInterface, options StdHTTPServerOptions) http.H m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/api/tasks/{taskId}/unmerged", wrapper.GetUnmerged) m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/api/tasks/{taskId}/co-authors", wrapper.GetCoAuthors) m.HandleFunc(http.MethodPost+" "+options.BaseURL+"/api/tasks/{taskId}/merge", wrapper.MergeTask) + m.HandleFunc(http.MethodDelete+" "+options.BaseURL+"/api/tasks/{taskId}/merge-after-review", wrapper.CancelMergeAfterReview) m.HandleFunc(http.MethodPost+" "+options.BaseURL+"/api/tasks/{taskId}/merge-in", wrapper.MergeIn) m.HandleFunc(http.MethodPost+" "+options.BaseURL+"/api/tasks/{taskId}/discard", wrapper.DiscardTask) m.HandleFunc(http.MethodGet+" "+options.BaseURL+"/api/tasks/{taskId}/events", wrapper.ListTaskEvents) @@ -3399,219 +3435,223 @@ 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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", - "9/mdKrl//Pj/AgAA//8=", + "7H1/cxu3kuBXQfGuStbuiHLey97dSnV/6NlO4r048VnKpfbeS2lBDkjiaQiMAYwoxuXvfoXuBgYzxJAj", + "2ZL9NvdPIg9ngEaj0ejf/WEy1+taK6GcnZx9mBhha62sgH+8MkYb/8dcKyeU83/yuq7knDup1enfrVb+", + "mZ2vxJr7v/6rEYvJ2eS/nLajnuKv9hRH+/jxYzEphZ0bWftBJmc4zXTif6B3/VAXS6HcW6PnwsK/a6Nr", + "YZxE0FaCV27l/+qOZV0zv2FrwZVlnLnGKCYtM41SUi0ZVyVTmllnBF8zcSuUYytuGTdG3oqSLbRhMMI1", + "Xzhhrq2Ya1XacybupBMljetWgtUImB98qZWYToqJUM16cvbXib6ZFAiHfwgfTn4rJm5bCwDQSLWcFJO7", + "E//ByS03iq/9ov46+QEW9bP/Dv+8pFHwX69orI/FpOLWXQP819ztYuHXlVAdMP37bGO0E4yzSirBnGbS", + "WULFpJgstFn7oSYld+LEybWYFBNt2MYPJR2zjhsnyunkTDVV1V/Ox2JSy9IDQs+lcmIpjP/BCmulVted", + "39vvrONOAGVZphWDbb/ET+Jk3dVdrQSjQY/8Cvz3GYActzdDk94KVSJp9376WEyMeN9II0q/Iwns7YDx", + "c1x0WEJ/V4pApO3m69nfxdx5ANJl7lL33AjuREl7m92anSWFb2bb7IoX2tzEEXvUIt2K0e8Lo9dnQDq4", + "xiPLZMn0Ah4BFbmVP0n+n/4TdiNEbQvG2VpYy5fwlL2oeFMK9kKXogjHEJ7rUtxNc9An0+8CeAFTHVm2", + "kMYSKTIjbLMW/jRKS8AGqijYvHGMOxYXXbBGlcIwzpTY0NvX7eaeMz6znhl4ILVbiTiUzUI7QFVrXYpq", + "F/x34n0jLPAP/8I5E+vabRNmElFdigVvKjdlF2F+plW1ZXYj3XwlLJsJtxFwIC3TG9V+CSPngdUbJcwu", + "VP4UVXopFdustBWsErxk3JMlolTaAKhHCmee+v1xC0czM5PRldidyIhbKTbCnDHO8O92GPbMCsHewdPj", + "851ZLKukdR60W9hpYQXTjUu5rVzXlVgL5YQ/j34RkyJOuct3U4YThygrf6LokpgUcCVWYjzfTg/zpR/9", + "NY648/xdnGLnpxftnF3e1bsrkx2BHdu3Hy2X6w7yna4qvbHMnzYgQKAe+Cvsy4ZbRhyFbaRbnbFl7U7+", + "iejMX6ieWcN5LvxFarZ0bnAo/1vLA9L9msNjQHIp7rIbtHM8d1eQDJ4QkywLNvfErNhsy2ZbI86ZNrAu", + "gJS5lfE48+8haTfKyc7CI5MBngWcxsJpw08zaO7dGL2bAg9fcmMgj8gtsr1H4Bx1OHqRXgnZ+8Q5Pl+t", + "SUjr3Sac0JZhWUKV114eyF/dcs2XmRMNj89YyR1nv7z7MUt7N1KV6SFbSFhTKReLSRjY/5MvDcgfHmUe", + "BYrXdqX97dmYKksea2HWPEcUNNgZe4NvMKsbMxdZ8Gqekx49kGfMiFqfGFFxJ28F829OGS2ZK/yL+TeZ", + "RCGLeNZGmxtnhL/xZlZXjROe+OI4IHDl2aaXmXcXs1icsaV0wDOBvA1Xy/xqAtb2yFjG7dnnfaKS34aD", + "chLsdo4u/1LpWYYiUZ+4xtc/DAszn1EAyi4vd3g7wN3vFL6U5pVyZru7YrlUGibp77PfYfwRZQHhvz9j", + "06V0+BiUFv8L8ldxN6886/MEaNmau/nKi+dwIZTSiLnTZsv4TN+KLr3NtK4EVx5Mf3Hl6UT+LoZOBWgL", + "8neg+tnWCRA24s5I5f7bt+1kqfi/XVdS3STzJZAEAuirL9y1yGDSFmwBVxbocIxGZM6/Zh3f2nASwxGc", + "IrLO+i+3gkR81WOu1lI5y5TerIQRBSFT3Mq5KJjV8xsBCK5l3bnKSukZOjE2mHCkvBDI5Gpbi5cwSPrk", + "OxwwffQzDt4nV9hHmrFFNG1jEWlugFJ/lNZ5EHdo1WM9kK0Ta3tIsY9UHzd0wo3h22E+62XPSKxFh0d2", + "9sZo7VIp1P/on2WZoDONmvvTeWA+0PjX/mTRQj1tKLYRRjAj/L0vyty56SEfVlZEZKXz5xAebSldXJPW", + "dJg1hRezY99m733ul5s95yDmXx9QzB/Cg8OtP1YJufQnSwVZFsA6smiYscD4OGus8ArOQs8bO21qP32J", + "GipqL24ltmwmKu21Uj1lP3uFCU67/5JJLx6CTiPWA5LAttI8hbpFbG20/3PwWhXvO6gZZoLDF+yOweH9", + "hNBY0Aa2IB68f4AQ3hI99Q71bTDxjTrTSFKZA+0PTtbgBLeT/49g3J8tbirp7yvcSzhioFfWvCPEDB0v", + "gpcmzC3W88kXKy8TZUi/LKUHzeblnZlU3GzzV1IpKrHnU12V13mmZoTnx0Sb/hU2EwvPZoBrwY97RdGs", + "otrYVIjmZSlKVCLkQsKfAK5ApRfmpymu54CajAo7wMhotiLBXYqMiLTBrWhtxN29aJG9y5RRjLbqyLFf", + "rr47+R/MiTt3Dv/1Jxc4f16GGcYayTBjTqW4c9kx9lwlANpKV6VF0wzojmCQIiOZX9L464OuasJROjOB", + "N4Tul16R2sF17eXB7JIG8JWHCofJT61KqZaXwYbSlxTv/AFAhqtT5YgMS5ot5N2UBN7yjJXSrqW1oiyA", + "21di4ZhuIi7fCLMUbMONkmqZil4wUVbE2Sd3EfDf0cf0z9dhjN7yfoG7ZhfH0X60j3928LTD5OFpFr3+", + "lstsa+ceSmyVCnwPg1Zy+g45kFyuHKu5Esyu9Maep9sTXgRrP11WeHW6vGl9dggBV9zeXPEZvW3zx9//", + "gle5v/7rxqHxpfDyvDalMFN2FTUfDxZ+gcpAvNJHXWgpPL0rbdDYdkUIGsDfzj4c4rSACMRebvNfq5m+", + "e+3EOnOfPZbANjBU33oDBmyPlNadI0CgLSaGO3FdyXXez9UVsLroDYOeMVC57xx79oabm1JvFNgcAe3z", + "lZZz4TU8cFtxy/7jhD1jx3BH/Ac7hX/+U/hnLec3J1qBVvcfJ+yv7Lf0vb/e/Za+x9UW7ctAQMcFCwAV", + "bLPaXs8qr/mVBdMAsGXPBJ+vCKAjCyO1lHpcsHVTOVlXgj1zpkFHSJjn2Cs5c71eC1WKkj0Doys3N6IM", + "CzyC8Y4LxqMlz05ZB9lnDP43ZSnKz8gHUCRPcfzoG/A/nOAPeMkfFzTS39SkuLfUa4TV1e096Sx+NGCd", + "6fidRx1oOC3v6LPcsR7Fp2EU4tL77WBoAL4ebUZKsJgahHdOcjpylPxbiT/YhJPDnWJrkI8gZspdVvKJ", + "mH4BcIAmINVr/PybPvJ7+BgNrs2J8u15GA1xYg3PEMZD+GQpKnkrzOfhrn4NQ2RGzKaz1F1a7N9gg4Is", + "2ddGb++V/+BjMfG680hCD6uhj6I9Kt24g5prjsaegBRG7kT33sIfzsL1ZIUKV8Q5E3d87qot83cQeuni", + "ldTeLnRBgQ0qecnfR+Gljlwzev97cKINFMQ8f7umYjmwoSnBjSaYHRjO6GdeJd9zMLQk17Pwl2RAQN4w", + "9zAi7NNaJDMY7yARXdGsMSynJgEGLbXFhHSPrMySXAudIYQfgCu78aygHQP+tk0tjBXlgBj0o+DlTzpH", + "1p9RbhtkBGQ4u8ccWb+mH753FyUj5/bkDdoth440eNMyZ+wvlZ4xWZKPuqn9beifFbtU7GVCHAaJ08pS", + "RKK/3zkaCOB4Az5tNEBLi65hUFe5E8afZjtlv1KcVCkXC2ES33rrWIbRi46bPQnsiKaiEEhDlsv8kcoe", + "+Dd8y2aC7OUYuEV4MYIt5a1QI3SUIaPDT9rJBUX+vTViYXNWQDlfQYSN9OcH5WrA1EIqaVeiBNxZpvxY", + "W8QmWmnBjisN80cMPPdgJwR+0rNjesE1M3dHUsaZ84ajwN0yY/zv8NOU/QwhBCEeJztQK29nhkpF9H3Q", + "GFFrkxvgCvROwBYYs4XCQAzGmW3Wa2627Jn/eYoaBfxEP5wxr38cjzBCtbhoISkCirsrzJHEW67EgMWi", + "NHwRvEu9hXndaLOSlWAc7xUgFdVXstHG1ig873SUdxEIfoGsz6edx488M3rjKW0jVak34AOCT6N7lQZi", + "AsOJ/PGTKvKSFrARaA0wFS0a8ugzTs5lzXNW01LauuLb60Ff7VK6a7Hmshr8NXyaiyDahAhROH4rDiZY", + "KxzjEHMgS6GcdNtzdK84//ZSOKY0c4bLSpgsWwKPzGGxEV8rumtMYE4Xl0Ucxnd9npt0EMH+OORiEf3z", + "XugHmAr81WRuRcm4Yyvnant2evq35vnzP889PzuybKWtgwfiDJ/7kfDB6fTT3EatfkkIBOAPSt1vUUd9", + "kgBU4qXXM8PVgI16QKgZ3CEj1iRQZX6q9fU4m3eKtvazHYDjdPcLCSEUD8k/e9Y2egE7sA/A4fRcVwN+", + "6HvZcjgcvXnjQhQ5hsx9y/6X/Msea3Qw4BkxF/I2eqp6y+Z2IFTtUBx5NnYlzHtk2aKpKlYJtXSrTgzL", + "7rEbGx0eg/o65hyy0MA6EFkE3MFtsblIqYa03eCW49Xbzhu74Pdc7Jjs4JGAtnZe8trLrXPdVKVn+zU3", + "FhTSUsK/jZjrpZJWMCvVXKA4RvH/BbsRW1F64QhXP81ZEP0OK5ffjbW2MIW/Y73oXHiBUVgy/Y+253fp", + "+eMBCxShMUKW24p38VLpcXxFekYbkp1Ebe86uUot4DZtrCgo4FmqJSj9IU7vyDJ0z+7KtzlL/y4SQ4Bz", + "G/x6nor99kbWtSin+9j0fU68CEyj5+7zkkB5xjarbT6oH51g12DD3EvE411pffL+AR1BbNWsuWK8LI2w", + "IMbx+YoRAAnRem4lVSlA4jTCeume3rLnjIcvvIYCvgEBbjCvlWQJPeg1n0N3H1A+X43bVlxLJo5UK3FG", + "IQgtzTSztXTX+IRxs2zAqHbWqhbBEXMc1DfAUIFoRWVD3Aoj3bZgc+7EEgK5nHSVKFgpHJdVgUEQoCjL", + "jtzc4i8GrqqB3KG8n5kQgetKDpV1oqaTBYleECRZMKv9P8L6meEq9SW3cf8eV5OCyNpzbZxmpHcZ+Ucv", + "zj95+BJHT558FyZKnl2GOUdnMD2AXPbHrCebkvVX7MSyBx9FcAl27EM9JpDjvJQH8SVsRLXR6/qhVqJd", + "lQFGGxFmge9lcREC4B/oA9Zrf7LtiudUF/wVoiuMEP4tSv6puSGdN42/PLLsh1cXL2MO4IZb5viNUJ/v", + "YrnFNb0fdr4fWbCzWUf5mlFzDWQKYJF4QtZuI4L9AIN+rYvrYk3dhuKPiBEa0kl2AX6rLdxtPd0wgGkL", + "pNNvzokbLyAzVSzsqRewTv3r9vQDHcOPp/670w/q4301w2IS9nbgR7lc5kIxXWPUtVDlGYPcV0ZKq1Dl", + "iV6cgM0TyWcaLZTP2vOFuaVgzsHPUx+H07pic15V9riAf1z7fxTMr4HubVUyTyOG8boW3GBslVYt9pDw", + "/BUeIgtnjaxKm3LyECNbxMX4P8N8npmFCf1zP91I1h4O5RUi702cp/fDVWPUK5i1/4PW1QuEoffLhb35", + "gSDqf4MAHmDWGf6sJh0+kBBEeuBaUjiow166bEgpbHT+4FoHvBaZi25c3TjK1IRf2FL48zDbMo/i85hf", + "bJn2CgevKooAW7MVvxXRfDxlFxhzkyZii1upmzAwnT0I63gWQsZj2uhSFBCqc9zNwWynj1b7mZFigfER", + "4y+GGbf52Fiy7AMERxZjitCsIHDOaeDAcKTI8nBMLkZk2pDy6RVoOF642mhW5w6yFtCZiL+BkOYXW7BN", + "hMBzwEWlNynPJADWXJJPkyIX2nxUgnXK3okF2EjBX5hMg6d8xVUfQj+3nK8YrzZ8a7trZslSwwyA8HCc", + "ESVezuBSjT2pfta/cCveho/jkzcwyrCgHek2xqGTwyYswWrwkWI+IApBn5wWOWjs6sL2syLziV6wb/z9", + "9c3z517QNXzuhLEFa5R83+BuJLkwfqvzMcdRUDmEA6msM818yLubN0UFwXCfnONnuXBOEBx9s4en+YFU", + "deQnncMRT1d6JLIrL6Wdc1NGO2U/645+hRtpXgmuRHnd1F7H1az9VbpzNIsEFgOvNvW+KbPekBA4z9lL", + "fKtzMoNvAhgGhknPK+1P4FYM+kP2JNInAY3Sy0aAfZgRP4Nz2QlsTNkWslH6Kp8Xrzyjz89L3/Uvhba0", + "BEyOwRG1x0jLRUAx97LbiuPhw8TOIzvaWgTU9tpDl+PbCMtQhLqnp2skLnyxRYolKKXzN1pEHGYVSxeI", + "MR8WMaDbkjqKCXcoXEnL1rIEGWzKZFmJM8bnTt6KInGuEojkykExPZ6G9gO4RnAZRsy1p2Yv0Jml/38k", + "8LOE1sk1jUNJtZx2zkVyYgAV8TUv3uEZKbWwQRszjTqySUCvbeX5hVS86p5i270QWk2dUvbD8iaQFbwM", + "IRkIkJdrIqBjM/mRSPvJ+snTkNqfPPquhSJ9/CZAlD58mUCXPn+BkP5SH1T8wcZyH48QftBq6Qk7iid2", + "kEPjmcnFwC/zfovxmU6ORHX6YAAEl/MuIzFfAwHlDUcoFlP5m5zx4BVczni+QpUcoFavAxs+vwES9nTW", + "FqOQCnJvy9Fsp1PDKMN4ytk1uCFG5qsk9WXGp55VHlOwzgwWLtL1C8vmjfFiU7UNJZPy2idJiAO4r8k0", + "f93Gaoy25NtMZMUBz0dLLhnXD1oOdiKg0Y5JFnyMfBjt20DEXENsRubOgJCNUHBK6U3BdFV6IIL74H5+", + "Dj/eO7HIBjhbcT2vZNjZrPXU3Ncikyl/tbvIH/SGQRwgjysFA8Gab9lSgxSqGwc6QlJpiy4S6Ri6YxhI", + "Os38Jk9kv+v1TOaO7mU4jxRBH0AgjYdVULYBaRpvSN4jczjoXphQut0W3O9Rm/J/AbSDXqcE/8lZ3znH", + "yXkquqytu8fds9ynxO6x2eWALULzm7x7brMcGR0E7wTPhJYP2vGseB9SupKYpWDP8+JgcDyA9LvSGzXK", + "PJdJns0BfcXtTSYvkVtxTbU3do7BnigFlMD3110DIduvBcUSdK7SzT8dqraWMeZWORP/a/JfkUj1y+tg", + "Uqh5JZzzUqG1cqkwFAVsOxDNy5kfsDGe6pHM8DOwlGJcohe+IVAQsvD8Efeciy91/og+RpjI4yhLVL+C", + "qCzUBdxw6TzniLUFEmZWhH+BZaUEw0Z3BjYT/mUj1vo2XzLgAWXXVDgo0bwtOxpaR61NtuIeep9fyj6d", + "L5HO71X9zJM6MRUz4Etvd5BSOyGiMflk367QG7EYHVztEU2QW+oF8fxGIHRDdgU8puRPfN9wu4q+EpWx", + "U3Wc7ZjzvoHbhIrjaTz3WewhIO8b0exjIiHz1TITq8dR0KRK0iGlSi12keNItYw7ChZVjCv2QwY7K1V2", + "VJ4YpGUrUd2DMeEaoiaSITb/U6TkDkJxZWt+I+xZe5rwg7YcV4i4gDIQuGDyOrvrZPZBDB/gHy16U+5B", + "unOrNEPhr24N0SJUFIPneJH5b4PugIuFF+sG/iBTkrahbqJf8DCR+hvd8/ZrMn/uWQXuKGBZglOfaIKi", + "ssik3CWiwMPoR1oyXVPSDRuW8IPrw8myeKHjBoYScpHvBAMOwnovtuOF9Ou8if0qGvmDlJHEZfpnENrM", + "nsUh/BGN//jnfz0uWM0hbIRQR05jjyth1mCY4Ja9/fnd1V6F6GCN04E6R+FCKTVFq9TOayFoZwKZmVye", + "fC28dqosB4usBwqtzBj0gOCzZ1hHcQrTkpg15wZq3VAOq3/7+CwnniDDwJuzYKKygrV3chHYSxGMYA4I", + "MOKs9daCFB7LCSKj5I4uZq9Xp8FRIR6cWLxplA0/X9cCQ3JC7UusJ4quSdgiIKg2CITGgIMNgVeGLmqK", + "hyhodkjbRml6us/I1AUjPsC/A6/pmVWy1qgw20hblJdae4ao+IisUO0rANLbCGLvh97DNxHo+OhlCn3n", + "RQC9/1734U/6AteVL1oComYeKffDRGMvwljtox0YG9sCCRCh0Hc9SjvpBBzs6io7WRbn7HkMj0CFEiOd", + "xlQfGTDkFROnS30tqRDAgcv16ueXP0/XmGPSVT1Ss/q9GG3wHOVn97sSJo/uxDjxwujfRap2sGdL4fzW", + "/BreDUb8ua63xx3AOAFP5oN8TYUWvmvTqAGxOryCEoYsiUvC8HoBNxH46nrLsCtuxH6kXEfT58FpU0yh", + "WRvTxzwQnsMNzgP++nsEr3dTzcncm8poUZ/tj1+0WnB6wQbVM6kKNBTz3tqV97DCvkyTVRa6J3VIj8eK", + "TzavzucpNkjyBgOD5nrtwQh1baNofAKCQcIISNiPIlNXBygwOjrKg20gQnsVQS3CfGRsdY8E/KTSVS75", + "14jcwqG24aJbT8+fvAWeBdRUoOgd0GYZF3IY/h4NEskAHGFpg9s3EOM3zAzHcSPOLL/1exo5koYTLpV1", + "gkMFc+RIFIkdGQ0YQ/ztdYaiUSd4InVCenV/rtfCxuLbfgyKeS3Z3yaY0wP/pCwfho/gc3z0t0nR5k4j", + "H+c2cYxh2AnDEG/MYw5BeYl86+VrZN9pAY8hRxBgdmg/rrCST7irQbYEFPtTTkct7GkxCcIwOI5m+i4K", + "Q3aSbFRkSKOv99lVOu8Vn72IU1/x2Xc0u3+vBeCKz14TDFd89i6CccVnv7aQXPFZSHL6jZb8616CigTE", + "0wstjYAk5legLoNBkSuMieyl8AmvSYbSy7tTBUBexvf8kP9+8ebH6T0S1fIRGMnc2a0nPF5S0kw/+qLC", + "4pRSybUnjG9y8ovRm4Nv7aRhVGCo9l9mwdKlzpQuvJPW2b1FB3u8GZt6RNmIY/RUr3JoottGLjzOJaNL", + "DWWaDtn/CfAw/tCK8yWfZrrcUluM3apIfsAjzGRQDuWsaIYczL+ijxaNAbRBRlDWBSTmw0QLIZ50ryjh", + "xSXHVoKDhoZVhwN8GSOZtEOVshJxeBhw4IAe7CLKiH5fIdgPfEFU7SJgh5JYpyN5ZIE4bxEwtGGXXrLO", + "puzOG5vzCYoqtWq16SobDrUxMbKosTZC7xX+uVeXyWfGFV3Y0kLc6wAdD0emj7XVoRqhUXmYfsrlQn7L", + "jJNobwD743dtyUH7iyLldCASLbOpL/CHYCBOBUYwdHhJ92jAfpw3Ih2oPBplxl4zBygEDlNi7YmkrQPY", + "B4N41h2wmDQK1+agCBnct0mEA3ARCOmyHhmDUCWjZELiuVtZ5Fr52bpVuycjLpA1uTeDSJLA1y1XmgKW", + "3XKqcPRoafejs+OLiUpqa1zXobjGvjtotxrHpyTZZyEYQtpQXcwHY6YH+OgyALvyUy7nJQh0cIFUMSIZ", + "00MSVWhGt4mfmryFIPZTzptXJnhX9m9dK6QgQGTDOkYF9kLXL4NJORQZj9IeSPF92TFZxYeMFL3UJ/7h", + "ib2R9Umo03QClew9XTvTCLTGLe+haGKg/71qu9EM+/bnXZNpcQWazlChgGQ794GbIYAkJ3O/wJiJNiwD", + "bQhVRqXsnh0UyCSV8wBkc9hex+uBVnBkqfLp2FiUBMtx+3ZMBONiBkMhgUYldiTcqM62dAIvxxHAg1NI", + "umcq0Z47KKPr1TJoT9iL0DuYtxFCk4edWnTBGq4Sa96zqJZTHK42Nxa9Iccx6ut+0V6dqPgMpMOdO/Ie", + "JnKln0HhFs+ytsJNGbST2Egrdp04ZPlOougBFjAOdV+J0ePRjQw1dQK76wTuEhidJluPFcILKAS3xK9x", + "1vZZ60tpn5EzpX2QBPS2D6OfoX2UOkPap91QXlr69ZA+1bEwBbNTH/3BKzuWpPPnGg9ba7BNQEvOwL6D", + "TNFfGbFp33V1f9tFO1gOGoq+ywDhhqSPfj3jEDpHamQIk8Nr2P8VfyFdIl/Z+IEtL0fHSFM1WFrYLi4+", + "goC+0IkFdTLbGgHKjsHekpPn0+fT51jQUihey8nZ5M/T59M/Y533FaDulNfylJdrqU5bB95SgJLrUQxy", + "4etycjb5XrjL4BPolJL90/Pnn61VLM2Q6RV7KcytF62gsyZw3cZCQ4mP8DKsY1ZpLDhea5uJn7h00Gyp", + "beWlDWss+NhjF0s0wc50uQ3mV8M3+P45RoVsazBnlMKJefCyYebg1gmsKrZurFfg2dufvi/Yv7199X3B", + "vn/9neekv4rZ2ym7cFgM5V/YG/kXZJhdXP8SU9onSBfCur+QWSjBM4B1upSLLoKjC7JtLrBDbPjp32ux", + "fOi3tXrwpxsxq+/7beeAkJDbI8NvPhsZAuYzRHgV4jJK5mlt6g/Xt0j+ueEifKexWM233/x59Ns9wj79", + "4P/3uvy474hGmtl7QP9ghLO7iR6TRxaPLImW6JkGFMEhp8399h7bBbFSfC2cMF4i+TDxWn9orYE34QT3", + "cNKn5iJZU38FvwUyaFv50PbnWOQJeNXx1Sl75VVY+Ac29JUUhiXen2MbR+Jy0PbH66X/dvnzT1P8Z1Bn", + "f+TWncCTk9cv2TPyFuJv7xthtiwu+xgqjhpRV3zbZpBBRFCACPzldBEWoZUKdyECI7SAMgKKeZzj5lSC", + "l/8T8NQ2X6E3yX4551UFJW7ahlJxGRhsqhj0omJLTWPotltUjglj/axXoR1RbmtXgpcgWdHmdjA1KXJ0", + "OhzRTmMCRtsho+z26UMlhV4GaW3gU2qvu/NdWwjzt4NMx4k7hyR8Qs3HOyf54LlFEsVPH3A4wyFC/+XQ", + "GXrd1q/taXLsO1n53WeKG0ORL1Td2wAx8SR/Pm2cfCvFJkdfP0rrgiMzR1y9LejEetx7Az9h74PWMO7q", + "TPsqjCCK/Xf0+C4FA265HSJ6w90c/SlQojgYFaSJbnc7ZS+DUcFprEtMdXz7VHTaWVxe6LyAmuG2UxYF", + "55ZYNAFKcmErZxZeNmB57BQx8q+G8itgfpRYqbasMD0BFHFS1GN1X2CjjQp1y3NUSO0iXkev/pCw+XBp", + "qtOWYpQk96WpxIsIVN487v29Jb17cCf/9r8+lJedfvAgHpAL2+U/ovaW4DiPU3AyRmmrPXGPI2ohWh4m", + "aqHVYgibb8RjohEcVAMY9GKOZ18gtBAimgyQ6KshOD//kU7cQY9woB+KnHBkCTn3O7HtqVqL00Uobj5E", + "AVj9/BHXiRNkFhpzB1JSOLI7bcq61NEd4x0UgLBJQAL2IwiJKu1YbYu4glxfhjk+m+5KyylOPj/BJeh4", + "Olob3IPEDoDtaR/3euiQphfFD2mCV7vkAWoRftYVbAsvuHJMJ9qsdIUJTpCiBek8oOaFvCf7z98ceYmp", + "jY9P+lfQn1a8ByUx+WW3jl9ICbcUBn48ZW85xCzMb9hsC1k5gRox/CcosX54HvpmDMnVPwpe7tXcejIu", + "jvaZ1CzKym6HWvM7DJT7l+fPi/1hc789Ijm3TYIzJP0LVEekvhPw32chdOVfnh8XrK6gZQKl0Fonq6rN", + "v8/t6DRHtyTB7jPSgg822mND+ZgcNYNsXLT5PtRMupd6lIafsV9jWwh4Namv0+/AshIVJhnZUEXUWabE", + "HSWHZOiOigP+iKryYzDBbkudUczwT59tcsj0oQoMQzyxg/8UoRuqy6pNxC2UXfiUOxoISmmqopLlg0N3", + "ZUs+lLsDCZIz3Ti2QtV+C+EjfRNAXOONELXFOoWJOLsW65kwwSW8FA5qXtrpIIv6SWNdiMdXf2ITqpHa", + "D+B1Oojx0w/+f6RzYCfqXTHpJTyPM+8s89vdDcNPykdSCBDmhyoEuPxQE+jed2+nlPyOcekCs1MwudP/", + "6fFAmbOeCWHyNsbeYkecPEWFEilPQlRdljCOsAIC+rSVxqHh9dBkbweoI5frNhVbS3XRv7fDVE5n2g2w", + "exxmngvk+0+oSXkl4iSqU3u1kU0SpYVaibTAhsFe1+8ThaE3yTdbjLtLGkfh7Z/c+lswiCVDSle00gBl", + "rnPF1voWDGzgJ6CZ59xSCpCFO0LriuE6ZjliuhSu7ZL1OBTUjj+Kcr4dwnzktw/cYsreOzGCl/vjB9oa", + "Qp/MoIZqg43Jv92NpehFVmuDsZ9psZwdxrKC8gqebkgmphozeoE0tZLLFZb/eg/vdTheWkgtiy7P0N+2", + "1aEen5mHbKkRfPyiqoJVIJoZSJjvLgIl1TDyI52CTp+lJw4UiEgbkKLEJiDqE45YQPXpB/rrgK03xfcj", + "3R0H1t1d8+cW4yIWHibJ5dB5GitKDh7GKyrM9vgnEaqWjRSnWpcjrKDfU+lrwn8xoPHjybWd8i1t/nVM", + "YY5xVkNVyiFUdZNm4xdBbuZt0j93baYnDCldTplHoGAnHodtJTnRT8yzkLyGGRZWKXoig2b+MFI26KB+", + "hRK/XqSJniAdah1zFIfJRCpICGnD7Xc4KKSjPiL7hPH3+Mign7i0znoJeMErK9pqyZmEV6UDIv6ROK4u", + "dct2vxjXCdneELGR1lQpqEx2sEKD75LsgLFOS5Fq5239qE66bkj0RzN2jDMNLRW6xd065RnpQyj+5EfK", + "Rylx42Iy8SPxqpj6+sdjVQ91zVN5hNMP+Ien+NBM7fQDNKL7OI7uw/f3IvtioKK9n//IsrrXsQjngES5", + "0O8N7sbnkHuQ8ax7+McA1HFsHHBFcpft59e25oNqH1CPE+GFPjKWioTJXt8vqAp5BzXAtkwulTb4Vt5z", + "mXYafCQHZjLFl/GcU5vLgeOEKH2yez+YAU8/0F8HdJpgZXxE/IxxcBCwj3TNRlQ87JrN4fSUzMrjeM0D", + "ARi6Yy8wf050qunHdql45a64KvViwZ4tNa8KVoq5JAM5xB36J7yExMwCLbgxuK3ALo/HU/ZrLDIYanNS", + "VePgipI22tTRqcfh+uj1dcUii/7mhSQOaNxDV3u80AO4JAh07/ScHoHoHyTfp/XPBegBTUmpuOlT3YpZ", + "EoXMZdPUX4ZIX4WcX2qBgP7dnY18HYD8SrYyIg32sRSVvIUQzy+6kx33/lNv5GXQ9UEyBArHUytt64eO", + "PSRbzuCZU/ARkDbQsqqdIsC9MAEs50zZ/RxanCVhu9QjKAQOhG6IYKngrTtvgOQuhSrbjoN/yIACQP9q", + "h1F9bcJ+0sLzgBwTLUqPZVnYozEl2tLnllxw5Q8TW7rIO523dR6z9p9XbeWObr/VaCl8Fuu/FLHEYaPw", + "L8wcVdDoxz/36xVzCB+aLqUDRUEcM6gi5gcrulUj71E08rCZEpvsA0uC1gsYX5L04NUbFXqWg3+bOd3M", + "oaQIJFGFeo1F2/tWkiKVlHKkQoiHF4IJcFAxc6jwZYB8X9lLakHtRI0dlZqsXERHoS3316OxgQbGTodl", + "UNxNW+Wxu6CC2cZvht9HcGIHnh3CCFeCl1P2k3aMV5XeBLSExUTFt58M4/dsci/V+yLFkDoj93GgmraW", + "oFTdvWOGk2ubh96mt92aSVkAQxvpvdp4ka1iG7496yI5u9tYBCP+C/fnKNae73Zg1UocDwLsRP2pqWWf", + "aIYnIsywzbfCnICt2CsjX1sWyFMzZn3CG7eixl6Dtnmw38ROf4F2MT2TMjFbAarDwNsapOwZxHAkBfnD", + "J8CDVryELH6I/sHkplYCZo0qMSBEGqjpdAwWfzD2E5+Qpm+MvQgl07YptJ4rU+F8aJ2CwC+lixUGGWcv", + "AlpEeeI/N1xW+YTS74V7oS8IhU/i0ufGybmsuXJj/YntJn/9kkIpF4u9pNgouZCihPJ4ofo3nOa2owBc", + "fnDdRR/jsnM1TYeurpd+9nHB5ViH717W22xgOdZZ/uRxaEM+eRxdlaGY+F517fHyM2QlYBuGnOPczVd/", + "bKZdSjN4RH5WgpXSiLnTELaUE6aL+IYUNiSMuBU25PfgTtkr5eBH/68SpGiIsqvEwjHduHMW5eqSCXqX", + "Q2sTLDmJ1jbo6OcZsUcFCkKV4LekT7fguJXRzXLFplNMsrbbdSXVTQFKOrrU9sibL6U5JGteVtyuTqzw", + "LzlUESqOTjndLaputHah1q2Hpds8ORQd3nMCv8ypeSnNj9K6PdUxIlFArxXYsT/6KYJ6X+PMWg+Zd8im", + "9b287UbGoDjkL7JSlH7/RYlGEqfZxkgnWs2C4hGLttMV9QSjmua2bwSDrC0ohpQax/tNTo7hvOpYSY5b", + "ZjVWMO930iNLfChuRiKh/4GXVBF2LbgCD/g5K42uMcUI8kNAIDsPQb59+z5b6Y24xQ7cOAuWwbZZiwD0", + "6UL1PNSPpu4Ukfm0HyYNG9lVOxhGAxQxzNN/SCVIjFhzqfou/bS/U2yexCsjeLmlxkRxJhJrbfD/U5ss", + "e860it1RIB+P+s2zhRczgTshR0170Wf4H1Wsy5uf/vRk5qeCMsdCU3JcU7nb1HH6ZUx3YxIre4VqwMbL", + "mRXv+zkdmNDYzWWsOEUEQ6Ijp+/z+RwemfdJYvyMpWKgmWw+h/Gb54+exDhKuQHMjFFrMLMRm0DTpiWp", + "jc+Pv35Fx+ssgyR5wYxYNhU3qNrkbaJTdiXuHMpIVIO4qbFojZW/C8TOOcMiWuhXpTc946aNe3TpzMvz", + "n1c8OyCA3euGflQ15gUNNMA7/Y78sUUwKAA3fAhiTUd/BmKo8I4y44Xz2FQDvsCKjfgxd47PV2usUwaU", + "jtnMumocVO8ZorVzugaMsLq6hZaDSPhg3A3lIKWyshTdyve9GpEFVIgEkC7/z/cFm/v7EXQtceeEgtiT", + "4fPzeo2uwjHVpD7/AfhHLSpob5f/fLeuvnhNQk+6oSbhg876n/+YnAEUhadXzSAVNWEySdu9WLRAq4U0", + "a6+i+cdkOElyeSHiiOIVQS2iYU6k6na6kepWUrsfpyFWj2p4YzPkXAQUU54Mq2pbYNIr9iceUJCgdbDX", + "KoOfDXubtR3Ldteo1QE3Z7CK94zqZEXPm82BQaPBvWOOas3S2F0Z68NDQQG59MhacOtOFtpseKhr0wI2", + "X4n5jcckNMmlXUjVxZyemNELsUx5DBXZ04471fjafiyh8kFwWj7rdQSHLtLCHacx5VRkvR1BKj/L0ghr", + "+7OmXeqPdrT7XC0D3Elp2ULehVLGUDCj7ccNy4OmwHYnZn2wRXaENqi70GU8lP6EygjoJywoCjC0sNbK", + "0yscDXzSJgMRTkW50+e69x5i9yxpdh3tJh4ie4PdnglGx55RDI9cUE29UBLkuIgoDfAhIuI5LUMpvhTK", + "sCth6h9eXbwMCSpClcEREdJUwmtUdCXTNZPoot0UdZyzNbQY620LVN1w6XYE40cPk1P2ShJNwx61Qnvf", + "pJExVYQQAr1RtNNpk88i9sgnwt4Kd0ax5xDXhJNhOnI4GekAncOx5qUo0OIkbWAsYCmKEV+4hKKN+KJh", + "sv1+oxub6u93CvJTQHzXN++hAUtGUt4IyzD2sX+e2MpwF0qj6zpwV566PZV2SWbIs2+f/+sxa1QlbGhD", + "EVFBg+fr0Jjlp2au5bOrIROpyHXyCK1cd25J7Lcf++UEiuxuxj12IQn4UHoz3Ew/NMDNdxiBq7CNWYBX", + "z+BUYpM5TgXa//uf2HzFDZ97ocJvDEoNaOPHMwKWv2xbO/h9FwD/AQZP0IV5fBYA0ooEh6FLdUoH9Sxw", + "r/hBhhOeY/mCDoNN+517QCahvf/IHhtEW35lb/Dz5MlbGuljPsf+6SIL91khEXGJpbGAywmuLgsVe/CH", + "pPDZk6RGfCb7JYqPAPtJeiZDhZ7dqJ/S8I1lnOFJ3fQZd2jeT+yOWocAVWHRI//SeeTu8ZbeNWm+4Gou", + "Kpjmwk/wLnR//iLBkOHa8ZSwITSor98UGNSDp9d3YjJHxxMVBal9bKvlU0mgZJFYS7jagrJUybmzFEy9", + "FAqoRy0Z/ekZr6y8HHpJUyfgpCkmeJhDOPiQI+ugODt4ub7+4tH/hPN8GsdXzqLq0Dl6n5Ol1sZlyE3c", + "1doG0Qn/ce1fLZJwBI5iuBXmlpRPLis750Af5lZ00n38x0w1ULdNL0BTPrJspa0rmL4Vhv1wdfX2sugr", + "RK0yok3iLxyoRvm27ZX9FHVcKM9vbAEJhO3rZ31jyCb6auHVAkS6WpgkVLrfnW13t9494Wa9u9de/cNs", + "VaZI3i6ev/pSdR3OM1C47+vZikNpUaq7kKHkCSp5WqKBDS/1de26CY/5fCVMI0rz4z5/xhKN/mUqp4y5", + "mZPQmX+M6ziwxlGMNb7ctyaGW5cHCzKp9i1dWSYXadvdjTAipufcCE9ijhmxsKf+Es5BefpBfRx3EZ9T", + "BN4mxOZEbY67oUv6MuLhKfhRmG102cwA3T8A8w+g+v06XWhz82jKSpEv83r/yhQHSsSEWiMUr5QrT4VG", + "g+h5TlJ+8EAUsQsVtmzp8GLQsT2BSdWQTyIZgOpSanUrjEUnEGYNWad1rH3UTczBlveUQxam8XtxjJb/", + "hE0dpVw99APr5EdgDWwwFe8LcgPjeBlb4nrVK8AUDHnRwotrCuNzx9qC8fmCXN9pc3PZ5jb9/5Izhxl7", + "UpbzUc0Fo8q65Etnptk/bQ1NKSyFJ1nxfsousOY/0UiV9N4K/oxIVpQ8GsxR54xjGU4Dr4s1RL0iXqYG", + "siL1RrUuSix3u6Pzc3OTlC59LMkmmeHJ67k+tIxLj+ScMGupeLUnWO1XMbvU8xvhKNoGnXEpHdAYBeOs", + "0kupmF2JqsJqvWksTxLWPNeV9XsIN75cYDOsxJDDsHYLdJBFzoYi7iZQZ5iUKHMulKu2rDb+lijJYwzO", + "rcbVDQnD2J68YLyqoCEFxs6FEgg457ySyOdBoFb0be9VMnhZ+Tu6FqF0cfxxpasSuxtcEZCX8vfW5S8I", + "PeJOhqACXCe5KoHzznUp2LfPnz+PDk3/OsOOvzFyW3C7N7wozD8uwsjvyV5WsjeEdCAu1W/wwwftxzB9", + "g/dGT1+CTjgtWbYEWxvt9FxXf+xAvEZRu/aDTRf6qqWnZLoRwOc8ZC0utbDqyGUz735RsVn84xVGD3MM", + "FUen38NtM/1PtsOhPupehTAWUY0S4MLo32NyCZil5yBAl0WS5O456ZT9yL02JkpJ1n70T9lUaYSxS62O", + "HKF5QC4k3hQa1T+2OynOMxTE55Gg4gq+fm0tQHpqGrXfIh+ijvqbZBqV+HZEpdXSMqfPQgUJqbDWYJdQ", + "WjUBwr3AEIBJSY47EbJrzDYUX+cgMIh1jT0ZizY2jR5bUs7wik7StoOc4HWzAQoKu/quedQKc+k0Qybe", + "RmHLNcD1V0g+Ydv323Z/jW89hTElzEYi9BibClSRiTR8hNmrxIvie61XKZV5IwZOP/jfRrTAGWZOe1rg", + "MCg4jpSPrFU66DtEFQzmut4+iD6GShM9jIVueT90elSwc4L5hazEGRz9AMHLlmlwy/794s2PcIVwlUTo", + "U7pxKLH1WB2D/P8+hz4cbEmQRFBXfJ6Enqa1yBEdXvcZRgbkaf7b5c8/BVsO1Ae2MX7Jc+hvvPj6zfPn", + "nfilhKKC5oyU1YGkT2MZlvm26VLLGG14FKE8XTXUHZ6xt8tj7z6/VxeHjx//XwAAAP//", } // decodeSpec returns the embedded OpenAPI spec as raw JSON bytes, diff --git a/internal/server/server.go b/internal/server/server.go index a2e462b..4a76d59 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -415,8 +415,24 @@ func (s *Server) MergeTask(w http.ResponseWriter, r *http.Request, taskID string return } - if req.Target != nil && *req.Target == api.MergeTargetParent { - t, err = s.agents.MergeIntoParent(r.Context(), t, u) + if req.Target != nil && !req.Target.Valid() { + writeError(w, http.StatusBadRequest, fmt.Errorf("unknown target %q", *req.Target)) + return + } + if req.AfterReview != nil && *req.AfterReview { + target := api.MergeTargetMain + if req.Target != nil { + target = *req.Target + } + title := "" + if target == api.MergeTargetMain { + if req.MergeTitle == nil { + writeError(w, http.StatusBadRequest, errors.New("merge_title is required to merge into the default branch")) + return + } + title = *req.MergeTitle + } + t, err = s.agents.MergeAfterReview(r.Context(), t, u, target, title) if err != nil { writeAgentError(w, err) return @@ -424,8 +440,13 @@ func (s *Server) MergeTask(w http.ResponseWriter, r *http.Request, taskID string writeJSON(w, http.StatusAccepted, t) return } - if req.Target != nil && !req.Target.Valid() { - writeError(w, http.StatusBadRequest, fmt.Errorf("unknown target %q", *req.Target)) + if req.Target != nil && *req.Target == api.MergeTargetParent { + t, err = s.agents.MergeIntoParent(r.Context(), t, u) + if err != nil { + writeAgentError(w, err) + return + } + writeJSON(w, http.StatusAccepted, t) return } if req.MergeTitle == nil { @@ -441,6 +462,20 @@ func (s *Server) MergeTask(w http.ResponseWriter, r *http.Request, taskID string writeJSON(w, http.StatusAccepted, t) } +func (s *Server) CancelMergeAfterReview(w http.ResponseWriter, r *http.Request, taskID string) { + err := s.store.CancelMergeAfterReview(r.Context(), taskID, actor(r)) + if err != nil { + writeStoreError(w, err) + return + } + t, err := s.store.GetTask(r.Context(), taskID) + if err != nil { + writeStoreError(w, err) + return + } + writeJSON(w, http.StatusOK, t) +} + func (s *Server) MergeIn(w http.ResponseWriter, r *http.Request, taskID string) { t, p, ok := s.activeTask(w, r, taskID) if !ok { diff --git a/internal/store/discard.go b/internal/store/discard.go index c74ae50..7a49a1f 100644 --- a/internal/store/discard.go +++ b/internal/store/discard.go @@ -76,7 +76,7 @@ func (s *Store) RequestDiscard(ctx context.Context, taskID, actor string) (Disca return ErrHasSubtasks } state = DiscardHeld - _, err = tx.ExecContext(ctx, `UPDATE tasks SET discard_state = ?, discarding_by = ?, discard_session = '', merge_queued_by = '', merge_queued_at = '' WHERE id = ?`, + _, err = tx.ExecContext(ctx, `UPDATE tasks SET discard_state = ?, discarding_by = ?, discard_session = '', merge_queued_by = '', merge_queued_at = '', merge_after_review_by = '', merge_after_review_id = '', merge_after_review_target = '' WHERE id = ?`, string(DiscardHeld), actor, taskID) if err != nil { return err diff --git a/internal/store/store.go b/internal/store/store.go index dec7855..9aaaded 100644 --- a/internal/store/store.go +++ b/internal/store/store.go @@ -456,6 +456,10 @@ UPDATE tasks SET state = ` + taskStateExpr + `; ALTER TABLE tasks ADD COLUMN finalizing_commit TEXT NOT NULL DEFAULT ''; ALTER TABLE tasks ADD COLUMN finalizing_notes TEXT NOT NULL DEFAULT ''; ALTER TABLE tasks ADD COLUMN finalizing_unchanged INTEGER NOT NULL DEFAULT 0; +`}, {"add-task-merge-after-review", ` +ALTER TABLE tasks ADD COLUMN merge_after_review_by TEXT NOT NULL DEFAULT ''; +ALTER TABLE tasks ADD COLUMN merge_after_review_id TEXT NOT NULL DEFAULT ''; +ALTER TABLE tasks ADD COLUMN merge_after_review_target TEXT NOT NULL DEFAULT ''; `}} const ( @@ -1082,6 +1086,93 @@ func (s *Store) TakeQueuedMerge(ctx context.Context, id string) (string, error) return login, err } +type MergeAfterReview struct { + By string + ReviewID string + Target api.MergeTaskJSONBodyTarget +} + +func (s *Store) SetMergeAfterReview(ctx context.Context, id string, mar MergeAfterReview) error { + return s.write(ctx, func(tx *sql.Tx, emit emitFunc) error { + projectID := "" + snapshotN := 0 + err := tx.QueryRowContext(ctx, ` + UPDATE tasks SET merge_after_review_by = ?, merge_after_review_id = ?, merge_after_review_target = ? + WHERE id = ? AND status = ? AND discard_state = '' AND merging_by = '' AND finalizing = '' AND merge_queued_by = '' AND parent_merge_by = '' + AND EXISTS (SELECT 1 FROM reviews WHERE reviews.id = ? AND reviews.task_id = tasks.id AND reviews.state = ?) + RETURNING project_id, (SELECT snapshot_n FROM reviews WHERE reviews.id = ?)`, + mar.By, mar.ReviewID, string(mar.Target), id, string(api.TaskStatusActive), mar.ReviewID, string(api.ReviewStateRunning), mar.ReviewID).Scan(&projectID, &snapshotN) + if errors.Is(err, sql.ErrNoRows) { + return ErrNotFound + } + if err != nil { + return err + } + return emit(api.Event{Kind: "task.merge_after_review", ProjectId: &projectID, TaskId: &id, Actor: mar.By, Payload: map[string]any{"id": id, "review_id": mar.ReviewID, "snapshot_n": snapshotN, "target": string(mar.Target)}}) + }) +} + +func (s *Store) CancelMergeAfterReview(ctx context.Context, id, actor string) error { + return s.write(ctx, func(tx *sql.Tx, emit emitFunc) error { + projectID := "" + err := tx.QueryRowContext(ctx, `UPDATE tasks SET merge_after_review_by = '', merge_after_review_id = '', merge_after_review_target = '' WHERE id = ? AND merge_after_review_by != '' RETURNING project_id`, id).Scan(&projectID) + if errors.Is(err, sql.ErrNoRows) { + return ErrNotFound + } + if err != nil { + return err + } + return emit(api.Event{Kind: "task.merge_after_review_cancelled", ProjectId: &projectID, TaskId: &id, Actor: actor, Payload: map[string]any{"id": id}}) + }) +} + +func (s *Store) FinishedMergeAfterReviews(ctx context.Context) ([]string, error) { + rows, err := s.db.QueryContext(ctx, ` + SELECT tasks.merge_after_review_id FROM tasks JOIN reviews ON reviews.id = tasks.merge_after_review_id + WHERE tasks.merge_after_review_by != '' AND reviews.state != ?`, string(api.ReviewStateRunning)) + if err != nil { + return nil, err + } + defer rows.Close() + + ids := []string{} + for rows.Next() { + id := "" + err = rows.Scan(&id) + if err != nil { + return nil, err + } + ids = append(ids, id) + } + return ids, rows.Err() +} + +func (s *Store) TakeMergeAfterReview(ctx context.Context, id, reviewID string) (MergeAfterReview, error) { + mar := MergeAfterReview{} + err := s.write(ctx, func(tx *sql.Tx, emit emitFunc) error { + projectID, target := "", "" + err := tx.QueryRowContext(ctx, `SELECT project_id, merge_after_review_by, merge_after_review_id, merge_after_review_target FROM tasks WHERE id = ?`, id). + Scan(&projectID, &mar.By, &mar.ReviewID, &target) + if errors.Is(err, sql.ErrNoRows) { + return ErrNotFound + } + if err != nil { + return err + } + mar.Target = api.MergeTaskJSONBodyTarget(target) + if mar.By == "" || (reviewID != "" && mar.ReviewID != reviewID) { + mar = MergeAfterReview{} + return nil + } + _, err = tx.ExecContext(ctx, `UPDATE tasks SET merge_after_review_by = '', merge_after_review_id = '', merge_after_review_target = '' WHERE id = ?`, id) + if err != nil { + return err + } + return emit(api.Event{Kind: "task.merge_after_review_ended", ProjectId: &projectID, TaskId: &id, Actor: "byre", Payload: map[string]any{"id": id}}) + }) + return mar, err +} + func (s *Store) SetTaskSummary(ctx context.Context, id, summary, actor string) error { return s.write(ctx, func(tx *sql.Tx, emit emitFunc) error { projectID := "" @@ -1160,7 +1251,7 @@ func (s *Store) DiscardTask(ctx context.Context, id, actor string) (api.Task, er func (s *Store) closeTask(ctx context.Context, id string, status api.TaskStatus, commit, actor, kind string, payload map[string]any) (api.Task, error) { err := s.write(ctx, func(tx *sql.Tx, emit emitFunc) error { - res, err := tx.ExecContext(ctx, `UPDATE tasks SET status = ?, closed_at = ?, merge_commit = ?, finalizing = '', finalizing_commit = '', finalizing_notes = '', finalizing_unchanged = 0 WHERE id = ? AND status = ?`, + res, err := tx.ExecContext(ctx, `UPDATE tasks SET status = ?, closed_at = ?, merge_commit = ?, finalizing = '', finalizing_commit = '', finalizing_notes = '', finalizing_unchanged = 0, merge_after_review_by = '', merge_after_review_id = '', merge_after_review_target = '' WHERE id = ? AND status = ?`, string(status), now(), commit, id, string(api.TaskStatusActive)) if err != nil { return err @@ -1749,7 +1840,7 @@ func (s *Store) ClearReviewRequests(ctx context.Context) error { const projectColumns = `id, name, repo_path, default_branch, remote, created_by, created_at` -const taskColumns = `id, project_id, title, merge_title, branch, worktree_path, base_ref, port_base, color, status, created_by, created_at, closed_at, merge_commit, todo_item, forked_from, forked_at, merge_queued_at, workflow_name, workflow_run, workflow_stage, parent_task_id, parent_merge_by, state, merging_by != '' OR finalizing != '', discard_state != '' AND status = 'active', (SELECT coalesce(max(seq), 0) FROM events WHERE events.task_id = tasks.id AND kind = 'turn.ended' AND json_extract(payload, '$.summary') = 1)` +const taskColumns = `id, project_id, title, merge_title, branch, worktree_path, base_ref, port_base, color, status, created_by, created_at, closed_at, merge_commit, todo_item, forked_from, forked_at, merge_queued_at, workflow_name, workflow_run, workflow_stage, parent_task_id, parent_merge_by, merge_after_review_by != '', state, merging_by != '' OR finalizing != '', discard_state != '' AND status = 'active', (SELECT coalesce(max(seq), 0) FROM events WHERE events.task_id = tasks.id AND kind = 'turn.ended' AND json_extract(payload, '$.summary') = 1)` const sessionColumns = `id, coalesce(task_id, ''), owner, vendor, model, vendor_session_id, state, role, created_by, created_at, forked_from, forked_at` @@ -1784,7 +1875,7 @@ func scanTask(row scanner) (api.Task, error) { parentTaskID := "" parentMergeBy := "" taskState := "" - err := row.Scan(&t.Id, &t.ProjectId, &t.Title, &t.MergeTitle, &t.Branch, &t.WorktreePath, &t.BaseRef, &t.PortBase, &t.Color, &status, &t.CreatedBy, &createdAt, &closedAt, &mergeCommit, &todoItem, &forkedFrom, &forkedAt, &mergeQueuedAt, &workflowName, &workflowRun, &workflowStage, &parentTaskID, &parentMergeBy, &taskState, &t.Merging, &t.Discarding, &t.SummarySeq) + err := row.Scan(&t.Id, &t.ProjectId, &t.Title, &t.MergeTitle, &t.Branch, &t.WorktreePath, &t.BaseRef, &t.PortBase, &t.Color, &status, &t.CreatedBy, &createdAt, &closedAt, &mergeCommit, &todoItem, &forkedFrom, &forkedAt, &mergeQueuedAt, &workflowName, &workflowRun, &workflowStage, &parentTaskID, &parentMergeBy, &t.MergeAfterReview, &taskState, &t.Merging, &t.Discarding, &t.SummarySeq) if err != nil { return t, err } diff --git a/web/dist/dom.js b/web/dist/dom.js index 339149e..f3518fb 100644 --- a/web/dist/dom.js +++ b/web/dist/dom.js @@ -62,7 +62,7 @@ export function errorText(err) { return err instanceof Error ? err.message : String(err); } function modal(content, buttons, anchor = null) { - const actions = buttons.map((b) => h("button", { type: "submit", value: b.value, class: b.class ?? "", formNoValidate: b.value === "cancel" }, b.label)); + const actions = buttons.map((b) => h("button", { type: "submit", value: b.value, class: b.class ?? "", title: b.title ?? "", formNoValidate: b.value === "cancel" }, b.label)); const body = typeof content === "string" ? [h("p", { class: "modal-text" }, content)] : content; const dialog = h("dialog", { class: "modal" }, h("form", { method: "dialog" }, ...body, h("div", { class: "modal-actions" }, ...actions))); for (const input of dialog.querySelectorAll("input")) { @@ -105,4 +105,7 @@ export async function showConfirm(content, action, danger = false, anchor = null ], anchor); return value === "ok"; } +export async function showChoice(content, choices, anchor = null) { + return modal(content, [{ label: "Cancel", value: "cancel" }, ...choices], anchor); +} //# sourceMappingURL=dom.js.map \ No newline at end of file diff --git a/web/dist/dom.js.map b/web/dist/dom.js.map index cabf95b..7e5a3a7 100644 --- a/web/dist/dom.js.map +++ b/web/dist/dom.js.map @@ -1 +1 @@ -{"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/web/dist/state.js b/web/dist/state.js index f50e676..4f6c731 100644 --- a/web/dist/state.js +++ b/web/dist/state.js @@ -76,6 +76,9 @@ export function taskState(task) { if (task.merge_queued_at !== undefined) { return { kind: "held", label: "Merge held", title: "Waiting for the merge in progress in this project to finish" }; } + if (task.merge_after_review) { + return { kind: "held", label: "Merge after review", title: "Merges when the running review finishes with no findings" }; + } if (open.length > 0) { return { kind: "error", label: "Error", title: "The agent's session failed or hit a rate limit; see the inbox" }; } @@ -418,6 +421,9 @@ export function handleEvent(ev) { case "task.merge_title": case "task.merge_queued": case "task.merge_unqueued": + case "task.merge_after_review": + case "task.merge_after_review_ended": + case "task.merge_after_review_cancelled": case "task.parent_merge_started": case "task.parent_merge_stopped": case "task.merge_started": diff --git a/web/dist/state.js.map b/web/dist/state.js.map index 3ade79c..40cd667 100644 --- a/web/dist/state.js.map +++ b/web/dist/state.js.map @@ -1 +1 @@ -{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAgJ,MAAM,UAAU,CAAC;AAC7L,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAwB7D,MAAM,CAAC,MAAM,IAAI,GAAc,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAEzH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,EAAE,EAAE,SAA6B;IACjC,QAAQ,EAAE,EAAe;IACzB,KAAK,EAAE,IAAI,GAAG,EAAkB;IAChC,QAAQ,EAAE,IAAI,GAAG,EAA0B;IAC3C,KAAK,EAAE,EAAiB;IACxB,cAAc,EAAE,SAA+B;IAC/C,UAAU,EAAE,EAAiB;IAC7B,MAAM,EAAE,SAA+B;IACvC,QAAQ,EAAE,SAA+B;IACzC,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,YAAY,EAAW;IAC3D,YAAY,EAAE,EAAoB;IAClC,cAAc,EAAE,EAAiB;IACjC,IAAI,EAAE,SAAwD;IAC9D,YAAY,EAAE,EAA4B;CAC3C,CAAC;AAEF,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0C,CAAC;AAEpE,MAAM,UAAU,EAAE,CAAC,KAAY,EAAE,EAA8B;IAC7D,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;QAChB,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,MAAe,EAAE,EAA8B;IACpE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1C,OAAO,GAAG,EAAE;QACV,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,GAAG,EAAE,CAAC;QACR,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1J,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAY,EAAE,MAAgB;IACnD,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5C,EAAE,CAAC,MAAM,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5C,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpH,CAAC;AAED,MAAM,aAAa,GAA2C;IAC5D,OAAO,EAAE,uBAAuB;IAChC,cAAc,EAAE,+CAA+C;IAC/D,SAAS,EAAE,qBAAqB;IAChC,UAAU,EAAE,YAAY;CACzB,CAAC;AAIF,MAAM,UAAU,SAAS,CAAC,IAAU;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;IAC1G,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;IACnF,CAAC;IACD,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC;IACzG,CAAC;IACD,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,6DAA6D,EAAE,CAAC;IACrH,CAAC;IACD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,0DAA0D,EAAE,CAAC;IAC1H,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,+DAA+D,EAAE,CAAC;IACnH,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC/D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAA8B,CAAC,CAAC;AACpH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAqB;IAC/C,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACjB,MAAM,CAAC,KAAK,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnB,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,UAAU,CAAC,CAAC,CAAC,CAAC;IACd,QAAQ,CAAC,SAAS,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,KAAK,CAAC,EAAE,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,KAAK,CAAC,QAAQ,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,CAAC;IAC5C,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,UAAU,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE9C,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5C,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1B,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,SAAiB;IAC/C,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,iCAAiC,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IACpF,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,eAAe,EAAE,CAAC;IAClB,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,CAAC,OAAO,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc;IAC/C,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,8BAA8B,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACjF,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,MAAM,CAAC,OAAO,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,KAAK,CAAC,YAAY,GAAG,MAAM,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACxD,MAAM,CAAC,eAAe,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,UAAU,CAAC,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAQ;IACjC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;IAChB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACnG,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC;QACvE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAA8E;IAC3G,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;IAClG,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;IACtJ,MAAM,IAAI,GAAU,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACnF,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjB,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IACD,UAAU,CAAC,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,MAAe,YAAY;IACnE,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9H,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,IAAI;IAQW;IACA;IACA;IACA;IAVV,MAAM,GAAgB,EAAE,CAAC;IAClC,KAAK,GAAG,KAAK,CAAC;IACN,IAAI,GAAG,CAAC,CAAC;IACT,MAAM,GAAgB,EAAE,CAAC;IACzB,KAAK,GAAG,CAAC,CAAC;IAElB,YACmB,eAAsB,EACtB,WAAkB,EAClB,UAAiB,EACjB,KAAoB;QAHpB,oBAAe,GAAf,eAAe,CAAO;QACtB,gBAAW,GAAX,WAAW,CAAO;QAClB,eAAU,GAAV,UAAU,CAAO;QACjB,UAAK,GAAL,KAAK,CAAe;IACpC,CAAC;IAEK,IAAI,GAAG,CAAC,EAAa,EAAQ,EAAE;QACtC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YACnD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC;IAEO,IAAI,GAAG,CAAC,OAAoB,EAAQ,EAAE;QAC7C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC;IAEM,KAAK;QACX,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,MAAM,GAAgB,EAAE,CAAC;QAC7B,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YACxB,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChB,SAAS;YACX,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpB,MAAM,GAAG,EAAE,CAAC;YACZ,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAEO,MAAM,CAAC,MAAmB;QAChC,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YACxB,IAAI,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACf,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC;YACrB,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF;AAED,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgB,CAAC;AAC1C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AACtF,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;AAEvC,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,IAAU;IACnD,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,4BAA4B,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QAC1I,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACrB,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;YAC9B,MAAM;QACR,CAAC;IACH,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAQ,CAAC;AAErC,SAAS,QAAQ,CAAC,MAAc;IAC9B,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC;QACxF,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC;IACrB,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1B,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC;SACzB,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;SACxE,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe;IACtB,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,MAAM,KAAK,KAAK,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,KAAK,CAAC,cAAc,KAAK,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzB,CAAC;AAED,MAAM,SAAS,GAAG,aAAa,CAAC;AAEhC,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAA2B,CAAC;AACvF,CAAC;AAED,SAAS,WAAW,CAAC,MAA0B;IAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IACD,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,KAAK,CAAC,YAAY,GAAG,MAAM,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACxD,MAAM,CAAC,WAAW,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAU;IACtC,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,eAAe,CAAC,MAAc,EAAE,GAAW;IAClD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;IACjC,MAAM,CAAC,WAAW,CAAC,CAAC;IACpB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,GAAW;IACzD,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IACD,GAAG,CAAC,kCAAkC,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAC;AAChJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAU;IACpC,KAAK,CAAC,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IACxD,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IACjC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAA0B;IACnD,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpB,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC;IAC9B,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC3B,eAAe,EAAE,CAAC;IAClB,MAAM,CAAC,WAAW,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,IAAI,QAAQ,GAAG,KAAK,CAAC;AAErB,KAAK,UAAU,aAAa;IAC1B,SAAS,CAAC;QACR,IAAI,CAAC;YACH,OAAO,MAAM,GAAG,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;YACxC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC;IACnC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5H,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACjG,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAa;IACvC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACf,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;QACjB,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACpB,OAAO;IACT,CAAC;IAED,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,cAAc;YACjB,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;gBAC5C,KAAK,MAAM,EAAE,CAAC;YAChB,CAAC;YACD,MAAM;QACR,KAAK,iBAAiB;YACpB,KAAK,YAAY,EAAE,CAAC;YACpB,MAAM;QACR,KAAK,cAAc,CAAC;QACpB,KAAK,kBAAkB,CAAC;QACxB,KAAK,mBAAmB,CAAC;QACzB,KAAK,qBAAqB,CAAC;QAC3B,KAAK,yBAAyB,CAAC;QAC/B,KAAK,+BAA+B,CAAC;QACrC,KAAK,mCAAmC,CAAC;QACzC,KAAK,2BAA2B,CAAC;QACjC,KAAK,2BAA2B,CAAC;QACjC,KAAK,oBAAoB,CAAC;QAC1B,KAAK,kBAAkB,CAAC;QACxB,KAAK,sBAAsB,CAAC;QAC5B,KAAK,aAAa,CAAC;QACnB,KAAK,gBAAgB,CAAC;QACtB,KAAK,YAAY;YACf,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;gBAClB,KAAK,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;YAChC,CAAC;YACD,MAAM;QACR,KAAK,iBAAiB,CAAC;QACvB,KAAK,eAAe,CAAC;QACrB,KAAK,eAAe;YAClB,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;gBACb,KAAK,gBAAgB,EAAE,CAAC;YAC1B,CAAC;iBAAM,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;gBACtB,KAAK,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC;YACD,MAAM;QACR,KAAK,eAAe;YAClB,WAAW,CAAC,EAAE,CAAC,OAA+B,CAAC,CAAC;YAChD,KAAK,SAAS,EAAE,CAAC;YACjB,MAAM;QACR,KAAK,eAAe;YAClB,KAAK,SAAS,EAAE,CAAC;YACjB,MAAM;QACR,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,UAAU,CAAC,EAAE,CAAC,CAAC;YACf,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7F,IAAI,IAAI,IAAI,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,CAAC;gBAC1B,MAAM,CAAC,WAAW,CAAC,CAAC;YACtB,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,cAAc;YACjB,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1E,MAAM;QACR,KAAK,eAAe;YAClB,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;gBACjC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,UAAU,CAAC,EAAE,CAAC,OAA2B,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM;IACV,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACtB,CAAC"} \ No newline at end of file diff --git a/web/dist/task.js b/web/dist/task.js index fc69d03..810c960 100644 --- a/web/dist/task.js +++ b/web/dist/task.js @@ -1,5 +1,5 @@ -import { get, post } from "./api.js"; -import { ago, copyable, errorText, h, replace, showAlert, showConfirm } from "./dom.js"; +import { del, get, post } from "./api.js"; +import { ago, copyable, errorText, h, replace, showAlert, showChoice, showConfirm } from "./dom.js"; import { markdown } from "./markdown.js"; import { previewURL } from "./preview.js"; import { findingCount, reviewCounts, severityCounts, unignoredFindings } from "./reviews.js"; @@ -103,10 +103,12 @@ function taskHead(rerender) { ? "Waiting for the parent task's agent to merge this subtask" : held ? "Waiting for the merge in progress in this project to finish" - : task.parent_task_id !== undefined - ? `Merge this subtask into its parent task's branch, or into ${target} (⌘S)` - : `The agent merges ${target} in, then byre squashes into one commit on ${target} and pushes it to origin; held while another task in the project is merging (⌘S)`, - }, intoParent ? "Merging into parent" : held ? "Merge held" : "Merge"); + : task.merge_after_review + ? "Merges when the running review finishes with no findings; open to merge now instead (⌘S)" + : task.parent_task_id !== undefined + ? `Merge this subtask into its parent task's branch, or into ${target} (⌘S)` + : `The agent merges ${target} in, then byre squashes into one commit on ${target} and pushes it to origin; held while another task in the project is merging (⌘S)`, + }, intoParent ? "Merging into parent" : held ? "Merge held" : task.merge_after_review ? "Merge after review" : "Merge"); merge.onclick = () => confirmMerge(task.id); const mergeIn = h("button", { disabled: busy, title: `Ask the agent to bring ${target} into this branch and resolve any conflicts` }, `Sync from ${target}`); mergeIn.onclick = async () => { @@ -523,6 +525,7 @@ export function mountChat(root, src, makeHead) { } } fillTodoLinks(transcript, models[0]); + syncMergeAfterReview(transcript); pin(); jump(); }; @@ -538,6 +541,7 @@ export function mountChat(root, src, makeHead) { syncRunning(); fillTodoLinks(box, models[0]); earlier.after(box); + syncMergeAfterReview(transcript); transcript.scrollTop = transcript.scrollHeight - fromBottom; }; let disposed = false; @@ -610,7 +614,10 @@ export function mountChat(root, src, makeHead) { loading.remove(); watchTop(); }), - onEach(["tasks", "sessions"], () => fillTodoLinks(transcript, models[0])), + onEach(["tasks", "sessions"], () => { + fillTodoLinks(transcript, models[0]); + syncMergeAfterReview(transcript); + }), on("jump", jump), ]; replace(root, h("div", { class: "transcript-view" }, head, transcript, composer)); @@ -1085,6 +1092,27 @@ function renderEvent(ev, ctx) { return h("div", { class: "note" }, `${ev.actor} asked to merge; held until the merge in progress in this project is done `, when); case "task.merge_stopped": return h("div", { class: "note" }, `${ev.actor} stopped the merge for review: ${String(p["reason"])} `, when); + case "task.merge_after_review": { + const taskId = String(p["id"]); + const cancel = h("button", { type: "button", class: "merge-after-review-cancel", hidden: true, title: "Withdraw this request; nothing is merged", data: { taskId } }, "Cancel"); + cancel.onclick = async () => { + cancel.disabled = true; + try { + await del("/api/tasks/{taskId}/merge-after-review", { path: { taskId } }); + } + catch (err) { + void showAlert(errorText(err)); + } + finally { + cancel.disabled = false; + } + }; + return h("div", { class: "note" }, `${ev.actor} asked to merge once the review of snapshot #${String(p["snapshot_n"])} finishes with no findings `, when, cancel); + } + case "task.merge_after_review_cancelled": + return h("div", { class: "note" }, `${ev.actor} cancelled the merge after review `, when); + case "task.merge_after_review_dropped": + return h("div", { class: "note" }, `didn't merge after the review: ${String(p["reason"])} `, when); case "preview.exposed": { const url = previewURL(Number(p["port"])); return h("div", { class: "note" }, `${ev.actor} exposed "${String(p["name"])}" at `, h("a", { href: url, target: "_blank", rel: "noopener" }, url), " ", when); @@ -1103,6 +1131,13 @@ function renderEvent(ev, ctx) { } return null; } +function syncMergeAfterReview(root) { + const buttons = [...root.querySelectorAll(".merge-after-review-cancel")]; + const last = buttons.at(-1); + for (const b of buttons) { + b.hidden = b !== last || findTask(b.dataset["taskId"] ?? "")?.merge_after_review !== true; + } +} function taskLink(id) { const task = findTask(id); if (task?.status !== "active") { @@ -1212,11 +1247,30 @@ export async function confirmMerge(taskId) { }; const watch = watchMergeWarnings(taskId, warnings, leave); await watch.ready; + const anchor = document.querySelector(".merge-button"); + const merge = async (afterReview) => { + const body = toParent ? { target: "parent" } : { merge_title: input?.value ?? title }; + try { + await post("/api/tasks/{taskId}/merge", { path: { taskId }, body: afterReview ? { ...body, after_review: true } : body }); + } + catch (err) { + await showAlert(errorText(err)); + } + }; try { - await confirmThen(question, "Merge", false, document.querySelector(".merge-button"), async () => { - const body = toParent ? { target: "parent" } : { merge_title: input?.value ?? title }; - await post("/api/tasks/{taskId}/merge", { path: { taskId }, body }); - }); + if (!watch.reviewRunning()) { + if (await showConfirm(question, "Merge", false, anchor)) { + await merge(false); + } + return; + } + const choice = await showChoice(question, [ + { label: "Merge now", value: "now" }, + { label: "After review", value: "after", class: "primary", title: "Merge once the running review finishes with no findings" }, + ], anchor); + if (choice === "now" || choice === "after") { + await merge(choice === "after"); + } } finally { watch.dispose(); @@ -1225,6 +1279,7 @@ export async function confirmMerge(taskId) { const mergeDrafts = new Map(); function watchMergeWarnings(taskId, list, leave) { let reviewItems = []; + let running = false; let target = 0; const render = () => { const questions = state.inbox.filter((i) => i.task_id === taskId && i.kind === "question").length; @@ -1239,14 +1294,16 @@ function watchMergeWarnings(taskId, list, leave) { const load = async () => { const started = ++target; let items; + let isRunning = false; try { - items = await reviewWarnings(taskId, leave); + ({ items, running: isRunning } = await reviewWarnings(taskId, leave)); } catch (err) { items = [mergeWarning("Review status unavailable", undefined, errorText(err))]; } if (started === target) { reviewItems = items; + running = isRunning; render(); } }; @@ -1261,6 +1318,7 @@ function watchMergeWarnings(taskId, list, leave) { ]; return { ready: load(), + reviewRunning: () => running, dispose: () => { target++; for (const off of offs) { @@ -1273,7 +1331,7 @@ async function reviewWarnings(taskId, leave) { const [snaps, reviews] = await Promise.all([get("/api/tasks/{taskId}/snapshots", { path: { taskId } }), get("/api/tasks/{taskId}/reviews", { path: { taskId } })]); const latest = snaps.at(-1); if (!latest) { - return [mergeWarning("These changes haven't been reviewed")]; + return { items: [mergeWarning("These changes haven't been reviewed")], running: false }; } const items = []; const open = () => leave(() => { @@ -1297,7 +1355,7 @@ async function reviewWarnings(taskId, leave) { if (changes.files.length > 0) { items.push(mergeWarning("Changes since the last snapshot haven't been reviewed")); } - return items; + return { items, running: r?.state === "running" }; } function mergeWarning(text, open, detail) { if (!open) { diff --git a/web/dist/task.js.map b/web/dist/task.js.map index 708ce4f..a13ff51 100644 --- a/web/dist/task.js.map +++ b/web/dist/task.js.map @@ -1 +1 @@ -{"version":3,"file":"task.js","sourceRoot":"","sources":["../src/task.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"task.js","sourceRoot":"","sources":["../src/task.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/web/dist/todolink.js b/web/dist/todolink.js index be287d1..824fd0a 100644 --- a/web/dist/todolink.js +++ b/web/dist/todolink.js @@ -51,6 +51,6 @@ function fill(el, model) { startButton.onclick = () => void start(false); const discussButton = h("button", { disabled: busy, title: "Start a task that discusses it with you in chat before building anything" }, "discuss"); discussButton.onclick = () => void start(true); - replace(action, startButton, h("span", { class: "todo-sep" }, " · "), discussButton); + replace(action, startButton, discussButton); } //# sourceMappingURL=todolink.js.map \ No newline at end of file diff --git a/web/dist/todolink.js.map b/web/dist/todolink.js.map index 7a73357..45ceff2 100644 --- a/web/dist/todolink.js.map +++ b/web/dist/todolink.js.map @@ -1 +1 @@ -{"version":3,"file":"todolink.js","sourceRoot":"","sources":["../src/todolink.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"todolink.js","sourceRoot":"","sources":["../src/todolink.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/web/src/api.gen.ts b/web/src/api.gen.ts index cba86bb..8a40357 100644 --- a/web/src/api.gen.ts +++ b/web/src/api.gen.ts @@ -388,7 +388,7 @@ export interface paths { }; get?: never; put?: never; - /** @description Sets the task's merge_title to the confirmed title, then starts the same agent turn as merge-in, without its invitation to revise the title. When that turn ends normally, byre squashes the task's worktree into one commit titled with the task's merge_title on the project's default branch, authored by the caller with a Co-authored-by trailer for each of the task's co-authors, pushes it to origin, fast-forwards the project's checkout to it, then removes the worktree and branch and marks the task merged. While another task in the project is merging, the merge is held instead (merge_queued_at is set) and starts when no merge is in progress in the project and the task's session is idle, oldest first. The title is fixed from here until the task closes. Refused while a turn is running, or the merge is already held. With target parent, for a subtask only, the subtask's branch is merged into its parent task's branch instead: the parent's agent is asked to merge it (queued if it is mid-turn), and the subtask closes as merged once its branch is in the parent's HEAD at the end of one of the parent's turns (merging_into_parent is set until then). Refused while the subtask's turn is running or it is already merging into its parent. Either target is refused while the task has active subtasks of its own. */ + /** @description Sets the task's merge_title to the confirmed title, then starts the same agent turn as merge-in, without its invitation to revise the title. When that turn ends normally, byre squashes the task's worktree into one commit titled with the task's merge_title on the project's default branch, authored by the caller with a Co-authored-by trailer for each of the task's co-authors, pushes it to origin, fast-forwards the project's checkout to it, then removes the worktree and branch and marks the task merged. While another task in the project is merging, the merge is held instead (merge_queued_at is set) and starts when no merge is in progress in the project and the task's session is idle, oldest first. The title is fixed from here until the task closes. Refused while a turn is running, or the merge is already held. With target parent, for a subtask only, the subtask's branch is merged into its parent task's branch instead: the parent's agent is asked to merge it (queued if it is mid-turn), and the subtask closes as merged once its branch is in the parent's HEAD at the end of one of the parent's turns (merging_into_parent is set until then). Refused while the subtask's turn is running or it is already merging into its parent. Either target is refused while the task has active subtasks of its own. With after_review, nothing starts yet: the request is recorded (merge_after_review is set) and made, as this caller and with this target, when the review of the task's latest snapshot finishes with no findings, that snapshot is still the latest and no turn is running; otherwise it is dropped with a transcript note. Refused (409) unless that review is running. */ post: operations["mergeTask"]; delete?: never; options?: never; @@ -396,6 +396,25 @@ export interface paths { patch?: never; trace?: never; }; + "/api/tasks/{taskId}/merge-after-review": { + parameters: { + query?: never; + header?: never; + path: { + taskId: string; + }; + cookie?: never; + }; + get?: never; + put?: never; + post?: never; + /** @description Withdraws a Merge with after_review that is still waiting for its review; nothing is merged. */ + delete: operations["cancelMergeAfterReview"]; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/api/tasks/{taskId}/merge-in": { parameters: { query?: never; @@ -1012,6 +1031,8 @@ export interface components { parent_task_id?: string; /** @description Whether a merge of this subtask into its parent was requested and the parent hasn't merged it yet. */ merging_into_parent: boolean; + /** @description Whether a Merge with after_review is waiting for the running review of the latest snapshot to finish. */ + merge_after_review: boolean; /** * Format: int64 * @description The seq of the task's latest turn.ended event with summary: true; 0 when it has none. @@ -2129,11 +2150,13 @@ export interface operations { * @enum {string} */ target?: "main" | "parent"; + /** @description Merge once the running review of the latest snapshot finishes with no findings, instead of now. */ + after_review?: boolean; }; }; }; responses: { - /** @description The merge was started or held. */ + /** @description The merge was started, held, or set to start after the review. */ 202: { headers: { [name: string]: unknown; @@ -2147,6 +2170,29 @@ export interface operations { 409: components["responses"]["Error"]; }; }; + cancelMergeAfterReview: { + parameters: { + query?: never; + header?: never; + path: { + taskId: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description The request was withdrawn. */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Task"]; + }; + }; + 404: components["responses"]["Error"]; + }; + }; mergeIn: { parameters: { query?: never; diff --git a/web/src/dom.ts b/web/src/dom.ts index 6ee149d..1ab316d 100644 --- a/web/src/dom.ts +++ b/web/src/dom.ts @@ -79,8 +79,10 @@ export function errorText(err: unknown): string { return err instanceof Error ? err.message : String(err); } -function modal(content: string | Node[], buttons: { label: string; value: string; class?: string }[], anchor: Element | null = null): Promise { - const actions = buttons.map((b) => h("button", { type: "submit", value: b.value, class: b.class ?? "", formNoValidate: b.value === "cancel" }, b.label)); +type ModalButton = { label: string; value: string; class?: string; title?: string }; + +function modal(content: string | Node[], buttons: ModalButton[], anchor: Element | null = null): Promise { + const actions = buttons.map((b) => h("button", { type: "submit", value: b.value, class: b.class ?? "", title: b.title ?? "", formNoValidate: b.value === "cancel" }, b.label)); const body = typeof content === "string" ? [h("p", { class: "modal-text" }, content)] : content; const dialog = h("dialog", { class: "modal" }, h("form", { method: "dialog" }, ...body, h("div", { class: "modal-actions" }, ...actions))); for (const input of dialog.querySelectorAll("input")) { @@ -129,3 +131,7 @@ export async function showConfirm(content: string | Node[], action: string, dang ); return value === "ok"; } + +export async function showChoice(content: string | Node[], choices: ModalButton[], anchor: Element | null = null): Promise { + return modal(content, [{ label: "Cancel", value: "cancel" }, ...choices], anchor); +} diff --git a/web/src/state.ts b/web/src/state.ts index c1dfbbf..ebd1c5e 100644 --- a/web/src/state.ts +++ b/web/src/state.ts @@ -111,6 +111,9 @@ export function taskState(task: Task): TaskState { if (task.merge_queued_at !== undefined) { return { kind: "held", label: "Merge held", title: "Waiting for the merge in progress in this project to finish" }; } + if (task.merge_after_review) { + return { kind: "held", label: "Merge after review", title: "Merges when the running review finishes with no findings" }; + } if (open.length > 0) { return { kind: "error", label: "Error", title: "The agent's session failed or hit a rate limit; see the inbox" }; } @@ -498,6 +501,9 @@ export function handleEvent(ev: ByreEvent): void { case "task.merge_title": case "task.merge_queued": case "task.merge_unqueued": + case "task.merge_after_review": + case "task.merge_after_review_ended": + case "task.merge_after_review_cancelled": case "task.parent_merge_started": case "task.parent_merge_stopped": case "task.merge_started": diff --git a/web/src/task.ts b/web/src/task.ts index 45661af..77d1445 100644 --- a/web/src/task.ts +++ b/web/src/task.ts @@ -1,5 +1,5 @@ -import { get, post, type AgentSession, type ByreEvent, type Participant, type Schemas, type Snapshot } from "./api.js"; -import { ago, copyable, errorText, h, replace, showAlert, showConfirm } from "./dom.js"; +import { del, get, post, type AgentSession, type ByreEvent, type Participant, type Schemas, type Snapshot } from "./api.js"; +import { ago, copyable, errorText, h, replace, showAlert, showChoice, showConfirm } from "./dom.js"; import { markdown } from "./markdown.js"; import { previewURL } from "./preview.js"; import { findingCount, reviewCounts, severityCounts, unignoredFindings } from "./reviews.js"; @@ -172,11 +172,13 @@ function taskHead(rerender: () => void): Head { ? "Waiting for the parent task's agent to merge this subtask" : held ? "Waiting for the merge in progress in this project to finish" - : task.parent_task_id !== undefined + : task.merge_after_review + ? "Merges when the running review finishes with no findings; open to merge now instead (⌘S)" + : task.parent_task_id !== undefined ? `Merge this subtask into its parent task's branch, or into ${target} (⌘S)` : `The agent merges ${target} in, then byre squashes into one commit on ${target} and pushes it to origin; held while another task in the project is merging (⌘S)`, }, - intoParent ? "Merging into parent" : held ? "Merge held" : "Merge", + intoParent ? "Merging into parent" : held ? "Merge held" : task.merge_after_review ? "Merge after review" : "Merge", ); merge.onclick = () => confirmMerge(task.id); const mergeIn = h("button", { disabled: busy, title: `Ask the agent to bring ${target} into this branch and resolve any conflicts` }, `Sync from ${target}`); @@ -614,6 +616,7 @@ export function mountChat(root: HTMLElement, src: ChatSource, makeHead: (rerende } } fillTodoLinks(transcript, models[0]!); + syncMergeAfterReview(transcript); pin(); jump(); }; @@ -630,6 +633,7 @@ export function mountChat(root: HTMLElement, src: ChatSource, makeHead: (rerende syncRunning(); fillTodoLinks(box, models[0]!); earlier.after(box); + syncMergeAfterReview(transcript); transcript.scrollTop = transcript.scrollHeight - fromBottom; }; @@ -707,7 +711,10 @@ export function mountChat(root: HTMLElement, src: ChatSource, makeHead: (rerende loading.remove(); watchTop(); }), - onEach(["tasks", "sessions"], () => fillTodoLinks(transcript, models[0]!)), + onEach(["tasks", "sessions"], () => { + fillTodoLinks(transcript, models[0]!); + syncMergeAfterReview(transcript); + }), on("jump", jump), ]; @@ -1273,6 +1280,28 @@ function renderEvent(ev: ByreEvent, ctx: Ctx): HTMLElement | null { case "task.merge_stopped": return h("div", { class: "note" }, `${ev.actor} stopped the merge for review: ${String(p["reason"])} `, when); + case "task.merge_after_review": { + const taskId = String(p["id"]); + const cancel = h("button", { type: "button", class: "merge-after-review-cancel", hidden: true, title: "Withdraw this request; nothing is merged", data: { taskId } }, "Cancel"); + cancel.onclick = async () => { + cancel.disabled = true; + try { + await del("/api/tasks/{taskId}/merge-after-review", { path: { taskId } }); + } catch (err) { + void showAlert(errorText(err)); + } finally { + cancel.disabled = false; + } + }; + return h("div", { class: "note" }, `${ev.actor} asked to merge once the review of snapshot #${String(p["snapshot_n"])} finishes with no findings `, when, cancel); + } + + case "task.merge_after_review_cancelled": + return h("div", { class: "note" }, `${ev.actor} cancelled the merge after review `, when); + + case "task.merge_after_review_dropped": + return h("div", { class: "note" }, `didn't merge after the review: ${String(p["reason"])} `, when); + case "preview.exposed": { const url = previewURL(Number(p["port"])); return h("div", { class: "note" }, `${ev.actor} exposed "${String(p["name"])}" at `, h("a", { href: url, target: "_blank", rel: "noopener" }, url), " ", when); @@ -1302,6 +1331,14 @@ function renderEvent(ev: ByreEvent, ctx: Ctx): HTMLElement | null { return null; } +function syncMergeAfterReview(root: ParentNode): void { + const buttons = [...root.querySelectorAll(".merge-after-review-cancel")]; + const last = buttons.at(-1); + for (const b of buttons) { + b.hidden = b !== last || findTask(b.dataset["taskId"] ?? "")?.merge_after_review !== true; + } +} + function taskLink(id: string): Node { const task = findTask(id); if (task?.status !== "active") { @@ -1427,11 +1464,33 @@ export async function confirmMerge(taskId: string): Promise { }; const watch = watchMergeWarnings(taskId, warnings, leave); await watch.ready; + const anchor = document.querySelector(".merge-button"); + const merge = async (afterReview: boolean) => { + const body = toParent ? { target: "parent" as const } : { merge_title: input?.value ?? title }; + try { + await post("/api/tasks/{taskId}/merge", { path: { taskId }, body: afterReview ? { ...body, after_review: true } : body }); + } catch (err) { + await showAlert(errorText(err)); + } + }; try { - await confirmThen(question, "Merge", false, document.querySelector(".merge-button"), async () => { - const body = toParent ? { target: "parent" as const } : { merge_title: input?.value ?? title }; - await post("/api/tasks/{taskId}/merge", { path: { taskId }, body }); - }); + if (!watch.reviewRunning()) { + if (await showConfirm(question, "Merge", false, anchor)) { + await merge(false); + } + return; + } + const choice = await showChoice( + question, + [ + { label: "Merge now", value: "now" }, + { label: "After review", value: "after", class: "primary", title: "Merge once the running review finishes with no findings" }, + ], + anchor, + ); + if (choice === "now" || choice === "after") { + await merge(choice === "after"); + } } finally { watch.dispose(); } @@ -1439,8 +1498,9 @@ export async function confirmMerge(taskId: string): Promise { const mergeDrafts = new Map(); -function watchMergeWarnings(taskId: string, list: HTMLElement, leave: (go: () => void) => void): { ready: Promise; dispose: () => void } { +function watchMergeWarnings(taskId: string, list: HTMLElement, leave: (go: () => void) => void): { ready: Promise; reviewRunning: () => boolean; dispose: () => void } { let reviewItems: HTMLElement[] = []; + let running = false; let target = 0; const render = () => { const questions = state.inbox.filter((i) => i.task_id === taskId && i.kind === "question").length; @@ -1455,13 +1515,15 @@ function watchMergeWarnings(taskId: string, list: HTMLElement, leave: (go: () => const load = async () => { const started = ++target; let items: HTMLElement[]; + let isRunning = false; try { - items = await reviewWarnings(taskId, leave); + ({ items, running: isRunning } = await reviewWarnings(taskId, leave)); } catch (err) { items = [mergeWarning("Review status unavailable", undefined, errorText(err))]; } if (started === target) { reviewItems = items; + running = isRunning; render(); } }; @@ -1476,6 +1538,7 @@ function watchMergeWarnings(taskId: string, list: HTMLElement, leave: (go: () => ]; return { ready: load(), + reviewRunning: () => running, dispose: () => { target++; for (const off of offs) { @@ -1485,11 +1548,11 @@ function watchMergeWarnings(taskId: string, list: HTMLElement, leave: (go: () => }; } -async function reviewWarnings(taskId: string, leave: (go: () => void) => void): Promise { +async function reviewWarnings(taskId: string, leave: (go: () => void) => void): Promise<{ items: HTMLElement[]; running: boolean }> { const [snaps, reviews] = await Promise.all([get("/api/tasks/{taskId}/snapshots", { path: { taskId } }), get("/api/tasks/{taskId}/reviews", { path: { taskId } })]); const latest = snaps.at(-1); if (!latest) { - return [mergeWarning("These changes haven't been reviewed")]; + return { items: [mergeWarning("These changes haven't been reviewed")], running: false }; } const items: HTMLElement[] = []; const open = () => @@ -1511,7 +1574,7 @@ async function reviewWarnings(taskId: string, leave: (go: () => void) => void): if (changes.files.length > 0) { items.push(mergeWarning("Changes since the last snapshot haven't been reviewed")); } - return items; + return { items, running: r?.state === "running" }; } function mergeWarning(text: string, open?: () => void, detail?: string): HTMLElement { diff --git a/web/src/todolink.ts b/web/src/todolink.ts index 55e0448..c43d4e0 100644 --- a/web/src/todolink.ts +++ b/web/src/todolink.ts @@ -64,5 +64,5 @@ function fill(el: HTMLElement, model: string): void { startButton.onclick = () => void start(false); const discussButton = h("button", { disabled: busy, title: "Start a task that discusses it with you in chat before building anything" }, "discuss"); discussButton.onclick = () => void start(true); - replace(action, startButton, h("span", { class: "todo-sep" }, " · "), discussButton); + replace(action, startButton, discussButton); } diff --git a/web/style.css b/web/style.css index e030a70..d8d2790 100644 --- a/web/style.css +++ b/web/style.css @@ -486,19 +486,10 @@ a.task-link { vertical-align: middle; } -.todo-link button { - padding: 0; - border: none; - background: none; - color: var(--accent); -} - -.todo-link button:hover:not(:disabled) { - text-decoration: underline; -} - -.todo-sep { - color: var(--muted); +.todo-action { + display: inline-flex; + gap: 8px; + vertical-align: middle; } .project h2 { @@ -1046,7 +1037,10 @@ button.compact.danger { background: var(--border); } -.snap-row button { +.snap-row button, +.todo-link .todo-action button, +.finding-actions button, +.note button.merge-after-review-cancel { padding: 0 6px; border-radius: 4px; font-size: 11px; @@ -2121,18 +2115,6 @@ pre.diff .mark { align-items: baseline; } -.finding-actions button { - padding: 0 8px; - border-radius: 4px; - font-size: 11px; - color: var(--accent); - background: transparent; -} - -.finding-actions button.finding-ignore { - color: var(--muted); -} - .finding-done { font-size: 11px; color: var(--muted); @@ -2249,6 +2231,10 @@ pre.diff .mark { text-decoration: underline; } +.note button.merge-after-review-cancel { + margin-left: 6px; +} + .merge-coauthors { margin: 0 0 16px; color: var(--muted);