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.

246 lines 14.5 kB
import type { A2aAgentCard, A2aAgentRecord, Agent, AgentListQuery, AgentPresenceInfo, Channel, ChannelMemberInfo, CreateAgentRequest, CreateAgentResponse, UpdateAgentRequest, UpdateWorkspaceRequest, Workspace, CreateWorkspaceResponse, WorkspaceLookup, SystemPrompt, SetSystemPromptRequest, CreateWebhookRequest, CreateWebhookResponse, Webhook, WebhookTriggerRequest, WebhookTriggerResponse, CreateSubscriptionRequest, CreateSubscriptionResponse, EventSubscription, ActivityItem, DmMessage, DmReceivedEvent, WorkspaceDmConversation, TokenRotateResponse, MessageListQuery, MessageCreatedEvent, MessageReadEvent, MessageReactedEvent, MessageUpdatedEvent, MessageWithMeta, ReactionGroup, SpawnAgentRequest, SpawnAgentResponse, ReleaseAgentRequest, ReleaseAgentResponse, RegisterA2aOptions, RegisterA2aResponse, RemoveA2aAgentResponse, DirectoryAgent, DirectorySearchResult, ImportSkillsRequest, PublishToDirectoryRequest, RouteResult, RoutingConfig, SearchDirectoryQuery, UpdateRoutingConfigRequest, ListDirectoryQuery, UpdateDirectoryAgentRequest, DirectoryRating, RateDirectoryAgentRequest, RouteFeedbackRequest, RouteFeedbackResult, SkillSearchQuery, SkillSearchResult, ActionDefinition, RegisterActionRequest, NodeListQuery, NodeRosterEntry, Trigger, CreateTriggerRequest, UpdateTriggerRequest, SessionEvent, EmitSessionEventRequest, ListSessionEventsQuery, CertificationRun, SubmitCertificationRequest, MonitorCertificationRequest, ConsoleMessageLog, ConsoleMessagesQuery, ConsoleOverview, ConsoleAgentStat, ConsoleAgentStatsQuery, ConsoleWindowQuery, ConsoleCostStats, ThreadReplyEvent, WsClientEvent, AgentStatusActiveEvent, AgentStatusChangedEvent, AgentStatusOfflineEvent, ChannelCreatedEvent, ChannelUpdatedEvent, ChannelArchivedEvent, MemberJoinedEvent, MemberLeftEvent, ChannelMutedEvent, ChannelUnmutedEvent, FileUploadedEvent, WebhookReceivedEvent, ActionInvokedEvent, ActionCompletedEvent, ActionDeniedEvent, ActionFailedEvent, DeliveryAcceptedEvent, DeliveryDeliveredEvent, DeliveryDeferredEvent, DeliveryFailedEvent, GroupDmReceivedEvent } from './types.js'; import { AgentClient, type AgentClientOptions } from './agent.js'; import { type RetryPolicyInput } from './client.js'; import { type WsClientOptions } from './ws.js'; import { type RegisterAgentInput, type RegisterOrRotateInput, type ResolvedIdentity } from './identity.js'; export interface RelayCastOptions { apiKey: string; baseUrl?: string; retryPolicy?: RetryPolicyInput; ws?: Omit<WsClientOptions, 'token' | 'baseUrl'>; /** * Optional User-Agent-style identifier for the originActor driving requests * (e.g. `'claude-code/2.3 (model=opus-4.8)'`, `'codex'`, `'human'`). Sent as * the `X-Relaycast-Origin-Actor` header on every request so server-side telemetry * can attribute traffic to a originActor. */ originActor?: string; /** * Optional Agent Relay distinct telemetry id. Sent as * `X-Agent-Relay-Distinct-Id` on HTTP requests so Relaycast telemetry can be * joined to Agent Relay CLI telemetry without sending user-identifying data. */ agentRelayDistinctId?: string; } export interface WorkspaceStreamConfig { enabled: boolean; defaultEnabled: boolean; override: boolean | null; } export interface WorkspaceFleetNodesConfig { enabled: boolean; defaultEnabled: boolean; override: boolean | null; } export interface WorkspaceBootstrapOptions { apiKey?: string; baseUrl?: string; agentRelayDistinctId?: string; } export interface WorkspaceLookupOptions { baseUrl?: string; agentRelayDistinctId?: string; } export interface AgentReconnectOptions { apiToken: string; agent?: AgentClientOptions; } export type EnsureWorkspaceResponse = { existed: boolean; name: string; } & CreateWorkspaceResponse; interface ChannelListOptions { includeArchived?: boolean; } type RegisterTypedIdentityInput = Omit<CreateAgentRequest, 'type'>; export declare class RelayCast { private client; private ws; private identityHint; private workspaceIdHint; constructor(options: RelayCastOptions); connect(): void; disconnect(): void; private onEvent; on: { messageCreated: (handler: (e: MessageCreatedEvent) => void) => (() => void); messageUpdated: (handler: (e: MessageUpdatedEvent) => void) => (() => void); threadReply: (handler: (e: ThreadReplyEvent) => void) => (() => void); messageRead: (handler: (e: MessageReadEvent) => void) => (() => void); messageReacted: (handler: (e: MessageReactedEvent) => void) => (() => void); dmReceived: (handler: (e: DmReceivedEvent) => void) => (() => void); groupDmReceived: (handler: (e: GroupDmReceivedEvent) => void) => (() => void); agentStatusChanged: (handler: (e: AgentStatusChangedEvent) => void) => (() => void); agentActive: (handler: (e: AgentStatusActiveEvent) => void) => (() => void); agentOffline: (handler: (e: AgentStatusOfflineEvent) => void) => (() => void); channelCreated: (handler: (e: ChannelCreatedEvent) => void) => (() => void); channelUpdated: (handler: (e: ChannelUpdatedEvent) => void) => (() => void); channelArchived: (handler: (e: ChannelArchivedEvent) => void) => (() => void); memberJoined: (handler: (e: MemberJoinedEvent) => void) => (() => void); memberLeft: (handler: (e: MemberLeftEvent) => void) => (() => void); channelMuted: (handler: (e: ChannelMutedEvent) => void) => (() => void); channelUnmuted: (handler: (e: ChannelUnmutedEvent) => void) => (() => void); fileUploaded: (handler: (e: FileUploadedEvent) => void) => (() => void); webhookReceived: (handler: (e: WebhookReceivedEvent) => void) => (() => void); actionInvoked: (handler: (e: ActionInvokedEvent) => void) => (() => void); actionCompleted: (handler: (e: ActionCompletedEvent) => void) => (() => void); actionFailed: (handler: (e: ActionFailedEvent) => void) => (() => void); actionDenied: (handler: (e: ActionDeniedEvent) => void) => (() => void); deliveryAccepted: (handler: (e: DeliveryAcceptedEvent) => void) => (() => void); deliveryDelivered: (handler: (e: DeliveryDeliveredEvent) => void) => (() => void); deliveryDeferred: (handler: (e: DeliveryDeferredEvent) => void) => (() => void); deliveryFailed: (handler: (e: DeliveryFailedEvent) => void) => (() => void); connected: (handler: () => void) => (() => void); disconnected: (handler: () => void) => (() => void); error: (handler: () => void) => (() => void); reconnecting: (handler: (attempt: number) => void) => (() => void); permanentlyDisconnected: (handler: (attempt: number) => void) => (() => void); resynced: (handler: (info: { replayed: number; gapDetected: boolean; }) => void) => (() => void); any: (handler: (e: WsClientEvent) => void) => (() => void); }; static createWorkspace(name: string, options?: string | WorkspaceBootstrapOptions): Promise<CreateWorkspaceResponse>; private static createWorkspaceWithStatus; static lookupWorkspace(name: string, options?: string | WorkspaceLookupOptions): Promise<WorkspaceLookup | null>; static ensureWorkspace(name: string, options?: string | WorkspaceBootstrapOptions): Promise<EnsureWorkspaceResponse>; private rememberIdentity; private resolveWorkspaceId; private resolveIdentityInternal; private registerWithLegacySuffix; private registerTypedIdentity; registerAgent(data: RegisterAgentInput): Promise<CreateAgentResponse>; registerOrRotate(data: RegisterOrRotateInput): Promise<CreateAgentResponse>; resolveIdentity(): Promise<ResolvedIdentity>; reconnect(data: AgentReconnectOptions, options?: AgentClientOptions): Promise<AgentClient>; agent(data: RegisterTypedIdentityInput): Promise<CreateAgentResponse>; human(data: RegisterTypedIdentityInput): Promise<CreateAgentResponse>; system(data: RegisterTypedIdentityInput): Promise<CreateAgentResponse>; registerA2a(options: RegisterA2aOptions): Promise<RegisterA2aResponse>; listA2aAgents(): Promise<A2aAgentRecord[]>; removeA2aAgent(name: string): Promise<RemoveA2aAgentResponse>; getA2aAgentCard(name: string): Promise<A2aAgentCard>; route(skill: string, message?: string): Promise<RouteResult>; searchDirectory(query: SearchDirectoryQuery): Promise<DirectorySearchResult[]>; publishToDirectory(data: PublishToDirectoryRequest): Promise<DirectoryAgent>; importSkills(data: ImportSkillsRequest): Promise<DirectoryAgent | null>; searchSkills(query?: SkillSearchQuery): Promise<SkillSearchResult[]>; routeFeedback(data: RouteFeedbackRequest): Promise<RouteFeedbackResult>; listDirectory(query?: ListDirectoryQuery): Promise<DirectoryAgent[]>; getDirectoryAgent(slug: string): Promise<DirectoryAgent>; updateDirectoryAgent(slug: string, data: UpdateDirectoryAgentRequest): Promise<DirectoryAgent>; deleteDirectoryAgent(slug: string): Promise<void>; listDirectoryRatings(slug: string): Promise<DirectoryRating[]>; rateDirectoryAgent(slug: string, data: RateDirectoryAgentRequest): Promise<DirectoryRating>; getRoutingConfig(): Promise<RoutingConfig>; updateRoutingConfig(data: UpdateRoutingConfigRequest): Promise<RoutingConfig>; workspace: { info: () => Promise<Workspace>; reconnect: (data: AgentReconnectOptions, options?: AgentClientOptions) => Promise<AgentClient>; update: (data: UpdateWorkspaceRequest) => Promise<Workspace>; delete: () => Promise<void>; stream: { get: () => Promise<WorkspaceStreamConfig>; set: (enabled: boolean) => Promise<WorkspaceStreamConfig>; inherit: () => Promise<WorkspaceStreamConfig>; }; fleetNodes: { get: () => Promise<WorkspaceFleetNodesConfig>; set: (enabled: boolean) => Promise<WorkspaceFleetNodesConfig>; inherit: () => Promise<WorkspaceFleetNodesConfig>; }; }; systemPrompt: { get: () => Promise<SystemPrompt>; set: (data: SetSystemPromptRequest) => Promise<SystemPrompt>; }; channels: { list: (opts?: ChannelListOptions) => Promise<Channel[]>; get: (name: string) => Promise<Channel & { members: ChannelMemberInfo[]; }>; }; messages: { list: (channel: string, opts?: MessageListQuery) => Promise<MessageWithMeta[]>; get: (id: string) => Promise<MessageWithMeta>; thread: (id: string, opts?: MessageListQuery) => Promise<{ parent: MessageWithMeta; replies: MessageWithMeta[]; }>; reactions: (id: string) => Promise<ReactionGroup[]>; }; agents: { register: (data: CreateAgentRequest) => Promise<CreateAgentResponse>; list: (query?: AgentListQuery) => Promise<Agent[]>; get: (name: string) => Promise<Agent>; me: (apiToken?: string) => Promise<Agent>; rotateToken: (name: string) => Promise<TokenRotateResponse>; update: (name: string, data: UpdateAgentRequest) => Promise<Agent>; delete: (name: string) => Promise<void>; presence: () => Promise<AgentPresenceInfo[]>; registerOrGet: (data: CreateAgentRequest) => Promise<CreateAgentResponse>; registerAgent: (data: RegisterAgentInput) => Promise<CreateAgentResponse>; registerOrRotate: (data: RegisterOrRotateInput) => Promise<CreateAgentResponse>; resolveIdentity: () => Promise<ResolvedIdentity>; spawn: (data: SpawnAgentRequest) => Promise<SpawnAgentResponse>; release: (data: ReleaseAgentRequest) => Promise<ReleaseAgentResponse>; events: { emit: (name: string, data: EmitSessionEventRequest) => Promise<SessionEvent>; list: (name: string, query?: ListSessionEventsQuery) => Promise<SessionEvent[]>; }; }; webhooks: { create: (data: CreateWebhookRequest) => Promise<CreateWebhookResponse>; createInbound: (data: CreateWebhookRequest) => Promise<CreateWebhookResponse>; list: () => Promise<Webhook[]>; delete: (id: string) => Promise<void>; trigger: (webhookId: string, data: WebhookTriggerRequest, token: string) => Promise<WebhookTriggerResponse>; }; subscriptions: { create: (data: CreateSubscriptionRequest) => Promise<CreateSubscriptionResponse>; list: () => Promise<EventSubscription[]>; get: (id: string) => Promise<EventSubscription>; delete: (id: string) => Promise<void>; }; actions: { register: (data: RegisterActionRequest) => Promise<ActionDefinition>; list: () => Promise<ActionDefinition[]>; get: (name: string) => Promise<ActionDefinition>; delete: (name: string) => Promise<void>; }; nodes: { list: (query?: NodeListQuery) => Promise<NodeRosterEntry[]>; get: (name: string) => Promise<NodeRosterEntry>; }; triggers: { create: (data: CreateTriggerRequest) => Promise<Trigger>; list: () => Promise<Trigger[]>; get: (id: string) => Promise<Trigger>; update: (id: string, data: UpdateTriggerRequest) => Promise<Trigger>; delete: (id: string) => Promise<void>; }; certify: { submit: (data: SubmitCertificationRequest) => Promise<CertificationRun>; get: (id: string) => Promise<CertificationRun>; /** Public badge SVG URL for a certification run (served without an auth header). */ badgeUrl: (id: string) => string; monitor: (data: MonitorCertificationRequest) => Promise<CertificationRun>; }; console: { messages: (query?: ConsoleMessagesQuery) => Promise<ConsoleMessageLog[]>; stats: (query?: ConsoleWindowQuery) => Promise<ConsoleOverview>; agents: (query?: ConsoleAgentStatsQuery) => Promise<ConsoleAgentStat[]>; costs: (query?: ConsoleWindowQuery) => Promise<ConsoleCostStats>; }; activity: (limit?: number) => Promise<ActivityItem[]>; allDmConversations: () => Promise<WorkspaceDmConversation[]>; dmMessages: (conversationId: string, opts?: { limit?: number; before?: string; after?: string; }) => Promise<DmMessage[]>; as(agentToken: string, options?: AgentClientOptions): AgentClient; } export {}; //# sourceMappingURL=relay.d.ts.map