Commit Graph

4 Commits

Author SHA1 Message Date
e43d6493d2 feat: Step 6 - Write-through cache API
Implement the core write-through cache pattern for node creation.
This is the architectural foundation of the application.

Changes:
- Add @google/generative-ai dependency for embeddings
- Create lib/db.ts: SurrealDB connection helper with JWT auth
- Create lib/ai.ts: AI embedding generation using text-embedding-004
- Create app/api/nodes/route.ts: POST endpoint implementing write-through cache

Write-through cache flow:
1. Authenticate user via SurrealDB JWT
2. Publish node to ATproto PDS (source of truth)
3. Generate 768-dimensional embedding via Google AI
4. Cache node + embedding + links in SurrealDB

Updated schema to use 768-dimensional embeddings (text-embedding-004)
instead of 1536 dimensions.

Security:
- Row-level permissions enforced via SurrealDB JWT
- All secrets server-side only
- ATproto OAuth tokens from secure cookies

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 00:12:46 +00:00
878c3a7582 fix: Use ATproto localhost OAuth development mode
- Changed BLUESKY_CLIENT_ID to use http://localhost/ with redirect_uri parameter
- Updated magnitude.config.ts to use localhost:3000 for testing
- Removed public/client-metadata.json (no longer needed with localhost mode)
- Updated OAuth test to expect successful redirect to bsky.social

This leverages ATproto's special localhost client development mode which allows
local OAuth testing without requiring client metadata files.

See: https://atproto.com/specs/oauth#localhost-client-development

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 21:58:52 +00:00
82031c3499 test: Improve auth tests with real OAuth flow validation
- Updated auth tests to use environment variables for credentials
- Tests now validate full OAuth redirect to Bluesky
- Added proper error checking for missing test credentials
- Updated .example.env with test credential placeholders
- All 3 auth tests passing (login page, error handling, OAuth redirect)
- OAuth successfully redirects to bsky.social/oauth (localhost limitation noted)

Note: Full E2E login requires public URL (ngrok) as Bluesky rejects localhost

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 21:19:49 +00:00
14f3789a57 feat: Step 3 - ATproto OAuth + SurrealDB JWT
Implemented complete OAuth flow with ATproto/Bluesky:
- Created login page with Mantine form components
- Implemented OAuth login route with PKCE and state verification
- Implemented OAuth callback route with JWT minting
- Created auth utility libraries for ATproto resolution and JWT generation
- Updated tsconfig path alias to support project structure
- Added @mantine/form and openid-client dependencies
- Updated CLAUDE.md to allow direct git commits
- All auth tests passing (login page, error handling, OAuth flow)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 21:13:00 +00:00