Repository navigation
refactor(composio): drop the in-process HTTP client; route backend calls through the tinyconnectors module - #6796
Merged
senamakel merged 34 commits intoSep 30, 2026
Conversation
Split the monolithic client.rs into dedicated submodules for connections, execution, factory, and triggers, improving code organization and maintainability. The public API remains unchanged, with all types re-exported from the client module. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
When a tool execution returns a result without a tool name, the system now falls back to the tool's own name instead of failing. This prevents crashes when external tools omit the name field in their response payload. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Updated the construction tool's parameter types in the Composio integration to match the expected schema, fixing a type mismatch that caused validation errors when submitting construction requests. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
When constructing a tool from a JSON value, the code now returns an error if the tool name is missing or empty, instead of silently proceeding with an invalid state. This prevents downstream failures and makes the error condition explicit. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Changed the field name from `type` to `tool_type` in the tool construction logic to avoid a naming conflict with Rust's reserved keyword. This ensures the composio integration correctly serializes and deserializes tool type information without compilation errors. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
When a tool execution request lacks a connection ID, the system now returns a clear error message instead of panicking. This improves robustness by gracefully handling incomplete input data. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Moves the direct client and tool modules into a dedicated `tools/direct` subdirectory to improve code organization and maintainability. The HTTP error handling and discovery logic are also relocated into this new structure, keeping related functionality grouped together without changing any runtime behavior. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
When the Composio API returns an empty tool list during discovery, the client now returns an empty set instead of failing with an error. This allows integrations to proceed without tools when none are available, matching the expected behaviour for accounts that have not yet configured any tools. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Introduce a direct execution mode that allows composio integrations to run actions without requiring an active connection. This enables stateless, one-off tool invocations where a pre-established connection is not available or desired. The change adds a new dispatch path and supporting error handling for the direct mode, while keeping the existing connection-based flow intact. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
When the Composio API returns an empty list of toolkits during authorization, the previous code would panic or produce an error. This change adds a check for an empty response and returns a clear error message instead, allowing the authorization flow to fail gracefully rather than crashing. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Fixes the tool listing endpoint to properly return available tools instead of connections, and updates the connection listing to use the correct API path. The connect endpoint now correctly handles the authentication flow by passing the required parameters. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
When fetching uncached connected integrations, the system now returns an empty list instead of failing when no integrations are found. This prevents errors in downstream processes that expect a valid response even when no integrations have been configured. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
When fetching connected integrations, the system now gracefully handles cases where backend tools are not available by returning an empty list instead of failing. This prevents errors when integrations exist but their corresponding backend tool definitions are missing or not yet synchronized. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Introduces the contract module for the Composio catalog integration, defining the data structures and interfaces needed to interact with the Composio API for catalog operations. This establishes the foundational types for managing tool and app catalog entries within the integration layer. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
…sio_route Replaced the `create_composio_client` function with `resolve_composio_route` across all Composio integration points, and updated callers to use the new connector-module API for backend operations instead of the removed `ComposioClient` struct. This completes the migration to a route-based dispatch model where the live `composio.mode` toggle is honoured on every invocation without caching a pre-resolved client. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
An extra closing brace was left after the `DirectComposioClient` impl block, which would cause a compilation error. Removing it restores the correct syntax. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
…,crates/openhuman-core/src/inte Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Adds unit tests for the Composio integration client to verify its core functionality and ensure reliability. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Renamed two test files to use underscores instead of hyphens in their names, ensuring consistent naming conventions across the test suite. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Renamed the test file to follow the standard Rust test module naming convention, ensuring it is properly recognized by the test runner and preventing it from being ignored during test execution. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
…sioClient Update the test files to use the new `DirectComposioClient` constructor instead of the old `ComposioTool` wrapper, removing the now-unnecessary `None` and `test_security()` arguments. This aligns the tests with the refactored public API that no longer requires those parameters. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Removed several test files across the composio integration and related modules that are no longer needed, cleaning up the codebase by eliminating stale or redundant test suites. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Removed the unused `MAX_ERROR_BODY_LEN` re-export from the test module in the integration client, and removed the unused `discovery` module imports from the Composio direct tools module that were no longer needed by the test code. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Three raw coverage test files for composio tools were removed as they are no longer needed for the test suite. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
This change introduces a new end-to-end test file that validates raw coverage reporting for composio tools when used directly, ensuring the coverage tooling correctly captures and reports coverage data in this scenario. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
…k leftovers Adds end-to-end raw coverage tests for the owned domain scenario and the composio network leftovers case, ensuring these paths are covered by automated testing. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
The raw coverage e2e test now properly handles cases where no coverage data is available, preventing a panic when processing empty coverage results. This ensures the test suite remains stable when run against codebases with no instrumented lines. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Removed three unused imports from the composio raw coverage end-to-end test file to eliminate compiler warnings and keep the test code clean. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Added a README file to document the Composio integration module, providing users with setup instructions and usage guidance for the integration. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Updated the pinned commit for the vendor/tinyconnectors submodule to incorporate upstream changes. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Updated the pinned commit for the vendor/tinyconnectors subproject to incorporate upstream changes. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reformat function calls and definitions across multiple composio integration files to keep arguments on a single line where they fit within the standard line length, and wrap them consistently when they do not. This improves code readability and aligns with the project's formatting conventions without changing any runtime behaviour. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Contributor
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (60)
Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Wave 2 removes the in-process Composio HTTP client. Backend-route callers now go through the tinyconnectors module. Only the direct-mode readers stay, and they are waiting on tinyconnectors#32. The net change is −3.7k lines.
Removed
ComposioClient,build_composio_client,resolve_client,create_direct_composio_tool_for_api_keyclient/{connections,execute,triggers}.rsComposioToolas an agentTool, which nothing registered in production. Its v2 fallbacks, connect URL,list_actionsandComposioActiongo with it.Kept, slimmed
client/factory.rsnow holdsComposioRoute { Backend, Direct(..) }andresolve_composio_route, which replacescreate_composio_client.DirectComposioClientis a non-Toolreader that only lists connected accounts and v3 tool schemas.Per-caller migration
execute_dispatch,subagent_host/ops/provider.rs,memory_host::is_available,connection_created_subscriber(gate)resolve_composio_routetools/{authorize,list_toolkits,list_tools,list_connections,connect}(backend arm)AUTHORIZE/LIST_TOOLKITS/LIST_TOOLS/LIST_CONNECTIONS; the direct-mode messages are unchangedconnected_integrations/fetch_uncached.rs(backend arm)LIST_TOOLKITS+LIST_CONNECTIONS+LIST_TOOLScatalog/contract.rs,slack/rpc.rs,memory_host::list_connections,ops/connections.rs,connect.rslivenessdirect_list_*connection_created_subscriberreadiness pollLIST_CONNECTIONSwith the reloaded live configWaiting on a module release
direct_list_connections/direct_list_tools: these stay in OpenHuman. The pinned v0.10.3DirectRouteomitslimit=200andtoolkit_versions=latest(Direct-mode Composio client returns zero tools for Outlook (and other post-launch toolkits) #3932), and it comma-joinstags. Switching now would regress users with many accounts. tinyconnectors#32 fixes this, and after a releaseDirectComposioClient,client/direct.rsand probablydirect_authcan go.connected_integrations/backend_tools.rs: stays. In direct mode it makes one best-effort GET for backend tool schemas, because the module holds a single route. Removing it needs a per-call route override in the module.Verification
cargo check --tests -p openhuman -p openhuman-cli --features "$(bash scripts/ci/product-features.sh)"is clean. The app manifest andopenhuman-embed/openhuman-tinyhumans --testsalso compile.integrations::composiosubset alone is 373 passed.raw_coverage_all: 157 passed, 1 failed, across two runs. The failure istool_registry_entries_include_connected_mcp_client_tools, which also fails on the original basef3f434e5b7, so it is not caused by this PR. Two composio connector-module races in that binary are serialized byCONNECTOR_MODULE_LOCK; that fix landed in refactor(core): move time/goals tools, conversation store and composio execute into vendor crates #6785 and is merged here.rust:layout,check-agent-runtime-boundary,check-feature-forwarding,check-gated-test-allowlistandcheck-submodule-monotonic upstream/main HEADall pass.check-module-pinsfails only on tinywallet and tinychannels, both from test: drop 45 quarantined raw-coverage files, dedupe vendor-covered tests, repoint vendor pins #6781.Merge order
Merge after #6789. Then, once tinyconnectors#32 is released and pinned, a follow-up PR removes the direct readers.