Surfaced by CodeRabbit on #48 (core/src/sync/pipelines/composio/client.rs ~L63-75). Pre-existing — the engine's original vendor/tinycortex/src/memory/sync/composio/client.rs:66 has the same reqwest::Client::new(); #48 ported it unchanged and filed this rather than changing behaviour inside a move.
ComposioClient::new builds the HTTP client with no request or connection timeout. A hung Composio/proxy connection stalls the sync task indefinitely and holds the SyncState mutation window open.
Fix: build through ClientBuilder with explicit connect_timeout and timeout; treat a build failure as an error rather than falling back to an untimed client (unwrap_or_default() would silently drop the timeouts).
Surfaced by CodeRabbit on #48 (
core/src/sync/pipelines/composio/client.rs~L63-75). Pre-existing — the engine's originalvendor/tinycortex/src/memory/sync/composio/client.rs:66has the samereqwest::Client::new(); #48 ported it unchanged and filed this rather than changing behaviour inside a move.ComposioClient::newbuilds the HTTP client with no request or connection timeout. A hung Composio/proxy connection stalls the sync task indefinitely and holds the SyncState mutation window open.Fix: build through
ClientBuilderwith explicitconnect_timeoutandtimeout; treat a build failure as an error rather than falling back to an untimed client (unwrap_or_default()would silently drop the timeouts).