Skip to content

Display native Claude, Codex, Antigravity, and Grok subagents#752

Open
edwin-zvs wants to merge 6 commits into
mainfrom
feat-native-harness-subagents
Open

Display native Claude, Codex, Antigravity, and Grok subagents#752
edwin-zvs wants to merge 6 commits into
mainfrom
feat-native-harness-subagents

Conversation

@edwin-zvs

@edwin-zvs edwin-zvs commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • discover Claude Code Agent sidechains, Codex child rollouts, Antigravity child conversations, and Grok subagent updates from their native transcript stores
  • project native children as persisted, read-only Construct sessions with live state and semantic transcripts
  • render recursively nested native children in the TUI and web UI with explicit (native) labels
  • prevent virtual children from daemon auto-resume and direct lifecycle management
  • watch Grok updates.jsonl for subagent_spawned / subagent_finished instead of relying on chat_history.jsonl
  • parse Antigravity INVOKE_SUBAGENT results and child SYSTEM_MESSAGE completion notifications
  • document the ownership boundary in spec 0079

Verification

  • cargo fmt --all -- --check
  • cargo test --workspace (CLI socket tests rerun outside the restricted sandbox: 744 passed)
  • cargo build
  • adapter parser tests use the captured Antigravity and Grok lifecycle record shapes
  • isolated-daemon after-only TUI recording verified at midpoint

Phase boundary

Codex child UUIDs are technically accepted by codex resume <SESSION_ID>, but this PR intentionally does not attach a second controller while the parent harness may still own the child. Claude Agent sidechain IDs are not accepted by claude --resume.

@edwin-zvs

edwin-zvs commented Jul 10, 2026

Copy link
Copy Markdown
Contributor Author

After-only TUI demo (isolated daemon with deterministic Claude/Codex native-child events):

native-subagents-after.mp4

@edwin-zvs

Copy link
Copy Markdown
Contributor Author

Follow-up fix pushed in 1ad2de3:

  • canonicalizes Claude child IDs so agent-<id> filenames and <id> lifecycle notifications resolve to one mirror
  • publishes authoritative retained-child snapshots from the Claude watcher
  • archives mirrors removed from Claude while preserving their transcripts
  • unarchives a mirror if the native child reappears

Verification: focused identity/reconciliation tests pass, workspace test compilation passes, and cargo build passes. A full workspace run hit the existing timing-sensitive two_split_panes_same_session_reuses_cached_size_instead_of_thrashing test once; its immediate isolated rerun passed.

@edwin-zvs

Copy link
Copy Markdown
Contributor Author

Confirmed root cause from the live isolated daemon: Claude writes both agent-<id>.jsonl and agent-<id>.meta.json; the watcher treated the metadata sidecar as a second transcript, creating <id> and <id>.meta mirrors. Commit 2c91a14 restricts discovery to agent-*.jsonl and adds a regression test. The authoritative snapshot then archives any already-persisted .meta mirror after the updated Claude adapter starts.

@edwin-zvs edwin-zvs changed the title Display native Claude and Codex subagents Display native Claude, Codex, Antigravity, and Grok subagents Jul 10, 2026
@edwin-zvs edwin-zvs force-pushed the feat-native-harness-subagents branch from 620a4f2 to 01503bd Compare July 10, 2026 14:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant