fix(lib): strip duplicate binary path in final_cmd to fix Go flag parsing and add dual herdr agent start syntax fallback
This commit is contained in:
+32
-6
@@ -257,13 +257,35 @@ for tok in tokens:
|
|||||||
print('\t'.join(env_flags) + '\n' + ' '.join(binary_tokens))
|
print('\t'.join(env_flags) + '\n' + ' '.join(binary_tokens))
|
||||||
" "$run_cmd" 2>/dev/null || echo "")
|
" "$run_cmd" 2>/dev/null || echo "")
|
||||||
|
|
||||||
env_flags=""
|
kind="cline"
|
||||||
final_cmd="$run_cmd"
|
if echo "$name" | grep -qi "agy"; then
|
||||||
if [ -n "$parsed" ]; then
|
kind="agy"
|
||||||
env_flags=$(echo "$parsed" | head -n 1 | tr '\t' ' ')
|
elif echo "$name" | grep -qi "claude"; then
|
||||||
final_cmd=$(echo "$parsed" | tail -n +2)
|
kind="claude"
|
||||||
|
elif echo "$name" | grep -qi "hermes"; then
|
||||||
|
kind="hermes"
|
||||||
|
elif echo "$final_cmd" | grep -qi "agy"; then
|
||||||
|
kind="agy"
|
||||||
|
elif echo "$final_cmd" | grep -qi "claude"; then
|
||||||
|
kind="claude"
|
||||||
|
elif echo "$final_cmd" | grep -qi "hermes"; then
|
||||||
|
kind="hermes"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Strip duplicate agent binary name/path from final_cmd if present, preventing Go flag.Parse() positional argument interruption
|
||||||
|
final_cmd=$(python3 -c "
|
||||||
|
import sys, shlex
|
||||||
|
cmd = sys.argv[1]
|
||||||
|
kind = sys.argv[2]
|
||||||
|
try:
|
||||||
|
tokens = shlex.split(cmd)
|
||||||
|
if tokens and (tokens[0] == kind or tokens[0].endswith('/' + kind)):
|
||||||
|
tokens = tokens[1:]
|
||||||
|
print(' '.join(shlex.quote(t) for t in tokens))
|
||||||
|
except Exception:
|
||||||
|
print(cmd)
|
||||||
|
" "$final_cmd" "$kind" 2>/dev/null || echo "$final_cmd")
|
||||||
|
|
||||||
# Check if there is an existing workspace inside this session (to reuse and split view)
|
# Check if there is an existing workspace inside this session (to reuse and split view)
|
||||||
existing_ws=$(_real_herdr workspace list 2>/dev/null | TARGET_CWD="${ws:-.}" python3 -c "
|
existing_ws=$(_real_herdr workspace list 2>/dev/null | TARGET_CWD="${ws:-.}" python3 -c "
|
||||||
import sys, json, os
|
import sys, json, os
|
||||||
@@ -299,7 +321,11 @@ except Exception:
|
|||||||
ws_id="${ws_id:-w1}"
|
ws_id="${ws_id:-w1}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
eval "_real_herdr agent start \"$name\" --workspace \"$ws_id\" --cwd \"${ws:-.}\" $split_flag $env_flags -- $final_cmd"
|
# Attempt --kind syntax first, fall back to explicit binary name if required by herdr CLI
|
||||||
|
res=$(eval "_real_herdr agent start \"$name\" --kind \"$kind\" --workspace \"$ws_id\" --cwd \"${ws:-.}\" $split_flag $env_flags -- $final_cmd" 2>&1 || true)
|
||||||
|
if ! echo "$res" | grep -q "agent_started"; then
|
||||||
|
res=$(eval "_real_herdr agent start \"$name\" --workspace \"$ws_id\" --cwd \"${ws:-.}\" $split_flag $env_flags -- $kind $final_cmd" 2>&1 || true)
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
kill-session)
|
kill-session)
|
||||||
sess=""
|
sess=""
|
||||||
|
|||||||
Reference in New Issue
Block a user