Two related fixes:
1. Memory interceptor now resolves workspace from request context
(per-user workspace) instead of using the static global workspace.
This fixes memory writes with absolute paths under per-user
workspaces (e.g. workspace/channel/userID/memory/) being bypassed
and written to disk instead of the database, which also prevented
KG extraction, memory indexing, and cross-session recall.
2. KG extractor: increase max_tokens 4096→8192, add retry on
truncation (finish_reason=length), and support chunking for
long inputs with deduplication on merge.
Add domain context, coreference rules, controlled relation types (15 predefined),
few-shot example, and dynamic entity count (3-15). Increase max input from 6000
to 12000 chars, reduce max output tokens from 8192 to 4096.
- Update go.mod and Dockerfile to Go 1.26
- Apply `go fix ./...` stdlib modernizations across 170+ files
- Add `go fix` to post-implementation checklist in CLAUDE.md
- Fix go fix misapplied rewrite in loop_history.go