@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.
- package/dist/agent.d.ts +44 -20
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +92 -15
- package/dist/agent.js.map +1 -1
- package/dist/casing.d.ts +10 -0
- package/dist/casing.d.ts.map +1 -0
- package/dist/casing.js +42 -0
- package/dist/casing.js.map +1 -0
- package/dist/client.d.ts +32 -9
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +126 -27
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +19 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +58 -0
- package/dist/errors.js.map +1 -0
- package/dist/identity.d.ts +15 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +23 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +6 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +10 -0
- package/dist/internal.js.map +1 -0
- package/dist/origin.d.ts +7 -0
- package/dist/origin.d.ts.map +1 -0
- package/dist/origin.js +7 -0
- package/dist/origin.js.map +1 -0
- package/dist/relay.d.ts +39 -17
- package/dist/relay.d.ts.map +1 -1
- package/dist/relay.js +115 -37
- package/dist/relay.js.map +1 -1
- package/dist/types.d.ts +92 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/ws.d.ts +19 -1
- package/dist/ws.d.ts.map +1 -1
- package/dist/ws.js +104 -7
- package/dist/ws.js.map +1 -1
- package/package.json +8 -4
- package/dist/billing.d.ts +0 -14
- package/dist/billing.d.ts.map +0 -1
- package/dist/billing.js +0 -28
- 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 {
|
|
4
|
-
import {
|
|
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
|
-
|
|
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
|
|
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('
|
|
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('
|
|
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
|
-
|
|
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('
|
|
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?.
|
|
61
|
-
query.
|
|
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) =>
|
|
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
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
108
|
-
|
|
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 =
|
|
162
|
-
|
|
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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"}
|
package/dist/types.d.ts
ADDED
|
@@ -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 @@
|
|
|
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
|
+
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
|
+
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 '
|
|
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,
|
|
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
|
|
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
|
-
|
|
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();
|