"""PMP -- Personal Memory Protocol reference node. A local-first, user-owned memory substrate: a signed append-only operation log plus import adapters that turn calendars, notes, and photo metadata into provenance-tagged evidence operations. Public API surface for embedders:: from pmp import LocalNode node = LocalNode.init("~/.pmp/laptop", name="laptop") result = node.import_source("ics", "calendar-export/") for op in node.list_evidence("calendar.event"): ... """ from pmp.canonical import canonical_hash, canonical_json, is_hash_ref, sha256_hex from pmp.errors import ( AdapterError, CanonicalizationError, KeyStoreError, LogIntegrityError, NodeError, OperationError, PMPError, SignatureError, ) from pmp.keys import KeyPair, KeyStore, verify_signature from pmp.node import ImportResult, LocalNode from pmp.operations import ( OP_TYPE_EVIDENCE_ADD, OP_TYPE_NODE_HELLO, PROTOCOL_VERSION, make_evidence_body, make_op, sign_op, verify_op, ) from pmp.oplog import OpLog __version__ = "0.3.0" __all__ = [ "__version__", # canonical "canonical_json", "canonical_hash", "sha256_hex", "is_hash_ref", # keys "KeyPair", "KeyStore", "verify_signature", # operations "PROTOCOL_VERSION", "OP_TYPE_NODE_HELLO", "OP_TYPE_EVIDENCE_ADD", "make_op", "sign_op", "verify_op", "make_evidence_body", # log & node "OpLog", "LocalNode", "ImportResult", # errors "PMPError", "CanonicalizationError", "KeyStoreError", "SignatureError", "OperationError", "LogIntegrityError", "AdapterError", "NodeError", ]