feat(composio): add GitHub as a native memory provider#2488
Conversation
Lifts the GitHub module from catalog-only into a full ComposioProvider
that incrementally ingests issues and PRs the connected user is involved
with into the Memory Tree.
- provider.rs: ComposioProvider impl using GITHUB_SEARCH_ISSUES with
`involves:{login}` + ISO 8601 cursor for incremental fetches
- sync.rs: extract_issues, extract_issue_id, extract_issue_title,
extract_issue_updated_at, extract_user_login helpers; html_url-based
slug fallback for composite doc IDs
- tests.rs: 38 unit tests covering all helpers + provider metadata
- mod.rs: upgraded from catalog-stub to full provider layout
- registry.rs: GitHubProvider registered in init_default_providers
Closes tinyhumansai#2408
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (5)
📝 WalkthroughWalkthroughThis PR promotes GitHub from a curated tools-only module to a fully native memory-ingest provider. It adds incremental sync of user-assigned issues into the Memory Tree via cursor-based pagination, daily request budgeting, and composite deduplication on issue identity and update timestamp. ChangesGitHub Provider Implementation
Sequence DiagramsequenceDiagram
participant User as Connected User
participant sync as GitHubProvider.sync()
participant github as GitHub API
participant dedup as Dedup & Persist
participant memory as Memory Tree
User->>sync: trigger periodic sync
sync->>github: fetch authenticated user
github-->>sync: user profile with login
sync->>sync: check daily request budget
sync->>github: search issues (assignee:login updated:>cursor)
github-->>sync: paginated results
loop for each issue
sync->>dedup: extract id@updated_at key
dedup->>dedup: check if already synced
dedup->>memory: persist_single_item if new/modified
memory-->>dedup: mark synced or log error
end
sync->>sync: advance cursor to newest updated_at
sync->>memory: save SyncState (cursor, timestamp)
sync-->>User: return SyncOutcome (counts, budget remaining)
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related issues
Suggested labels
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
|
CI note: the single failing check () is panicking with |
Summary
github/Composio module from a catalog-only stub into a fullComposioProviderthat incrementally ingests issues and pull requests involving the connected user into the Memory Tree.GITHUB_SEARCH_ISSUESwithinvolves:{login} updated:>{cursor}for efficient incremental fetches (mirrors theinvolves:privacy posture: only items the user created, was assigned to, mentioned in, or commented on).clickup/andnotion/:provider.rs,sync.rs,tests.rs, mod re-exports.GitHubProviderininit_default_providersalongside the existing four providers.Test plan
cargo check -p openhuman— cleancargo fmt --all -- --check— cleancargo test -p openhuman composio::providers::github— 38/38 passcargo test -p openhuman composio::providers::registry— registry tests pass (GitHub now included inall_providers())Related
Closes #2408
Summary by CodeRabbit