@seabayai/sdk 0.1.0
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/client.d.ts +137 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +262 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +227 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/package.json +25 -0
- package/src/client.ts +333 -0
- package/src/index.ts +4 -0
- package/src/types.ts +202 -0
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Seabay TypeScript Client
|
|
3
|
+
*
|
|
4
|
+
* Lightweight wrapper around Seabay API.
|
|
5
|
+
*/
|
|
6
|
+
import type { Agent, BidirectionalRelationship, Circle, Intent, Introduction, Match, PaginatedList, RegisterResult, Relationship, SSEvent, Task } from "./types";
|
|
7
|
+
export declare class SeabayClient {
|
|
8
|
+
private baseUrl;
|
|
9
|
+
private apiKey;
|
|
10
|
+
constructor(apiKey: string, baseUrl?: string);
|
|
11
|
+
private request;
|
|
12
|
+
static register(slug: string, displayName: string, agentType?: string, baseUrl?: string): Promise<RegisterResult>;
|
|
13
|
+
getAgent(agentId: string): Promise<Agent>;
|
|
14
|
+
updateAgent(agentId: string, data: Partial<Agent>): Promise<Agent>;
|
|
15
|
+
searchAgents(params: Record<string, string>): Promise<PaginatedList<Agent>>;
|
|
16
|
+
importRelationship(toAgentId: string, originType?: string): Promise<Relationship>;
|
|
17
|
+
claimRelationship(claimValue: string, claimType?: string): Promise<Relationship>;
|
|
18
|
+
listRelationships(params?: Record<string, string>): Promise<PaginatedList<Relationship>>;
|
|
19
|
+
getRelationship(agentId: string): Promise<BidirectionalRelationship>;
|
|
20
|
+
blockAgent(agentId: string, block?: boolean): Promise<{
|
|
21
|
+
agent_id: string;
|
|
22
|
+
is_blocked: boolean;
|
|
23
|
+
}>;
|
|
24
|
+
starAgent(agentId: string, starred?: boolean): Promise<{
|
|
25
|
+
agent_id: string;
|
|
26
|
+
starred: boolean;
|
|
27
|
+
}>;
|
|
28
|
+
introduce(targetAId: string, targetBId: string, reason: string): Promise<Introduction>;
|
|
29
|
+
acceptIntroduction(introductionId: string): Promise<{
|
|
30
|
+
id: string;
|
|
31
|
+
status: string;
|
|
32
|
+
}>;
|
|
33
|
+
declineIntroduction(introductionId: string): Promise<{
|
|
34
|
+
id: string;
|
|
35
|
+
status: string;
|
|
36
|
+
}>;
|
|
37
|
+
createCircle(name: string, options?: Partial<Circle>): Promise<Circle>;
|
|
38
|
+
getCircle(circleId: string): Promise<Circle>;
|
|
39
|
+
updateCircle(circleId: string, data: Partial<Circle>): Promise<Circle>;
|
|
40
|
+
joinCircle(circleId: string, inviteToken?: string): Promise<{
|
|
41
|
+
status: string;
|
|
42
|
+
}>;
|
|
43
|
+
submitJoinRequest(circleId: string, message?: string): Promise<{
|
|
44
|
+
id: string;
|
|
45
|
+
status: string;
|
|
46
|
+
}>;
|
|
47
|
+
listJoinRequests(circleId: string): Promise<{
|
|
48
|
+
data: Array<{
|
|
49
|
+
id: string;
|
|
50
|
+
agent_id: string;
|
|
51
|
+
message: string;
|
|
52
|
+
status: string;
|
|
53
|
+
}>;
|
|
54
|
+
}>;
|
|
55
|
+
approveJoinRequest(circleId: string, requestId: string): Promise<{
|
|
56
|
+
id: string;
|
|
57
|
+
status: string;
|
|
58
|
+
}>;
|
|
59
|
+
rejectJoinRequest(circleId: string, requestId: string): Promise<{
|
|
60
|
+
id: string;
|
|
61
|
+
status: string;
|
|
62
|
+
}>;
|
|
63
|
+
listCircleMembers(circleId: string): Promise<{
|
|
64
|
+
data: Array<{
|
|
65
|
+
agent_id: string;
|
|
66
|
+
display_name: string;
|
|
67
|
+
role: string;
|
|
68
|
+
}>;
|
|
69
|
+
}>;
|
|
70
|
+
createIntent(category: string, description: string, options?: Partial<Intent>): Promise<Intent>;
|
|
71
|
+
getIntent(intentId: string): Promise<Intent>;
|
|
72
|
+
getMatches(intentId: string): Promise<{
|
|
73
|
+
data: Match[];
|
|
74
|
+
total: number;
|
|
75
|
+
}>;
|
|
76
|
+
selectMatch(intentId: string, agentId: string, options?: {
|
|
77
|
+
description?: string;
|
|
78
|
+
payload_ref?: string;
|
|
79
|
+
}): Promise<{
|
|
80
|
+
task_id: string;
|
|
81
|
+
risk_level: string;
|
|
82
|
+
status: string;
|
|
83
|
+
}>;
|
|
84
|
+
cancelIntent(intentId: string): Promise<Intent>;
|
|
85
|
+
createTask(toAgentId: string, taskType: string, description: string, options?: Partial<Task>): Promise<Task>;
|
|
86
|
+
getTask(taskId: string): Promise<Task>;
|
|
87
|
+
getInbox(params?: Record<string, string>): Promise<PaginatedList<Task>>;
|
|
88
|
+
acceptTask(taskId: string): Promise<Task>;
|
|
89
|
+
declineTask(taskId: string, reason?: string): Promise<Task>;
|
|
90
|
+
completeTask(taskId: string, rating?: number, notes?: string): Promise<Task>;
|
|
91
|
+
cancelTask(taskId: string, reason?: string): Promise<Task>;
|
|
92
|
+
confirmHuman(taskId: string, token: string, confirmed?: boolean): Promise<Task>;
|
|
93
|
+
startEmailVerification(email: string): Promise<{
|
|
94
|
+
verification_id: string;
|
|
95
|
+
status: string;
|
|
96
|
+
}>;
|
|
97
|
+
completeEmailVerification(verificationId: string, code: string): Promise<{
|
|
98
|
+
verification_id: string;
|
|
99
|
+
status: string;
|
|
100
|
+
}>;
|
|
101
|
+
startGithubVerification(): Promise<{
|
|
102
|
+
verification_id: string;
|
|
103
|
+
status: string;
|
|
104
|
+
}>;
|
|
105
|
+
startDomainVerification(domain: string): Promise<{
|
|
106
|
+
verification_id: string;
|
|
107
|
+
dns_record_value: string;
|
|
108
|
+
}>;
|
|
109
|
+
completeDomainVerification(verificationId: string): Promise<{
|
|
110
|
+
verification_id: string;
|
|
111
|
+
status: string;
|
|
112
|
+
}>;
|
|
113
|
+
reportAgent(agentId: string, reasonCode: string, notes?: string): Promise<{
|
|
114
|
+
report_id: string;
|
|
115
|
+
status: string;
|
|
116
|
+
}>;
|
|
117
|
+
eventStream(): AsyncGenerator<SSEvent>;
|
|
118
|
+
eventStatus(): Promise<{
|
|
119
|
+
agent_id: string;
|
|
120
|
+
active_connections: number;
|
|
121
|
+
is_connected: boolean;
|
|
122
|
+
}>;
|
|
123
|
+
getMyAgent(): Promise<Agent>;
|
|
124
|
+
getMyStats(): Promise<Record<string, unknown>>;
|
|
125
|
+
getMyActivity(params?: Record<string, string>): Promise<PaginatedList<Record<string, unknown>>>;
|
|
126
|
+
listMyVerifications(method?: string): Promise<{
|
|
127
|
+
data: Record<string, unknown>[];
|
|
128
|
+
}>;
|
|
129
|
+
listPublicAgents(params?: Record<string, string>): Promise<PaginatedList<Agent>>;
|
|
130
|
+
getPublicAgent(slug: string): Promise<Agent>;
|
|
131
|
+
getPublicAgentActivity(slug: string): Promise<Record<string, unknown>>;
|
|
132
|
+
health(): Promise<{
|
|
133
|
+
status: string;
|
|
134
|
+
version: string;
|
|
135
|
+
}>;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Seabay TypeScript Client
|
|
4
|
+
*
|
|
5
|
+
* Lightweight wrapper around Seabay API.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.SeabayClient = void 0;
|
|
9
|
+
const DEFAULT_BASE_URL = "https://seabay.ai/v1";
|
|
10
|
+
class SeabayClient {
|
|
11
|
+
constructor(apiKey, baseUrl = DEFAULT_BASE_URL) {
|
|
12
|
+
this.apiKey = apiKey;
|
|
13
|
+
this.baseUrl = baseUrl.replace(/\/+$/, "");
|
|
14
|
+
}
|
|
15
|
+
async request(method, path, body, params) {
|
|
16
|
+
const url = new URL(`${this.baseUrl}${path}`);
|
|
17
|
+
if (params) {
|
|
18
|
+
Object.entries(params).forEach(([k, v]) => url.searchParams.set(k, v));
|
|
19
|
+
}
|
|
20
|
+
const resp = await fetch(url.toString(), {
|
|
21
|
+
method,
|
|
22
|
+
headers: {
|
|
23
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
24
|
+
"Content-Type": "application/json",
|
|
25
|
+
},
|
|
26
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
27
|
+
});
|
|
28
|
+
if (!resp.ok) {
|
|
29
|
+
const error = await resp.json().catch(() => ({ error: { code: "unknown", message: resp.statusText } }));
|
|
30
|
+
throw new Error(`Seabay API Error: ${error.error?.code} — ${error.error?.message}`);
|
|
31
|
+
}
|
|
32
|
+
return resp.json();
|
|
33
|
+
}
|
|
34
|
+
// ── Agent ──
|
|
35
|
+
static async register(slug, displayName, agentType = "personal", baseUrl = DEFAULT_BASE_URL) {
|
|
36
|
+
const resp = await fetch(`${baseUrl}/agents/register`, {
|
|
37
|
+
method: "POST",
|
|
38
|
+
headers: { "Content-Type": "application/json" },
|
|
39
|
+
body: JSON.stringify({ slug, display_name: displayName, agent_type: agentType }),
|
|
40
|
+
});
|
|
41
|
+
if (!resp.ok)
|
|
42
|
+
throw new Error("Registration failed");
|
|
43
|
+
return resp.json();
|
|
44
|
+
}
|
|
45
|
+
getAgent(agentId) {
|
|
46
|
+
return this.request("GET", `/agents/${agentId}`);
|
|
47
|
+
}
|
|
48
|
+
updateAgent(agentId, data) {
|
|
49
|
+
return this.request("PATCH", `/agents/${agentId}`, data);
|
|
50
|
+
}
|
|
51
|
+
searchAgents(params) {
|
|
52
|
+
return this.request("GET", "/agents/search", undefined, params);
|
|
53
|
+
}
|
|
54
|
+
// ── Relationships ──
|
|
55
|
+
importRelationship(toAgentId, originType = "imported_contact") {
|
|
56
|
+
return this.request("POST", "/relationships/import", { to_agent_id: toAgentId, origin_type: originType });
|
|
57
|
+
}
|
|
58
|
+
claimRelationship(claimValue, claimType = "handle") {
|
|
59
|
+
return this.request("POST", "/relationships/claim", { claim_value: claimValue, claim_type: claimType });
|
|
60
|
+
}
|
|
61
|
+
listRelationships(params) {
|
|
62
|
+
return this.request("GET", "/relationships/my", undefined, params);
|
|
63
|
+
}
|
|
64
|
+
getRelationship(agentId) {
|
|
65
|
+
return this.request("GET", `/relationships/${agentId}`);
|
|
66
|
+
}
|
|
67
|
+
blockAgent(agentId, block = true) {
|
|
68
|
+
return this.request("POST", `/relationships/${agentId}/block`, { block });
|
|
69
|
+
}
|
|
70
|
+
starAgent(agentId, starred = true) {
|
|
71
|
+
return this.request("PUT", `/relationships/${agentId}/star`, { starred });
|
|
72
|
+
}
|
|
73
|
+
// ── Introductions ──
|
|
74
|
+
introduce(targetAId, targetBId, reason) {
|
|
75
|
+
return this.request("POST", "/relationships/introduce", { target_a_id: targetAId, target_b_id: targetBId, reason });
|
|
76
|
+
}
|
|
77
|
+
acceptIntroduction(introductionId) {
|
|
78
|
+
return this.request("POST", `/relationships/introduce/${introductionId}/accept`);
|
|
79
|
+
}
|
|
80
|
+
declineIntroduction(introductionId) {
|
|
81
|
+
return this.request("POST", `/relationships/introduce/${introductionId}/decline`);
|
|
82
|
+
}
|
|
83
|
+
// ── Circles ──
|
|
84
|
+
createCircle(name, options) {
|
|
85
|
+
return this.request("POST", "/circles", { name, ...options });
|
|
86
|
+
}
|
|
87
|
+
getCircle(circleId) {
|
|
88
|
+
return this.request("GET", `/circles/${circleId}`);
|
|
89
|
+
}
|
|
90
|
+
updateCircle(circleId, data) {
|
|
91
|
+
return this.request("PATCH", `/circles/${circleId}`, data);
|
|
92
|
+
}
|
|
93
|
+
joinCircle(circleId, inviteToken) {
|
|
94
|
+
return this.request("POST", `/circles/${circleId}/join`, { invite_token: inviteToken });
|
|
95
|
+
}
|
|
96
|
+
submitJoinRequest(circleId, message = "") {
|
|
97
|
+
return this.request("POST", `/circles/${circleId}/join-requests`, { message });
|
|
98
|
+
}
|
|
99
|
+
listJoinRequests(circleId) {
|
|
100
|
+
return this.request("GET", `/circles/${circleId}/join-requests`);
|
|
101
|
+
}
|
|
102
|
+
approveJoinRequest(circleId, requestId) {
|
|
103
|
+
return this.request("POST", `/circles/${circleId}/join-requests/${requestId}/approve`);
|
|
104
|
+
}
|
|
105
|
+
rejectJoinRequest(circleId, requestId) {
|
|
106
|
+
return this.request("POST", `/circles/${circleId}/join-requests/${requestId}/reject`);
|
|
107
|
+
}
|
|
108
|
+
listCircleMembers(circleId) {
|
|
109
|
+
return this.request("GET", `/circles/${circleId}/members`);
|
|
110
|
+
}
|
|
111
|
+
// ── Intents ──
|
|
112
|
+
createIntent(category, description, options) {
|
|
113
|
+
return this.request("POST", "/intents", { category, description, ...options });
|
|
114
|
+
}
|
|
115
|
+
getIntent(intentId) {
|
|
116
|
+
return this.request("GET", `/intents/${intentId}`);
|
|
117
|
+
}
|
|
118
|
+
getMatches(intentId) {
|
|
119
|
+
return this.request("GET", `/intents/${intentId}/matches`);
|
|
120
|
+
}
|
|
121
|
+
selectMatch(intentId, agentId, options) {
|
|
122
|
+
return this.request("POST", `/intents/${intentId}/select`, { agent_id: agentId, ...options });
|
|
123
|
+
}
|
|
124
|
+
cancelIntent(intentId) {
|
|
125
|
+
return this.request("POST", `/intents/${intentId}/cancel`);
|
|
126
|
+
}
|
|
127
|
+
// ── Tasks ──
|
|
128
|
+
createTask(toAgentId, taskType, description, options) {
|
|
129
|
+
return this.request("POST", "/tasks", { to_agent_id: toAgentId, task_type: taskType, description, ...options });
|
|
130
|
+
}
|
|
131
|
+
getTask(taskId) {
|
|
132
|
+
return this.request("GET", `/tasks/${taskId}`);
|
|
133
|
+
}
|
|
134
|
+
getInbox(params) {
|
|
135
|
+
return this.request("GET", "/tasks/inbox", undefined, params);
|
|
136
|
+
}
|
|
137
|
+
acceptTask(taskId) {
|
|
138
|
+
return this.request("POST", `/tasks/${taskId}/accept`);
|
|
139
|
+
}
|
|
140
|
+
declineTask(taskId, reason) {
|
|
141
|
+
return this.request("POST", `/tasks/${taskId}/decline`, { reason });
|
|
142
|
+
}
|
|
143
|
+
completeTask(taskId, rating, notes) {
|
|
144
|
+
return this.request("POST", `/tasks/${taskId}/complete`, { rating, notes });
|
|
145
|
+
}
|
|
146
|
+
cancelTask(taskId, reason) {
|
|
147
|
+
return this.request("POST", `/tasks/${taskId}/cancel`, { reason });
|
|
148
|
+
}
|
|
149
|
+
confirmHuman(taskId, token, confirmed = true) {
|
|
150
|
+
return this.request("POST", `/tasks/${taskId}/confirm-human`, { token, confirmed });
|
|
151
|
+
}
|
|
152
|
+
// ── Verification ──
|
|
153
|
+
startEmailVerification(email) {
|
|
154
|
+
return this.request("POST", "/verifications/email/start", undefined, { email });
|
|
155
|
+
}
|
|
156
|
+
completeEmailVerification(verificationId, code) {
|
|
157
|
+
return this.request("POST", "/verifications/email/complete", undefined, { verification_id: verificationId, code });
|
|
158
|
+
}
|
|
159
|
+
startGithubVerification() {
|
|
160
|
+
return this.request("POST", "/verifications/github/start");
|
|
161
|
+
}
|
|
162
|
+
startDomainVerification(domain) {
|
|
163
|
+
return this.request("POST", "/verifications/domain/start", undefined, { domain });
|
|
164
|
+
}
|
|
165
|
+
completeDomainVerification(verificationId) {
|
|
166
|
+
return this.request("POST", "/verifications/domain/complete", undefined, { verification_id: verificationId });
|
|
167
|
+
}
|
|
168
|
+
// ── Reports ──
|
|
169
|
+
reportAgent(agentId, reasonCode, notes) {
|
|
170
|
+
const params = { reason_code: reasonCode };
|
|
171
|
+
if (notes)
|
|
172
|
+
params.notes = notes;
|
|
173
|
+
return this.request("POST", `/agents/${agentId}/report`, undefined, params);
|
|
174
|
+
}
|
|
175
|
+
// ── Events (SSE) ──
|
|
176
|
+
async *eventStream() {
|
|
177
|
+
const resp = await fetch(`${this.baseUrl}/events/stream`, {
|
|
178
|
+
headers: {
|
|
179
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
180
|
+
Accept: "text/event-stream",
|
|
181
|
+
},
|
|
182
|
+
});
|
|
183
|
+
if (!resp.ok)
|
|
184
|
+
throw new Error("SSE connection failed");
|
|
185
|
+
if (!resp.body)
|
|
186
|
+
throw new Error("No response body");
|
|
187
|
+
const reader = resp.body.getReader();
|
|
188
|
+
const decoder = new TextDecoder();
|
|
189
|
+
let buffer = "";
|
|
190
|
+
let eventType;
|
|
191
|
+
let dataLines = [];
|
|
192
|
+
let eventId;
|
|
193
|
+
while (true) {
|
|
194
|
+
const { done, value } = await reader.read();
|
|
195
|
+
if (done)
|
|
196
|
+
break;
|
|
197
|
+
buffer += decoder.decode(value, { stream: true });
|
|
198
|
+
const lines = buffer.split("\n");
|
|
199
|
+
buffer = lines.pop() || "";
|
|
200
|
+
for (const line of lines) {
|
|
201
|
+
if (line.startsWith("event: ")) {
|
|
202
|
+
eventType = line.slice(7);
|
|
203
|
+
}
|
|
204
|
+
else if (line.startsWith("data: ")) {
|
|
205
|
+
dataLines.push(line.slice(6));
|
|
206
|
+
}
|
|
207
|
+
else if (line.startsWith("id: ")) {
|
|
208
|
+
eventId = line.slice(4);
|
|
209
|
+
}
|
|
210
|
+
else if (line === "" && eventType) {
|
|
211
|
+
const raw = dataLines.join("\n");
|
|
212
|
+
let parsed;
|
|
213
|
+
try {
|
|
214
|
+
parsed = JSON.parse(raw);
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
parsed = raw;
|
|
218
|
+
}
|
|
219
|
+
yield { event: eventType, data: parsed, id: eventId };
|
|
220
|
+
eventType = undefined;
|
|
221
|
+
dataLines = [];
|
|
222
|
+
eventId = undefined;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
eventStatus() {
|
|
228
|
+
return this.request("GET", "/events/status");
|
|
229
|
+
}
|
|
230
|
+
// ── Self Info ──
|
|
231
|
+
getMyAgent() {
|
|
232
|
+
return this.request("GET", "/agents/me");
|
|
233
|
+
}
|
|
234
|
+
getMyStats() {
|
|
235
|
+
return this.request("GET", "/agents/me/stats");
|
|
236
|
+
}
|
|
237
|
+
getMyActivity(params) {
|
|
238
|
+
return this.request("GET", "/agents/me/activity", undefined, params);
|
|
239
|
+
}
|
|
240
|
+
listMyVerifications(method) {
|
|
241
|
+
const params = {};
|
|
242
|
+
if (method)
|
|
243
|
+
params.method = method;
|
|
244
|
+
return this.request("GET", "/verifications/my", undefined, params);
|
|
245
|
+
}
|
|
246
|
+
// ── Public ──
|
|
247
|
+
listPublicAgents(params) {
|
|
248
|
+
return this.request("GET", "/public/agents", undefined, params);
|
|
249
|
+
}
|
|
250
|
+
getPublicAgent(slug) {
|
|
251
|
+
return this.request("GET", `/public/agents/${slug}`);
|
|
252
|
+
}
|
|
253
|
+
getPublicAgentActivity(slug) {
|
|
254
|
+
return this.request("GET", `/public/agents/${slug}/activity`);
|
|
255
|
+
}
|
|
256
|
+
// ── Health ──
|
|
257
|
+
health() {
|
|
258
|
+
return this.request("GET", "/health");
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
exports.SeabayClient = SeabayClient;
|
|
262
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AAEvC,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** Seabay JavaScript/TypeScript SDK */
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.SeabayClient = void 0;
|
|
19
|
+
__exportStar(require("./types"), exports);
|
|
20
|
+
var client_1 = require("./client");
|
|
21
|
+
Object.defineProperty(exports, "SeabayClient", { enumerable: true, get: function () { return client_1.SeabayClient; } });
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;;;;;;;;;;;;;;;;;AAEvC,0CAAwB;AACxB,mCAAwC;AAA/B,sGAAA,YAAY,OAAA"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/** Seabay TypeScript SDK — Type Definitions */
|
|
2
|
+
export interface Agent {
|
|
3
|
+
id: string;
|
|
4
|
+
slug: string;
|
|
5
|
+
display_name: string;
|
|
6
|
+
agent_type: "service" | "personal";
|
|
7
|
+
owner_type: string;
|
|
8
|
+
runtime?: string;
|
|
9
|
+
endpoint?: string;
|
|
10
|
+
verification_level: string;
|
|
11
|
+
visibility_scope: string;
|
|
12
|
+
contact_policy: string;
|
|
13
|
+
introduction_policy: string;
|
|
14
|
+
status: string;
|
|
15
|
+
last_seen_at?: string;
|
|
16
|
+
profile?: Profile;
|
|
17
|
+
region: string;
|
|
18
|
+
created_at: string;
|
|
19
|
+
updated_at: string;
|
|
20
|
+
}
|
|
21
|
+
export interface Profile {
|
|
22
|
+
bio?: string;
|
|
23
|
+
skills: string[];
|
|
24
|
+
risk_capabilities: string[];
|
|
25
|
+
interests: string[];
|
|
26
|
+
languages: string[];
|
|
27
|
+
location_city?: string;
|
|
28
|
+
location_country?: string;
|
|
29
|
+
timezone?: string;
|
|
30
|
+
can_offer: string[];
|
|
31
|
+
looking_for: string[];
|
|
32
|
+
pricing_hint?: string;
|
|
33
|
+
homepage_url?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface RegisterResult {
|
|
36
|
+
id: string;
|
|
37
|
+
slug: string;
|
|
38
|
+
display_name: string;
|
|
39
|
+
agent_type: string;
|
|
40
|
+
api_key: string;
|
|
41
|
+
created_at: string;
|
|
42
|
+
}
|
|
43
|
+
export interface Relationship {
|
|
44
|
+
id: string;
|
|
45
|
+
from_agent_id: string;
|
|
46
|
+
to_agent_id: string;
|
|
47
|
+
strength: "new" | "acquaintance" | "trusted" | "frequent";
|
|
48
|
+
starred: boolean;
|
|
49
|
+
can_direct_task: boolean;
|
|
50
|
+
is_blocked: boolean;
|
|
51
|
+
interaction_count: number;
|
|
52
|
+
success_count: number;
|
|
53
|
+
last_interaction_at?: string;
|
|
54
|
+
origins: Origin[];
|
|
55
|
+
created_at?: string;
|
|
56
|
+
}
|
|
57
|
+
export interface Origin {
|
|
58
|
+
origin_type: string;
|
|
59
|
+
origin_status: string;
|
|
60
|
+
source_id?: string;
|
|
61
|
+
}
|
|
62
|
+
export interface Introduction {
|
|
63
|
+
id: string;
|
|
64
|
+
introducer_id: string;
|
|
65
|
+
target_a_id: string;
|
|
66
|
+
target_b_id: string;
|
|
67
|
+
reason?: string;
|
|
68
|
+
status: string;
|
|
69
|
+
expires_at?: string;
|
|
70
|
+
created_at?: string;
|
|
71
|
+
}
|
|
72
|
+
export interface BidirectionalRelationship {
|
|
73
|
+
me_to_them?: Relationship;
|
|
74
|
+
them_to_me?: Relationship;
|
|
75
|
+
mutual_circles: string[];
|
|
76
|
+
}
|
|
77
|
+
export interface Circle {
|
|
78
|
+
id: string;
|
|
79
|
+
name: string;
|
|
80
|
+
description?: string;
|
|
81
|
+
owner_agent_id: string;
|
|
82
|
+
join_mode: string;
|
|
83
|
+
contact_mode: string;
|
|
84
|
+
member_count: number;
|
|
85
|
+
max_members: number;
|
|
86
|
+
is_active: boolean;
|
|
87
|
+
invite_link_token?: string;
|
|
88
|
+
created_at?: string;
|
|
89
|
+
}
|
|
90
|
+
export interface Intent {
|
|
91
|
+
id: string;
|
|
92
|
+
from_agent_id: string;
|
|
93
|
+
category: string;
|
|
94
|
+
description: string;
|
|
95
|
+
structured_requirements: Record<string, unknown>;
|
|
96
|
+
audience_scope: string;
|
|
97
|
+
status: string;
|
|
98
|
+
max_matches: number;
|
|
99
|
+
ttl_hours: number;
|
|
100
|
+
expires_at: string;
|
|
101
|
+
created_at: string;
|
|
102
|
+
}
|
|
103
|
+
export interface Task {
|
|
104
|
+
id: string;
|
|
105
|
+
from_agent_id: string;
|
|
106
|
+
to_agent_id: string;
|
|
107
|
+
intent_id?: string;
|
|
108
|
+
task_type: string;
|
|
109
|
+
description?: string;
|
|
110
|
+
risk_level: "R0" | "R1" | "R2" | "R3";
|
|
111
|
+
status: string;
|
|
112
|
+
requires_human_confirm: boolean;
|
|
113
|
+
human_confirm_channel?: string;
|
|
114
|
+
human_confirm_deadline?: string;
|
|
115
|
+
approval_url?: string;
|
|
116
|
+
delivery_attempts: number;
|
|
117
|
+
expires_at?: string;
|
|
118
|
+
created_at: string;
|
|
119
|
+
updated_at: string;
|
|
120
|
+
completed_at?: string;
|
|
121
|
+
cancelled_at?: string;
|
|
122
|
+
}
|
|
123
|
+
export interface Match {
|
|
124
|
+
agent_id: string;
|
|
125
|
+
display_name: string;
|
|
126
|
+
agent_type: string;
|
|
127
|
+
verification_level: string;
|
|
128
|
+
trust_tier?: string;
|
|
129
|
+
match_score: number;
|
|
130
|
+
reasons: string[];
|
|
131
|
+
badges: string[];
|
|
132
|
+
}
|
|
133
|
+
export interface PaginatedList<T> {
|
|
134
|
+
data: T[];
|
|
135
|
+
next_cursor?: string;
|
|
136
|
+
has_more: boolean;
|
|
137
|
+
}
|
|
138
|
+
export interface SSEvent {
|
|
139
|
+
event: string;
|
|
140
|
+
data: unknown;
|
|
141
|
+
id?: string;
|
|
142
|
+
}
|
|
143
|
+
export interface ErrorResponse {
|
|
144
|
+
error: {
|
|
145
|
+
code: string;
|
|
146
|
+
message: string;
|
|
147
|
+
details?: Record<string, unknown>;
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
export interface CardEnvelope {
|
|
151
|
+
card_type: "task_approval" | "match_result";
|
|
152
|
+
card_version: string;
|
|
153
|
+
card_id: string;
|
|
154
|
+
source: "seabay";
|
|
155
|
+
created_at: string;
|
|
156
|
+
expires_at: string;
|
|
157
|
+
locale: string;
|
|
158
|
+
blocks: CardBlock[];
|
|
159
|
+
actions: CardAction[];
|
|
160
|
+
fallback_text: string;
|
|
161
|
+
callback_base_url: string;
|
|
162
|
+
auth_hint: string;
|
|
163
|
+
}
|
|
164
|
+
export type CardBlock = {
|
|
165
|
+
type: "header";
|
|
166
|
+
text: string;
|
|
167
|
+
} | {
|
|
168
|
+
type: "section";
|
|
169
|
+
text: string;
|
|
170
|
+
fields?: {
|
|
171
|
+
label: string;
|
|
172
|
+
value: string;
|
|
173
|
+
}[];
|
|
174
|
+
} | {
|
|
175
|
+
type: "divider";
|
|
176
|
+
} | {
|
|
177
|
+
type: "badge_row";
|
|
178
|
+
badges: {
|
|
179
|
+
type: string;
|
|
180
|
+
label: string;
|
|
181
|
+
}[];
|
|
182
|
+
} | {
|
|
183
|
+
type: "risk_banner";
|
|
184
|
+
risk_level: string;
|
|
185
|
+
message: string;
|
|
186
|
+
} | {
|
|
187
|
+
type: "agent_summary";
|
|
188
|
+
agent_id: string;
|
|
189
|
+
name: string;
|
|
190
|
+
agent_type: string;
|
|
191
|
+
verification_level: string;
|
|
192
|
+
status: string;
|
|
193
|
+
} | {
|
|
194
|
+
type: "reason_list";
|
|
195
|
+
reasons: string[];
|
|
196
|
+
} | {
|
|
197
|
+
type: "key_value";
|
|
198
|
+
key: string;
|
|
199
|
+
value: string;
|
|
200
|
+
} | {
|
|
201
|
+
type: "context";
|
|
202
|
+
text: string;
|
|
203
|
+
};
|
|
204
|
+
export type CardAction = {
|
|
205
|
+
type: "callback_button";
|
|
206
|
+
label: string;
|
|
207
|
+
style: "primary" | "danger" | "default";
|
|
208
|
+
callback_method: string;
|
|
209
|
+
callback_path: string;
|
|
210
|
+
callback_body: Record<string, unknown>;
|
|
211
|
+
confirm?: {
|
|
212
|
+
title: string;
|
|
213
|
+
text: string;
|
|
214
|
+
confirm_label: string;
|
|
215
|
+
cancel_label: string;
|
|
216
|
+
};
|
|
217
|
+
} | {
|
|
218
|
+
type: "open_url";
|
|
219
|
+
label: string;
|
|
220
|
+
url: string;
|
|
221
|
+
style: string;
|
|
222
|
+
} | {
|
|
223
|
+
type: "copy_command";
|
|
224
|
+
label: string;
|
|
225
|
+
command: string;
|
|
226
|
+
};
|
|
227
|
+
//# 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":";AAAA,+CAA+C"}
|
package/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@seabayai/sdk",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "JavaScript/TypeScript SDK for Seabay",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"license": "Apache-2.0",
|
|
8
|
+
"author": "Avan Mo",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "https://github.com/seabayai/seabay"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://seabay.ai",
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"clean": "rm -rf dist"
|
|
17
|
+
},
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"typescript": "^5.6.0"
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist",
|
|
23
|
+
"src"
|
|
24
|
+
]
|
|
25
|
+
}
|
package/src/client.ts
ADDED
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Seabay TypeScript Client
|
|
3
|
+
*
|
|
4
|
+
* Lightweight wrapper around Seabay API.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type {
|
|
8
|
+
Agent,
|
|
9
|
+
BidirectionalRelationship,
|
|
10
|
+
Circle,
|
|
11
|
+
Intent,
|
|
12
|
+
Introduction,
|
|
13
|
+
Match,
|
|
14
|
+
PaginatedList,
|
|
15
|
+
RegisterResult,
|
|
16
|
+
Relationship,
|
|
17
|
+
SSEvent,
|
|
18
|
+
Task,
|
|
19
|
+
} from "./types";
|
|
20
|
+
|
|
21
|
+
const DEFAULT_BASE_URL = "https://seabay.ai/v1";
|
|
22
|
+
|
|
23
|
+
export class SeabayClient {
|
|
24
|
+
private baseUrl: string;
|
|
25
|
+
private apiKey: string;
|
|
26
|
+
|
|
27
|
+
constructor(apiKey: string, baseUrl: string = DEFAULT_BASE_URL) {
|
|
28
|
+
this.apiKey = apiKey;
|
|
29
|
+
this.baseUrl = baseUrl.replace(/\/+$/, "");
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
private async request<T>(method: string, path: string, body?: unknown, params?: Record<string, string>): Promise<T> {
|
|
33
|
+
const url = new URL(`${this.baseUrl}${path}`);
|
|
34
|
+
if (params) {
|
|
35
|
+
Object.entries(params).forEach(([k, v]) => url.searchParams.set(k, v));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const resp = await fetch(url.toString(), {
|
|
39
|
+
method,
|
|
40
|
+
headers: {
|
|
41
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
42
|
+
"Content-Type": "application/json",
|
|
43
|
+
},
|
|
44
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
if (!resp.ok) {
|
|
48
|
+
const error = await resp.json().catch(() => ({ error: { code: "unknown", message: resp.statusText } }));
|
|
49
|
+
throw new Error(`Seabay API Error: ${error.error?.code} — ${error.error?.message}`);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return resp.json() as Promise<T>;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// ── Agent ──
|
|
56
|
+
|
|
57
|
+
static async register(slug: string, displayName: string, agentType = "personal", baseUrl = DEFAULT_BASE_URL): Promise<RegisterResult> {
|
|
58
|
+
const resp = await fetch(`${baseUrl}/agents/register`, {
|
|
59
|
+
method: "POST",
|
|
60
|
+
headers: { "Content-Type": "application/json" },
|
|
61
|
+
body: JSON.stringify({ slug, display_name: displayName, agent_type: agentType }),
|
|
62
|
+
});
|
|
63
|
+
if (!resp.ok) throw new Error("Registration failed");
|
|
64
|
+
return resp.json() as Promise<RegisterResult>;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
getAgent(agentId: string): Promise<Agent> {
|
|
68
|
+
return this.request("GET", `/agents/${agentId}`);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
updateAgent(agentId: string, data: Partial<Agent>): Promise<Agent> {
|
|
72
|
+
return this.request("PATCH", `/agents/${agentId}`, data);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
searchAgents(params: Record<string, string>): Promise<PaginatedList<Agent>> {
|
|
76
|
+
return this.request("GET", "/agents/search", undefined, params);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// ── Relationships ──
|
|
80
|
+
|
|
81
|
+
importRelationship(toAgentId: string, originType = "imported_contact"): Promise<Relationship> {
|
|
82
|
+
return this.request("POST", "/relationships/import", { to_agent_id: toAgentId, origin_type: originType });
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
claimRelationship(claimValue: string, claimType = "handle"): Promise<Relationship> {
|
|
86
|
+
return this.request("POST", "/relationships/claim", { claim_value: claimValue, claim_type: claimType });
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
listRelationships(params?: Record<string, string>): Promise<PaginatedList<Relationship>> {
|
|
90
|
+
return this.request("GET", "/relationships/my", undefined, params);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
getRelationship(agentId: string): Promise<BidirectionalRelationship> {
|
|
94
|
+
return this.request("GET", `/relationships/${agentId}`);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
blockAgent(agentId: string, block = true): Promise<{ agent_id: string; is_blocked: boolean }> {
|
|
98
|
+
return this.request("POST", `/relationships/${agentId}/block`, { block });
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
starAgent(agentId: string, starred = true): Promise<{ agent_id: string; starred: boolean }> {
|
|
102
|
+
return this.request("PUT", `/relationships/${agentId}/star`, { starred });
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// ── Introductions ──
|
|
106
|
+
|
|
107
|
+
introduce(targetAId: string, targetBId: string, reason: string): Promise<Introduction> {
|
|
108
|
+
return this.request("POST", "/relationships/introduce", { target_a_id: targetAId, target_b_id: targetBId, reason });
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
acceptIntroduction(introductionId: string): Promise<{ id: string; status: string }> {
|
|
112
|
+
return this.request("POST", `/relationships/introduce/${introductionId}/accept`);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
declineIntroduction(introductionId: string): Promise<{ id: string; status: string }> {
|
|
116
|
+
return this.request("POST", `/relationships/introduce/${introductionId}/decline`);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// ── Circles ──
|
|
120
|
+
|
|
121
|
+
createCircle(name: string, options?: Partial<Circle>): Promise<Circle> {
|
|
122
|
+
return this.request("POST", "/circles", { name, ...options });
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
getCircle(circleId: string): Promise<Circle> {
|
|
126
|
+
return this.request("GET", `/circles/${circleId}`);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
updateCircle(circleId: string, data: Partial<Circle>): Promise<Circle> {
|
|
130
|
+
return this.request("PATCH", `/circles/${circleId}`, data);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
joinCircle(circleId: string, inviteToken?: string): Promise<{ status: string }> {
|
|
134
|
+
return this.request("POST", `/circles/${circleId}/join`, { invite_token: inviteToken });
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
submitJoinRequest(circleId: string, message = ""): Promise<{ id: string; status: string }> {
|
|
138
|
+
return this.request("POST", `/circles/${circleId}/join-requests`, { message });
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
listJoinRequests(circleId: string): Promise<{ data: Array<{ id: string; agent_id: string; message: string; status: string }> }> {
|
|
142
|
+
return this.request("GET", `/circles/${circleId}/join-requests`);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
approveJoinRequest(circleId: string, requestId: string): Promise<{ id: string; status: string }> {
|
|
146
|
+
return this.request("POST", `/circles/${circleId}/join-requests/${requestId}/approve`);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
rejectJoinRequest(circleId: string, requestId: string): Promise<{ id: string; status: string }> {
|
|
150
|
+
return this.request("POST", `/circles/${circleId}/join-requests/${requestId}/reject`);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
listCircleMembers(circleId: string): Promise<{ data: Array<{ agent_id: string; display_name: string; role: string }> }> {
|
|
154
|
+
return this.request("GET", `/circles/${circleId}/members`);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// ── Intents ──
|
|
158
|
+
|
|
159
|
+
createIntent(category: string, description: string, options?: Partial<Intent>): Promise<Intent> {
|
|
160
|
+
return this.request("POST", "/intents", { category, description, ...options });
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
getIntent(intentId: string): Promise<Intent> {
|
|
164
|
+
return this.request("GET", `/intents/${intentId}`);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
getMatches(intentId: string): Promise<{ data: Match[]; total: number }> {
|
|
168
|
+
return this.request("GET", `/intents/${intentId}/matches`);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
selectMatch(intentId: string, agentId: string, options?: { description?: string; payload_ref?: string }): Promise<{ task_id: string; risk_level: string; status: string }> {
|
|
172
|
+
return this.request("POST", `/intents/${intentId}/select`, { agent_id: agentId, ...options });
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
cancelIntent(intentId: string): Promise<Intent> {
|
|
176
|
+
return this.request("POST", `/intents/${intentId}/cancel`);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// ── Tasks ──
|
|
180
|
+
|
|
181
|
+
createTask(toAgentId: string, taskType: string, description: string, options?: Partial<Task>): Promise<Task> {
|
|
182
|
+
return this.request("POST", "/tasks", { to_agent_id: toAgentId, task_type: taskType, description, ...options });
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
getTask(taskId: string): Promise<Task> {
|
|
186
|
+
return this.request("GET", `/tasks/${taskId}`);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
getInbox(params?: Record<string, string>): Promise<PaginatedList<Task>> {
|
|
190
|
+
return this.request("GET", "/tasks/inbox", undefined, params);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
acceptTask(taskId: string): Promise<Task> {
|
|
194
|
+
return this.request("POST", `/tasks/${taskId}/accept`);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
declineTask(taskId: string, reason?: string): Promise<Task> {
|
|
198
|
+
return this.request("POST", `/tasks/${taskId}/decline`, { reason });
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
completeTask(taskId: string, rating?: number, notes?: string): Promise<Task> {
|
|
202
|
+
return this.request("POST", `/tasks/${taskId}/complete`, { rating, notes });
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
cancelTask(taskId: string, reason?: string): Promise<Task> {
|
|
206
|
+
return this.request("POST", `/tasks/${taskId}/cancel`, { reason });
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
confirmHuman(taskId: string, token: string, confirmed = true): Promise<Task> {
|
|
210
|
+
return this.request("POST", `/tasks/${taskId}/confirm-human`, { token, confirmed });
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// ── Verification ──
|
|
214
|
+
|
|
215
|
+
startEmailVerification(email: string): Promise<{ verification_id: string; status: string }> {
|
|
216
|
+
return this.request("POST", "/verifications/email/start", undefined, { email });
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
completeEmailVerification(verificationId: string, code: string): Promise<{ verification_id: string; status: string }> {
|
|
220
|
+
return this.request("POST", "/verifications/email/complete", undefined, { verification_id: verificationId, code });
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
startGithubVerification(): Promise<{ verification_id: string; status: string }> {
|
|
224
|
+
return this.request("POST", "/verifications/github/start");
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
startDomainVerification(domain: string): Promise<{ verification_id: string; dns_record_value: string }> {
|
|
228
|
+
return this.request("POST", "/verifications/domain/start", undefined, { domain });
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
completeDomainVerification(verificationId: string): Promise<{ verification_id: string; status: string }> {
|
|
232
|
+
return this.request("POST", "/verifications/domain/complete", undefined, { verification_id: verificationId });
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// ── Reports ──
|
|
236
|
+
|
|
237
|
+
reportAgent(agentId: string, reasonCode: string, notes?: string): Promise<{ report_id: string; status: string }> {
|
|
238
|
+
const params: Record<string, string> = { reason_code: reasonCode };
|
|
239
|
+
if (notes) params.notes = notes;
|
|
240
|
+
return this.request("POST", `/agents/${agentId}/report`, undefined, params);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// ── Events (SSE) ──
|
|
244
|
+
|
|
245
|
+
async *eventStream(): AsyncGenerator<SSEvent> {
|
|
246
|
+
const resp = await fetch(`${this.baseUrl}/events/stream`, {
|
|
247
|
+
headers: {
|
|
248
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
249
|
+
Accept: "text/event-stream",
|
|
250
|
+
},
|
|
251
|
+
});
|
|
252
|
+
if (!resp.ok) throw new Error("SSE connection failed");
|
|
253
|
+
if (!resp.body) throw new Error("No response body");
|
|
254
|
+
|
|
255
|
+
const reader = resp.body.getReader();
|
|
256
|
+
const decoder = new TextDecoder();
|
|
257
|
+
let buffer = "";
|
|
258
|
+
let eventType: string | undefined;
|
|
259
|
+
let dataLines: string[] = [];
|
|
260
|
+
let eventId: string | undefined;
|
|
261
|
+
|
|
262
|
+
while (true) {
|
|
263
|
+
const { done, value } = await reader.read();
|
|
264
|
+
if (done) break;
|
|
265
|
+
|
|
266
|
+
buffer += decoder.decode(value, { stream: true });
|
|
267
|
+
const lines = buffer.split("\n");
|
|
268
|
+
buffer = lines.pop() || "";
|
|
269
|
+
|
|
270
|
+
for (const line of lines) {
|
|
271
|
+
if (line.startsWith("event: ")) {
|
|
272
|
+
eventType = line.slice(7);
|
|
273
|
+
} else if (line.startsWith("data: ")) {
|
|
274
|
+
dataLines.push(line.slice(6));
|
|
275
|
+
} else if (line.startsWith("id: ")) {
|
|
276
|
+
eventId = line.slice(4);
|
|
277
|
+
} else if (line === "" && eventType) {
|
|
278
|
+
const raw = dataLines.join("\n");
|
|
279
|
+
let parsed: unknown;
|
|
280
|
+
try { parsed = JSON.parse(raw); } catch { parsed = raw; }
|
|
281
|
+
yield { event: eventType, data: parsed, id: eventId };
|
|
282
|
+
eventType = undefined;
|
|
283
|
+
dataLines = [];
|
|
284
|
+
eventId = undefined;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
eventStatus(): Promise<{ agent_id: string; active_connections: number; is_connected: boolean }> {
|
|
291
|
+
return this.request("GET", "/events/status");
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// ── Self Info ──
|
|
295
|
+
|
|
296
|
+
getMyAgent(): Promise<Agent> {
|
|
297
|
+
return this.request("GET", "/agents/me");
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
getMyStats(): Promise<Record<string, unknown>> {
|
|
301
|
+
return this.request("GET", "/agents/me/stats");
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
getMyActivity(params?: Record<string, string>): Promise<PaginatedList<Record<string, unknown>>> {
|
|
305
|
+
return this.request("GET", "/agents/me/activity", undefined, params);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
listMyVerifications(method?: string): Promise<{ data: Record<string, unknown>[] }> {
|
|
309
|
+
const params: Record<string, string> = {};
|
|
310
|
+
if (method) params.method = method;
|
|
311
|
+
return this.request("GET", "/verifications/my", undefined, params);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
// ── Public ──
|
|
315
|
+
|
|
316
|
+
listPublicAgents(params?: Record<string, string>): Promise<PaginatedList<Agent>> {
|
|
317
|
+
return this.request("GET", "/public/agents", undefined, params);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
getPublicAgent(slug: string): Promise<Agent> {
|
|
321
|
+
return this.request("GET", `/public/agents/${slug}`);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
getPublicAgentActivity(slug: string): Promise<Record<string, unknown>> {
|
|
325
|
+
return this.request("GET", `/public/agents/${slug}/activity`);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
// ── Health ──
|
|
329
|
+
|
|
330
|
+
health(): Promise<{ status: string; version: string }> {
|
|
331
|
+
return this.request("GET", "/health");
|
|
332
|
+
}
|
|
333
|
+
}
|
package/src/index.ts
ADDED
package/src/types.ts
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/** Seabay TypeScript SDK — Type Definitions */
|
|
2
|
+
|
|
3
|
+
export interface Agent {
|
|
4
|
+
id: string;
|
|
5
|
+
slug: string;
|
|
6
|
+
display_name: string;
|
|
7
|
+
agent_type: "service" | "personal";
|
|
8
|
+
owner_type: string;
|
|
9
|
+
runtime?: string;
|
|
10
|
+
endpoint?: string;
|
|
11
|
+
verification_level: string;
|
|
12
|
+
visibility_scope: string;
|
|
13
|
+
contact_policy: string;
|
|
14
|
+
introduction_policy: string;
|
|
15
|
+
status: string;
|
|
16
|
+
last_seen_at?: string;
|
|
17
|
+
profile?: Profile;
|
|
18
|
+
region: string;
|
|
19
|
+
created_at: string;
|
|
20
|
+
updated_at: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface Profile {
|
|
24
|
+
bio?: string;
|
|
25
|
+
skills: string[];
|
|
26
|
+
risk_capabilities: string[];
|
|
27
|
+
interests: string[];
|
|
28
|
+
languages: string[];
|
|
29
|
+
location_city?: string;
|
|
30
|
+
location_country?: string;
|
|
31
|
+
timezone?: string;
|
|
32
|
+
can_offer: string[];
|
|
33
|
+
looking_for: string[];
|
|
34
|
+
pricing_hint?: string;
|
|
35
|
+
homepage_url?: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface RegisterResult {
|
|
39
|
+
id: string;
|
|
40
|
+
slug: string;
|
|
41
|
+
display_name: string;
|
|
42
|
+
agent_type: string;
|
|
43
|
+
api_key: string;
|
|
44
|
+
created_at: string;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface Relationship {
|
|
48
|
+
id: string;
|
|
49
|
+
from_agent_id: string;
|
|
50
|
+
to_agent_id: string;
|
|
51
|
+
strength: "new" | "acquaintance" | "trusted" | "frequent";
|
|
52
|
+
starred: boolean;
|
|
53
|
+
can_direct_task: boolean;
|
|
54
|
+
is_blocked: boolean;
|
|
55
|
+
interaction_count: number;
|
|
56
|
+
success_count: number;
|
|
57
|
+
last_interaction_at?: string;
|
|
58
|
+
origins: Origin[];
|
|
59
|
+
created_at?: string;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export interface Origin {
|
|
63
|
+
origin_type: string;
|
|
64
|
+
origin_status: string;
|
|
65
|
+
source_id?: string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface Introduction {
|
|
69
|
+
id: string;
|
|
70
|
+
introducer_id: string;
|
|
71
|
+
target_a_id: string;
|
|
72
|
+
target_b_id: string;
|
|
73
|
+
reason?: string;
|
|
74
|
+
status: string;
|
|
75
|
+
expires_at?: string;
|
|
76
|
+
created_at?: string;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface BidirectionalRelationship {
|
|
80
|
+
me_to_them?: Relationship;
|
|
81
|
+
them_to_me?: Relationship;
|
|
82
|
+
mutual_circles: string[];
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export interface Circle {
|
|
86
|
+
id: string;
|
|
87
|
+
name: string;
|
|
88
|
+
description?: string;
|
|
89
|
+
owner_agent_id: string;
|
|
90
|
+
join_mode: string;
|
|
91
|
+
contact_mode: string;
|
|
92
|
+
member_count: number;
|
|
93
|
+
max_members: number;
|
|
94
|
+
is_active: boolean;
|
|
95
|
+
invite_link_token?: string;
|
|
96
|
+
created_at?: string;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export interface Intent {
|
|
100
|
+
id: string;
|
|
101
|
+
from_agent_id: string;
|
|
102
|
+
category: string;
|
|
103
|
+
description: string;
|
|
104
|
+
structured_requirements: Record<string, unknown>;
|
|
105
|
+
audience_scope: string;
|
|
106
|
+
status: string;
|
|
107
|
+
max_matches: number;
|
|
108
|
+
ttl_hours: number;
|
|
109
|
+
expires_at: string;
|
|
110
|
+
created_at: string;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export interface Task {
|
|
114
|
+
id: string;
|
|
115
|
+
from_agent_id: string;
|
|
116
|
+
to_agent_id: string;
|
|
117
|
+
intent_id?: string;
|
|
118
|
+
task_type: string;
|
|
119
|
+
description?: string;
|
|
120
|
+
risk_level: "R0" | "R1" | "R2" | "R3";
|
|
121
|
+
status: string;
|
|
122
|
+
requires_human_confirm: boolean;
|
|
123
|
+
human_confirm_channel?: string;
|
|
124
|
+
human_confirm_deadline?: string;
|
|
125
|
+
approval_url?: string;
|
|
126
|
+
delivery_attempts: number;
|
|
127
|
+
expires_at?: string;
|
|
128
|
+
created_at: string;
|
|
129
|
+
updated_at: string;
|
|
130
|
+
completed_at?: string;
|
|
131
|
+
cancelled_at?: string;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export interface Match {
|
|
135
|
+
agent_id: string;
|
|
136
|
+
display_name: string;
|
|
137
|
+
agent_type: string;
|
|
138
|
+
verification_level: string;
|
|
139
|
+
trust_tier?: string;
|
|
140
|
+
match_score: number;
|
|
141
|
+
reasons: string[];
|
|
142
|
+
badges: string[];
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export interface PaginatedList<T> {
|
|
146
|
+
data: T[];
|
|
147
|
+
next_cursor?: string;
|
|
148
|
+
has_more: boolean;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export interface SSEvent {
|
|
152
|
+
event: string;
|
|
153
|
+
data: unknown;
|
|
154
|
+
id?: string;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export interface ErrorResponse {
|
|
158
|
+
error: {
|
|
159
|
+
code: string;
|
|
160
|
+
message: string;
|
|
161
|
+
details?: Record<string, unknown>;
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export interface CardEnvelope {
|
|
166
|
+
card_type: "task_approval" | "match_result";
|
|
167
|
+
card_version: string;
|
|
168
|
+
card_id: string;
|
|
169
|
+
source: "seabay";
|
|
170
|
+
created_at: string;
|
|
171
|
+
expires_at: string;
|
|
172
|
+
locale: string;
|
|
173
|
+
blocks: CardBlock[];
|
|
174
|
+
actions: CardAction[];
|
|
175
|
+
fallback_text: string;
|
|
176
|
+
callback_base_url: string;
|
|
177
|
+
auth_hint: string;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export type CardBlock =
|
|
181
|
+
| { type: "header"; text: string }
|
|
182
|
+
| { type: "section"; text: string; fields?: { label: string; value: string }[] }
|
|
183
|
+
| { type: "divider" }
|
|
184
|
+
| { type: "badge_row"; badges: { type: string; label: string }[] }
|
|
185
|
+
| { type: "risk_banner"; risk_level: string; message: string }
|
|
186
|
+
| { type: "agent_summary"; agent_id: string; name: string; agent_type: string; verification_level: string; status: string }
|
|
187
|
+
| { type: "reason_list"; reasons: string[] }
|
|
188
|
+
| { type: "key_value"; key: string; value: string }
|
|
189
|
+
| { type: "context"; text: string };
|
|
190
|
+
|
|
191
|
+
export type CardAction =
|
|
192
|
+
| {
|
|
193
|
+
type: "callback_button";
|
|
194
|
+
label: string;
|
|
195
|
+
style: "primary" | "danger" | "default";
|
|
196
|
+
callback_method: string;
|
|
197
|
+
callback_path: string;
|
|
198
|
+
callback_body: Record<string, unknown>;
|
|
199
|
+
confirm?: { title: string; text: string; confirm_label: string; cancel_label: string };
|
|
200
|
+
}
|
|
201
|
+
| { type: "open_url"; label: string; url: string; style: string }
|
|
202
|
+
| { type: "copy_command"; label: string; command: string };
|