feat(integrations): provider-agnostic layer — Composio + Merge behind one trait - #448
Open
ja-818 wants to merge 1 commit into
Open
feat(integrations): provider-agnostic layer — Composio + Merge behind one trait#448ja-818 wants to merge 1 commit into
ja-818 wants to merge 1 commit into
Conversation
…ind one trait Add an IntegrationsProvider trait so Houston can run Composio and Merge interchangeably, picked per-user at runtime with no code changes to agents or UI. Engine: - houston-integrations: trait + shared types + ProviderError taxonomy - houston-merge: full Merge Agent Handler provider — OAuth 2.0 + PKCE + dynamic client registration, OS-keychain tokens, MCP client, connector catalog. No bundled CLI; pure Rust HTTP from the engine. - houston-composio: implements the trait over existing CLI internals - /v1/integrations/* provider-agnostic REST surface; legacy /v1/composio/* retained. Active provider persisted in preferences (default Composio). - System prompt follows the active provider: per-provider guidance moved into each provider crate, appended at session-spawn via compose_app_system_prompt. App prompt no longer hardcodes Composio. Frontend: - Provider picker UI (badge + dialog), EN/ES/PT - Provider-agnostic sign-in hook + dialog; Merge signed-in panel - engine-client integrations* methods + types Fixes 422 on Merge sign-in (camelCase request bodies). 690 Rust unit tests + 3 integration tests pass; mac + windows-gnu clean; tsc + locales clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
What this does
Houston was hard-wired to Composio. After the May 2026 Composio incident (server-wide 403 on
composio login), this adds a provider-agnostic integrations layer so Composio and Merge run interchangeably, picked per-user at runtime. No agent or UI code knows which provider is active.Architecture
engine/houston-integrations— theIntegrationsProvidertrait + shared types +ProviderErrortaxonomy.engine/houston-merge— full Merge Agent Handler provider: OAuth 2.0 + PKCE + dynamic client registration, OS-keychain token storage, MCP client, connector catalog. No bundled CLI — pure Rust HTTP from the engine.engine/houston-composio— now implements the trait over its existing CLI internals (still bundled per-arch; legacy free-function API untouched)./v1/integrations/*— provider-agnostic REST surface. Legacy/v1/composio/*retained.integrations.active_provider, default Composio).compose_app_system_prompt.Full write-up:
knowledge-base/integrations-providers.md.Verification
cargo build --workspaceclean (macOS)cargo check --target x86_64-pc-windows-gnu -p houston-engine-servercleanpnpm tsc --noEmit+pnpm check-localescleanHow to resume on a new machine
Where we left off (next actions)
list_connections— the introspection tool name is a best-guess until tested against a real Merge account.🤖 Generated with Claude Code