Skip to content
This repository was archived by the owner on May 15, 2025. It is now read-only.

Commit 33499fb

Browse files
feat(aider): improve screen session management and logging by ensuring multi-user settings in .screenrc and enhancing log file creation
1 parent 15561ce commit 33499fb

File tree

1 file changed

+55
-11
lines changed

1 file changed

+55
-11
lines changed

aider/main.tf

Lines changed: 55 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -261,14 +261,61 @@ EOL
261261
# Check if we have a task prompt
262262
if [ -n "$CODER_MCP_AIDER_TASK_PROMPT" ]; then
263263
echo "Running Aider with message in screen session..."
264+
265+
# Create log file
266+
touch "$HOME/.aider.log"
267+
268+
# Ensure the screenrc exists with multi-user settings
269+
if [ ! -f "$HOME/.screenrc" ]; then
270+
echo "Creating ~/.screenrc and adding multiuser settings..." | tee -a "$HOME/.aider.log"
271+
echo -e "multiuser on\nacladd $(whoami)" > "$HOME/.screenrc"
272+
fi
273+
274+
if ! grep -q "^multiuser on$" "$HOME/.screenrc"; then
275+
echo "Adding 'multiuser on' to ~/.screenrc..." | tee -a "$HOME/.aider.log"
276+
echo "multiuser on" >> "$HOME/.screenrc"
277+
fi
278+
279+
if ! grep -q "^acladd $(whoami)$" "$HOME/.screenrc"; then
280+
echo "Adding 'acladd $(whoami)' to ~/.screenrc..." | tee -a "$HOME/.aider.log"
281+
echo "acladd $(whoami)" >> "$HOME/.screenrc"
282+
fi
283+
264284
# Start aider with the message flag and yes-always to avoid confirmations
265-
screen -dmS ${var.session_name} bash -c "cd ${var.folder} && aider --yes-always --message \"$CODER_MCP_AIDER_TASK_PROMPT\" | tee -a \"$HOME/.aider.log\"; exec bash"
285+
screen -U -dmS ${var.session_name} bash -c "
286+
cd ${var.folder}
287+
aider --yes-always --message \"$CODER_MCP_AIDER_TASK_PROMPT\" | tee -a \"$HOME/.aider.log\"
288+
/bin/bash
289+
"
290+
266291
# Create a flag file to indicate this task was executed
267292
touch "$HOME/.aider_task_executed"
268293
echo "Aider task started in screen session '${var.session_name}'. Check the logs for progress."
269294
else
270295
# Create a new detached screen session for interactive use
271-
screen -dmS ${var.session_name} bash -c "cd ${var.folder} && aider | tee -a \"$HOME/.aider.log\"; exec bash"
296+
touch "$HOME/.aider.log"
297+
298+
# Ensure the screenrc exists with multi-user settings
299+
if [ ! -f "$HOME/.screenrc" ]; then
300+
echo "Creating ~/.screenrc and adding multiuser settings..." | tee -a "$HOME/.aider.log"
301+
echo -e "multiuser on\nacladd $(whoami)" > "$HOME/.screenrc"
302+
fi
303+
304+
if ! grep -q "^multiuser on$" "$HOME/.screenrc"; then
305+
echo "Adding 'multiuser on' to ~/.screenrc..." | tee -a "$HOME/.aider.log"
306+
echo "multiuser on" >> "$HOME/.screenrc"
307+
fi
308+
309+
if ! grep -q "^acladd $(whoami)$" "$HOME/.screenrc"; then
310+
echo "Adding 'acladd $(whoami)' to ~/.screenrc..." | tee -a "$HOME/.aider.log"
311+
echo "acladd $(whoami)" >> "$HOME/.screenrc"
312+
fi
313+
314+
screen -U -dmS ${var.session_name} bash -c "
315+
cd ${var.folder}
316+
aider | tee -a \"$HOME/.aider.log\"
317+
/bin/bash
318+
"
272319
echo "Screen session '${var.session_name}' started. Access it by clicking the Aider button."
273320
fi
274321
fi
@@ -309,16 +356,13 @@ resource "coder_app" "aider_cli" {
309356
fi
310357
elif [ "${var.use_screen}" = "true" ]; then
311358
# Use screen
312-
# Check if session exists, attach or create
313-
if screen -list | grep -q "\\.${var.session_name}\|${var.session_name}\\"; then
314-
echo "Attaching to existing Aider screen session..." | tee -a "$HOME/.aider.log"
315-
# Get the full screen session name (with PID) and attach to it
316-
SCREEN_NAME=$(screen -list | grep -o "[0-9]*\\.${var.session_name}" || screen -list | grep -o "${var.session_name}[0-9]*")
317-
screen -r "$SCREEN_NAME"
318-
else
319-
echo "Starting new Aider screen session..." | tee -a "$HOME/.aider.log"
320-
screen -S ${var.session_name} bash -c "cd ${var.folder} && aider | tee -a \"$HOME/.aider.log\"; exec bash"
359+
# Check if session exists first
360+
if ! screen -list | grep -q "${var.session_name}"; then
361+
echo "Error: No existing Aider session found. Please wait for the script to start it."
362+
exit 1
321363
fi
364+
# Only attach to existing session
365+
screen -xRR ${var.session_name}
322366
else
323367
# Run directly without a multiplexer
324368
cd "${var.folder}"

0 commit comments

Comments
 (0)