Graph-Canonical Commands
These are the primary implementations that write to the graph first, then project to markdown.init_thread
Initialize a new thread with graph-canonical approach.topic(str): Thread topic identifier (e.g., “implement-auth”)threads_dir(Path): Directory containing threadstitle(Optional[str]): Title override (defaults to formatted topic)status(str): Initial status (default: “OPEN”)ball(str): Initial ball owner (default: “codex”)
say
Add a team note with automatic ball flip to counterpart.topic(str): Thread topic identifierthreads_dir(Path): Directory containing threadsagent(str | None): Agent name (defaults to “Team”)role(str | None): Agent role (defaults from registry)title(str): Entry title (required)entry_type(str): Entry type (default: “Note”)body(str): Entry body textstatus(str | None): Optional status updateball(str | None): Optional ball update (auto-flips if not provided)registry(dict | None): Optional agent registryuser_tag(str | None): Optional user tagentry_id(str | None): Entry ID (required for graph-canonical)code_branch(Optional[str]): Code branch reference
ack
Acknowledge an entry without flipping the ball.topic(str): Thread topic identifierthreads_dir(Path): Directory containing threadsagent(str | None): Agent name (defaults to “Team”)role(str | None): Agent role (defaults from registry)title(str | None): Entry title (defaults to “Ack”)entry_type(str): Entry type (default: “Note”)body(str | None): Entry body text (defaults to “ack”)status(str | None): Optional status updateball(str | None): Optional ball update (preserves current ball if not specified)registry(dict | None): Optional agent registryuser_tag(str | None): Optional user tagentry_id(str | None): Entry ID (required for graph-canonical)code_branch(Optional[str]): Code branch reference
handoff
Explicitly flip the ball to the counterpart agent.topic(str): Thread topic identifierthreads_dir(Path): Directory containing threadsagent(str | None): Agent performing handoff (defaults to “Team”)role(str): Agent role (default: “pm”)note(str | None): Optional custom handoff messageregistry(dict | None): Optional agent registryuser_tag(str | None): Optional user tagentry_id(str | None): Entry ID (required for graph-canonical)code_branch(Optional[str]): Code branch reference
set_status
Update thread status.topic(str): Thread topic identifierthreads_dir(Path): Directory containing threadsstatus(str): New status value (e.g., “OPEN”, “CLOSED”, “BLOCKED”)
set_ball
Update ball owner.topic(str): Thread topic identifierthreads_dir(Path): Directory containing threadsball(str): New ball owner
Management Commands
These commands provide read-only access and utility operations.list_threads
List all threads from the graph.threads_dir(Path): Directory containing threadsopen_only(bool | None): Filter to open threads only
list_entries
List parsed entries for a thread topic.topic(str): Thread topic identifierthreads_dir(Path): Directory containing threads
search
Case-insensitive search across graph entries.threads_dir(Path): Directory containing threadsquery(str): Search query
reindex
Generate a markdown index of threads.threads_dir(Path): Directory containing threadsout_file(Path | None): Output file path (defaults to threads_dir/index.md)open_only(bool | None): Include only open threads
web_export
Export threads as static HTML.threads_dir(Path): Directory containing threadsout_file(Path | None): Output file path (defaults to threads_dir/index.html)open_only(bool | None): Include only open threads
unlock
Clear advisory lock for a topic (debugging tool).topic(str): Thread topic identifierthreads_dir(Path): Directory containing threadsforce(bool): Remove lock even if it appears active