Skip to content

[core-shrink] integrations: move composio contract tables and payload types into tinyconnectors #7413

Closed

Description

@senamakel

Parent: #7390

Context

integrations/ is 35.5k lines, and only tinyconnectors-bus is used today. integrations/composio/contract/ (4k non-test) is pure tables, pure functions and payload types: generic connector vocabulary.

Scope

  • Move integrations/composio/contract/ into vendor/tinyconnectors (and into tinyconnectors-bus for the wire types).
  • Delete integrations/composio/providers/mod.rs (a re-export).
  • Decide on integrations/task_sources/ (3.8k): generic task-source normalisation → tinyconnectors; product scheduling stays.
  • Keep integrations/composio/module_client.rs, action_tool.rs and the connected-integrations cache as the host adapter.

Acceptance criteria

  • Composio action tools keep the same names and schemas; recorded-tool resume still works (session_host/recorded_tools.rs).
  • Contract tests move to tinyconnectors.

Verification

pnpm rust:layout, cargo check (root + crates/openhuman-app manifest), pnpm test:rust (affected filters), node scripts/ci/check-feature-forwarding.mjs, scripts/e2e-core.sh against the compose stack. Upstream submodule PR lands first, then the gitlink bump here; every behaviour change ships with a regression test.

Activity

  1. added
    refactorStructural code change without a primary behavior change.
    rust-coreCore Rust runtime in src/: CLI, core_server, shared infrastructure.
    composioComposio-backed provider integrations, sync, and provider adapters.
    on Oct 11, 2026
  2. added
    priority: p3Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect.
    on Oct 11, 2026
  3. tinysweeper commented on Oct 11, 2026

    @tinysweeper

    Code-organization refactor in the core-shrink series (parent #7390): move integrations/composio/contract/ tables, pure functions, and payload types into vendor/tinyconnectors / tinyconnectors-bus, delete the providers/mod.rs re-export, and decide on integrations/task_sources/, keeping the host adapter in place. No user-facing breakage; acceptance criteria require unchanged action-tool names/schemas and working recorded-tool resume, plus contract tests and CI verification. Sibling core-shrink issues (#7412, #7414, #7416, #7417, #7396) cover different subsystems, so none is a duplicate.

    Labelled priority: p3.

  4. added theissue type on Oct 11, 2026
  5. senamakel commented on Oct 11, 2026

    @senamakel
    MemberAuthor

    Owner prerequisite is ready: tinyhumansai/tinyconnectors#51 (head 442918c212a880a82e25522da0ab392fa95b209c).

    Contract 1.14 implements four compiled operations: GetVocabulary, EvaluateActions, NormalizeIdentities and PrepareTaskFilter. The minimal bus carries owned wire shapes. Catalogs, aliases, classifiers, matching metadata, identity normalization/rendering and query-cap preparation stay inside the module.

    The real-bus regression first failed with UnknownMethod/GetVocabulary (exit 101), then passed. Native dynamic-loader verification checks exact manifest methods and all four operations against original-host catalog/description goldens, both explicit classifier profiles, malformed profile rejection, directional alias matching, durable identity/prompt output and task caps. Owner tests pass (core361/bus63/provider62 plus examples/doctests), as do format, Clippy, all-target/all-feature build, rustdoc and the existing per-source-file90% coverage gate. Existing Execute persisted-preference/schema regressions still pass.

    Scope decision: portable task envelopes/query vocabulary move upstream; product enrichment/objective text, urgency clock, source settings, dedup storage, routing and scheduling stay in OpenHuman. Current task fetching is intentionally unavailable after ADR0002 removed Sync. This adds no fake fetch operation. Classifier differences are explicit profiles; display metadata cannot bypass the independent Execute policy. Catalog-ready metadata remains distinct from provider capability.

    This child is not complete. Owner landing and a published compiled-module release are required before host adoption. Remaining work: pin that release, remove the local contract in favor of module operations and bus types, retain mechanical module_client/action_tool/cache adapters, coordinate providers shim deletion with #7408, and prove action names/schemas plus native recorded-tool resume. Then run affected native tests, layout, feature forwarding, root/desktop checks and existing RPC E2E (scripts/test-rust-e2e.sh; the issue's scripts/e2e-core.sh is absent). No unpublished gitlink, merge or release is promoted.

  6. senamakel commented on Oct 11, 2026

    @senamakel
    MemberAuthor

    Update: canonical TinyConnectors PR #50 landed during this work. #51 now preserve-merges it, retains RoutedRead and the four vocabulary methods, and advances the additive contract to 1.15 (head de3e29870f937a0d7e10c05b896f3e62e8a6530e). The branch is mergeable.

    Review identified an inherited ClickUp ready-list omission. A new regression first failed because ClickUp has a compiled catalog but no ready-list entry, then passed after adding it; every extracted catalog alias is checked against the ready catalogs. The native loader now verifies 31 ready entries. Full merged-workspace tests pass (core 369 / bus 68 / provider registry 62), along with native artifact, format, Clippy, build, rustdoc and per-source coverage. Review threads have replies; re-review and latest hosted checks are pending. The host/released-module boundary described above still applies, and #7413 remains incomplete.

  7. senamakel commented on Oct 18, 2026

    @senamakel
    MemberAuthor

    Test-ownership audit (#8089): move integrations/composio/contract_gate_tests.rs (463) with contract_gate.rs (args_satisfy_contract, json_value_matches_type, format_contract), and the classification cases of ops_direct_mode_and_error_classification_tests.rs (~200) with ops/error_utils.rs (tinyconnectors already has error/ and execute/classify.rs). humanize_composio_action/canonicalize_toolkit_slug overlap tinyconnectors-bus canonical_action_slug. The four composio raw_coverage files are deleted as padding in senamakel#224.

  8. senamakel commented on Oct 18, 2026

    @senamakel
    MemberAuthor

    Mostly done: the curated catalogs and contract tables now come from the connector module (ListCuratedCatalog, GetVocabulary). What remains is filed as fork leaves under the reworked #7390: senamakel/tinyconnectors#5 (direct-key breaker, credential constructor), senamakel/tinyconnectors#6 (VocabularySnapshot, contract-gate helpers) → senamakel#373, and the shim deletions in senamakel#333. Closing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    composioComposio-backed provider integrations, sync, and provider adapters.priority: p3Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect.refactorStructural code change without a primary behavior change.rust-coreCore Rust runtime in src/: CLI, core_server, shared infrastructure.

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions