Compare commits

...

2 Commits

Author SHA1 Message Date
shokollm
3ce43ffa65 fix(kugetsu): wrap cmd_continue in subshell with cd for correct worktree dir
The --dir flag only sets directory for the subprocess, not the session's
stored directory in opencode's SQLite DB. This was already fixed for
cmd_start in v0.1.10, but cmd_continue still had the bug.

Fixes #127
2026-04-03 13:06:02 +00:00
shokollm
416e8e5757 fix(kugetsu): destroy --base now also deletes PM agent session
When destroying base session, we now also delete the PM agent session
and all issue session files. This ensures clean slate on re-init.
2026-04-02 14:47:40 +00:00

View File

@@ -1439,12 +1439,13 @@ cmd_continue() {
echo "Continuing session for '$session_name'..."
# Note: --continue always allowed (existing sessions don't count toward limit)
# Wrap in subshell with cd to ensure worktree directory is set correctly in session DB
if [ -n "$worktree_path" ] && [ -d "$worktree_path" ]; then
echo "Using worktree: $worktree_path"
if [ "$DEBUG_MODE" = true ]; then
opencode run "$message" --continue --session "$opencode_session_id" --dir "$worktree_path" 2>&1 | tee "$session_path.debug.log" &
(cd "$worktree_path" && opencode run "$message" --continue --session "$opencode_session_id" --dir "$worktree_path" 2>&1) | tee "$session_path.debug.log" &
else
opencode run "$message" --continue --session "$opencode_session_id" --dir "$worktree_path" 2>&1 &
(cd "$worktree_path" && opencode run "$message" --continue --session "$opencode_session_id" --dir "$worktree_path" 2>&1) &
fi
else
if [ "$DEBUG_MODE" = true ]; then
@@ -1602,19 +1603,21 @@ cmd_destroy() {
if [ "$target" = "base" ]; then
if [ "$force" = true ]; then
local base_session_id=$(get_base_session_id)
local pm_agent_session_id=$(get_pm_agent_session_id)
rm -f "$SESSIONS_DIR/base.json"
local pm_agent=$(get_pm_agent_session_id)
if [ -n "$pm_agent" ] && [ "$pm_agent" != "null" ]; then
rm -f "$SESSIONS_DIR/pm-agent.json"
rm -f "$SESSIONS_DIR/issue-"*.json 2>/dev/null || true
echo '{"base": null, "pm_agent": null, "issues": {}}' > "$INDEX_FILE"
else
echo '{"base": null, "pm_agent": null, "issues": {}}' > "$INDEX_FILE"
fi
if [ -n "$base_session_id" ] && [ "$base_session_id" != "null" ]; then
echo "Deleting opencode session: $base_session_id"
opencode session delete "$base_session_id" 2>/dev/null || echo "Warning: Could not delete session from opencode (may already be deleted)"
echo "Deleting base session: $base_session_id"
opencode session delete "$base_session_id" 2>/dev/null || echo "Warning: Could not delete base session"
fi
echo "Base session destroyed"
if [ -n "$pm_agent_session_id" ] && [ "$pm_agent_session_id" != "null" ]; then
echo "Deleting PM agent session: $pm_agent_session_id"
opencode session delete "$pm_agent_session_id" 2>/dev/null || echo "Warning: Could not delete PM agent session"
fi
echo "Base and PM agent sessions destroyed"
else
echo "Error: destroying base session requires --base -y" >&2
exit 1