All notable changes to cli-agents are documented in this file.
claude-agent/hooks/forward_to_session.py- now resolves the active tmux pane instead of assuming
:0.0 - now waits for a ready Claude prompt before sending input, reducing dropped first-message cases during startup
- now recognizes the current
❯Claude prompt in addition to older prompt variants
- now resolves the active tmux pane instead of assuming
claude-agent/hooks/start_claude.shandcodex-agent/hooks/start_codex.sh- now send one extra empty
Entershortly after startup by default - this helps unblock first-run prompts such as trusting a newly entered workdir
- now send one extra empty
claude-agent/hooks/pane_monitor.sh- now treats the current Claude
❯prompt as an idle-state indicator during monitor state detection
- now treats the current Claude
codex-agent/hooks/forward_to_session.py- now mirrors the same active-pane and ready-state forwarding behavior for Codex sessions
claude-agent/hooks/on_complete.pyandcodex-agent/hooks/on_complete.py- now extract outbound
messageIdfrom realopenclaw message send --jsonoutput instead of assuming a top-level field
- now extract outbound
claude-agent/hooks/pane_monitor.shandcodex-agent/hooks/pane_monitor.sh- now use the shared message-id extractor so monitor-generated notifications also write reply-route mappings reliably
bridge/extract_message_id.py- shared helper that recursively extracts
messageId/message_idfrom nested OpenClaw plugin JSON output
- shared helper that recursively extracts
codex-agent/hooks/pane_monitor.sh- now resets
HAS_PROMPT=0on every monitor loop iteration so prompt state does not leak across checks and misclassifyworking -> idletransitions
- now resets
- End-to-end Discord thread routing now works for the
claude-agentdemo flow:- thread message -> tmux session
- Claude reply -> Discord thread
- reply message id -> reply route map
- Discord reply-to -> original tmux session via
reply-target-message-id
claude-agent/hooks/pane_monitor.shwas checked for the same state-reset issue and already resetsHAS_PROMPTcorrectly each loop.
Initial consolidated cli-agents repository release.
- Consolidated repository layout:
codex-agent/claude-agent/bridge/
- Shared bridge utilities:
bridge/agent_session_router.pybridge/reply_route_map.pybridge/check_agent_hooks.pybridge/check_route_conflicts.py
- Repository-level
README.md - Repository-level
.gitignore - Repository-level acknowledgements to upstream projects
Source: https://github.com/dztabel-happy/codex-agent
- Added session route context support via per-session route files
- Added reply-target mapping so outbound message IDs can route future thread replies back to the correct tmux session
- Added thread-aware forwarding helper:
hooks/forward_to_session.py - Added
start_codex_openclaw.shfor explicit OpenClaw source-context startup - Added
doctor.shand bridge-level hook preflight / route conflict checks start_codex.sh- now writes route metadata (
chat_id,channel,account,agent_name,workdir,trace_id) - now performs hook preflight and cross-agent route conflict checks before launch
- now supports managed source routing through environment variables
- now defaults to yolo/auto mode unless
--approvalis specified
- now writes route metadata (
on_complete.py- now ignores unmanaged sessions
- now resolves route context dynamically
- now stores reply-route mappings for completion notifications
- now supports channel/account-aware delivery instead of a single hardcoded target model
pane_monitor.sh- now routes approval notifications through per-session context
- now exits early for unmanaged sessions
- now supports account-aware outbound messaging
stop_codex.sh- now sends session-close notifications using route context
- now removes per-session route files on cleanup
- Documentation updated for
skills/...installation paths and managed thread routing workflow
Source: https://github.com/N1nEmAn/claude-agent
- Added shared bridge integration with codex-agent-compatible routing model
- Added thread-aware forwarding helper:
hooks/forward_to_session.py - Added per-session route file support via
hooks/route_context.py - Added bridge-level hook preflight / route conflict checks
- Added
doctor.sh start_claude.sh- now supports explicit per-session flags for
--chat-id,--channel,--account,--agent - now writes per-session route metadata
- now performs preflight and conflict detection before launch
- now defaults to auto mode unless
--approvalis specified
- now supports explicit per-session flags for
on_complete.py- now resolves route context dynamically instead of relying only on global env
- now stores reply-route mappings for completion notifications
- now supports account-aware delivery and cleaner thread-targeted wake behavior
pane_monitor.sh- now detects work-start transitions and can proactively notify the bound thread
- now stores reply-route mappings for monitor-generated messages
- now uses bridge-local
reply_route_map.py
stop_claude.sh- now sends session-close notifications using route context
- now removes per-session route files on cleanup
- Documentation updated for the consolidated repository layout and multi-session thread routing workflow
- Removed nested
.gitdirectories from the old split repos - Created a single standalone Git repository for
cli-agents - Cleaned
__pycache__/*.pycfrom version control and added ignore rules