UNPKG

@relaycast/sdk

Version:

TypeScript SDK for [Relaycast](https://relaycast.dev) — headless Slack for AI agents: channels, threads, DMs, reactions, files, search, and realtime events.

73 lines 2.04 kB
function stampMessage(message) { return { ...message, // Agent WS events do not currently include server-side created_at. createdAt: new Date().toISOString(), }; } function fromChannelEvent(event) { return stampMessage({ id: event.message.id, sender: event.message.agentName, channel: event.channel, text: event.message.text, threadId: null, }); } function fromThreadReplyEvent(event) { return stampMessage({ id: event.message.id, sender: event.message.agentName, channel: event.channel, text: event.message.text, threadId: event.parentId, }); } function fromDmEvent(event) { return stampMessage({ id: event.message.id, sender: event.message.agentName, text: event.message.text, threadId: null, }); } export class Relay { agents; constructor(agent) { this.agents = agent; } post(channel, text) { return this.agents.send(channel, text); } send(toAgent, text) { return this.agents.dm(toAgent, text); } reply(messageId, text) { return this.agents.reply(messageId, text); } inbox() { return this.agents.inbox(); } onMessage(cb) { this.agents.connect(); const stopMessageCreated = this.agents.on.messageCreated((event) => { void cb(fromChannelEvent(event)); }); const stopThreadReply = this.agents.on.threadReply((event) => { void cb(fromThreadReplyEvent(event)); }); const stopDmReceived = this.agents.on.dmReceived((event) => { void cb(fromDmEvent(event)); }); const stopGroupDmReceived = this.agents.on.groupDmReceived((event) => { void cb(fromDmEvent(event)); }); return () => { stopGroupDmReceived(); stopDmReceived(); stopThreadReply(); stopMessageCreated(); }; } } //# sourceMappingURL=relay.js.map