"""Provenance example: every retrieved memory can be traced to an origin.

Run:  python examples/provenance.py
"""

import sys, os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from agentmemory import MemoryStore, Retrieval, Entry, ProvenanceLedger


def main() -> None:
    store = MemoryStore()
    ledger = ProvenanceLedger()

    def add(text, source, tags):
        e = store.add(Entry(text=text, source=source, tags=tags))
        ledger.record_origin(e.id, source)
        return e

    add("on-call number is +1-555-0100 and routes to the primary engineer",
        "runbooks/oncall.md", ["oncall", "ops"])

    r = Retrieval()
    for hit in r.search(store, "who do I call off hours", k=2):
        origin = ledger.origin(hit.entry.id)
        print(f"memory {hit.entry.id}:")
        print(f"  text  : {hit.entry.text}")
        print(f"  origin: {origin['source']}")


if __name__ == "__main__":
    main()