fix(kugetsu): add fix_session_permissions command for cmd_doctor #93
@@ -695,12 +695,16 @@ cmd_env() {
|
||||
|
||||
cmd_doctor() {
|
||||
local fix=false
|
||||
local fix_permissions=false
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--fix)
|
||||
fix=true
|
||||
;;
|
||||
--fix-permissions)
|
||||
fix_permissions=true
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
@@ -798,6 +802,52 @@ cmd_doctor() {
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user