personal memory agent
1# SPDX-License-Identifier: AGPL-3.0-only
2# Copyright (c) 2026 sol pbc
3
4"""CLI for inspecting journal configuration.
5
6Shows the resolved journal configuration as JSON, or prints the journal path.
7
8Usage:
9 sol config Show full config JSON
10 sol config env Show journal path
11 sol config facet rename OLD NEW Rename a facet
12"""
13
14from __future__ import annotations
15
16import argparse
17import json
18import sys
19
20from think.utils import get_config, get_journal_info, setup_cli
21
22
23def main() -> None:
24 parser = argparse.ArgumentParser(description="Show journal configuration")
25 subparsers = parser.add_subparsers(dest="subcommand")
26 subparsers.add_parser("env", help="Show journal path and source")
27
28 # facet subcommand with its own sub-subcommands
29 facet_parser = subparsers.add_parser("facet", help="Facet management")
30 facet_sub = facet_parser.add_subparsers(dest="facet_action")
31 rename_parser = facet_sub.add_parser("rename", help="Rename a facet")
32 rename_parser.add_argument("old_name", help="Current facet name")
33 rename_parser.add_argument("new_name", help="New facet name")
34
35 args = setup_cli(parser)
36
37 if args.subcommand == "env":
38 path, _source = get_journal_info()
39 print(path)
40 elif args.subcommand == "facet":
41 if args.facet_action == "rename":
42 from think.facets import rename_facet
43
44 try:
45 rename_facet(args.old_name, args.new_name)
46 except ValueError as exc:
47 print(f"Error: {exc}", file=sys.stderr)
48 sys.exit(1)
49 else:
50 facet_parser.print_help()
51 else:
52 config = get_config()
53 print(json.dumps(config, indent=2))
54
55
56if __name__ == "__main__":
57 main()