fix(stop): the exit-4 refusal names where the holder may be (Issue #31, Mac review)
The refusal pointed at ~/.claude/sessions/ for every agent, whatever CLAUDE_CONFIG_DIR said, and never mentioned a non-agent process naming the uuid on its command line. The in-use CLI now prints, on stderr while the conversation is in use, the adapter's in_use_hints: for every adapter `ps -axww | grep <uuid>`, and for claude its real sessions/ dir first. stop prints them under its refusal, and says "records preserved" instead of "no state was modified": the gate runs after the kill chain, so the session itself may already be down. SKILL.md's exit 4 row says the same; it is not a code block, so no inventory hash moves. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
af8ed397f6
commit
e156179822
6 files changed
+25
-6
No files matched your search
@@ -345,6 +345,10 @@ class ClaudeAgentAdapter(BaseAgentAdapter):
|
||||
return True
|
||||
return any(_session_file_live(data, pid) for _, pid, data in self._session_files(uuid, ctx))
|
||||
|
||||
def in_use_hints(self, uuid: str, ctx: DiscoveryContext) -> list:
|
||||
return [f"a claude process whose session file under {os.path.join(_config_dir(ctx), 'sessions')}/ names it"] \
|
||||
+ super().in_use_hints(uuid, ctx)
|
||||
|
||||
def purge_artifacts(self, uuid: str, ctx: DiscoveryContext) -> list:
|
||||
# Best effort: never raises (stop runs this inside its registry
|
||||
# transaction). What could not be removed is not listed here and
|
||||
|
||||
Reference in new issue
Block a user