add cmd lexicon

This commit is contained in:
2026-01-18 12:32:50 +09:00
parent d01fccec92
commit 75437e91db
8 changed files with 622 additions and 34 deletions

View File

@@ -219,11 +219,87 @@ at-browser
## Tech Stack
- **CLI**: Rust (ailog)
- **Frontend**: Vite + TypeScript
- **ATProto**: @atproto/api
- **OAuth**: @atproto/oauth-client-browser
- **Markdown**: marked + highlight.js
## CLI (ailog)
### Install
```bash
cargo build --release
cp target/release/ailog ~/.local/bin/
```
### Commands
```bash
# Login to ATProto PDS
ailog login <handle> -p <password> [-s <server>]
# Post a record
ailog post <file.json> -c <collection> [-r <rkey>]
# Get records from collection
ailog get -c <collection> [-l <limit>]
# Delete a record
ailog delete -c <collection> -r <rkey>
# Sync PDS data to local content directory
ailog sync [-o <output>]
# Generate lexicon Rust code from ATProto lexicons
ailog gen [-i <input>] [-o <output>]
```
### Example
```bash
# Login
ailog login syui.syui.ai -p "app-password" -s syu.is
# Post
echo '{"title":"Hello","content":"World","createdAt":"2025-01-01T00:00:00Z"}' > post.json
ailog post post.json -c ai.syui.log.post
# Sync to local
ailog sync -o content
```
### Project Structure
```
src/
├── main.rs
├── commands/
│ ├── mod.rs
│ ├── auth.rs # login, refresh session
│ ├── token.rs # token management
│ ├── post.rs # post, get, delete, sync
│ └── gen.rs # lexicon code generation
└── lexicons/
└── mod.rs # auto-generated from ATProto lexicons
```
### Lexicon Generation
Generate Rust endpoint definitions from ATProto lexicon JSON files:
```bash
# Clone atproto repo (if not exists)
git clone https://github.com/bluesky-social/atproto repos/atproto
# Generate lexicons
ailog gen -i ./repos/atproto/lexicons -o ./src/lexicons
# Rebuild
cargo build
```
## Collection Schema
### ai.syui.log.post