Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
2f1b224
fix(digest): classify adapter lifecycle states
May 15, 2026
8e4d194
feat(digest): add digest handlers and tests for CRM/productivity adap…
May 15, 2026
f73fc59
fix(adapters): preserve lifecycle actions through webhook normalization
May 15, 2026
3d1a887
fix(digest): wire lifecycle coverage across adapters
May 15, 2026
c1ce9a7
fix(digest): enforce category layout contracts
May 15, 2026
dd4f9f8
Address PR review lifecycle digest gaps
May 15, 2026
2ea0c3e
fix(digest): add issue tracking category aliases
May 15, 2026
62722aa
test(digest): cover issue metadata alias reconciliation
May 15, 2026
c130ccb
Tighten digest contract review feedback
May 15, 2026
99cb342
Tighten digest root filters and Linear wording
May 15, 2026
e908f4d
Fix Azure digest root contract
May 15, 2026
0930b9c
Tighten adapter digest review gaps
May 15, 2026
0c03c37
Anchor GitLab tombstone cleanup on prior aliases
May 15, 2026
f3c4eb3
Tighten adapter lifecycle digest consistency
May 15, 2026
8befe37
Close final adapter review gaps
May 15, 2026
968d1e9
Tighten GitLab alias cleanup
May 15, 2026
83121b3
Harden adapter digest contracts
May 15, 2026
6230cba
Harden GitHub tombstone recovery
May 15, 2026
4de562f
Tighten Salesforce lifecycle digest coverage
May 15, 2026
23cf184
Materialize Asana and ClickUp task aliases
May 15, 2026
6627ea0
Harden digest and alias lifecycle coverage
May 15, 2026
77b4d14
Close digest alias review gaps
May 15, 2026
a83d6ad
Tighten digest alias review gaps
May 15, 2026
d4ff5a7
Fix digest alias edge cases
May 15, 2026
50e0693
Harden digest alias path parsing
May 15, 2026
d7d9409
Close digest review edge cases
May 15, 2026
bb5b0d0
Handle GitLab tag deletes and wrapper digests
May 15, 2026
cd34b52
Avoid digest wrapper path collisions
May 15, 2026
8eb63a2
Require wrapper ids for digest suffix stripping
May 16, 2026
00a69ac
Use provider names for storage digest wrappers
May 16, 2026
954415d
Close digest wrapper and tag delete gaps
May 16, 2026
9b84884
Classify GitLab pipeline jobs in digests
May 16, 2026
ce278e3
Handle complex GitLab tag refs in digests
May 16, 2026
5613b38
Round trip complex GitLab tag refs
May 16, 2026
db500f3
Harden GitLab resource path parsing
May 16, 2026
c158891
Handle raw GitLab tag ref path boundaries
May 16, 2026
75a5c4b
Fix ambiguous GitLab tag ref paths
May 16, 2026
c7019ba
Normalize GitLab tag webhook paths
May 16, 2026
e2a0a70
Handle composed GitLab tag object IDs
May 16, 2026
75a2a31
Normalize GitLab tag auxiliary lifecycle paths
May 16, 2026
bc5e5bc
Normalize id-only GitLab tag refs
May 16, 2026
bdef03d
Suppress legacy GitLab tag digest paths
May 16, 2026
6be07dc
Harden GitLab tag cleanup digest paths
May 16, 2026
ed07033
Suppress flat GitLab tag cleanup digests
May 16, 2026
81a73d4
Finalize GitLab adapter publish lockfile
May 16, 2026
0c2313e
Harden GitLab adapter publish and digest contracts
May 16, 2026
d845d67
Close GitLab adapter digest parity gaps
May 17, 2026
d810670
Revert GitLab feature version bump
May 17, 2026
bf391e1
Add X social search adapter
May 17, 2026
efead46
fixes
May 18, 2026
2b7cff6
hardening
May 18, 2026
b2991a5
Merge hardening + digest lifecycle coverage into PR #98
May 18, 2026
fe33145
Fix X adapter PR feedback and CI
May 18, 2026
0754d92
Address remaining PR review feedback
May 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
473 changes: 259 additions & 214 deletions .trajectories/index.json

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions docs/EVAL_INTEGRATION_CATALOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,12 @@ These integrations should anchor the large eval effort because they cover the ma
| GitHub | `@relayfile/adapter-github` | `packages/github` | P0 | Pull requests, issues, reviews, commits, checks. |
| GitLab | `@relayfile/adapter-gitlab` | `packages/gitlab` | P1 | Merge requests, issues, pipelines, jobs, commits. |

### Social & Search
Comment thread
cubic-dev-ai[bot] marked this conversation as resolved.

| Integration | Package | Directory | Eval priority | Coordination surface |
|---|---|---|---|---|
| X | `@relayfile/adapter-x` | `packages/x` | P1 | Budgeted recent/archive social search, posts, optional user hydration. |

### CRM & Sales

| Integration | Package | Directory | Eval priority | Coordination surface |
Expand Down Expand Up @@ -213,6 +219,7 @@ These are not implemented packages in this repo today, but they should be part o
| Real-time storage bridge | Google Drive, SharePoint, OneDrive, GCS, S3, Dropbox |
| Data and runtime state | Postgres, Redis, Airtable, Segment, Mixpanel |
| Commerce and payments | Shopify, Stripe |
| Social and search | X |
| Long-tail provider breadth | Mailgun, SendGrid, Calendly, Box, Azure Blob |
| Gap validation | Confluence, Google Docs, Freshdesk, ServiceNow, PagerDuty, Monday.com, Discord, Outlook, Figma |

Expand All @@ -233,6 +240,7 @@ The current publish resolver uses these group aliases. Keep this list aligned wi
| `email` | `mailgun`, `sendgrid` |
| `commerce` | `shopify`, `stripe` |
| `db` | `postgres`, `redis` |
| `social` | `x` |

## Sources

Expand Down
22 changes: 21 additions & 1 deletion docs/integration-scopes.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
version: 1
title: Relayfile integration scope catalog
updated: "2026-05-10"
updated: "2026-05-17"
purpose: >
Machine-readable scope inventory for Relayfile adapter evals and app
registration. Entries start as pending unless scopes were already provided or
Expand Down Expand Up @@ -978,6 +978,26 @@ integrations:
- https://learn.microsoft.com/en-us/graph/api/subscription-post-subscriptions?view=graph-rest-1.0
notes: "Microsoft Teams uses Microsoft Graph permissions. Nango's `microsoft-teams` provider aliases the shared Microsoft OAuth provider, whose registry default is `offline_access` plus `.default`; Nango's Teams setup guide tells operators to add required delegated Microsoft Graph permissions in Entra, and its maintained messages sync declares `ChannelMessage.Read.All` and `Chat.Read.All`. Relayfile reads team/channel metadata, members, tabs, channel messages/replies, chat metadata/messages, and reactions, and writes channel messages, channel replies, and chat messages. The read surface maps to `Team.ReadBasic.All`, `Channel.ReadBasic.All`, `TeamMember.Read.All`, `TeamsTab.Read.All`, `ChannelMessage.Read.All`, and `Chat.Read.All`. Message create writeback uses delegated `ChannelMessage.Send`; Microsoft documents application message send only through migration-only `Teamwork.Migrate.All`, so that is not included for normal app behavior. Message deletion is delegated-only in Graph's `chatMessage: softDelete` API and requires `ChannelMessage.ReadWrite` for channel messages/replies and `Chat.ReadWrite` for chat messages; the current adapter's delete resolver should use Graph softDelete semantics for real deletion. Graph subscriptions require read permission for the subscribed resource: tenant-wide `/teams/getAllMessages`, `/chats/getAllMessages`, `/teams/getAllChannels`, and `/teams` presets are application-only, while team/channel/chat scoped presets can use delegated or application permissions depending on the resource. This means the full eval surface is a mixed model: delegated OAuth with `offline_access` for user-scoped read/write, plus admin-consented Graph application permissions when tenant-wide subscription presets are enabled."

- slug: x
display_name: X
category: social
status: implemented
package: "@relayfile/adapter-x"
nango_slug: x
auth_model: bearer_or_oauth2
scope_status: needs_review
required_scopes:
- tweet.read
- users.read
candidate_scopes:
- offline.access
sources:
- https://docs.x.com/x-api/posts/search/introduction
- https://docs.x.com/x-api/posts/search/quickstart/recent-search
- https://docs.x.com/x-api/posts/search/integrate/overview
- https://docs.x.com/x-api/fundamentals/post-cap
notes: "The X adapter is read-only and search-first. It uses recent search by default and full-archive search only when explicitly configured, then materializes saved search runs, matched posts, and capped optional user hydration. X's search quickstart documents Bearer Token authentication for recent search; OAuth 2.0 App-Only is documented for public Post data, while user-context OAuth apps normally request tweet.read and users.read. Cost controls are part of the adapter contract because X bills successful returned resources under pay-per-use."

- slug: zendesk
display_name: Zendesk
category: support
Expand Down
1 change: 1 addition & 0 deletions docs/writeback-spec-coverage.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ Contract-backed means the endpoint uses `contractEndpoint(...)`, loads its reque
| sharepoint | None | 0 | 2 | Inline JS schemas. |
| slack | None | 0 | 4 | Inline JS schemas. |
| teams | None | 0 | 3 | Inline JS schemas. |
| x | None | 0 | 0 | Read-only social search adapter; no writeback endpoints. |
| zendesk | None | 0 | 3 | Inline JS schemas. |

## Updating This File
Expand Down
Loading
Loading