Skip to content

Wire up launch catalog: scaffold CLI + remaining T1/T2/T3 adapters (per LAUNCH_CATALOG_SPEC) #43

@khaliqgant

Description

@khaliqgant

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 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".
  • Add templates/adapter/ skeleton mirroring the github package 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, 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.
  • pagerduty (§5.6) — X-PagerDuty-Signature HMAC-SHA256.
  • sentry (§5.7) — Sentry-Hook-Signature HMAC-SHA256.
  • 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.
  • gmail (§5.9) — Pub/Sub users.watch ingest sidecar.
  • google-calendar (§5.10) — events.watch push channels (≤30d expiry, refresher needed).
  • google-drive (§5.11) — changes.watch push 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.

  • bitbucket, vercel, outlook-mail, onedrive
  • dropbox, box, posthog, datadog
  • gcs, azure-blob, r2, supabase
  • confluence, trello, telegram, smtp-imap, ssh
  • google-docs, google-sheets

T3 wave (spec §7)

Catalog-only; OpenAPI-driven, read-only, placeholder writeback returning 501.

  • freshdesk, shortcut, coda, langfuse
  • sharepoint, google-slides, netlify
  • postgres, mongodb (synthetic VFS — see §7)
  • semantic-scholar, arxiv

Tier reconciliation

Spec §4 vs what shipped:

Catalog audit + parity gate (spec §9)

  • Author docs/MIRAGE_PARITY.md from https://docs.mirage.strukto.ai/home/resource-matrix (32 rows) so the catalog audit has something to compare against.
  • relayfile-adapter audit subcommand: count packages, cross-check against MIRAGE_PARITY.md, fail CI if relayfile count < Mirage count.
  • Wire into the existing turbo CI flow.

Open questions to resolve before starting

These are spec §10 questions — pick before swinging.

  1. Which Mirage rows do we deliberately not match? (Proposal: skip Paperclip, OPFS, OCI.)
  2. Headline number for marketing splash: 50, 54, or 60 (with stretch rows)?
  3. Default provider in quickstart docs: Nango or Pipedream?
  4. postgres/mongodb: ship query.json writeback at launch or pure read-only with a follow-up?
  5. Discord: launch with interaction-webhook-only and call it T1.5, or block on gateway sidecar?

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions