Metadata-Version: 2.4
Name: reconcile-agent-memory
Version: 0.1.0
Summary: A pluggable memory layer for LLM agents with usage verification, contradiction resolution, and multi-tenant access control
Author: zowskyy
License: MIT
Project-URL: Homepage, https://github.com/thewilliamboyd93-oss/
Project-URL: Repository, https://github.com/thewilliamboyd93-oss/reconcile
Keywords: llm,agents,memory,rag,ai
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: scikit-learn
Provides-Extra: semantic
Requires-Dist: sentence-transformers; extra == "semantic"
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-benchmark; extra == "dev"
Dynamic: license-file

# Reconcile

A pluggable memory layer for LLM agents that fixes a gap in every major
alternative (Mem0, Letta/MemGPT, Zep): none of them verify that a fact
retrieved and injected into an agent's context was actually *used*. This
does.

## What it does

- **Write-time contradiction resolution** — a new fact about the same
  (tenant, subject, predicate) supersedes the old one instead of both
  floating in the store forever. O(1) via an index, not a linear scan.
- **Hybrid retrieval** — TF-IDF similarity + subject-match bonus, scoped
  per tenant.
- **Usage verification** — after a fact is injected into an agent's
  context, checks whether the response actually reflects it (not just
  whether the right words appear, but whether they're framed as current
  state vs. a suggestion, with an optional semantic-similarity fallback
  for paraphrases).
- **Multi-tenant access control** — `TenantScopedStore` enforces caller→tenant
  authorization, not just a partition key.
- **Rule-based extraction** — a regex fallback for turning raw text into
  facts when no LLM is available (explicitly not a replacement for one).
- **Thread-safe writes** — a lock around the contradiction-check-and-write.

## Status

65/65 tests passing. This is a validated prototype, not a production
system — every known limitation is documented in `STRESS_TEST_SUMMARY.md`,
`SCALE_NOTES.md`, and `PARAPHRASE_CALIBRATION.md`, and several tests
exist specifically to pin *known gaps* rather than hide them (search test
files for `known_gap` / `known_limitation`).

## Install
