@@ -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