Skip to main content

Module claude_wrap

Module claude_wrap 

Source
Expand description

omni-dev claude-wrap — a transparent wrapper around the claude process, teeing its --output-format stream-json stdio to the daemon’s sessions service as the authoritative Feed 4.

The Claude Code VS Code extension launches Claude through whatever executable its claudeCode.claudeProcessWrapper setting names, as <wrapper> <real-cmd> <real-args…>. Pointing that at this command puts us in the stream the extension itself reads, which is the only place the exact session state — in particular the can_use_tool permission prompt — is visible. See ADR-0057, and crate::sessions::stream for the state machine.

Fail-open is the hard rule. This sits in Claude’s launch path, so the worst case must be “lose state visibility”, never “Claude won’t launch”. The byte-forwarding path therefore never awaits the parser, the daemon, or anything else: lines are handed to the observer through a bounded channel with try_send and dropped when it is full, and every reporting error is swallowed exactly as the sessions hook sink swallows its own.

Nothing is logged or persisted. The observer reads only the state, the session_id, the cwd and the model out of the stream, and reports them to the daemon’s existing 0600 Unix socket.

Structs§

ClaudeWrapCommand
Runs a command transparently, reporting the Claude session state it streams.