reviews and inbox smashing
This commit is contained in:
+1
-5
@@ -1426,7 +1426,7 @@ components:
|
||||
|
||||
InboxItem:
|
||||
type: object
|
||||
required: [id, project_id, task_id, agent_session_id, thread_id, kind, payload, state, created_at, responses, reviews]
|
||||
required: [id, project_id, task_id, agent_session_id, thread_id, kind, payload, state, created_at, responses]
|
||||
properties:
|
||||
id: { type: string }
|
||||
project_id: { type: string }
|
||||
@@ -1442,10 +1442,6 @@ components:
|
||||
session_error: error.
|
||||
rate_limited: vendor, rate_limit (the vendor's rate-limit status), error.
|
||||
state: { $ref: "#/components/schemas/InboxState" }
|
||||
reviews:
|
||||
type: array
|
||||
description: "question: the review of the first snapshot the task took after the question was asked (the snapshot at the end of the turn that asked it), once that snapshot exists; empty for other items."
|
||||
items: { $ref: "#/components/schemas/Review" }
|
||||
created_at: { type: string, format: date-time }
|
||||
resolved_by: { type: string }
|
||||
resolved_at: { type: string, format: date-time }
|
||||
|
||||
@@ -299,7 +299,6 @@ Every new snapshot of a task gets a review: a separate agent session on the vend
|
||||
- **Running.** Reviewer sessions get `reviewGuidance` and only the `submit_review` tool, whose arguments (`reviewSchema`: `change`, a few sentences of Markdown on what the change does, required and non-empty; a Markdown `summary`, which the guidance and schema require to be exactly "No significant findings." when there are no findings and otherwise a bulleted list with one line per finding; `findings`, each with `severity`, `category`, `title`, `detail`, `path`, `line`, `end_line` and `images`; and top-level `images`) become the review's `result` and mark it `done`. The guidance encourages, without requiring, Mermaid blocks for a data flow, call graph, state machine or schema the change alters, and screenshots when the change alters something visible.
|
||||
- **Forwarding.** When a submitted review has findings, byre sends them to the task's live agent as a `byre` message (`forwardFindings` and `findingsMessage` in `internal/agents/review.go`): each finding's severity, title, location and detail, under a preamble asking the agent to check each one against the code and its brief, act on those that hold up, and say in its final message which it acted on and which it left and why. It goes through `Manager.Message`, so it is queued like any message while the agent is mid-turn. A task with no live agent session gets nothing, and the log says `review findings not forwarded`. Forwarding doesn't set any finding's state; **fix** and **ignore** stay available.
|
||||
- **Screenshots.** Reviewer sessions also get the Playwright MCP server (`playwrightMCP` in `internal/agents/review.go`: `npx @playwright/mcp` at a pinned version, headless Chrome, isolated profile, absolute file paths), passed to Claude as a `stdio` entry in `--mcp-config` and to Codex as `mcp_servers` in the thread's `config`. Its automatically named files go to `worktrees/<project-id>/review-<review-id>-media`, removed with the checkout. Each `images` entry is `{path, caption}`, the path absolute or relative to the checkout; at `submit_review` byre reads every one, refuses the whole submission (nothing recorded) for a missing file or one that isn't one of `store.ImageTypes` within `store.MaxBlobBytes`, then stores each as a blob and replaces its `path` with `blob`, since the files are deleted with the checkout. They run without the Stop-hook bounce, mid-turn delivery, end-of-turn commit, snapshots or turn summaries, and their `user.message` events carry no `head`. When the reviewer's turn ends byre completes its session, kills its process and removes the worktree; a review still `running` then fails with why (no submission, with the final message; an error; an interrupt). A process that exits mid-turn fails the review the same way. Merging or discarding the task fails its running reviews ("the task was closed") and ends their reviewers. On startup, a running reviewer resumes like any session, and a running review whose reviewer isn't `running` fails.
|
||||
- **Questions.** A question's `reviews` is the review of the first snapshot the task took after the question was filed, the one at the end of the turn that asked it, computed when the item is read; the Inbox tab shows it under the question once it starts.
|
||||
- **Events.** `review.started`, `review.finished` (state `done`, `failed` or `skipped`; a skipped review emits only `review.finished`) and `review.finding` (a finding's state set, with the user as actor) carry the whole review, with the task's ids and no `agent_session_id`. A reviewer's own events carry its session id and the task's ids: the transcript skips every event of a session whose `session.created` has `role` `reviewer`, and draws each `review.finished` as a note with its outcome; the lead's `read_transcript` leaves the reviewer's events out and shows each `review.finished` with its summary and findings (`reviewLine`). `GET /api/tasks/{taskId}/sessions` and everything that looks for the task's agent (`ListSessions`) see only implementer sessions.
|
||||
- **UI.** The **Reviews** tab (`web/src/reviews.ts`) shows one review at a time, picked by snapshot (see "Snapshots" for the picker): its snapshot, state or severity counts, error, summary, screenshots and findings. The `change` field is not shown; it goes to the lead and into notes. A finding with `path` and `line` shows, under its title, the lines `line` to `end_line` plus 3 either side from that file's diff for the snapshot's step (`changes?snapshot=<n>&step=true`, the diff the reviewer was given), with new-file line numbers and the finding's own lines marked; it shows nothing when those lines aren't in the diff, and "diff not available" with the error once the task is closed. Screenshots link to the full image. Each open finding has **fix** and **ignore** buttons (also on review cards in the inbox). **fix** sends the finding's severity, title, location and detail to the task's agent as a message from the user: through `POST /api/sessions/{id}/messages` to its latest live session (queued like any message while the agent is mid-turn, see "Agent sessions"), or starting a session when it has none; the view stays where it is, so several findings can be sent in a row. Then it, or **ignore** on its own, records the finding's state (`fixed` or `ignored`) with `PUT /api/reviews/{reviewId}/findings/{index}`, the index being the finding's position in `result.findings`; the review's `finding_states` (the `reviews.finding_states` column, a JSON object from index to state) holds them, and the buttons give way to "fix sent" or "ignored". Only a `done` review's findings take a state, and there is no way to clear one. The tab loads when it opens, when the task changes, and on each `review.*` event in the task's stream. The tab follows the latest `review.*` event of the highest-numbered snapshot: while that review runs, the tab label (and its entry in the More menu) carries a spinner in place of any earlier review's count; once it finishes with open findings (those with no state), the tab (or the More menu holding it) is highlighted with a badge of their count. Each snapshot row's **review** button carries a mark over its top-right corner from that snapshot's latest `review.*` event: a spinner while the review runs, a grey ● when it was skipped, a green ✓ when it finished with no open findings, and, when it has open findings, the button highlighted with their count in a badge. A failed review leaves the button unmarked. While any of a task's reviews is `running` and its agent is idle, the task's state is `reviewing` (see "Task state in the store"), which the task switcher and the Project tab show as **Working** (see "Task state"). `GET /api/tasks/{taskId}/reviews` lists a task's reviews oldest first. `sqlite3 byre.db "SELECT id, task_id, snapshot_n, vendor, state, error FROM reviews ORDER BY created_at DESC LIMIT 20"` shows recent ones.
|
||||
|
||||
|
||||
@@ -280,7 +280,6 @@ func (m *Manager) newItem(l *live, id, thread string, kind api.InboxItemKind, pa
|
||||
State: api.Open,
|
||||
CreatedAt: time.Now().UTC(),
|
||||
Responses: []api.InboxResponse{},
|
||||
Reviews: []api.Review{},
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ const leadGuidance = `You are the human's lead agent in byre, shown in the left
|
||||
- Questions from task agents: answer one yourself with answer_question only when the answer is clear, for example the agent's recommendation is plainly right given what the human has said, the human already decided it, or one of your notes settles it outright. Otherwise show it to the human with your recommendation and wait. When the human tells you an answer, give it with answer_question. Say which questions you answered and how, naming the note by its id when one decided it.
|
||||
- Notes: you learn how the human works and keep it with remember, forget and list_notes. byre adds every note to your instructions at the start of each lead session, so they outlast compaction; the human can read and delete them in the Settings tab. Write a note when the human shows a priority, a preference or the reasoning behind a choice that will recur: an answer that departs from the agent's recommendation (the answered signal shows both), a correction or overrule of you or a task agent, or a statement of how they want things done. Record the choice and the why, in their terms, general enough to apply to the next case and specific enough to act on, for example "Prefers replacing a state label over adding a tag beside it: keeps the picker uncluttered." Don't note one-off facts about a single task, and don't duplicate: update an existing note with remember and its id instead. When the human contradicts a note, update it or forget it. Before recommending anything, check your notes, and when one shaped the recommendation, cite its id.
|
||||
- Finished turns: read them and show the human only what matters: work finished and ready to merge, problems, decisions made. Stay quiet about routine progress.
|
||||
- Reviews: after each new snapshot of a task, a reviewer agent from the other vendor reviews the change. The results are on the task's reviews tab, read_transcript shows each review's findings, and a question shows the review of the turn that asked it. They are for the human to look at when they want; mention one only when its findings matter to what the human is deciding.
|
||||
- Reviews: after each new snapshot of a task, a reviewer agent from the other vendor reviews the change. The results are on the task's reviews tab, and read_transcript shows each review's findings. They are for the human to look at when they want; mention one only when its findings matter to what the human is deciding.
|
||||
- Dig into context with list_tasks, read_transcript and read_inbox, and with your own Read, Grep and Bash on a task's worktree path (from list_tasks). Don't edit files in task worktrees; ask the task's agent with send_message.
|
||||
- You can create tasks, start TODO items, message, interrupt and compact task agents, and merge or discard tasks. Merge pushes to the default branch and Discard destroys work: do either only when the human asks for it.
|
||||
- Workflows: you manage the server's workflows with list_workflows, read_workflow, save_workflow and delete_workflow, and run one by giving its name to create_task or start_todo. Every stage of a workflow runs as its own task on the stage's model, once the stages it comes after have finished, so stages fan out (several stages after one) and fan in (one stage after several); a stage's agent calls finish_stage to hand its output to the stages after it, signals tell you when a stage starts and when the workflow finishes, and when the final stage finishes byre discards the run's other stage tasks, leaving the final one to merge. Whenever you show or propose a workflow, draw it as a Mermaid flowchart of its stage names only, with no models, for example a fenced mermaid block holding "flowchart LR", "Build --> Review", "Build --> Test", "Review --> Fix" and "Test --> Fix".
|
||||
|
||||
+170
-174
@@ -741,9 +741,6 @@ type InboxItem struct {
|
||||
ResolvedAt *time.Time `json:"resolved_at,omitempty"`
|
||||
ResolvedBy *string `json:"resolved_by,omitempty"`
|
||||
Responses []InboxResponse `json:"responses"`
|
||||
|
||||
// Reviews question: the review of the first snapshot the task took after the question was asked (the snapshot at the end of the turn that asked it), once that snapshot exists; empty for other items.
|
||||
Reviews []Review `json:"reviews"`
|
||||
State InboxState `json:"state"`
|
||||
TaskId string `json:"task_id"`
|
||||
ThreadId string `json:"thread_id"`
|
||||
@@ -3377,177 +3374,176 @@ var swaggerSpec = []string{
|
||||
"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",
|
||||
}
|
||||
|
||||
// decodeSpec returns the embedded OpenAPI spec as raw JSON bytes,
|
||||
|
||||
@@ -317,10 +317,6 @@ func getItem(ctx context.Context, q querier, id string) (api.InboxItem, error) {
|
||||
}
|
||||
|
||||
item.Responses, err = getResponses(ctx, q, id)
|
||||
if err != nil {
|
||||
return item, err
|
||||
}
|
||||
item.Reviews, err = questionReviews(ctx, q, item)
|
||||
return item, err
|
||||
}
|
||||
|
||||
|
||||
@@ -156,21 +156,6 @@ func emitReview(ctx context.Context, tx *sql.Tx, emit emitFunc, kind, id, actor
|
||||
return emit(api.Event{Kind: kind, ProjectId: &projectID, TaskId: &r.TaskId, Actor: actor, Payload: ToPayload(r)})
|
||||
}
|
||||
|
||||
func questionReviews(ctx context.Context, q querier, item api.InboxItem) ([]api.Review, error) {
|
||||
if item.Kind != api.Question {
|
||||
return []api.Review{}, nil
|
||||
}
|
||||
rows, err := q.QueryContext(ctx, `
|
||||
SELECT `+reviewColumns+` FROM reviews WHERE task_id = ? AND snapshot_n = (
|
||||
SELECT min(n) FROM snapshots WHERE task_id = ? AND created_at >= ?
|
||||
)
|
||||
`, item.TaskId, item.TaskId, formatTime(item.CreatedAt))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return scanReviews(rows)
|
||||
}
|
||||
|
||||
func scanReviews(rows *sql.Rows) ([]api.Review, error) {
|
||||
defer rows.Close()
|
||||
|
||||
|
||||
Vendored
+1
-2
@@ -4,7 +4,6 @@ import { ago, errorText, h, replace, showAlert } from "./dom.js";
|
||||
import { image, inlineMarkdown, markdown } from "./markdown.js";
|
||||
import { checkedAnswer, clearAnswer, dropTextAnswer, flushDrafts, hasTextAnswer, setCheckedAnswer, setTextAnswer, textAnswer } from "./drafts.js";
|
||||
import { diagram } from "./mermaid.js";
|
||||
import { reviewCard } from "./reviews.js";
|
||||
import { focusTab, onEach, state } from "./state.js";
|
||||
import { taskStyle } from "./taskcolor.js";
|
||||
const delegateText = "Use your judgment for this decision and continue within the existing task instructions.";
|
||||
@@ -83,7 +82,7 @@ function card(item) {
|
||||
const p = item.payload;
|
||||
const body = h("div", { class: "card-body" });
|
||||
const actions = h("div", { class: "card-actions" });
|
||||
const el = h("article", { class: `card ${item.kind}` }, h("header", {}, h("span", { class: "kind" }, item.kind.replace("_", " ")), h("time", { dateTime: item.created_at, title: item.created_at }, ago(item.created_at))), body, item.reviews.length > 0 ? h("section", { class: "card-reviews" }, ...item.reviews.map((r) => reviewCard(r, item.task_id))) : null, thread(item), actions);
|
||||
const el = h("article", { class: `card ${item.kind}` }, h("header", {}, h("span", { class: "kind" }, item.kind.replace("_", " ")), h("time", { dateTime: item.created_at, title: item.created_at }, ago(item.created_at))), body, thread(item), actions);
|
||||
const busy = () => el.classList.contains("submitting");
|
||||
const lock = (on) => {
|
||||
el.classList.toggle("submitting", on);
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
-11
@@ -401,17 +401,6 @@ export function handleEvent(ev) {
|
||||
case "summary.read":
|
||||
noteSummaryRead(String(ev.payload["task_id"]), Number(ev.payload["seq"]));
|
||||
break;
|
||||
case "review.started":
|
||||
case "review.finished":
|
||||
if (state.inbox.some((i) => i.task_id === ev.task_id && i.kind === "question")) {
|
||||
void loadInbox();
|
||||
}
|
||||
break;
|
||||
case "review.finding":
|
||||
if (state.inbox.some((i) => i.task_id === ev.task_id && i.kind === "question")) {
|
||||
void loadInbox();
|
||||
}
|
||||
break;
|
||||
case "focus.updated":
|
||||
if (ev.actor !== state.me?.login) {
|
||||
applyFocus(ev.payload);
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -1326,8 +1326,6 @@ export interface components {
|
||||
/** @description question: context (Markdown with the choices inline as `- ( ) text` / `- (*) text` pick-one or `- [ ] text` / `- [x] text` pick-any list items), question, why_blocked, options (each choice's text, in order), multiple (true for pick-any), recommended (the marked choices' text), attachments. session_error: error. rate_limited: vendor, rate_limit (the vendor's rate-limit status), error. */
|
||||
payload: Record<string, never>;
|
||||
state: components["schemas"]["InboxState"];
|
||||
/** @description question: the review of the first snapshot the task took after the question was asked (the snapshot at the end of the turn that asked it), once that snapshot exists; empty for other items. */
|
||||
reviews: components["schemas"]["Review"][];
|
||||
/** Format: date-time */
|
||||
created_at: string;
|
||||
resolved_by?: string;
|
||||
|
||||
@@ -4,7 +4,6 @@ import { ago, errorText, h, replace, showAlert } from "./dom.js";
|
||||
import { image, inlineMarkdown, markdown } from "./markdown.js";
|
||||
import { checkedAnswer, clearAnswer, dropTextAnswer, flushDrafts, hasTextAnswer, setCheckedAnswer, setTextAnswer, textAnswer } from "./drafts.js";
|
||||
import { diagram } from "./mermaid.js";
|
||||
import { reviewCard } from "./reviews.js";
|
||||
import { focusTab, onEach, state } from "./state.js";
|
||||
import { taskStyle } from "./taskcolor.js";
|
||||
|
||||
@@ -102,7 +101,6 @@ function card(item: InboxItem): HTMLElement {
|
||||
h("time", { dateTime: item.created_at, title: item.created_at }, ago(item.created_at)),
|
||||
),
|
||||
body,
|
||||
item.reviews.length > 0 ? h("section", { class: "card-reviews" }, ...item.reviews.map((r) => reviewCard(r, item.task_id))) : null,
|
||||
thread(item),
|
||||
actions,
|
||||
);
|
||||
|
||||
@@ -475,17 +475,6 @@ export function handleEvent(ev: ByreEvent): void {
|
||||
case "summary.read":
|
||||
noteSummaryRead(String(ev.payload["task_id"]), Number(ev.payload["seq"]));
|
||||
break;
|
||||
case "review.started":
|
||||
case "review.finished":
|
||||
if (state.inbox.some((i) => i.task_id === ev.task_id && i.kind === "question")) {
|
||||
void loadInbox();
|
||||
}
|
||||
break;
|
||||
case "review.finding":
|
||||
if (state.inbox.some((i) => i.task_id === ev.task_id && i.kind === "question")) {
|
||||
void loadInbox();
|
||||
}
|
||||
break;
|
||||
case "focus.updated":
|
||||
if (ev.actor !== state.me?.login) {
|
||||
applyFocus(ev.payload as unknown as Focus);
|
||||
|
||||
@@ -1873,13 +1873,6 @@ pre.file-text .line::before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.card-reviews {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
margin: 8px 0;
|
||||
}
|
||||
|
||||
.review header {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
||||
Reference in New Issue
Block a user