diff --git a/.agents/skills/lib.sh b/.agents/skills/lib.sh index a1cf5e2..4642e01 100644 --- a/.agents/skills/lib.sh +++ b/.agents/skills/lib.sh @@ -257,13 +257,35 @@ for tok in tokens: print('\t'.join(env_flags) + '\n' + ' '.join(binary_tokens)) " "$run_cmd" 2>/dev/null || echo "") - env_flags="" - final_cmd="$run_cmd" - if [ -n "$parsed" ]; then - env_flags=$(echo "$parsed" | head -n 1 | tr '\t' ' ') - final_cmd=$(echo "$parsed" | tail -n +2) + kind="cline" + if echo "$name" | grep -qi "agy"; then + kind="agy" + elif echo "$name" | grep -qi "claude"; then + 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 + # 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) existing_ws=$(_real_herdr workspace list 2>/dev/null | TARGET_CWD="${ws:-.}" python3 -c " import sys, json, os @@ -299,7 +321,11 @@ except Exception: ws_id="${ws_id:-w1}" 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) sess=""