Skip to content

feat(integrations): provider-agnostic layer — Composio + Merge behind one trait - #448

Open
ja-818 wants to merge 1 commit into
mainfrom
gcp-remote-claude-sessions
Open

feat(integrations): provider-agnostic layer — Composio + Merge behind one trait#448
ja-818 wants to merge 1 commit into
mainfrom
gcp-remote-claude-sessions

Conversation

@ja-818

@ja-818 ja-818 commented Jun 5, 2026

Copy link
Copy Markdown
Collaborator

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 — the IntegrationsProvider trait + shared types + ProviderError taxonomy.
  • 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.
  • Active provider persisted in preferences (integrations.active_provider, 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.
  • Frontend — provider picker (badge + dialog), provider-agnostic sign-in hook + dialog, Merge signed-in panel. EN/ES/PT.

Full write-up: knowledge-base/integrations-providers.md.

Verification

  • 690 Rust unit tests + 3 integration tests pass
  • cargo build --workspace clean (macOS)
  • cargo check --target x86_64-pc-windows-gnu -p houston-engine-server clean
  • pnpm tsc --noEmit + pnpm check-locales clean

How to resume on a new machine

git fetch && git checkout gcp-remote-claude-sessions && git pull
cargo build -p houston-engine-server   # MUST rebuild engine before dev (stale-sidecar rule)
cd app && pnpm install && pnpm tauri dev

Where we left off (next actions)

  • Just fixed: 422 on Merge sign-in (camelCase request bodies). Committed but needs the engine rebuild above to test live.
  • Next: rebuild engine, restart dev, click Sign in on the Merge panel, confirm OAuth completes end-to-end.
  • Unverified: Merge list_connections — the introspection tool name is a best-guess until tested against a real Merge account.

🤖 Generated with Claude Code

…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant