malvin 0.2.5

Non-interactive research and coding agent
mod drain_idle;
mod log_adapter;
mod log_adapter_tool;
mod session;
mod session_handshake;
mod session_io;
#[path = "session_io_productive.rs"]
mod session_io_productive;
mod spawn_args;
mod stdio_teardown;
mod stream_log;
mod timing;

#[cfg(test)]
#[path = "drain_idle_tests.rs"]
mod drain_idle_tests;

#[cfg(test)]
#[path = "drain_idle_policy_tests.rs"]
mod drain_idle_policy_tests;

#[cfg(test)]
pub(crate) use drain_idle::{DrainHealthVerdict, DrainIdleClock};
pub(crate) use drain_idle::{
    DrainIdleHealthCtx, DrainIdleLabels, DrainIdleTurn, await_next_with_idle_in_turn,
};
#[cfg(test)]
pub(crate) use drain_idle::{DrainIdleWaitOpts, await_next_with_idle_using};

pub(crate) use log_adapter::{feed_do_dm_run_result, handle_stream_event};
pub use session::BridgeSession;
pub use session_io::write_request;
pub(crate) use session_io::{
    CreateArgs, MemWatchArgs, ResumeArgs, run_done_status_is_failure, send_create, send_resume,
    start_mem_watch,
};
pub use spawn_args::{BridgeSpawnArgs, SDK_BRIDGE_MAX_AGE, ToolCallStart};
pub(crate) use stdio_teardown::{StdioTeardown, drop_stdio_child};
pub use stream_log::StreamLog;
pub use timing::{note_sdk_step, record_sdk_usage};

#[cfg(test)]
mod protocol_reexport_tests {
    #[test]
    fn bridge_protocol_is_shared() {
        let _ = crate::bridge_protocol::encode_request;
        let _ = crate::bridge_protocol::decode_event;
        let _ = super::write_request;
        let _ = stringify!(BridgeSession);
        let _ = stringify!(BridgeSpawnArgs);
        let _ = stringify!(ToolCallStart);
        let _ = stringify!(SDK_BRIDGE_MAX_AGE);
        let _ = stringify!(send_create);
        let _ = stringify!(send_resume);
        let _ = stringify!(start_mem_watch);
        let _ = stringify!(note_sdk_step);
        let _ = stringify!(record_sdk_usage);
        let _ = stringify!(logged_run_done);
        let _ = stringify!(canonicalize_run_done);
    }
}