feat(connector): add Calendly data-source connector - #171
Open
1nkspand wants to merge 1 commit into
Open
Conversation
Signed-off-by: 1nkspand <y1492816650@163.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.
Description
Adds a Calendly data-source connector under
packages/connector/calendly/, following the shape of thefive existing connectors (Notion is the closest working reference).
What it does
Turns your scheduled events into memory — "ask my calendar". Each active event becomes a document
whose content includes the event name and timing, the meeting notes, and — most importantly — every
invitee's questions & answers (the custom-question responses given at booking, which carry the
actual context).
Design
Authorization: Bearer. Read-only (three GETendpoints: current user, list events, list invitees).
DOCUMENT_SOURCE_ATTR), so they gothrough the normal cognify entity-extraction pipeline rather than the relational dlt-row path.
updated_at-based cursor, mirroring the Confluence connector. Each run doesa cheap metadata sweep of active events and re-fetches only those whose
updated_atadvanced sincethe last run (plus anything new to the corpus). Because the cursor is
updated_at, notstart_time,a meeting note added after an event ends is picked up on the next sync.
against the current active sweep. A canceled (or vanished) event drops out of the active listing and
is emitted with the
_deletedhard-delete marker;dltremoves it onmergeand cognee's existingorphan_cleanuppurges it from the graph + vector + relational stores.Files
cognee_community_connector_calendly/calendly.py— thedltresource + sync state machine +minimal Calendly API client
cognee_community_connector_calendly/__init__.py— publiccalendly_sourceexportREADME.md— setup steps, usage, and sync/forget-on-delete semanticsexamples/example.py— runnable end-to-end demotests/test_calendly.py— 19 testspyproject.toml,uv.lock— package metadata + locked depsTesting
uv run pytest tests/— 19 tests, no live token/network required (the Calendly API is fully mocked).Coverage:
list_events/list_inviteesupdated_atincremental cursor, meeting notes added to a past event, cancel /vanish → tombstone, invitee-email scoping
dltresource wiring (merge + id PK + hard_delete column + document-mode marker)dlt-merge e2e proving a cancel marker physically removes the rowCloses #4816
DCO Affirmation
I affirm that all code in every commit of this pull request conforms to the terms of the Topoteretes Developer Certificate of Origin.