@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.
@@ -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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"}
@@ -0,0 +1,4 @@
1
+ /** Seabay JavaScript/TypeScript SDK */
2
+ export * from "./types";
3
+ export { SeabayClient } from "./client";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -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,4 @@
1
+ "use strict";
2
+ /** Seabay TypeScript SDK — Type Definitions */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=types.js.map
@@ -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
@@ -0,0 +1,4 @@
1
+ /** Seabay JavaScript/TypeScript SDK */
2
+
3
+ export * from "./types";
4
+ export { SeabayClient } from "./client";
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 };