Skip to content

[EPIC-D][LOU-D45.2] Agent Forge History tab: step list, edit-and-replay, side-by-side trajectories - #113

Merged
LinuxDevil merged 6 commits into
mainfrom
lou-d45.2-forge-history-panel
Oct 1, 2026
Merged

LinuxDevil merged 6 commits into
mainfrom
lou-d45.2-forge-history-panel

Conversation

@LinuxDevil

Copy link
Copy Markdown
Owner

What

The client half of LOU-D45 (Agent Forge time-travel), stacked on #112 (server API):

  • a History tab in the bottom drawer listing each step with status, finish reason, tool calls, tokens and cost;
  • Edit and replay from here: append a user message or edit a tool result, then fork the run through POST /runs/:id/fork;
  • a side-by-side view of the original and the fork that highlights divergedAt and lists the drift entries, refreshed when the fork finishes;
  • dev-server proxy entry for /runs, a client test from fixtures, docs/agent-forge.md, CHANGELOG and regenerated llms files.

Why

Completes differentiator 3 of the audit: neither eve nor open-harness has a visual debugger with fork-from-step replay.

Acceptance criteria

  • History tab renders steps with tokens/cost from GET /runs/:id/history
  • Edit-and-replay forks and opens the fork next to the original
  • Side-by-side view uses GET /runs/compare and highlights divergence
  • Forge client + server typecheck, client tests (112) and server tests (121) pass; build:studio passes

How verified

Forge client and server typecheck: pass. Forge client tests: 112 passed. Forge server tests: 121 passed. build:studio, Forge lint (0 errors), docs:llms:check and fallow: pass.

🤖 Generated with Claude Code

https://claude.ai/code/session_016bY29ibQgv3MDdjAbUT4YR


Generated by Claude Code

claude added 6 commits October 1, 2026 16:49
…pare routes (LOU-D45.1)

- FileCheckpointStore keeps the bounded per-session history() ring with
  the same semantics as LocalStorageCheckpointStore (historyLimit,
  delete({ keepHistory })); the SDK's history contract suite moves to a
  shared fixture and runs against it too.
- RunManager.history/fork/compare and the routes GET /runs/:id/history,
  POST /runs/:id/fork (validated { fromStep, patch? }, started through the
  registry's run lifecycle and WS stream) and GET /runs/compare?a=&b=.
- Fix: chatReconcile compiles against multimodal Message.content (LOU-V11)
  by flattening it with textOf(); server tsconfig adds the DOM lib like the
  SDK's own, since server tests now type-check SDK sources.
- docs/agent-forge.md "Time travel", CHANGELOG, llms files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016bY29ibQgv3MDdjAbUT4YR
…ws CheckpointStore.history (LOU-D45.1)

parseForkRequest() checks each patch field from a Map of validators, which
keeps it under fallow's complexity threshold, and CheckpointStore.history
joins save/load/delete as an interface member fallow treats as used
(FileCheckpointStore.history is only called through the interface).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016bY29ibQgv3MDdjAbUT4YR
…side trajectories (LOU-D45.2)

- New drawer tab "History" (src/components/debug/HistoryPanel.tsx): the
  loaded agent's run steps (step, status, finish reason, tool calls,
  tokens, cost) from GET /runs/:id/history, each with "Edit and replay
  from here" (append a user message or edit a tool result), which forks
  through POST /runs/:id/fork and shows the fork next to the original via
  GET /runs/compare, highlighting divergedAt and the drift entries and
  refreshing when the fork's status stream settles.
- runtimeClient.runHistory/forkRun/compareRuns; Vite dev proxy for /runs.
- Client test renders the list and the comparison from fixtures.
- docs/agent-forge.md "The History tab", CHANGELOG, llms files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016bY29ibQgv3MDdjAbUT4YR
…ry-panel

# Conflicts:
#	CHANGELOG.md
#	docs/agent-forge.md
#	llms-full.txt
@LinuxDevil
LinuxDevil merged commit 9f9e3ba into main Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants