Commit graph

5 commits

Author SHA1 Message Date
Snider
ce502c0f16 feat(registry): Phase 5 — persistent agent registry (SQLite + Redis + config factory)
Add SQLiteRegistry and RedisRegistry implementations of the AgentRegistry
interface, mirroring the AllowanceStore persistence pattern. SQLiteRegistry
uses modernc.org/sqlite directly with a proper agents table schema, WAL mode,
and UPSERT semantics. RedisRegistry uses go-redis/v9 with TTL-based natural
reaping and SCAN for listing. Add RegistryConfig struct and
NewAgentRegistryFromConfig factory function to config.go.

Full test parity with existing MemoryRegistry tests, including concurrent
access under -race, persistence round-trip, and skip-if-no-Redis pattern.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 11:40:46 +00:00
Snider
779132a3b9 fix(config): change DefaultBaseURL to localhost, annotate reserved fields
- DefaultBaseURL was api.core-agentic.dev (nonexistent domain). Changed
  to http://localhost:8080 for local dev. Set AGENTIC_BASE_URL for prod.
- HourlyRateLimit and CostCeiling on ModelQuota annotated as reserved:
  stored but not enforced. Enforcement requires AllowanceStore interface
  changes (sliding window) — deferred.
- Phase 6 marked complete in TODO.md.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 11:37:18 +00:00
Snider
0be744e46a feat(allowance): add Redis backend for AllowanceStore
Implements RedisStore using github.com/redis/go-redis/v9 with Lua
scripts for atomic increment/decrement operations. Adds functional
options (WithRedisPassword, WithRedisDB, WithRedisPrefix), config
wiring via "redis" store_backend, and comprehensive tests covering
all 10 interface methods, concurrency, persistence, and error paths.

Co-Authored-By: Virgil <virgil@lethean.io>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 11:23:13 +00:00
Snider
3e43233e0e feat: Phase 2 — SQLite AllowanceStore backend + config wiring
Add persistent storage for agent allowance quotas using go-store (SQLite KV).
SQLiteStore implements all 11 AllowanceStore methods with JSON serialisation,
mutex-guarded read-modify-write for atomic increments, and proper
time.Duration handling via nanosecond int64 encoding.

- allowance_sqlite.go: full AllowanceStore implementation with 4 KV groups
- allowance_sqlite_test.go: 26 tests covering CRUD, persistence across
  close/reopen, concurrent access (10 goroutines), and AllowanceService
  integration
- config.go: AllowanceConfig struct + NewAllowanceStoreFromConfig factory
- go.mod: add forge.lthn.ai/core/go-store dependency

Co-Authored-By: Virgil <virgil@lethean.io>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 07:07:49 +00:00
Snider
68c108f62e feat: extract go-agentic from go-ai as standalone service package
AI service lifecycle, allowance management, CLI task client.
Zero internal go-ai dependencies. Adds CLAUDE.md/TODO.md/FINDINGS.md.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-19 18:28:36 +00:00