Description
GitHub Pull Request Sync imports pull requests from every repository visible to the connected account into a dedicated Pull Requests Dotabase. It is a distinct resource workflow within the multi-entity GitHub connector: pull requests have their own discovery branch, schema, row mapping, update watermark, and immutable provider identity. Each row carries review and repository context plus a bounded set of member commit SHAs.
The importer tracks pull-request updated_at values rather than commit time, so later edits and state changes remain eligible for incremental refresh. For each pull request it also fetches up to the provider’s bounded commit-listing limit and stores full SHAs in a structured property. That identity bridge lets knowledge-graph behavior join pull requests to rows created by GitHub Commit Import.
Selling Points
- See review work across repositories in one place. Pull requests become a consistent corpus instead of remaining fragmented by repo.
- Capture evolving workflow state. Incremental pulls follow update time, so titles, bodies, reviews, merges, and closure state can refresh.
- Connect proposals to implementation. Member commit SHAs provide deterministic material for PR-to-commit relationships.
- Avoid duplicates during repeated pulls. Immutable GitHub node ids serve as binding-scoped external identities.
- Keep GitHub-specific complexity out of the core. The shared engine still supplies scheduling, retries, persistence, and enrichment.
User Story
A product and engineering team wants to review shipped decisions across many repositories. They connect GitHub, bind the pull-request resource to a Pull Requests Dotabase, and backfill the account. Dots gives them one searchable row per pull request with state, repository, participants, narrative, and member commit identities; later runs update active pull requests without replacing their Dots identity.
Extension Surface
This feature is configurable: a user chooses the connection, pull_requests resource, target, schema mapping, cadence, and optional behavior skips. The resource dispatch and update cursor are implemented in packages/connectors/src/github/index.ts; packages/connectors/src/github/pr-schema-map.ts defines the pull-request-specific field set. The extension does not expose a separate plugin API from GitHub Commit Import, but it is separately selectable and usable as a binding resource.
Capabilities & Limits
Capabilities include account-wide repository coverage, immutable node-id deduplication, update-time incremental sync, structured pull-request mapping, and commit-membership capture for relationship inference. The pull and commit resource kinds share one authorized GitHub account while remaining separately bindable.
The member-commit fetch is intentionally bounded: GitHub caps the listing, and the adapter requests at most three pages of one hundred while the provider returns at most 250. The capability is one-way and limited to repositories and fields visible to the connected account. It does not import code review comments as their own entities, and relationship creation depends on corresponding commit rows being present.
Implementation Map
packages/connectors/src/github/index.tspackages/connectors/src/github/pr-schema-map.tspackages/connectors/src/github/pr-map-row.tspackages/connectors/src/github/pr-fixtures.tsapps/web/src/composition/connector-wiring.ts