Recently Written · git

ai-config

One canonical AI agent config (rules, skills, MCP servers) rendered into Claude Code, Codex, Copilot CLI and Antigravity by acsync

git clone https://github.com/equwal/ai-config

Log | Files | Refs


skills/memstate/scripts/memstate_remember.py (2165 bytes)

1 #!/usr/bin/env python3
2 """Store a markdown summary (memstated).
3 
4 Two modes:
5 - explicit: pass --keypath to write the whole content at that path.
6 - extract:  omit --keypath; each `## heading` in the markdown becomes its
7             own keypath (deeper headings nest via dot segments). Use --root
8             to apply a common prefix to every extracted keypath.
9 
10 --scope user writes to the reserved user scope. Only sections that land at
11 preferences.* or profile.* pass the daemon's allowlist there; host facts
12 need an explicit --keypath host.<host_slug>.env.* or .tools.*. One bad
13 section rejects the whole call, nothing is written.
14 
15 Server response (both modes): { method, items: [{keypath, action, stored, superseded?}] }.
16 """
17 import argparse
18 import sys
19 
20 from _client import add_scope_args, add_write_args, check_write_target, post, resolve_project
21 
22 
23 def main() -> int:
24     ap = argparse.ArgumentParser(description="Save a markdown summary")
25     add_scope_args(ap)
26     add_write_args(ap)
27     ap.add_argument("--keypath", default=None,
28                     help="optional — omit to extract keypaths from ## headings")
29     ap.add_argument("--content", required=True)
30     ap.add_argument("--source", default=None)
31     ap.add_argument("--root", default=None,
32                     help="optional prefix applied to every extracted keypath")
33     ap.add_argument("--category", default=None,
34                     help="optional label applied to every written section")
35     ap.add_argument("--topics", default=None,
36                     help="comma-separated tags applied to every written section")
37     args = ap.parse_args()
38 
39     project = resolve_project(args)
40     check_write_target(args, project)
41     body = {
42         "project_id": project,
43         "content": args.content,
44     }
45     if args.keypath:
46         body["keypath"] = args.keypath
47     if args.source:
48         body["source"] = args.source
49     if args.root:
50         body["root"] = args.root
51     if args.category:
52         body["category"] = args.category
53     if args.topics:
54         body["topics"] = args.topics.split(",")
55     return post("/memories/remember", body)
56 
57 
58 if __name__ == "__main__":
59     sys.exit(main())