* lisence: change the main lisence from Apache-2.0 to AGPL-v3
* lisence: change the main lisence from Apache-2.0 to AGPL-v3
* lisence: change the main lisence from Apache-2.0 to AGPL-v3
---------
Co-authored-by: openviking <openviking@example.com>
* feat(tasks): add async task tracking API for background operations
Follow-up to #472. When `wait=false`, background commit failures were
silently lost — callers had no way to know if memory extraction succeeded.
This adds a lightweight in-memory TaskTracker that returns a `task_id`
on async commit, which callers can poll via new `/tasks` endpoints to
check completion status, results, or errors.
Key changes:
- New TaskTracker singleton with TTL-based cleanup (24h completed, 7d failed)
- New API: GET /api/v1/tasks/{task_id} and GET /api/v1/tasks (with filters)
- Atomic duplicate commit detection (eliminates race condition)
- Error message sanitization (keys/tokens redacted)
- Defensive copies on all public reads (thread safety)
- 35 tests (26 unit + 9 integration), all existing tests pass
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: resolve CI lint failures (ruff format + unused imports)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>