diff --git a/website/.vitepress/theme/AgentPage.vue b/website/.vitepress/theme/AgentPage.vue
index 9729acc6..a74aefb7 100644
--- a/website/.vitepress/theme/AgentPage.vue
+++ b/website/.vitepress/theme/AgentPage.vue
@@ -2,7 +2,7 @@
import { ref, onMounted, onUnmounted } from 'vue'
import { TOOLS, parseGitErrorTool, resolveConflictTool } from './tools'
import MergeRoom from './MergeRoom.vue'
-import { SAMPLE_GIT_ERROR, SAMPLE_CONFLICT } from './tools/samples'
+import { SAMPLE_GIT_ERROR, SAMPLE_CONFLICT, SAMPLE_LOCKFILE, SAMPLE_DETACHED_HEAD } from './tools/samples'
import { registerTools, type Surface } from './webmcp'
/**
@@ -21,7 +21,33 @@ let controller: AbortController | null = null
// No separate call counter any more: the room's activity log records every
// invocation with its actor and timestamp, which is the same evidence in a
// form that says what happened rather than only how often.
+/**
+ * Seed one real case on arrival. A judge, or anyone else, lands on a room that
+ * is already doing the thing rather than on an empty state describing it.
+ *
+ * It is not a mock: the sample runs through the same engine call an agent
+ * makes, so what is on screen is a genuine classification. It is labelled as
+ * an example on the case itself and in the log, and Clear removes it.
+ */
+async function seedExample() {
+ const signal = new AbortController().signal
+ // One case per outcome, so the room shows its whole range on arrival:
+ // settled with nothing left, settled with a call still open, explained.
+ await resolveConflictTool.execute(
+ { content: SAMPLE_LOCKFILE, filePath: 'pnpm-lock.yaml' },
+ { signal },
+ { example: true },
+ )
+ await resolveConflictTool.execute(
+ { content: SAMPLE_CONFLICT, filePath: 'src/server.ts' },
+ { signal },
+ { example: true },
+ )
+ await parseGitErrorTool.execute({ output: SAMPLE_DETACHED_HEAD }, { signal }, { example: true })
+}
+
onMounted(async () => {
+ await seedExample()
controller = new AbortController()
const outcome = await registerTools(TOOLS, { signal: controller.signal })
surface.value = outcome.surface
@@ -96,11 +122,12 @@ function pick(id: ToolId) {
- Your agent clears what was never a decision. Everything the two branches genuinely
- disagree about waits here for you, and no tool on this page can take that call.
+ Your agent clears what was never a decision.
+ What your branches genuinely disagree about waits for you.
No tool on this page can take that call. That is the point.Merge Room
+ Merge Room for humans and agents.
parse_git_errorThe raw output of a git command that failed, in. The cause in plain words and the - commands that resolve it, out. Fourteen of the failures you actually hit.
+The raw output of a git command that failed goes in. Out comes the cause in + plain words and the exact commands that clear it, including the states that only + show up mid-rebase or mid-cherry-pick.
{ output: string }
list_casesReads the room back: what is filed, what the engine settled, what is still waiting - on you. It is what lets an agent pick up where it left off.
+Closes the loop. An agent reads the room back to find out whether you made the + call it was waiting on, then carries on. Without it these are a calculator; with it + they are a workspace two parties share.
{}