Skip to content

Add Linq adapter for iMessage, SMS, and RCS#196

Open
haydenbleasel wants to merge 11 commits intomainfrom
linq
Open

Add Linq adapter for iMessage, SMS, and RCS#196
haydenbleasel wants to merge 11 commits intomainfrom
linq

Conversation

@haydenbleasel
Copy link
Contributor

Summary

  • Add @chat-adapter/linq adapter for iMessage, SMS, and RCS messaging via the Linq Partner API v3
  • Full adapter implementation: post/edit/delete messages, file uploads, reactions, typing indicators, DMs, message history, thread listing
  • Webhook handling with HMAC-SHA256 signature verification and timestamp tolerance
  • OpenAPI-generated types from the Linq v3 spec (lib/linq/linq-api-v3.yaml)
  • Plain text format converter that strips markdown and renders tables as ASCII
  • Wired up in the nextjs-chat example app
  • Docs: new adapter page + updated feature matrices on the adapters overview

What's included

  • packages/adapter-linq/ — full adapter package with openapi-fetch client
  • packages/adapter-linq/src/index.test.ts — unit tests (~1300 lines)
  • packages/adapter-linq/src/markdown.test.ts — format converter tests
  • apps/docs/content/docs/adapters/linq.mdx — adapter documentation
  • Updated turbo.json env vars, pnpm-lock.yaml, and vitest.config.ts

Test plan

  • pnpm --filter @chat-adapter/linq test passes
  • pnpm build succeeds
  • pnpm typecheck passes
  • Docs build and render correctly with new Linq page
  • Feature matrices on adapters overview display Linq column properly

@vercel
Copy link
Contributor

vercel bot commented Mar 7, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
chat Ready Ready Preview, Comment, Open in v0 Mar 16, 2026 8:33pm
chat-sdk-nextjs-chat Ready Ready Preview, Comment, Open in v0 Mar 16, 2026 8:33pm

@haydenbleasel haydenbleasel requested a review from cramforce March 7, 2026 22:28
@socket-security
Copy link

socket-security bot commented Mar 7, 2026

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedopenapi-typescript@​7.13.09910010090100
Addedopenapi-fetch@​0.14.19910010091100

View full report

haydenbleasel and others added 2 commits March 14, 2026 12:32
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@SamStenner
Copy link

Would love this 🙏

Copy link

@jonathanamccann jonathanamccann left a comment

Choose a reason for hiding this comment

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

Hey hey, excited for this.

I think it could make sense to rebuild this off of the latest openapi spec - there's a few (nonbreaking) updates here that I think are meaningful for this use case:

  • text decorations
  • rich previews on links via LinkParts

+some deprecated fields that will reduce some of the noise =)

https://cdn.linqapp.com/openapi/linq-api-v3.yaml

to: [userId],
// Linq API requires a message to create a chat
message: {
parts: [{ type: "text", value: " " }],

Choose a reason for hiding this comment

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

How could we help support opening a DM to give you a threadId without having to send an empty space? Happy to think through that on our end 👀

Comment on lines +1 to +12
/**
* This file was auto-generated by openapi-typescript.
* Do not make direct changes to the file.
*/

export interface paths {
"/v3/attachments": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
Copy link

@jflayhart jflayhart Mar 18, 2026

Choose a reason for hiding this comment

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

👋🏻 Hi. A Linq engineer here, excited to be part of the OSS community! To avoid type and API drift, would it be helpful for me to add a separate lightweight types package on our end for you to use? We already version our spec and sdk in this repo, but I can understand you not wanting to bring in an entire client SDK just for types and API models.

Let me know if that would be helpful! What @jonathanamccann mentioned above is also just as valid and perhaps easier. Would be easier to get updates and release notes too (ie set update triggers on your end if spec changes).

Copy link
Contributor

Choose a reason for hiding this comment

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

Hey @jflayhart! Yes, if you're able to create that types package, it would be immensely helpful for us. Please feel free to update the PR accordingly as well once you and your team have that in place.

Copy link

Choose a reason for hiding this comment

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

❓ Help

Hi bensabic! Here's how I can help:


Mention me to start a conversation
Mention me with "AI" to enable AI assistant mode
👀 I'll respond to messages in threads where I'm mentioned
🔥 React to my messages and I'll react back!
🚀 Active platforms: discord, slack, teams, gchat, github, telegram, whatsapp

Copy link

Choose a reason for hiding this comment

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

❓ Help

Hi chat-sdk-demo[bot]! Here's how I can help:


Mention me to start a conversation
Mention me with "AI" to enable AI assistant mode
👀 I'll respond to messages in threads where I'm mentioned
🔥 React to my messages and I'll react back!
🚀 Active platforms: discord, slack, teams, gchat, github, telegram, whatsapp

Copy link

Choose a reason for hiding this comment

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

❓ Help

Hi chat-sdk-demo[bot]! Here's how I can help:


Mention me to start a conversation
Mention me with "AI" to enable AI assistant mode
👀 I'll respond to messages in threads where I'm mentioned
🔥 React to my messages and I'll react back!
🚀 Active platforms: discord, slack, teams, gchat, github, telegram, whatsapp

Copy link

Choose a reason for hiding this comment

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

❓ Help

Hi chat-sdk-demo[bot]! Here's how I can help:


Mention me to start a conversation
Mention me with "AI" to enable AI assistant mode
👀 I'll respond to messages in threads where I'm mentioned
🔥 React to my messages and I'll react back!
🚀 Active platforms: discord, slack, teams, gchat, github, telegram, whatsapp

Copy link

Choose a reason for hiding this comment

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

❓ Help

Hi chat-sdk-demo[bot]! Here's how I can help:


Mention me to start a conversation
Mention me with "AI" to enable AI assistant mode
👀 I'll respond to messages in threads where I'm mentioned
🔥 React to my messages and I'll react back!
🚀 Active platforms: discord, slack, teams, gchat, github, telegram, whatsapp

Copy link

Choose a reason for hiding this comment

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

❓ Help

Hi chat-sdk-demo[bot]! Here's how I can help:


Mention me to start a conversation
Mention me with "AI" to enable AI assistant mode
👀 I'll respond to messages in threads where I'm mentioned
🔥 React to my messages and I'll react back!
🚀 Active platforms: discord, slack, teams, gchat, github, telegram, whatsapp

Copy link

Choose a reason for hiding this comment

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

❓ Help

Hi chat-sdk-demo[bot]! Here's how I can help:


Mention me to start a conversation
Mention me with "AI" to enable AI assistant mode
👀 I'll respond to messages in threads where I'm mentioned
🔥 React to my messages and I'll react back!
🚀 Active platforms: discord, slack, teams, gchat, github, telegram, whatsapp

Copy link

@jflayhart jflayhart Mar 21, 2026

Choose a reason for hiding this comment

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

@bensabic not sure what this demo stuff is but...

if you're able to create that types package, it would be immensely helpful for us. Please feel free to update the PR accordingly as well once you and your team have that in place.

here's a PR to showcase the simplification and keeping things up to date. What do you think? #278

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.

5 participants