feat(agent): deprecate and completely remove cline agent support

- Delete adapters/cline.py and unregister from registry.py
- Remove cline branches from lib.sh and all 8 skill scripts (create, resume, stop, status, reconcile, update_yaml_resumed, resolve_session_id, orc_onboard)
- Narrow own-key mapping dictionaries across lib_py core modules to 4 supported agents
- Delete cline-exclusive tests and retarget shared fixtures to grok/hermes/claude
- Update skills documentation and installation guides (439 passed, 0 failures)
- Archive cline deprecation consensus and review reports
This commit is contained in:
2026-08-28 22:38:48 +09:00
parent e0c0c107f5
commit f57cd5cdde
40 changed files with 530 additions and 411 deletions
@@ -8,7 +8,7 @@ platforms: [linux, macos]
environments: [terminal, herdr]
metadata:
hermes:
tags: [agent, herdr, claude, antigravity, agy, cline, hermes, grok, orchestrator, onboard, isolation]
tags: [agent, herdr, claude, antigravity, agy, hermes, grok, orchestrator, onboard, isolation]
related_skills: [multi-agent-mux-create, multi-agent-mux-resume, multi-agent-mux-monitor]
prereq_skills: [multi-agent-mux-create]
---
@@ -24,7 +24,7 @@ Registers an orchestrator session UUID into the `orchestrator_uuids` list of `.m
```
### Options
- `--uuid <uuid>`: Explicitly register the specified orchestrator session UUID (UUID format or cline ID format).
- `--uuid <uuid>`: Explicitly register the specified orchestrator session UUID.
- `--remove <uuid>`: Remove the specified UUID from the `orchestrator_uuids` list.
- `--list`: Display all currently registered orchestrator UUIDs.
- `--no-autodetect`: Disable process ancestry auto-detection when `--uuid` is not provided.
@@ -32,18 +32,16 @@ Registers an orchestrator session UUID into the `orchestrator_uuids` list of `.m
## Auto-Detection Hierarchy (Rev.2)
When `--uuid` is omitted, `orc_onboard.sh` inspects the process ancestry tree of the nearest agent ancestor (`claude`, `agy`, `hermes`, `cline`, `grok`) in the following order:
When `--uuid` is omitted, `orc_onboard.sh` inspects the process ancestry tree of the nearest agent ancestor (`claude`, `agy`, `hermes`, `grok`) in the following order:
1. **CLI `argv`**:
- `claude -r <uuid>` / `claude --session-id <uuid>`
- `agy --conversation <uuid>`
- `cline --id <uuid>` / `cline --session-id <uuid>`
- `grok --session-id <uuid>` / `grok --resume <uuid>`
2. **Family-Matched Environment Variables**:
- `claude``CLAUDE_CODE_SESSION_ID`
- `agy``ANTIGRAVITY_CONVERSATION_ID`
- `hermes``HERMES_SESSION_ID`
- `cline``CLINE_SESSION_ID`
- `grok``GROK_SESSION_ID`
3. **Fallback**:
- If no valid ID matching the nearest agent family is found, exits with status 3 (`Could not detect orchestrator ID`).
@@ -66,8 +66,7 @@ done
is_valid_id() {
local val="$1"
local uuid_re='^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$'
local cline_re='^[0-9]{10,}_[0-9A-Za-z]+$'
if [[ "$val" =~ $uuid_re ]] || [[ "$val" =~ $cline_re ]]; then
if [[ "$val" =~ $uuid_re ]]; then
return 0
fi
return 1
@@ -104,7 +103,7 @@ detect_nearest_agent() {
local base
base="$(basename "$tok")"
case "$base" in
claude|agy|hermes|cline|grok)
claude|agy|hermes|grok)
match="$base"
break
;;
@@ -125,9 +124,6 @@ detect_nearest_agent() {
hermes)
detected_id=$(echo "$cmd_line" | grep -oE '(--resume|--session)[[:space:]=]+[^[:space:]]+' | head -n 1 | sed -E 's/^(--resume|--session)[[:space:]=]+//' || true)
;;
cline)
detected_id=$(echo "$cmd_line" | grep -oE '(--id|--session-id)[[:space:]=]+[^[:space:]]+' | head -n 1 | sed -E 's/^(--id|--session-id)[[:space:]=]+//' || true)
;;
grok)
detected_id=$(echo "$cmd_line" | grep -oE '(--session-id|--resume)[[:space:]=]+[^[:space:]]+' | head -n 1 | sed -E 's/^(--session-id|--resume)[[:space:]=]+//' || true)
;;
@@ -144,7 +140,6 @@ detect_nearest_agent() {
claude) env_var="${CLAUDE_CODE_SESSION_ID:-}" ;;
agy) env_var="${ANTIGRAVITY_CONVERSATION_ID:-}" ;;
hermes) env_var="${HERMES_SESSION_ID:-}" ;;
cline) env_var="${CLINE_SESSION_ID:-}" ;;
grok) env_var="${GROK_SESSION_ID:-}" ;;
esac
@@ -206,7 +201,7 @@ except Exception:
target = sys.argv[1]
for s in d.get("herdr_sessions", []):
if s.get("status") == "running":
for k in ["claude_session_id_own", "agy_conversation_id_own", "hermes_conversation_id_own", "cline_conversation_id_own", "grok_session_id_own"]:
for k in ["claude_session_id_own", "agy_conversation_id_own", "hermes_conversation_id_own", "grok_session_id_own"]:
if s.get(k) == target:
sys.exit(1)
sys.exit(0)