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 "packages": [
21 "npm:@aliou/pi-processes@0.4.4",
22 "npm:@twogiants/pi-anthropic-vertex"
23 ]
24}'
25
26# Create runtime settings directory if it doesn't exist
27mkdir -p "$(dirname "$RUNTIME_SETTINGS")"
28
29# If runtime settings doesn't exist, copy from template
30if [ ! -f "$RUNTIME_SETTINGS" ]; then
31 echo "⚙️ Creating $RUNTIME_SETTINGS from template..."
32 cp "$TEMPLATE_SETTINGS" "$RUNTIME_SETTINGS"
33 exit 0
34fi
35
36# Use jq to merge required settings into existing settings
37# This preserves user settings while ensuring required ones are present
38if command -v jq >/dev/null 2>&1; then
39 echo "⚙️ Ensuring required pi agent settings..."
40
41 TEMP_FILE=$(mktemp)
42 jq -s '.[0] * .[1]' "$RUNTIME_SETTINGS" <(echo "$REQUIRED_SETTINGS") >"$TEMP_FILE"
43 mv "$TEMP_FILE" "$RUNTIME_SETTINGS"
44
45 echo "✅ Pi agent settings updated:"
46 echo " - hideThinkingBlock: true"
47 echo " - quietStartup: true"
48 echo " - treeFilterMode: no-tools"
49
50 echo " - subagentProviderPreference: google-vertex-claude, google, llama-cpp"
51 echo " - packages: @aliou/pi-processes"
52else
53 echo "⚠️ jq not found - cannot merge settings automatically"
54 echo " Please ensure these settings are in $RUNTIME_SETTINGS:"
55 echo " - hideThinkingBlock: true"
56 echo " - quietStartup: true"
57 echo " - treeFilterMode: no-tools"
58
59 echo " - subagentProviderPreference: [\"google-vertex-claude\", \"vertex\", ...]"
60 exit 1
61fi