File size: 1,658 Bytes
ce45eb0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""matrix-context CLI entry point."""
from __future__ import annotations
import argparse
import sys

from . import commands


def build_parser() -> argparse.ArgumentParser:
    p = argparse.ArgumentParser(prog="matrix-context",
                                description="Local-first context plane for agents.")
    p.add_argument("--db", default="matrix-context.db", help="SQLite path")
    sub = p.add_subparsers(dest="cmd", required=True)

    sub.add_parser("init", help="initialize a local store")

    sp = sub.add_parser("remember", help="write a memory item")
    sp.add_argument("content")
    sp.add_argument("--expert", default="semantic")
    sp.add_argument("--scope", default="/")
    sp.add_argument("--importance", type=float, default=0.5)

    sp = sub.add_parser("ingest", help="ingest a text/markdown file")
    sp.add_argument("path"); sp.add_argument("--scope", default="/")

    for name in ("recall", "pack", "inspect"):
        sp = sub.add_parser(name, help=f"{name} context for a query")
        sp.add_argument("query")
        sp.add_argument("--scope", default="/")
        sp.add_argument("--max-tokens", type=int, default=600)
        sp.add_argument("--top-experts", type=int, default=2)

    sp = sub.add_parser("serve", help="run the REST API (v1) or MCP server")
    sp.add_argument("--transport", default="rest", choices=["rest", "stdio", "http"])
    sp.add_argument("--host", default="127.0.0.1"); sp.add_argument("--port", type=int, default=8088)
    return p


def main(argv=None) -> int:
    args = build_parser().parse_args(argv)
    return commands.dispatch(args)


if __name__ == "__main__":
    sys.exit(main())