feat(deps): catalog python3 as a recommended dependency

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)
This commit is contained in:
2026-06-11 23:15:17 -04:00
parent 965d72230c
commit 681a48f3c5
4 changed files with 25 additions and 6 deletions
+7 -1
View File
@@ -855,7 +855,8 @@ Add -i (interactive confirmation) to destructive commands:
direnv, paru/yay direnv, paru/yay
Integrations wakatime, tailscale Integrations wakatime, tailscale
Recommended eza, lsd, bat, btop, dust, duf, prettyping, ov, Recommended eza, lsd, bat, btop, dust, duf, prettyping, ov,
ripgrep, lazygit, lazydocker, trash, kitty, wezterm ripgrep, lazygit, lazydocker, trash, kitty, wezterm,
python3
fish-deps fish-deps
fish-deps install fish-deps install
@@ -1380,6 +1381,11 @@ fish-deps manages these tools. Run `fish-deps` to check status, or
trash Safe delete (trash-cli) trash Safe delete (trash-cli)
kitty GPU-accelerated terminal (primary) kitty GPU-accelerated terminal (primary)
wezterm GPU-accelerated terminal (alternative) wezterm GPU-accelerated terminal (alternative)
python3 Standalone interpreter — used by the AI session helpers
(save_claude_session / save_antigravity_session) and the
paru/yay log cleaner. Note: uv does not provide python3 on
PATH, and Arch's base does not include it, so it is listed
separately. All consumers degrade gracefully without it.
## Install Methods ## Install Methods
+5 -5
View File
@@ -16,27 +16,27 @@ function _fish_deps_catalog
set -g _fdc_bins \ set -g _fdc_bins \
uv cargo fish fisher starship fzf zoxide direnv paru yay \ uv cargo fish fisher starship fzf zoxide direnv paru yay \
wakatime tailscale \ wakatime tailscale \
eza lsd bat btop dust duf prettyping ov rg lazygit lazydocker trash kitty wezterm eza lsd bat btop dust duf prettyping ov rg lazygit lazydocker trash kitty wezterm python3
set -g _fdc_tiers \ set -g _fdc_tiers \
req req req req req req req req rec rec \ req req req req req req req req rec rec \
int int \ int int \
rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec rec
set -g _fdc_cargo \ set -g _fdc_cargo \
"" "" "" "" starship "" zoxide "" "" "" \ "" "" "" "" starship "" zoxide "" "" "" \
"" "" \ "" "" \
eza lsd bat "" du-dust "" "" ov ripgrep "" "" trashy "" "" eza lsd bat "" du-dust "" "" ov ripgrep "" "" trashy "" "" ""
set -g _fdc_pm \ set -g _fdc_pm \
uv cargo fish "" starship fzf zoxide direnv "" yay \ uv cargo fish "" starship fzf zoxide direnv "" yay \
wakatime tailscale \ wakatime tailscale \
eza lsd bat btop dust duf prettyping ov ripgrep lazygit lazydocker trash kitty wezterm eza lsd bat btop dust duf prettyping ov ripgrep lazygit lazydocker trash kitty wezterm python
set -g _fdc_special \ set -g _fdc_special \
curl-uv rustup-installer git-cargo-fish fisher-bootstrap curl-installer fzf-update "" "" paru-build yay-build \ curl-uv rustup-installer git-cargo-fish fisher-bootstrap curl-installer fzf-update "" "" paru-build yay-build \
wakatime-binary "" \ wakatime-binary "" \
"" "" "" "" "" "" "" "" "" "" curl-lazydocker "" "" "" "" "" "" "" "" "" "" "" "" "" curl-lazydocker "" "" "" ""
end end
# SYNOPSIS # SYNOPSIS
+6
View File
@@ -7,6 +7,12 @@
set -l input (cat) set -l input (cat)
# 2. Extract session_id using Python # 2. Extract session_id using Python
# If python3 is unavailable, emit valid empty JSON and skip session
# tracking rather than erroring (see AGENTS.md Convention §6).
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 sid (echo $input | python3 -c "import sys,json; print(json.load(sys.stdin).get('session_id', ''))")
set -l session_file ".antigravity_session" set -l session_file ".antigravity_session"
+7
View File
@@ -4,7 +4,14 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
# 1. Read input and extract session ID # 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) 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 sid (echo $input | python3 -c "import sys,json; print(json.load(sys.stdin).get('session_id', ''))")
set -l session_file ".claude_session" set -l session_file ".claude_session"