Skip to content

feat(adapters): write-side capability fanout — wave 3 (117 adapters, N–Z)#72

Merged
drewstone merged 118 commits into
developfrom
feat/adapters-mega-fanout-wave-3-nz
Jun 2, 2026
Merged

feat(adapters): write-side capability fanout — wave 3 (117 adapters, N–Z)#72
drewstone merged 118 commits into
developfrom
feat/adapters-mega-fanout-wave-3-nz

Conversation

@drewstone

Copy link
Copy Markdown
Contributor

Third mega-fanout. 117 adapters from n8n through zuora gain real write capabilities (create / update / delete / cancel / refund / archive / publish / merge / assign etc.) matching upstream API verb shapes. Plus one typecheck-only fix to the tangle-middleware mock factory.

Together with PRs #68 / #69 / #70 / #71, the catalog now ships full CRUD-shaped surfaces for ~267 integrations across A–Z (and gmail/google-* up front).

Coverage (alphabetical buckets)

N (4): n8n, nocodb, notion, notion-database
O (8): odoo, omni-co, onedrive, open-phone, open-router, openmic-ai, opnform, orimon
P (16): paddle, parseur, pastefy, paywhirl, pdfmonkey, personal-ai, pinch-payments, pinecone, pipedream, placid, pocketbase, pollybot-ai, posthog, postiz, postmark, productboard
Q (5): qawafel, qdrant, quaderno, quickbooks, quickzu
R (3): reachinbox, reply-io, retable
S (28): saastic, saleor, salesforce, sanity, sardis, savvycal, segment, sendgrid, sendinblue, sendpulse, senja, sentry, service-now, sharepoint, short-io, sign-now, signrequest, simplybookme, skyprep, smartlead, smartsheet, smartsuite, smoove, snowflake, square, stripe, supabase, systeme-io
T (20): tableau, talkable, tangle-id, teable, telegram, telnyx, textcortex-ai, ticktick, time-ops, timelines-ai, tl-dv, todoist, toggl-track, totalcms, trello, twenty, twilio, twilio-sms, typeform, typefully
U (3): umami, upgradechat, uscreen
V (6): vapi, vbout, videoask, vlm-run, vtex, vtiger
W (13): wafeq, weaviate, webflow, what-converts, whatsapp, whatsapp-business, wonderchat, woocommerce, woodpecker, wordpress, workable, wrike, wufoo
X (1): xero
Y (1): youcanbookme
Z (9): zagomail, zendesk, zendesk-sell, zeplin, zoho-bookings, zoho-crm, zoho-desk, zoom, zuora

Shape

Every new mutation carries cas: 'native-idempotency' and externalEffect: true. Required parameters declared on each capability's parameters schema. Optional fields are either omitted from the body template (declarative-rest's {placeholder} strings are required-by-default via readRequiredPath) or threaded through body: 'args'.

Fix sweep patterns the workflow caught

A round of fix agents handled the predictable mega-fanout failure modes:

  • Stale expect(names).toEqual([...]) arrays in existing manifest-shape tests under src/connectors/adapters/__tests__/ — extended to include the new capabilities (quickbooks, sendgrid, typeform, whatsapp-business, xero, zendesk).
  • Optional placeholders in declarative bodies → removed from body template OR switched to body: 'args' (paddle, what-converts).
  • cas: 'optimistic-read-verify' on mutations where the manifest invariant test demands 'native-idempotency' (time-ops, typefully).
  • paywhirl metadata-template-in-query-value — declarative-rest doesn't pass source.metadata to renderQueryValue, and per the types comment metadata MUST NOT carry secrets anyway. Test re-pointed at the credentialPlacement: { kind: 'query' } path that actually fires.
  • whatsapp-business.ts new Blob([bytes], ...) — Uint8Array cast to BlobPart for tsc strict.

Typecheck-only fix

The 117 adapter commits all pass vitest. tsc strict additionally caught two patterns that vitest's swc transpile passes through:

  • Discriminated-union narrowing on CapabilityMutationResult.data — added if (result.status !== 'committed') throw guards in notion-database and whatsapp-business tests.
  • ConnectorInvocation missing idempotencyKey in stripe / totalcms / weaviate read tests.
  • TangleIdentityClient mock factory missing four newer interface methods — added stubs (separate commit, fix(tangle-middleware test): add createWorkspace/...).

Tests

  • 3989 / 3989 passing locally (pnpm exec vitest run).
  • pnpm exec tsc --noEmit clean.
  • 117 disjoint adapter commits + 1 typecheck-fix commit (118 total).
  • No changes to platform infrastructure (declarative-rest.ts, types.ts, index.ts).

…teMember/removeMember mock methods

Mock factory drifted from TangleIdentityClient interface after 4 new
methods landed on the substrate. vitest passes via swc transpilation;
tsc strict catches the missing properties.

@tangletools tangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved — wave-3 write-side capability fanout across 117 adapters (N–Z). 3989/3989 tests green; typecheck clean (including the catch in tangle-middleware mock + CapabilityMutationResult union narrowing). Per-adapter commits keep diff bisectable; no platform-substrate changes.

@drewstone drewstone merged commit caab08b into develop Jun 2, 2026
@drewstone drewstone deleted the feat/adapters-mega-fanout-wave-3-nz branch June 2, 2026 18:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants