You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Uncommitted on the maintainer's local main (not yet a PR): packages/{mailgun,sendgrid,shopify,stripe}/ plus modified workflows/044-tier1-verify.ts and .github/workflows/publish.yml. Either land or discard before starting — don't step on it.
Blocker first: scaffold CLI (§8.1)
Without this, T2 + T3 waves won't fit. Extend @relayfile/adapter-core's existing cli.ts with a scaffold subcommand exposed as a bin:
In packages/core/package.json, add "bin": { "relayfile-adapter": "./dist/cli.js" }.
In root package.json, add "gen:adapter": "npm exec --workspace=@relayfile/adapter-core -- relayfile-adapter scaffold" and "catalog:audit": "npm exec --workspace=@relayfile/adapter-core -- relayfile-adapter audit".
scaffold <name> --openapi <url> --auth <kind> --webhook-sig <algo:header> [--nango-template <name>] emits the package, generates types.ts from OpenAPI via types-generator.ts, lifts hints from NangoHQ/integration-templates/integrations/<name>/ if the flag is passed, and appends rows to docs/CATALOG.md + docs/MIRAGE_PARITY.md.
Smoke test: npm run gen:adapter -- foo --openapi https://... produces a package whose npm run build passes.
T1 wave — remaining 7 adapters (spec §5)
Each needs path-mapper + writeback + signature verifier with passing+tampered fixtures.
discord (§5.3) — Ed25519 over X-Signature-Ed25519 + X-Signature-Timestamp. Interaction webhooks only at launch; gateway sidecar deferred.
stripe (§5.8) — Stripe-Signature v1 (timestamp + HMAC-SHA256, anti-replay window). Note: packages/stripe/ is already on the maintainer's working tree uncommitted; reconcile first.
Spec: PR #39 (
docs/LAUNCH_CATALOG_SPEC.md) — merge first, then this work cites it.State
Landed on main (14 adapters): github, gitlab, linear, notion, slack, teams, hubspot, salesforce, pipedrive, jira (#38), asana, clickup, intercom, zendesk (#40).
Catalog target: 54. Gap = 40 adapters + tooling.
Uncommitted on the maintainer's local main (not yet a PR):
packages/{mailgun,sendgrid,shopify,stripe}/plus modifiedworkflows/044-tier1-verify.tsand.github/workflows/publish.yml. Either land or discard before starting — don't step on it.Blocker first: scaffold CLI (§8.1)
Without this, T2 + T3 waves won't fit. Extend
@relayfile/adapter-core's existingcli.tswith ascaffoldsubcommand exposed as abin:packages/core/package.json, add"bin": { "relayfile-adapter": "./dist/cli.js" }.package.json, add"gen:adapter": "npm exec --workspace=@relayfile/adapter-core -- relayfile-adapter scaffold"and"catalog:audit": "npm exec --workspace=@relayfile/adapter-core -- relayfile-adapter audit".templates/adapter/skeleton mirroring thegithubpackage layout (package.json, tsconfig, src/{index,adapter,types,path-mapper,writeback}.ts, src/webhook/verify.ts, mapping.yaml stub, **/tests).scaffold <name> --openapi <url> --auth <kind> --webhook-sig <algo:header> [--nango-template <name>]emits the package, generatestypes.tsfrom OpenAPI viatypes-generator.ts, lifts hints fromNangoHQ/integration-templates/integrations/<name>/if the flag is passed, and appends rows todocs/CATALOG.md+docs/MIRAGE_PARITY.md.npm run gen:adapter -- foo --openapi https://...produces a package whosenpm run buildpasses.T1 wave — remaining 7 adapters (spec §5)
Each needs path-mapper + writeback + signature verifier with passing+tampered fixtures.
discord(§5.3) — Ed25519 overX-Signature-Ed25519+X-Signature-Timestamp. Interaction webhooks only at launch; gateway sidecar deferred.pagerduty(§5.6) —X-PagerDuty-SignatureHMAC-SHA256.sentry(§5.7) —Sentry-Hook-SignatureHMAC-SHA256.stripe(§5.8) —Stripe-Signaturev1 (timestamp + HMAC-SHA256, anti-replay window). Note:packages/stripe/is already on the maintainer's working tree uncommitted; reconcile first.gmail(§5.9) — Pub/Subusers.watchingest sidecar.google-calendar(§5.10) —events.watchpush channels (≤30d expiry, refresher needed).google-drive(§5.11) —changes.watchpush channels.s3(§5.15) — SQS poller mode (S3 → EventBridge/SNS/SQS → relay).T2 wave (spec §6)
Generate via scaffold from public OpenAPI; each needs only path-mapper + writeback fixtures.
T3 wave (spec §7)
Catalog-only; OpenAPI-driven, read-only, placeholder writeback returning 501.
Tier reconciliation
Spec §4 vs what shipped:
pipedriveshipped as T1 in feat(adapters): tier-1 batch 1 — hubspot, salesforce, pipedrive, jira #38 but spec lists it T3 — promote spec or demote adapter.clickup,zendeskshipped as T1 in feat(adapters): tier-1 batch 2 — asana, clickup, intercom, zendesk #40 but spec lists them T2 — same call.mailgun,sendgrid,shopify(uncommitted on maintainer's local) aren't in the spec at all — add rows to §4 (likely T2) or drop the work.Catalog audit + parity gate (spec §9)
docs/MIRAGE_PARITY.mdfrom https://docs.mirage.strukto.ai/home/resource-matrix (32 rows) so the catalog audit has something to compare against.relayfile-adapter auditsubcommand: count packages, cross-check againstMIRAGE_PARITY.md, fail CI if relayfile count < Mirage count.Open questions to resolve before starting
These are spec §10 questions — pick before swinging.
postgres/mongodb: shipquery.jsonwriteback at launch or pure read-only with a follow-up?Sequencing for one-day agent
Mon AM: PR #39 merge → tier reconciliation decisions (spec §10 Q1–5) → scaffold CLI lands.
Mon PM: T1 wave (7 adapters, parallel batches).
Tue AM: T2 wave via scaffold (~2h/adapter).
Tue PM: T3 wave (~30min/adapter once scaffold is solid).
Wed: hygiene — READMEs, parity matrix CI gate, version cut,
npm publish --workspaces.References