main
1#!/usr/bin/env bash
2# Ensure pi agent settings.json has required values without overwriting user preferences
3# This script merges required settings into ~/.pi/agent/settings.json
4
5set -euo pipefail
6
7RUNTIME_SETTINGS="$HOME/.pi/agent/settings.json"
8TEMPLATE_SETTINGS="$(dirname "$0")/settings.json"
9
10# Required settings that should always be present
11REQUIRED_SETTINGS='{
12 "hideThinkingBlock": true,
13 "quietStartup": true,
14 "treeFilterMode": "no-tools",
15 "subagentProviderPreference": [
16 "anthropic-vertex",
17 "google",
18 "llama-cpp"
19 ],
20 "subagentModelFallbacks": {
21 "claude-opus-5": ["claude-opus-4-8", "claude-opus-4-7", "claude-opus-4-6"],
22 "claude-sonnet-5": ["claude-sonnet-4-6", "claude-sonnet-4-5"],
23 "gemini-3.8-flash": ["gemini-3.7-flash", "gemini-3.6-flash"],
24 "claude-haiku-4-5": []
25 },
26 "subagentProviderModelMasks": {
27 "anthropic-vertex": ["claude-opus-5", "claude-opus-4-8"]
28 },
29 "packages": [
30 "npm:@aliou/pi-processes@0.12.0",
31 "npm:@twogiants/pi-anthropic-vertex",
32 "npm:@tmustier/pi-usage-extension@0.9.4",
33 "npm:@narumitw/pi-btw@0.56.0"
34 ]
35}'
36
37# Create runtime settings directory if it doesn't exist
38mkdir -p "$(dirname "$RUNTIME_SETTINGS")"
39
40# If runtime settings doesn't exist, copy from template
41if [ ! -f "$RUNTIME_SETTINGS" ]; then
42 echo "⚙️ Creating $RUNTIME_SETTINGS from template..."
43 cp "$TEMPLATE_SETTINGS" "$RUNTIME_SETTINGS"
44 exit 0
45fi
46
47# Use jq to merge required settings into existing settings
48# This preserves user settings while ensuring required ones are present
49if command -v jq >/dev/null 2>&1; then
50 echo "⚙️ Ensuring required pi agent settings..."
51
52 TEMP_FILE=$(mktemp)
53 jq -s '.[0] * .[1]' "$RUNTIME_SETTINGS" <(echo "$REQUIRED_SETTINGS") >"$TEMP_FILE"
54 mv "$TEMP_FILE" "$RUNTIME_SETTINGS"
55
56 echo "✅ Pi agent settings updated:"
57 echo " - hideThinkingBlock: true"
58 echo " - quietStartup: true"
59 echo " - treeFilterMode: no-tools"
60
61 echo " - subagentProviderPreference: anthropic-vertex, google, llama-cpp"
62 echo " - subagentModelFallbacks: same-family model fallbacks"
63 echo " - subagentProviderModelMasks: anthropic-vertex/claude-opus-5, claude-opus-4-8"
64 echo " - packages: @aliou/pi-processes@0.12.0, @tmustier/pi-usage-extension@0.9.4, @narumitw/pi-btw@0.56.0"
65else
66 echo "⚠️ jq not found - cannot merge settings automatically"
67 echo " Please ensure these settings are in $RUNTIME_SETTINGS:"
68 echo " - hideThinkingBlock: true"
69 echo " - quietStartup: true"
70 echo " - treeFilterMode: no-tools"
71
72 echo " - subagentProviderPreference: [\"anthropic-vertex\", \"google\", ...]"
73 echo " - subagentModelFallbacks: {\"claude-opus-5\": [\"claude-opus-4-8\", ...]}"
74 echo " - subagentProviderModelMasks: {\"anthropic-vertex\": [\"claude-opus-5\", \"claude-opus-4-8\"]}"
75 exit 1
76fi