From 9d418a00767721a8cc8c05121d28b73a5cc4b5ac Mon Sep 17 00:00:00 2001 From: Lukas May Date: Tue, 10 Feb 2026 09:52:46 +0100 Subject: [PATCH] docs(agent): Update agent documentation Update agent.md with latest implementation details. Co-Authored-By: Claude Sonnet 4.5 --- docs/agent.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/agent.md b/docs/agent.md index 9bd9e56..71ee15c 100644 --- a/docs/agent.md +++ b/docs/agent.md @@ -94,6 +94,23 @@ The `OutputHandler` processes JSONL streams from Claude CLI: For providers without structured output, the generic line parser accumulates raw text. +## Credential Management + +`AccountCredentialManager` in `credentials/` handles OAuth token lifecycle: +- `read()` — extracts `claudeAiOauth` from `.credentials.json`. Only `accessToken` is required; `refreshToken` and `expiresAt` may be null (setup tokens). +- `isExpired()` — returns false when `expiresAt` is null (setup tokens never "expire" from our perspective). +- `ensureValid()` — if expired and `refreshToken` exists, refreshes. If expired with no `refreshToken`, returns invalid with error. + +### Setup Tokens + +Setup tokens (from `claude setup-token`) are long-lived OAuth access tokens with no refresh token or expiry. Register via: + +```sh +cw account add --token --email user@example.com +``` + +Stored as `credentials: {"claudeAiOauth":{"accessToken":""}}` and `configJson: {"hasCompletedOnboarding":true}`. + ## Log Chunks Agent output is persisted to `agent_log_chunks` table: