fix(kugetsu): add fix_session_permissions command for cmd_doctor
Add --fix-permissions flag to cmd_doctor: kugetsu doctor --fix-permissions The fix_session_permissions() function: - Updates base session and PM agent session permissions in SQLite - Sets external_directory pattern to '*' with action 'allow' - This fixes the issue where PM agent cannot access external directories This addresses issue #36 where PM agent external_directory permission fails. Fixes #36
This commit is contained in:
@@ -695,12 +695,16 @@ cmd_env() {
|
|||||||
|
|
||||||
cmd_doctor() {
|
cmd_doctor() {
|
||||||
local fix=false
|
local fix=false
|
||||||
|
local fix_permissions=false
|
||||||
|
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--fix)
|
--fix)
|
||||||
fix=true
|
fix=true
|
||||||
;;
|
;;
|
||||||
|
--fix-permissions)
|
||||||
|
fix_permissions=true
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -798,6 +802,52 @@ cmd_doctor() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$fix_permissions" = true ]; then
|
||||||
|
echo ""
|
||||||
|
echo "Fixing session permissions..."
|
||||||
|
fix_session_permissions
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
fix_session_permissions() {
|
||||||
|
local opencode_db="${OPENCODE_DB:-$HOME/.opencode/opencode.db}"
|
||||||
|
|
||||||
|
if [ ! -f "$opencode_db" ]; then
|
||||||
|
echo "[ERROR] opencode database not found: $opencode_db"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local base_session_id=$(get_base_session_id)
|
||||||
|
local pm_agent_session_id=$(get_pm_agent_session_id)
|
||||||
|
|
||||||
|
local PERMISSION_JSON='[{"permission":"question","pattern":"*","action":"deny"},{"permission":"plan_enter","pattern":"*","action":"deny"},{"permission":"plan_exit","pattern":"*","action":"deny"},{"permission":"external_directory","pattern":"*","action":"allow"}]'
|
||||||
|
|
||||||
|
if [ -n "$base_session_id" ] && [ "$base_session_id" != "null" ]; then
|
||||||
|
echo "Updating base session permissions: $base_session_id"
|
||||||
|
python3 -c "
|
||||||
|
import sqlite3
|
||||||
|
conn = sqlite3.connect('$opencode_db')
|
||||||
|
cursor = conn.cursor()
|
||||||
|
cursor.execute(\"UPDATE session SET permission = ? WHERE id = ?\", ('$PERMISSION_JSON', '$base_session_id'))
|
||||||
|
conn.commit()
|
||||||
|
print('[OK] Base session permissions updated')
|
||||||
|
"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$pm_agent_session_id" ] && [ "$pm_agent_session_id" != "null" ] && [ "$pm_agent_session_id" != "None" ]; then
|
||||||
|
echo "Updating PM agent session permissions: $pm_agent_session_id"
|
||||||
|
python3 -c "
|
||||||
|
import sqlite3
|
||||||
|
conn = sqlite3.connect('$opencode_db')
|
||||||
|
cursor = conn.cursor()
|
||||||
|
cursor.execute(\"UPDATE session SET permission = ? WHERE id = ?\", ('$PERMISSION_JSON', '$pm_agent_session_id'))
|
||||||
|
conn.commit()
|
||||||
|
print('[OK] PM agent session permissions updated')
|
||||||
|
"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Session permissions fix complete"
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUG_MODE=false
|
DEBUG_MODE=false
|
||||||
|
|||||||
Reference in New Issue
Block a user