Skip to content

feat(kix): show what agents are working on as summary cards - #215

Merged
kixelated merged 3 commits into
mainfrom
quest/m0/kix/activity
Oct 24, 2026
Merged

kixelated merged 3 commits into
mainfrom
quest/m0/kix/activity

Conversation

@kixelated

@kixelated kixelated commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

Finishes quest/m0/kix/activity.md and removes it, along with its links from the kix epic and Web execution.

Problem

Maintainers had no view of what their agents were doing. Running jobs showed only as "In progress" rows in the inbox, and the checkpoint summaries runners already send appeared only on a job's own decision thread.

Behavior

  • Agent cards (cloudflare/src/inbox/activity.ts, page.tsx): /inbox gets an Agents column next to the decisions. On a phone it sits below the decisions. Each card shows:
    • the job's issue, PR, or quest
    • its state: queued, working, runner offline, waiting on you (or awaiting approval for a co-maintainer), account limited, PR open, or stopped
    • the workflow, plus the runner and account names
    • the agent's latest checkpoint or result summary, as escaped text
    • how long ago that summary was written
  • Quiet jobs: a working job with no summary for 15 minutes says "No update since …" rather than guessing.
  • No duplicates: each card replaces its job's "In progress" row.
  • Which jobs get a card (store.listActivityJobs): each target's latest job while it is queued, running, or waiting. An ended job keeps its card while the PR it delivered is open, until a later job works on that PR.
  • Raw output: each card has a collapsed "Raw output" disclosure. Opening it makes /app.js fetch the existing GET …/jobs/<job>/output route one page at a time, with a "Load more" button, and shows the result as text. Nothing is fetched or streamed until then. That route checks current maintainer authority on every request.
  • Quest map highlights: an enrolled project's quest log (/projects/github/<owner>/<repo>/board) now shows its tree as the quest map. Quests that agents are working on get a ring, plus a line saying what the agent is doing. The highlights come from the same jobs as the cards and add no new state. The map's milestone links now go to the project's own board, not /repos/<name>.

Validation

  • just check and just test pass locally: 465 CLI tests and 339 Worker tests.
  • New inbox tests cover:
    • card states, runner and account names, escaped summaries
    • raw output never appearing in the page
    • the waiting and account-limited states
    • PR-open cards, their replacement by a later iterate job, and their removal once the PR is no longer open
    • the quiet threshold
    • raw output refused to signed-out users, non-maintainers, maintainers whose role was revoked, and users removed from the repository, with co-maintainers allowed, checked on each request
    • map highlights
  • Checked by hand in the seeded local server: phone and wide layouts, the disclosure loading against the real route, and the board map highlights.

Choices made without asking

  • Which jobs count as "stopped": a failed or cancelled job gets a card only while its delivered PR is still open. A failed job with no PR already appears as a "Failed" retry decision, so it gets no card. Otherwise cards for old cancelled jobs would pile up with no rule for when to drop them.
  • Queued: a queued job shows "Queued" as its own state. The quest's state list did not name it.
  • Quiet threshold: 15 minutes, and only for a job that is working on an online runner.
  • Where the map lives: kix had no quest map for enrolled projects, so the map now sits above the milestones on the live quest log. The bundled home page map is unchanged.
  • Without JavaScript: the disclosure falls back to a link to the JSON output route.

Suggested follow-ups

  • Live updates: cards refresh only when the page reloads. The hub could push summaries over a socket or SSE.
  • Seed some raw output into the local dev server (cloudflare/dev/seed.ts) so the disclosure has something to show when checked by hand.
  • The quest log shows a quest as "ready" while a job is queued or running on it (seen in the seed). Cards and the map make this visible, but the board status could reflect running jobs.
  • When siblings run seeded servers on other localhost ports, they overwrite each other's session cookie, since cookies ignore the port. Separate cookie names or hosts per dev server would help parallel agents.

🤖 Generated with Claude Code

(Written by Claude Opus 5.5)

kixelated and others added 2 commits October 23, 2026 23:03
Quest-Claim: b24cc0e8a8f705f1
The inbox gets an Agents column beside the decisions (below them on a
phone): one card per job with its target, state, runner and account, the
agent's latest checkpoint summary as escaped text, and how long ago it was
written. A working job quiet for 15 minutes says "No update since" instead
of guessing. Raw output loads only when a maintainer opens a card's
disclosure, through the existing output route that rechecks maintainer
authority on every request. An enrolled project's quest log charts its tree
as the quest map and rings the quests those jobs work on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated kixelated changed the title Show what agents are working on through summaries feat(kix): show what agents are working on as summary cards Oct 24, 2026
@kixelated
kixelated marked this pull request as ready for review October 24, 2026 06:22
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-24T06:51:34.754357Z 35f586f New commits
🔒 Security Review ✅ Completed 2026-10-24T06:53:37.597088Z 35f586f New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 86daad70bc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread cloudflare/src/inbox/activity.ts Resolved
…l request

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated

Copy link
Copy Markdown
Collaborator Author

Merge summary for 35f586f:

  • Checks: 5/5 required checks pass; merge state clean.
  • Review: Codex's one finding on 86daad7 (iterate jobs on a quest's PR dropping the map ring) was fixed in 35f586f by resolving pulls/<n> targets through state.project.changes; Codex re-reviewed the new head with a thumbs-up. Thread resolved.
  • quest check --base origin/main --branch quest/m0/kix/activity passes with a base-built binary: the PR deletes quest/m0/kix/activity.md and its links.
  • Landing as a squash merge per the root AGENTS.md. kixelated/quest#205 and kixelated/quest#209 also edit cloudflare/src/inbox and jobs/store.ts and will resolve their conflicts after this lands.
  • Follow-ups from the PR body (live card updates, seeded raw output, board status for running jobs, per-port dev cookies) go to /quest-plan.

(Written by Claude Opus 5.5)

@kixelated
kixelated merged commit 2a08af9 into main Oct 24, 2026
5 checks passed
@kixelated
kixelated deleted the quest/m0/kix/activity branch October 24, 2026 14:44
kixelated added a commit that referenced this pull request Oct 24, 2026
Keep both the agent activity cards (#215) and planning: the inbox loads activity jobs and the user's own runners for the new plan box, and both finished quests' links are gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated added a commit that referenced this pull request Oct 24, 2026
Resolve the overlap with planning (#205) and agent activity (#215),
keeping every feature:

- Renumber 0018_merge_jobs.sql to 0019, after 0018_plan_request.sql, and
  carry its new idea and context columns through the jobs rebuild.
- createJob inserts both the plan request and continues a pull request's
  head for merge jobs as well as iterate.
- The runner's context tool covers plan requests and merge jobs; deliver
  records both a landing and suggested follow-ups.
- Agent cards name merge jobs "Merging".
- Drop the finished activity, planning, and merge-job quests from the
  kix epic.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated added a commit that referenced this pull request Oct 24, 2026
Resolves conflicts with #213 and #214:

- `landed` in quest/core now returns the merged PR it finds, so the CLI's
  `mergedPull` (renamed in #214 to return the PR's URL) keeps using the one
  shared rule, and the Worker checks it for undefined.
- The fake GitHub's merged-claims additions now build on #213's
  `Repo.branches` model: a quest ref is any listed `quest/*` branch or open
  upstream PR's branch, at its tip, with the PRs from it that merged. A kept
  branch is just a listed branch; a closed PR's optional `head` pins the commit
  it ended at once its branch moves on. The fake's merge endpoint marks the
  PR merged.
- The seeded test lists the kept branches itself, and checks the inbox
  against the quest a pushed branch claims, since #215's agent cards now show
  every queued job's quest.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant