feat: add API client and CLI for bookshelf-platform integration #125
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
BookshelfAPIClientHTTP client for the bookshelf-platform backend API with auth, error handling, and typed response schemasbookshelf.authmodule for token-based authentication (device flow, token storage/refresh)bookshelf-client/bsc) withauth,books, andvolumessubcommands using Click + RichDetails
This is a feature branch that will accumulate further PRs. The initial set of changes introduces:
bookshelf.api): Synchronous httpx-based client with Pydantic response models for volumes, books, and tokensbookshelf.auth): Device code flow authentication, secure token storage via platformdirs, automatic token refreshbookshelf.cli): Click-based CLI with commands for login/logout/status, listing/searching books and volumesTest plan
uv run --package bookshelf pytest packages/bookshelf/tests/unit/test_api_client.pyuv run --package bookshelf pytest packages/bookshelf/tests/unit/test_auth.pyuv run --package bookshelf pytest packages/bookshelf/tests/unit/test_cli.py