@relaycast/sdk 0.3.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/agent.d.ts +44 -20
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +92 -15
  4. package/dist/agent.js.map +1 -1
  5. package/dist/casing.d.ts +10 -0
  6. package/dist/casing.d.ts.map +1 -0
  7. package/dist/casing.js +42 -0
  8. package/dist/casing.js.map +1 -0
  9. package/dist/client.d.ts +32 -9
  10. package/dist/client.d.ts.map +1 -1
  11. package/dist/client.js +126 -27
  12. package/dist/client.js.map +1 -1
  13. package/dist/errors.d.ts +19 -0
  14. package/dist/errors.d.ts.map +1 -0
  15. package/dist/errors.js +58 -0
  16. package/dist/errors.js.map +1 -0
  17. package/dist/identity.d.ts +15 -0
  18. package/dist/identity.d.ts.map +1 -0
  19. package/dist/identity.js +23 -0
  20. package/dist/identity.js.map +1 -0
  21. package/dist/index.d.ts +7 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +2 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/internal.d.ts +6 -0
  26. package/dist/internal.d.ts.map +1 -0
  27. package/dist/internal.js +10 -0
  28. package/dist/internal.js.map +1 -0
  29. package/dist/origin.d.ts +7 -0
  30. package/dist/origin.d.ts.map +1 -0
  31. package/dist/origin.js +7 -0
  32. package/dist/origin.js.map +1 -0
  33. package/dist/relay.d.ts +39 -17
  34. package/dist/relay.d.ts.map +1 -1
  35. package/dist/relay.js +115 -37
  36. package/dist/relay.js.map +1 -1
  37. package/dist/types.d.ts +92 -0
  38. package/dist/types.d.ts.map +1 -0
  39. package/dist/types.js +2 -0
  40. package/dist/types.js.map +1 -0
  41. package/dist/version.d.ts +1 -1
  42. package/dist/version.js +1 -1
  43. package/dist/ws.d.ts +19 -1
  44. package/dist/ws.d.ts.map +1 -1
  45. package/dist/ws.js +104 -7
  46. package/dist/ws.js.map +1 -1
  47. package/package.json +8 -4
  48. package/dist/billing.d.ts +0 -14
  49. package/dist/billing.d.ts.map +0 -1
  50. package/dist/billing.js +0 -28
  51. package/dist/billing.js.map +0 -1
package/dist/relay.js CHANGED
@@ -1,22 +1,34 @@
1
1
  import { ApiErrorSchema, CreateWorkspaceResponseSchema } from '@relaycast/types';
2
2
  import { AgentClient } from './agent.js';
3
- import { BillingClient } from './billing.js';
4
- import { HttpClient, RelayError } from './client.js';
3
+ import { HttpClient } from './client.js';
4
+ import { RelayError, relayErrorFromApi } from './errors.js';
5
+ import { appendLegacySuffix, emitCompatibilityTelemetry, isNameConflictError, } from './identity.js';
5
6
  import { SDK_VERSION } from './version.js';
7
+ import { SDK_ORIGIN } from './origin.js';
8
+ import { camelizeKeys } from './casing.js';
6
9
  export class RelayCast {
7
10
  client;
8
- billing;
11
+ identityHint = null;
12
+ workspaceIdHint = null;
9
13
  constructor(options) {
14
+ if (!options.apiKey || options.apiKey.trim().length === 0) {
15
+ throw new Error('RelayCast apiKey is required');
16
+ }
17
+ // Preserve hidden internal-origin metadata on options when created via
18
+ // createInternalRelayCast() so downstream requests use the correct origin headers.
10
19
  this.client = new HttpClient(options);
11
- this.billing = new BillingClient(this.client);
12
20
  }
13
21
  static async createWorkspace(name, baseUrl) {
14
- const url = new URL('/v1/workspaces', baseUrl ?? 'https://api.relaycast.dev');
22
+ const requestBaseUrl = baseUrl ?? 'https://api.relaycast.dev';
23
+ const url = new URL('/v1/workspaces', requestBaseUrl);
15
24
  const res = await fetch(url.toString(), {
16
25
  method: 'POST',
17
26
  headers: {
18
27
  'Content-Type': 'application/json',
19
28
  'X-SDK-Version': SDK_VERSION,
29
+ 'X-Relaycast-Origin-Surface': SDK_ORIGIN.surface,
30
+ 'X-Relaycast-Origin-Client': SDK_ORIGIN.client,
31
+ 'X-Relaycast-Origin-Version': SDK_ORIGIN.version,
20
32
  },
21
33
  body: JSON.stringify({ name }),
22
34
  });
@@ -25,20 +37,95 @@ export class RelayCast {
25
37
  parsed = await res.json();
26
38
  }
27
39
  catch (err) {
28
- throw new RelayError('invalid_response', `Failed to parse response as JSON: ${err instanceof Error ? err.message : 'unknown error'}`, res.status);
40
+ throw new RelayError('transport_error', `Failed to parse response as JSON: ${err instanceof Error ? err.message : 'unknown error'}`, { statusCode: res.status, retryable: false, cause: err });
29
41
  }
30
42
  if (typeof parsed !== 'object' || parsed === null || !('ok' in parsed) || typeof parsed.ok !== 'boolean') {
31
- throw new RelayError('invalid_response', 'Response is not a valid Relay API response object', res.status);
43
+ throw new RelayError('transport_error', 'Response is not a valid Relay API response object', { statusCode: res.status, retryable: false });
32
44
  }
33
45
  if (!parsed.ok) {
34
46
  const errResult = ApiErrorSchema.safeParse(parsed);
35
- throw new RelayError(errResult.success ? errResult.data.error.code : 'unknown_error', errResult.success ? errResult.data.error.message : 'Unknown error', res.status);
47
+ const rawCode = errResult.success ? errResult.data.error.code : undefined;
48
+ const message = errResult.success ? errResult.data.error.message : 'Unknown error';
49
+ throw relayErrorFromApi(rawCode, message, res.status);
36
50
  }
37
51
  if (!('data' in parsed)) {
38
- throw new RelayError('invalid_response', 'Response is missing required "data" field', res.status);
52
+ throw new RelayError('transport_error', 'Response is missing required "data" field', { statusCode: res.status, retryable: false });
39
53
  }
40
54
  const data = parsed.data;
41
- return CreateWorkspaceResponseSchema.parse(data);
55
+ return camelizeKeys(CreateWorkspaceResponseSchema.parse(data));
56
+ }
57
+ rememberIdentity(agentId, name) {
58
+ this.identityHint = { agentId, name };
59
+ }
60
+ async resolveWorkspaceId() {
61
+ if (this.workspaceIdHint) {
62
+ return this.workspaceIdHint;
63
+ }
64
+ const workspace = await this.workspace.info();
65
+ this.workspaceIdHint = workspace.id;
66
+ return workspace.id;
67
+ }
68
+ async resolveIdentityInternal() {
69
+ if (!this.identityHint) {
70
+ throw new RelayError('not_found', 'No identity is available. Register or rotate an agent first.', {
71
+ statusCode: 404,
72
+ });
73
+ }
74
+ return {
75
+ agentId: this.identityHint.agentId,
76
+ name: this.identityHint.name,
77
+ workspaceId: await this.resolveWorkspaceId(),
78
+ };
79
+ }
80
+ async registerWithLegacySuffix(data) {
81
+ const maxAttempts = 5;
82
+ let candidateName = data.name;
83
+ for (let attempt = 0; attempt <= maxAttempts; attempt += 1) {
84
+ try {
85
+ return await this.agents.register({ ...data, name: candidateName });
86
+ }
87
+ catch (err) {
88
+ if (!isNameConflictError(err) || attempt === maxAttempts) {
89
+ throw err;
90
+ }
91
+ candidateName = appendLegacySuffix(data.name);
92
+ }
93
+ }
94
+ throw new RelayError('transport_error', 'Failed to register agent identity after suffix retries');
95
+ }
96
+ async registerAgent(data) {
97
+ const { strict, ...request } = data;
98
+ if (strict) {
99
+ return this.agents.register(request);
100
+ }
101
+ emitCompatibilityTelemetry('agents.registerAgent.legacy_suffix', {
102
+ requested_name: data.name,
103
+ });
104
+ return this.registerWithLegacySuffix(request);
105
+ }
106
+ async registerOrRotate(data) {
107
+ try {
108
+ return await this.registerAgent({ ...data, strict: true });
109
+ }
110
+ catch (err) {
111
+ if (isNameConflictError(err)) {
112
+ const agent = await this.agents.get(data.name);
113
+ const { token } = await this.agents.rotateToken(agent.name);
114
+ this.rememberIdentity(agent.id, agent.name);
115
+ const createdAt = agent.createdAt ?? agent.lastSeen;
116
+ return {
117
+ id: agent.id,
118
+ name: agent.name,
119
+ token,
120
+ status: agent.status,
121
+ createdAt,
122
+ };
123
+ }
124
+ throw err;
125
+ }
126
+ }
127
+ async resolveIdentity() {
128
+ return this.resolveIdentityInternal();
42
129
  }
43
130
  workspace = {
44
131
  info: () => this.client.get('/v1/workspace'),
@@ -57,8 +144,8 @@ export class RelayCast {
57
144
  channels = {
58
145
  list: (opts) => {
59
146
  const query = {};
60
- if (opts?.include_archived)
61
- query.include_archived = 'true';
147
+ if (opts?.includeArchived)
148
+ query.includeArchived = 'true';
62
149
  return this.client.get('/v1/channels', query);
63
150
  },
64
151
  get: (name) => this.client.get(`/v1/channels/${encodeURIComponent(name)}`),
@@ -89,7 +176,11 @@ export class RelayCast {
89
176
  reactions: (id) => this.client.get(`/v1/messages/${encodeURIComponent(id)}/reactions`),
90
177
  };
91
178
  agents = {
92
- register: (data) => this.client.post('/v1/agents', data),
179
+ register: async (data) => {
180
+ const created = await this.client.post('/v1/agents', data);
181
+ this.rememberIdentity(created.id, created.name);
182
+ return created;
183
+ },
93
184
  list: (query) => {
94
185
  const params = {};
95
186
  if (query?.status)
@@ -102,24 +193,14 @@ export class RelayCast {
102
193
  delete: (name) => this.client.delete(`/v1/agents/${encodeURIComponent(name)}`),
103
194
  presence: () => this.client.get('/v1/agents/presence'),
104
195
  registerOrGet: async (data) => {
105
- try {
106
- return await this.agents.register(data);
107
- }
108
- catch (err) {
109
- if (err instanceof RelayError && err.code === 'agent_already_exists') {
110
- const agent = await this.agents.get(data.name);
111
- const { token } = await this.agents.rotateToken(agent.name);
112
- return {
113
- id: agent.id,
114
- name: agent.name,
115
- token,
116
- status: agent.status,
117
- created_at: agent.created_at,
118
- };
119
- }
120
- throw err;
121
- }
196
+ emitCompatibilityTelemetry('agents.registerOrGet.deprecated', {
197
+ replacement: 'agents.registerOrRotate',
198
+ });
199
+ return this.registerOrRotate(data);
122
200
  },
201
+ registerAgent: (data) => this.registerAgent(data),
202
+ registerOrRotate: (data) => this.registerOrRotate(data),
203
+ resolveIdentity: () => this.resolveIdentity(),
123
204
  spawn: (data) => this.client.post('/v1/agents/spawn', data),
124
205
  release: (data) => this.client.post('/v1/agents/release', data),
125
206
  };
@@ -147,7 +228,7 @@ export class RelayCast {
147
228
  return this.client.get('/v1/activity', params);
148
229
  };
149
230
  allDmConversations = () => this.client.get('/v1/dm/conversations/all');
150
- dmMessages = (conversationId, opts) => {
231
+ dmMessages = async (conversationId, opts) => {
151
232
  const query = {};
152
233
  if (opts?.limit !== undefined)
153
234
  query.limit = String(opts.limit);
@@ -157,12 +238,9 @@ export class RelayCast {
157
238
  query.after = opts.after;
158
239
  return this.client.get(`/v1/dm/conversations/${encodeURIComponent(conversationId)}/messages`, query);
159
240
  };
160
- as(agentToken) {
161
- const agentHttpClient = new HttpClient({
162
- apiKey: agentToken,
163
- baseUrl: this.client.baseUrl,
164
- });
165
- return new AgentClient(agentHttpClient);
241
+ as(agentToken, options) {
242
+ const agentHttpClient = this.client.withApiKey(agentToken);
243
+ return new AgentClient(agentHttpClient, options);
166
244
  }
167
245
  }
168
246
  //# sourceMappingURL=relay.js.map
package/dist/relay.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"relay.js","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay.js","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import type * as Raw from '@relaycast/types';
2
+ import type { Camelize } from './casing.js';
3
+ export type ActivityItem = Camelize<Raw.ActivityItem>;
4
+ export type Agent = Camelize<Raw.Agent>;
5
+ export type AgentCommand = Camelize<Raw.AgentCommand>;
6
+ export type AgentListQuery = Camelize<Raw.AgentListQuery>;
7
+ export type AgentOfflineEvent = Camelize<Raw.AgentOfflineEvent>;
8
+ export type AgentOnlineEvent = Camelize<Raw.AgentOnlineEvent>;
9
+ export type AgentPresenceInfo = Camelize<Raw.AgentPresenceInfo>;
10
+ export type Channel = Camelize<Raw.Channel>;
11
+ export type ChannelArchivedEvent = Camelize<Raw.ChannelArchivedEvent>;
12
+ export type ChannelCreatedEvent = Camelize<Raw.ChannelCreatedEvent>;
13
+ export type ChannelMemberInfo = Camelize<Raw.ChannelMemberInfo>;
14
+ export type JoinChannelResponse = Camelize<Raw.JoinChannelResponse>;
15
+ export type InviteChannelResponse = Camelize<Raw.InviteChannelResponse>;
16
+ export type ChannelReadStatus = Camelize<Raw.ChannelReadStatus>;
17
+ export type ChannelUpdatedEvent = Camelize<Raw.ChannelUpdatedEvent>;
18
+ export type CommandInvocation = Camelize<Raw.CommandInvocation>;
19
+ export type CommandInvokeResult = CommandInvocation;
20
+ export type CommandInvokedEvent = Camelize<Raw.CommandInvokedEvent>;
21
+ export type CreateAgentRequest = Camelize<Raw.CreateAgentRequest>;
22
+ export type CreateAgentResponse = Camelize<Raw.CreateAgentResponse>;
23
+ export type CreateChannelRequest = Camelize<Raw.CreateChannelRequest>;
24
+ export type CreateCommandRequest = Camelize<Raw.CreateCommandRequest>;
25
+ export type CreateCommandResponse = Camelize<Raw.CreateCommandResponse>;
26
+ export type CreateGroupDmRequest = Camelize<Raw.CreateGroupDmRequest>;
27
+ export type DmConversation = Camelize<Raw.DmConversation>;
28
+ export type CreateGroupDmResponse = Camelize<Raw.CreateGroupDmResponse>;
29
+ export type CreateSubscriptionRequest = Camelize<Raw.CreateSubscriptionRequest>;
30
+ export type CreateSubscriptionResponse = Camelize<Raw.CreateSubscriptionResponse>;
31
+ export type CreateWebhookRequest = Camelize<Raw.CreateWebhookRequest>;
32
+ export type CreateWebhookResponse = Camelize<Raw.CreateWebhookResponse>;
33
+ export type CreateWorkspaceResponse = Camelize<Raw.CreateWorkspaceResponse>;
34
+ export type SendDmResponse = Camelize<Raw.SendDmResponse>;
35
+ export type DmConversationSummary = Camelize<Raw.DmConversationSummary>;
36
+ export type DmConversationParticipant = Camelize<Raw.DmConversationParticipant>;
37
+ export type DmLastMessage = Camelize<Raw.DmLastMessage>;
38
+ export type DmReceivedEvent = Camelize<Raw.DmReceivedEvent>;
39
+ export type EventSubscription = Camelize<Raw.EventSubscription>;
40
+ export type FileInfo = Camelize<Raw.FileInfo>;
41
+ export type CompleteUploadResponse = Camelize<Raw.CompleteUploadResponse>;
42
+ export type FileUploadedEvent = Camelize<Raw.FileUploadedEvent>;
43
+ export type GroupDmMessageResponse = Camelize<Raw.GroupDmMessageResponse>;
44
+ export type GroupDmParticipantResponse = Camelize<Raw.GroupDmParticipantResponse>;
45
+ export type GroupDmReceivedEvent = Camelize<Raw.GroupDmReceivedEvent>;
46
+ export type InboxResponse = Camelize<Raw.InboxResponse>;
47
+ export type InvokeCommandRequest = Camelize<Raw.InvokeCommandRequest>;
48
+ export type MemberJoinedEvent = Camelize<Raw.MemberJoinedEvent>;
49
+ export type MemberLeftEvent = Camelize<Raw.MemberLeftEvent>;
50
+ export type MessageBlock = Camelize<Raw.MessageBlock>;
51
+ export type MessageCreatedEvent = Camelize<Raw.MessageCreatedEvent>;
52
+ export type MessageListQuery = Camelize<Raw.MessageListQuery>;
53
+ export type MessageReadEvent = Camelize<Raw.MessageReadEvent>;
54
+ export type SearchMessageResult = Camelize<Raw.SearchMessageResult>;
55
+ export type MessageUpdatedEvent = Camelize<Raw.MessageUpdatedEvent>;
56
+ export type MessageWithMeta = Camelize<Raw.MessageWithMeta>;
57
+ export type PostMessageRequest = Camelize<Raw.PostMessageRequest>;
58
+ export type AddedReaction = Camelize<Raw.AddedReaction>;
59
+ export type ReactionAddedEvent = Camelize<Raw.ReactionAddedEvent>;
60
+ export type ReactionGroup = Camelize<Raw.ReactionGroup>;
61
+ export type ReactionRemovedEvent = Camelize<Raw.ReactionRemovedEvent>;
62
+ export type ReadReceipt = Camelize<Raw.ReadReceipt>;
63
+ export type ReaderInfo = Camelize<Raw.ReaderInfo>;
64
+ export type ReleaseAgentRequest = Camelize<Raw.ReleaseAgentRequest>;
65
+ export type ReleaseAgentResponse = Camelize<Raw.ReleaseAgentResponse>;
66
+ export type SendDmRequest = Camelize<Raw.SendDmRequest>;
67
+ export type SetSystemPromptRequest = Camelize<Raw.SetSystemPromptRequest>;
68
+ export type SpawnAgentRequest = Camelize<Raw.SpawnAgentRequest>;
69
+ export type SpawnAgentResponse = Camelize<Raw.SpawnAgentResponse>;
70
+ export type SystemPrompt = Camelize<Raw.SystemPrompt>;
71
+ export type ThreadReplyEvent = Camelize<Raw.ThreadReplyEvent>;
72
+ export type ThreadReplyRequest = Camelize<Raw.ThreadReplyRequest>;
73
+ export type TokenRotateResponse = Camelize<Raw.TokenRotateResponse>;
74
+ export type UpdateAgentRequest = Camelize<Raw.UpdateAgentRequest>;
75
+ export type UpdateChannelRequest = Camelize<Raw.UpdateChannelRequest>;
76
+ export type UpdateWorkspaceRequest = Camelize<Raw.UpdateWorkspaceRequest>;
77
+ export type UploadRequest = Camelize<Raw.UploadRequest>;
78
+ export type UploadResponse = Camelize<Raw.UploadResponse>;
79
+ export type Webhook = Camelize<Raw.Webhook>;
80
+ export type WebhookReceivedEvent = Camelize<Raw.WebhookReceivedEvent>;
81
+ export type WebhookTriggerRequest = Camelize<Raw.WebhookTriggerRequest>;
82
+ export type WebhookTriggerResponse = Camelize<Raw.WebhookTriggerResponse>;
83
+ export type Workspace = Camelize<Raw.Workspace>;
84
+ export type WorkspaceDmConversation = Camelize<Raw.WorkspaceDmConversation>;
85
+ export type SearchResult = SearchMessageResult;
86
+ export type WsClientEvent = Camelize<Raw.WsClientEvent>;
87
+ export type WsCloseEvent = Camelize<Raw.WsCloseEvent>;
88
+ export type WsErrorEvent = Camelize<Raw.WsErrorEvent>;
89
+ export type WsOpenEvent = Camelize<Raw.WsOpenEvent>;
90
+ export type WsPermanentlyDisconnectedEvent = Camelize<Raw.WsPermanentlyDisconnectedEvent>;
91
+ export type WsReconnectingEvent = Camelize<Raw.WsReconnectingEvent>;
92
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const SDK_VERSION: "0.3.1";
1
+ export declare const SDK_VERSION: "0.3.3";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const SDK_VERSION = "0.3.1";
1
+ export const SDK_VERSION = "0.3.3";
2
2
  //# sourceMappingURL=version.js.map
package/dist/ws.d.ts CHANGED
@@ -1,11 +1,18 @@
1
- import type { WsClientEvent } from '@relaycast/types';
1
+ import type { WsClientEvent } from './types.js';
2
+ import { type InternalOrigin } from './origin.js';
2
3
  export type EventHandler<T = WsClientEvent> = (event: T) => void;
3
4
  export interface WsClientOptions {
4
5
  token: string;
5
6
  baseUrl?: string;
7
+ maxReconnectAttempts?: number;
8
+ reconnectJitter?: boolean;
9
+ reconnectBaseDelayMs?: number;
10
+ reconnectMaxDelayMs?: number;
11
+ circuitBreakerMaxAttempts?: number;
6
12
  /** Log warnings for dropped/malformed WebSocket messages via console.warn. */
7
13
  debug?: boolean;
8
14
  }
15
+ export declare function withInternalWsOrigin<T extends WsClientOptions>(options: T, origin: InternalOrigin): T;
9
16
  export declare class WsClient {
10
17
  private token;
11
18
  private baseUrl;
@@ -14,15 +21,24 @@ export declare class WsClient {
14
21
  private isOpen;
15
22
  private reconnectAttempt;
16
23
  private maxReconnectAttempts;
24
+ private reconnectJitter;
25
+ private reconnectBaseDelayMs;
26
+ private reconnectMaxDelayMs;
27
+ private circuitBreakerMaxAttempts;
28
+ private permanentlyDisconnected;
17
29
  private reconnectTimer;
18
30
  private connectTimer;
19
31
  private connectTimeoutMs;
20
32
  private pingTimer;
21
33
  private closed;
22
34
  private debug;
35
+ private originSurface;
36
+ private originClient;
37
+ private originVersion;
23
38
  constructor(options: WsClientOptions);
24
39
  connect(): void;
25
40
  disconnect(): void;
41
+ reconnect(): void;
26
42
  subscribe(channels: string[]): void;
27
43
  unsubscribe(channels: string[]): void;
28
44
  on(event: string, handler: EventHandler): () => void;
@@ -32,6 +48,8 @@ export declare class WsClient {
32
48
  private startPing;
33
49
  private stopPing;
34
50
  private clearConnectTimer;
51
+ private computeReconnectDelayMs;
52
+ private tripCircuitBreaker;
35
53
  private scheduleReconnect;
36
54
  }
37
55
  //# sourceMappingURL=ws.d.ts.map
package/dist/ws.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAgE,MAAM,kBAAkB,CAAC;AAGpH,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,aAAa,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,QAAQ,CAA6C;IAC7D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,oBAAoB,CAAM;IAClC,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,gBAAgB,CAAU;IAClC,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAU;gBAEX,OAAO,EAAE,eAAe;IAOpC,OAAO,IAAI,IAAI;IAoFf,UAAU,IAAI,IAAI;IAqBlB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAInC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIrC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,IAAI;IAoBpD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAI/C,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,iBAAiB;CAY1B"}
1
+ {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAMd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAG9D,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,aAAa,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAYD,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,eAAe,EAC5D,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,cAAc,GACrB,CAAC,CASH;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,QAAQ,CAA6C;IAC7D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,yBAAyB,CAAS;IAC1C,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,gBAAgB,CAAU;IAClC,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAS;gBAElB,OAAO,EAAE,eAAe;IAwBpC,OAAO,IAAI,IAAI;IAyFf,UAAU,IAAI,IAAI;IAsBlB,SAAS,IAAI,IAAI;IA0BjB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAInC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIrC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,IAAI;IAoBpD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAI/C,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,iBAAiB;CAkB1B"}
package/dist/ws.js CHANGED
@@ -1,4 +1,20 @@
1
1
  import { ServerEventSchema } from '@relaycast/types';
2
+ import { SDK_ORIGIN } from './origin.js';
3
+ import { camelizeKeys, decamelizeKey } from './casing.js';
4
+ const INTERNAL_WS_ORIGIN = Symbol('relaycast.internal.ws-origin');
5
+ function readInternalWsOrigin(options) {
6
+ return options[INTERNAL_WS_ORIGIN];
7
+ }
8
+ export function withInternalWsOrigin(options, origin) {
9
+ const copy = { ...options };
10
+ Object.defineProperty(copy, INTERNAL_WS_ORIGIN, {
11
+ value: origin,
12
+ enumerable: false,
13
+ writable: false,
14
+ configurable: false,
15
+ });
16
+ return copy;
17
+ }
2
18
  export class WsClient {
3
19
  token;
4
20
  baseUrl;
@@ -6,25 +22,54 @@ export class WsClient {
6
22
  handlers = new Map();
7
23
  isOpen = false;
8
24
  reconnectAttempt = 0;
9
- maxReconnectAttempts = 10;
25
+ maxReconnectAttempts;
26
+ reconnectJitter;
27
+ reconnectBaseDelayMs;
28
+ reconnectMaxDelayMs;
29
+ circuitBreakerMaxAttempts;
30
+ permanentlyDisconnected = false;
10
31
  reconnectTimer = null;
11
32
  connectTimer = null;
12
33
  connectTimeoutMs = 10_000;
13
34
  pingTimer = null;
14
35
  closed = false;
15
36
  debug;
37
+ originSurface;
38
+ originClient;
39
+ originVersion;
16
40
  constructor(options) {
41
+ const origin = readInternalWsOrigin(options) ?? SDK_ORIGIN;
17
42
  this.token = options.token;
18
43
  this.debug = options.debug ?? false;
44
+ this.maxReconnectAttempts = Number.isFinite(options.maxReconnectAttempts)
45
+ ? Math.max(0, Math.floor(options.maxReconnectAttempts))
46
+ : Number.POSITIVE_INFINITY;
47
+ this.reconnectJitter = options.reconnectJitter ?? true;
48
+ this.reconnectBaseDelayMs = Number.isFinite(options.reconnectBaseDelayMs)
49
+ ? Math.max(1, Math.floor(options.reconnectBaseDelayMs))
50
+ : 1000;
51
+ this.reconnectMaxDelayMs = Number.isFinite(options.reconnectMaxDelayMs)
52
+ ? Math.max(this.reconnectBaseDelayMs, Math.floor(options.reconnectMaxDelayMs))
53
+ : 30_000;
54
+ this.circuitBreakerMaxAttempts = Number.isFinite(options.circuitBreakerMaxAttempts)
55
+ ? Math.max(1, Math.floor(options.circuitBreakerMaxAttempts))
56
+ : 30;
19
57
  const base = (options.baseUrl ?? 'https://api.relaycast.dev').replace(/\/+$/, '');
20
58
  this.baseUrl = base.replace(/^http/, 'ws');
59
+ this.originSurface = origin.surface;
60
+ this.originClient = origin.client;
61
+ this.originVersion = origin.version;
21
62
  }
22
63
  connect() {
23
64
  if (this.ws)
24
65
  return;
25
66
  this.closed = false;
67
+ this.permanentlyDisconnected = false;
26
68
  const wsUrl = new URL('/v1/ws', `${this.baseUrl}/`);
27
69
  wsUrl.searchParams.set('token', this.token);
70
+ wsUrl.searchParams.set(decamelizeKey('originSurface'), this.originSurface);
71
+ wsUrl.searchParams.set(decamelizeKey('originClient'), this.originClient);
72
+ wsUrl.searchParams.set(decamelizeKey('originVersion'), this.originVersion);
28
73
  const ws = new WebSocket(wsUrl.toString());
29
74
  this.ws = ws;
30
75
  this.connectTimer = setTimeout(() => {
@@ -46,6 +91,7 @@ export class WsClient {
46
91
  this.clearConnectTimer();
47
92
  this.isOpen = true;
48
93
  this.reconnectAttempt = 0;
94
+ this.permanentlyDisconnected = false;
49
95
  this.startPing();
50
96
  const openEvent = { type: 'open' };
51
97
  this.emit('open', openEvent);
@@ -57,13 +103,13 @@ export class WsClient {
57
103
  const parsed = JSON.parse(String(event.data));
58
104
  const result = ServerEventSchema.safeParse(parsed);
59
105
  if (result.success) {
60
- this.emit(result.data.type, result.data);
106
+ this.emit(result.data.type, camelizeKeys(result.data));
61
107
  }
62
108
  else if (parsed !== null &&
63
109
  typeof parsed === 'object' &&
64
110
  typeof parsed.type === 'string') {
65
111
  // Forward unrecognized event types so wildcard listeners still fire
66
- this.emit(parsed.type, parsed);
112
+ this.emit(parsed.type, camelizeKeys(parsed));
67
113
  }
68
114
  else if (this.debug) {
69
115
  console.warn('[relaycast] Dropped WebSocket message: missing or invalid "type" field', parsed);
@@ -105,6 +151,7 @@ export class WsClient {
105
151
  disconnect() {
106
152
  this.closed = true;
107
153
  this.isOpen = false;
154
+ this.permanentlyDisconnected = false;
108
155
  this.clearConnectTimer();
109
156
  this.stopPing();
110
157
  if (this.reconnectTimer) {
@@ -122,6 +169,32 @@ export class WsClient {
122
169
  this.ws = null;
123
170
  }
124
171
  }
172
+ reconnect() {
173
+ this.closed = false;
174
+ this.isOpen = false;
175
+ this.permanentlyDisconnected = false;
176
+ this.reconnectAttempt = 0;
177
+ this.clearConnectTimer();
178
+ this.stopPing();
179
+ if (this.reconnectTimer) {
180
+ clearTimeout(this.reconnectTimer);
181
+ this.reconnectTimer = null;
182
+ }
183
+ if (this.ws) {
184
+ this.ws.onopen = null;
185
+ this.ws.onmessage = null;
186
+ this.ws.onclose = null;
187
+ this.ws.onerror = null;
188
+ try {
189
+ this.ws.close();
190
+ }
191
+ catch {
192
+ // noop
193
+ }
194
+ this.ws = null;
195
+ }
196
+ this.connect();
197
+ }
125
198
  subscribe(channels) {
126
199
  this.sendJson({ type: 'subscribe', channels });
127
200
  }
@@ -175,15 +248,39 @@ export class WsClient {
175
248
  this.connectTimer = null;
176
249
  }
177
250
  }
251
+ computeReconnectDelayMs(attempt) {
252
+ const exponential = Math.min(this.reconnectBaseDelayMs * Math.pow(2, Math.max(0, attempt - 1)), this.reconnectMaxDelayMs);
253
+ if (!this.reconnectJitter)
254
+ return exponential;
255
+ const jitterFactor = 0.5 + Math.random();
256
+ return Math.max(1, Math.round(exponential * jitterFactor));
257
+ }
258
+ tripCircuitBreaker() {
259
+ if (this.permanentlyDisconnected)
260
+ return;
261
+ this.permanentlyDisconnected = true;
262
+ if (this.reconnectTimer) {
263
+ clearTimeout(this.reconnectTimer);
264
+ this.reconnectTimer = null;
265
+ }
266
+ const event = {
267
+ type: 'permanently_disconnected',
268
+ attempt: this.reconnectAttempt,
269
+ };
270
+ this.emit('permanently_disconnected', event);
271
+ }
178
272
  scheduleReconnect() {
179
- if (this.reconnectTimer)
273
+ if (this.reconnectTimer || this.closed || this.permanentlyDisconnected)
180
274
  return;
181
- if (this.reconnectAttempt >= this.maxReconnectAttempts)
275
+ if (this.reconnectAttempt >= this.maxReconnectAttempts ||
276
+ this.reconnectAttempt >= this.circuitBreakerMaxAttempts) {
277
+ this.tripCircuitBreaker();
182
278
  return;
183
- const delay = Math.min(1000 * Math.pow(2, this.reconnectAttempt), 30_000);
184
- this.reconnectAttempt++;
279
+ }
280
+ this.reconnectAttempt += 1;
185
281
  const reconnectingEvent = { type: 'reconnecting', attempt: this.reconnectAttempt };
186
282
  this.emit('reconnecting', reconnectingEvent);
283
+ const delay = this.computeReconnectDelayMs(this.reconnectAttempt);
187
284
  this.reconnectTimer = setTimeout(() => {
188
285
  this.reconnectTimer = null;
189
286
  this.connect();