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