feat(kugetsu): cmd_delegate calls cmd_start directly for parallelization (fixes #75) #111
@@ -33,7 +33,7 @@ Usage:
|
||||
kugetsu init [--force] Initialize base + pm-agent sessions (requires TTY)
|
||||
kugetsu start <issue-ref> <message> [--debug] Start task for issue (forks base session)
|
||||
kugetsu continue <issue-ref> [message] [--debug] Continue existing task for issue
|
||||
kugetsu delegate <message> Send message to PM agent (fire-and-forget)
|
||||
kugetsu delegate <message> Parse issue ref and call cmd_start directly (parallel)
|
||||
kugetsu logs [n] Show recent delegation logs (default: 10)
|
||||
kugetsu status Check kugetsu initialization status
|
||||
kugetsu doctor [--fix] Diagnose and fix kugetsu issues
|
||||
@@ -55,9 +55,8 @@ Commands:
|
||||
start Fork new session from base for specific issue.
|
||||
Requires pm-agent to be running (created by init).
|
||||
continue Continue work on existing issue session.
|
||||
delegate Send message to PM agent for task coordination.
|
||||
Fire-and-forget: returns immediately, runs in background.
|
||||
Use 'kugetsu logs' to check output.
|
||||
delegate Parse issue ref from message and call cmd_start directly.
|
||||
Falls back to PM agent if no issue ref found.
|
||||
logs Show recent delegation logs.
|
||||
Default: 10 most recent. Use 'kugetsu logs 20' for more.
|
||||
status Check if kugetsu is initialized and PM agent is active.
|
||||
@@ -501,6 +500,41 @@ cmd_status() {
|
||||
echo "ok"
|
||||
}
|
||||
|
||||
extract_issue_ref_from_message() {
|
||||
local message="$1"
|
||||
|
||||
if echo "$message" | grep -qE 'https?://[^/]+/[^/]+/[^/]+/issues/[0-9]+'; then
|
||||
echo "$message" | grep -oE 'https?://[^/]+/[^/]+/[^/]+/issues/[0-9]+' | while read -r url; do
|
||||
local instance=$(echo "$url" | grep -oE 'https?://[^/]+' | sed 's|https?://||')
|
||||
local path=$(echo "$url" | grep -oE '/[^/]+/[^/]+/[^/]+')
|
||||
local issue_num=$(echo "$url" | grep -oE '[0-9]+$')
|
||||
echo "${instance}${path}#${issue_num}"
|
||||
done
|
||||
return
|
||||
fi
|
||||
|
||||
if echo "$message" | grep -qE '[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/[a-zA-Z0-9_-]+/[a-zA-Z0-9_.-]+#[0-9]+'; then
|
||||
echo "$message" | grep -oE '[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/[a-zA-Z0-9_-]+/[a-zA-Z0-9_.-]+#[0-9]+' | head -1
|
||||
return
|
||||
fi
|
||||
|
||||
if echo "$message" | grep -qE '#[0-9]+'; then
|
||||
local num=$(echo "$message" | grep -oE '#[0-9]+' | head -1)
|
||||
if [ -f "$REPOS_CONFIG" ]; then
|
||||
local first_repo=$(python3 -c "import json; d=json.load(open('$REPOS_CONFIG')); print(list(d.values())[0] if d else '')" 2>/dev/null || echo "")
|
||||
if [ -n "$first_repo" ]; then
|
||||
local owner_repo=$(echo "$first_repo" | sed 's|https\?://||' | sed 's|\.git$||')
|
||||
echo "${owner_repo}${num}"
|
||||
return
|
||||
fi
|
||||
fi
|
||||
echo "github.com/unknown/repo${num}"
|
||||
return
|
||||
fi
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
cmd_delegate() {
|
||||
local message="${1:-}"
|
||||
|
||||
@@ -510,6 +544,13 @@ cmd_delegate() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local issue_ref=$(extract_issue_ref_from_message "$message")
|
||||
|
||||
if [ -n "$issue_ref" ] && [[ "$issue_ref" =~ \#[0-9]+$ ]]; then
|
||||
cmd_start "$issue_ref" "$message"
|
||||
return
|
||||
fi
|
||||
|
||||
local pm_session=$(get_pm_agent_session_id)
|
||||
if [ -z "$pm_session" ] || [ "$pm_session" = "null" ] || [ "$pm_session" = "None" ]; then
|
||||
echo "Error: PM agent session not found. Run 'kugetsu init' first." >&2
|
||||
|
||||
Reference in New Issue
Block a user