fix(agents): claude purge removes every path the session owns (Issue #31)
The claude purge removed only <uuid>.jsonl. It now removes everything the session alone owns: projects/<key>/<uuid>/, file-history/<uuid>/, session-env/<uuid>/, jobs/<uuid[:8]>/ when its state.json names the session, a stale sessions/<pid>.json with that pid's key file (name only, never read) and <tmp>/claude-<uid>/*/<uuid>/. An id that is empty, all dots or holds /, .. or * builds no path. has_artifacts finds leftovers without the transcript, and conversation_in_use also sees a live claude through sessions/<pid>.json (a `claude -c` names no uuid on its command line); a reused pid is told apart by ps lstart against the file's startedAt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
26e2c43753
commit
9ccd3c1835
2 files changed
+169
-7
No files matched your search
@@ -84,6 +84,13 @@ def conversation_in_use(uuid: str, paths=()) -> bool:
|
||||
pass
|
||||
return False
|
||||
|
||||
|
||||
def _plausible_id(uuid: str) -> bool:
|
||||
"""An id safe to build a path from and to search for: not empty, not
|
||||
made of dots alone ("." names the parent dir itself), no "/", ".." or "*"."""
|
||||
return isinstance(uuid, str) and bool(uuid.strip(".")) and not any(s in uuid for s in ("/", "..", "*"))
|
||||
|
||||
|
||||
class SpawnSpec:
|
||||
def __init__(self, agent_name: str, session_name: str, command: str, env: Optional[Dict[str, str]] = None):
|
||||
self.agent_name = agent_name
|
||||
|
||||
Reference in new issue
Block a user