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§
- Claude
Wrap Command - Runs a command transparently, reporting the Claude session state it streams.