-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmemory_cli.py
More file actions
62 lines (50 loc) · 2.02 KB
/
memory_cli.py
File metadata and controls
62 lines (50 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/env python3
"""
QAI Memory CLI
Author: William McDonald | UNC Chapel Hill | Founder, QAI Lab
Usage:
memory read "query"
memory write session "content"
memory write knowledge "topic" "content"
memory log "entry"
"""
import argparse
import sys
from memory_engine.memory_manager import MemoryManager
def main() -> None:
parser = argparse.ArgumentParser(
prog="memory",
description="QAI Persistent Memory Layer — CLI",
)
sub = parser.add_subparsers(dest="command", required=True)
# memory read "query"
r = sub.add_parser("read", help="Search memory for a query")
r.add_argument("query", help="Search term")
# memory write session|knowledge ...
w = sub.add_parser("write", help="Write to session or knowledge memory")
w.add_argument("type", choices=["session", "knowledge"], help="Memory type")
w.add_argument("args", nargs="+", help="For session: <content>. For knowledge: <topic> <content>")
# memory log "entry"
lg = sub.add_parser("log", help="Append an entry to today's log")
lg.add_argument("entry", help="Log entry text")
args = parser.parse_args()
mm = MemoryManager()
if args.command == "read":
print(mm.read_memory(args.query))
elif args.command == "write":
if args.type == "session":
content = " ".join(args.args)
mm.write_session({"current_state": content, "objective": "", "key_decisions": "", "next_steps": ""})
print(f"Session memory written for session '{mm.session_id}'.")
elif args.type == "knowledge":
if len(args.args) < 2:
print("Usage: memory write knowledge <topic> <content>", file=sys.stderr)
sys.exit(1)
topic, content = args.args[0], " ".join(args.args[1:])
mm.update_knowledge(topic, content)
print(f"Knowledge memory updated for topic '{topic}'.")
elif args.command == "log":
mm.append_log(args.entry)
print("Log entry appended.")
if __name__ == "__main__":
main()