feat: books.show — the agent puts things on the viewer's screen

books.show asks the viewer to open an entry, an account register, a
report (dates, month/quarter/year columns, prior-period or prior-year
comparison), a document, a search, or a page. The request lives outside
the books (runtime dir, keyed by data dir, written atomically); the
viewer watches it beside the journal and applies books before
navigating. 66 tools.

Site: the dashboard is the hero again; 'Here's what using it looks like'
shows the session beside the viewer, ending in books.show; the cash page
replaces the repeated overview lower down.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MtYEaR6M6Ybdhm6X98BWNu
This commit is contained in:
swaitsandClaude Opus 5.5 committed 2026-10-12 19:03:19 -06:00
1 parent 8637c1b05f
commit 475d08b28e
17 files changed
+626 -22

No files matched your search

+13
View File
@@ -162,6 +162,19 @@ through the policy.
- `books.run_recurring { through? }` → `{ drafts: [{ recurring_id, date,
entry_id }] }`: one draft per occurrence on or before `through`, once.
## Tools — the viewer
- `books.show { entry_id | account | report | attachment_id | search |
page, start?, end? }` → `{ shown, note }`. Asks the human's viewer
(`ledger-gui`) to open an entry, an account register or a report (for
start/end dates if given), a stored file, a transactions search, or a
page. Exactly one target; entries, accounts, and attachments are checked
to exist. Never touches the books: the request is a small JSON file in
the user's runtime directory (`$XDG_RUNTIME_DIR/wanderbooks/viewer-<hash
of the data dir>.json`), written atomically, watched by the viewer. A
viewer started within two minutes of a request opens it; older requests
are ignored.
## Tools — integrity
- `books.verify { blobs? }` → `{ status: "ok" | "healed", events, head,