681a48f3c5
python3 is used unguarded by the AI session helpers and (guarded) by the paru/yay log cleaner, but was absent from the dependency catalog and docs. uv does not provide python3 on PATH, and Arch's base omits it, so it is tracked separately rather than assumed via uv. - Add python3 (recommended tier, pm: python) to _fish_deps_catalog.fish - Guard python3 calls in save_claude_session/save_antigravity_session with `type -q python3`, emitting valid empty JSON when absent (Convention §6) - Document python3 in docs/fish-config.md (§5.6 tiers + catalog entry)
39 lines
1.2 KiB
Fish
Executable File
39 lines
1.2 KiB
Fish
Executable File
#!/usr/bin/env fish
|
|
|
|
# Copyright (C) 2026 Rootiest
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
# 1. Read input and extract session ID
|
|
# python3 parses the session_id out of the hook's JSON payload. If it is
|
|
# unavailable we emit valid empty JSON and skip session tracking rather
|
|
# than erroring (see AGENTS.md Convention §6).
|
|
set -l input (cat)
|
|
if not type -q python3
|
|
echo '{}'
|
|
exit 0
|
|
end
|
|
set -l sid (echo $input | python3 -c "import sys,json; print(json.load(sys.stdin).get('session_id', ''))")
|
|
set -l session_file ".claude_session"
|
|
|
|
if test -n "$sid"
|
|
# 2. Save the session ID locally
|
|
echo "$sid" >$session_file
|
|
|
|
# 3. Smart .gitignore check
|
|
# We check if git even knows about this file.
|
|
# If 'git check-ignore' returns 1, it means the file is NOT ignored.
|
|
if git rev-parse --is-inside-work-tree >/dev/null 2>&1
|
|
if not git check-ignore -q $session_file
|
|
# Append the filename to .gitignore
|
|
echo -e "\n# AI Session IDs\n$session_file" >>.gitignore
|
|
echo "Added $session_file to .gitignore"
|
|
end
|
|
end
|
|
|
|
# 4. Update universal variable
|
|
set -U LAST_CLAUDE_SESSION "$sid"
|
|
end
|
|
|
|
# MANDATORY: Every hook must output valid JSON
|
|
echo '{}'
|