Commit Diff


commit - 828fc2369b17f03c7a88cf7e1f1eee69d78c25bc
commit + 106c5083532b2fc0f296bc56f030182f6c432b06
blob - 7ada3ceee0541285cef542f403038948053e4a73
blob + 4bc930ba52df1fb0ba2344d12e8c22ff6f74e198
--- flake.lock
+++ flake.lock
@@ -162,11 +162,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1789071706,
-        "narHash": "sha256-S+oyh2YSP9V5bSjWbbK0N7GxdxxMwgBfUOtUdVcAWc4=",
+        "lastModified": 1789178892,
+        "narHash": "sha256-9IcxPm9wfRIQqnVbChGNRF6PzfTRLp7iqTzKszCv5zU=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "150f9ce4ddd41544ea42eb9d6043a75bd615fa24",
+        "rev": "cd0e747f6af26cf4a699ce4b6dc1910dbe8af9a7",
         "type": "github"
       },
       "original": {
@@ -248,11 +248,11 @@
     },
     "nixpkgs_3": {
       "locked": {
-        "lastModified": 1789012029,
-        "narHash": "sha256-1CBkBf+Nhggykzlx0jvXrj5rk20btl+tK8Fa8Ml/BL4=",
+        "lastModified": 1789073787,
+        "narHash": "sha256-xfX/toC2QV707s06GbP4II/TxYF0fNQj7s5/LClNDKc=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "d5dfd8e6716dde34398bc14bc87c10dece9c8c68",
+        "rev": "aff8a0b28396750446e5537a96461bc4facdb287",
         "type": "github"
       },
       "original": {
blob - a8d738bfc72ac8d3db250fd819fffc5fe20099ea
blob + ab1bf1f0d7dcf533fc7cf5800ed134edf9fe6044
--- hosts/impish/default.nix
+++ hosts/impish/default.nix
@@ -171,6 +171,7 @@
         redo-sh
         knit
         go-task
+        goreleaser
       ];
 
       debug = [
blob - 13968e6f99a7780ab5d08660fc5ad1a2dcbfed7b
blob + 7718eb6c66b9bf05a762af0cf4bf8a629d4eaabd
--- modules/mixins/dotfiles/config/zsh/rc/llm
+++ modules/mixins/dotfiles/config/zsh/rc/llm
@@ -1,60 +1,50 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
-pi_recent_models() {
-	local n=${1:-10}
-	local session_dir="${HOME}/.pi/agent/sessions"
-	local files
-	if [ -n "${2:-}" ]; then
-		local enc
-		enc=$(echo "/$2" | sed 's|[./]|-|g')
-		files=$(find "$session_dir/$enc"* -name '*.jsonl' 2>/dev/null)
-	else
-		files=$(find "$session_dir" -name '*.jsonl' 2>/dev/null)
-	fi
-	[ -n "$files" ] || return 1
-	# shellcheck disable=SC2086
-	jaq -cr 'select(.type=="model_change") | "\(.timestamp)\t\(.provider) \(.modelId)"' $files |
-		sort -r |
-		cut -f2- |
-		awk '!seen[$0]++' |
-		head -n "$n"
-}
-
 paj() {
-	local isolate args model provider recent
-	args=("$@")
-	isolate="pisol"
-
-	case "${args[0]}" in
-	--reuse | --continue)
+	local isolate candidates model provider rest fzf_status prov mid _
+	isolate=pisol
+	case "${1:-}" in
+	y | yikes)
 		isolate=
 		shift
 		;;
 	esac
 
-	# Use fzf picker for 10 models unless --reuse or --continue
-	if [ -z "${isolate}" ]; then
-		recent=$(pi_recent_models 10 2>/dev/null) || recent=""
+	candidates=
+	{
+		read -r _
+		while read -r prov mid _; do
+			[[ -n "${prov:-}" && -n "${mid:-}" ]] || continue
+			candidates+="$prov $mid"$'\n'
+		done
+	} < <(pi --list-models 2>/dev/null)
+	candidates=${candidates%$'\n'}
+
+	model=$(printf '%s\n' "$candidates" | fzf)
+	fzf_status=$?
+	if [[ "$fzf_status" -eq 130 ]]; then
+		return "$fzf_status"
+	elif [[ "$fzf_status" -ne 0 ]]; then
+		model=
 	fi
 
-	candidates=$(pi --list-models 2>/dev/null | awk 'NR > 1 {print $1 " "$2}') || candidates=""
+	if [[ -n "$model" ]]; then
+		case "$model" in
+		*' '*)
+			provider=${model%% *}
+			rest=${model#* }
+			set -- --provider "$provider" --model "$rest" "$@"
+			;;
+		esac
+	fi
 
-	if [ -n "$recent" ] && [ -n "$candidates" ]; then
-		# Show recent + non-recent
-		model=$(printf '%s\n' "$recent" | grep -xFf <(printf '%s' "$candidates") || true)
-		model=$(printf '%s%s' "$model" "\\n$(printf '%s' "$candidates" | grep -Fxvf <(printf '%s' "$recent"))" | fzf) || true
+	if [[ -n "$isolate" ]]; then
+		"$isolate" pi "$@"
 	else
-		model=$(printf '%s' "$candidates" | fzf) || model="default"
+		pi "$@"
 	fi
-
-	[ -z "$model" ] && model="default"
-	provider=${model%% *}
-	rest=${model#* }
-
-	[ "$rest" = "$model" ] && rest="$model"
-
-	$isolate pi --provider "$provider" --model "$rest" "${args[@]}"
 }
 
-alias pajre='paj --reuse'
-alias pajco='paj --continue'
+alias pajlo='paj yikes'
+alias alpaq='alpaca quota'
+alias alpac='alpaca compose'