diff --git a/skills/kugetsu/scripts/kugetsu-session.sh b/skills/kugetsu/scripts/kugetsu-session.sh index c63066d..0105a5c 100755 --- a/skills/kugetsu/scripts/kugetsu-session.sh +++ b/skills/kugetsu/scripts/kugetsu-session.sh @@ -261,6 +261,27 @@ create_session() { echo "$new_session_id" } +load_session_context() { + local opencode_session_id="$1" + local sanitized_id=$(echo "$opencode_session_id" | sed 's/[^a-zA-Z0-9_-]/_/g') + local log_file="$LOGS_DIR/dev-$sanitized_id.log" + + if [ ! -f "$log_file" ]; then + echo "" + return + fi + + local context_summary="Previous session context (work was in progress, session may have crashed or been interrupted):\n\n" + context_summary+=$(tail -100 "$log_file" 2>/dev/null | while IFS= read -r line; do + line=$(strip_ansi_codes "$line") + echo " $line" + done | head -50) + + context_summary+="\n\nPlease review this context and continue the work appropriately." + + echo "$context_summary" +} + build_dev_agent_message() { local issue_ref="$1" local user_message="${2:-}" @@ -433,9 +454,16 @@ cmd_continue() { if [ -z "$worktree_path" ] || [ ! -d "$worktree_path" ]; then echo "Warning: Worktree is missing for '$session_name'. Recovering..." >&2 + local previous_context=$(load_session_context "$opencode_session_id") rm -f "$session_path" remove_issue_from_index "$session_name" - echo "Calling cmd_start to create new session and worktree..." >&2 + if [ -n "$previous_context" ]; then + message="$previous_context" + if [ -n "$message" ]; then + message="$message"$'\n\n'"Additional user message: $message" + fi + fi + echo "Calling cmd_start to create new session and worktree with context..." >&2 cmd_start "$session_name" "$message" return $? fi