@gensis-agent/sdk 0.1.0-alpha.2

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,49 @@
1
+ import type { AgentOptions, RunResult, StreamEvent } from "./types.js";
2
+ /**
3
+ * Genesis Agent — connect to the platform, send messages, receive streaming responses.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * const agent = new Agent({
8
+ * apiKey: 'gns_xxx',
9
+ * model: 'claude-sonnet-4-20250514',
10
+ * systemPrompt: 'You are a helpful assistant.',
11
+ * tools: [searchDB],
12
+ * builtinTools: ['web_search'],
13
+ * });
14
+ *
15
+ * const result = await agent.run('Hello!');
16
+ * console.log(result.text);
17
+ * ```
18
+ */
19
+ export declare class Agent {
20
+ private readonly options;
21
+ private socket;
22
+ private toolMap;
23
+ constructor(options: AgentOptions);
24
+ /**
25
+ * Run the agent with a message and wait for completion.
26
+ * Returns the final result with text and usage.
27
+ */
28
+ run(message: string): Promise<RunResult>;
29
+ /**
30
+ * Stream agent events as an async iterable.
31
+ */
32
+ stream(message: string): AsyncGenerator<StreamEvent>;
33
+ /**
34
+ * Send a follow-up message in an existing session.
35
+ */
36
+ message(sessionId: string, message: string): Promise<RunResult>;
37
+ /**
38
+ * Cancel a running session.
39
+ */
40
+ cancel(sessionId: string): void;
41
+ /**
42
+ * Disconnect from the server.
43
+ */
44
+ disconnect(): void;
45
+ private getOrCreateSocket;
46
+ private ensureConnected;
47
+ private buildConfig;
48
+ }
49
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAY,MAAM,YAAY,CAAC;AAEjF;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,OAAO,CAAwB;gBAE3B,OAAO,EAAE,YAAY;IAcjC;;;OAGG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IA0B9C;;OAEG;IACI,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC;IAkI3D;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IA0ErE;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,UAAU,IAAI,IAAI;IASlB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,WAAW;CAmBpB"}
package/dist/agent.js ADDED
@@ -0,0 +1,318 @@
1
+ import { zodToJsonSchema } from "zod-to-json-schema";
2
+ import { ServerEvents, ClientEvents, DEFAULT_MODEL, } from "@gensis-agent/core";
3
+ import { createConnection } from "./connection.js";
4
+ import { resolveSkills } from "./skill.js";
5
+ /**
6
+ * Genesis Agent — connect to the platform, send messages, receive streaming responses.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const agent = new Agent({
11
+ * apiKey: 'gns_xxx',
12
+ * model: 'claude-sonnet-4-20250514',
13
+ * systemPrompt: 'You are a helpful assistant.',
14
+ * tools: [searchDB],
15
+ * builtinTools: ['web_search'],
16
+ * });
17
+ *
18
+ * const result = await agent.run('Hello!');
19
+ * console.log(result.text);
20
+ * ```
21
+ */
22
+ export class Agent {
23
+ options;
24
+ socket = null;
25
+ toolMap;
26
+ constructor(options) {
27
+ this.options = {
28
+ serverUrl: "http://localhost:4000",
29
+ model: DEFAULT_MODEL,
30
+ builtinTools: [],
31
+ tools: [],
32
+ skills: [],
33
+ ...options,
34
+ };
35
+ this.toolMap = new Map((this.options.tools ?? []).map((t) => [t.name, t]));
36
+ }
37
+ /**
38
+ * Run the agent with a message and wait for completion.
39
+ * Returns the final result with text and usage.
40
+ */
41
+ async run(message) {
42
+ let result = null;
43
+ const stream = this.stream(message);
44
+ for await (const event of stream) {
45
+ if (event.type === "complete") {
46
+ result = {
47
+ sessionId: result?.sessionId ?? "",
48
+ text: event.text,
49
+ usage: event.usage,
50
+ };
51
+ }
52
+ else if (event.type === "session_created") {
53
+ result = { sessionId: event.sessionId, text: "", usage: undefined };
54
+ }
55
+ else if (event.type === "error") {
56
+ throw new Error(`[${event.code}] ${event.message}`);
57
+ }
58
+ }
59
+ if (!result) {
60
+ throw new Error("Agent run completed without a result");
61
+ }
62
+ return result;
63
+ }
64
+ /**
65
+ * Stream agent events as an async iterable.
66
+ */
67
+ async *stream(message) {
68
+ const socket = this.getOrCreateSocket();
69
+ // Wait for connection
70
+ await this.ensureConnected(socket);
71
+ // Build session config
72
+ const config = this.buildConfig();
73
+ // Set up event queue
74
+ const queue = [];
75
+ let resolve = null;
76
+ let done = false;
77
+ const push = (event) => {
78
+ queue.push(event);
79
+ resolve?.();
80
+ };
81
+ // Register server event listeners
82
+ const onSessionCreated = (p) => {
83
+ push({ type: "session_created", sessionId: p.sessionId });
84
+ };
85
+ const onToken = (p) => {
86
+ push({ type: "token", token: p.token });
87
+ };
88
+ const onToolCall = (p) => {
89
+ push({
90
+ type: "tool_call",
91
+ name: p.toolCall.name,
92
+ args: p.toolCall.args,
93
+ location: p.location,
94
+ });
95
+ };
96
+ const onToolResult = (p) => {
97
+ push({
98
+ type: "tool_result",
99
+ callId: p.toolResult.callId,
100
+ success: p.toolResult.success,
101
+ output: p.toolResult.output,
102
+ });
103
+ };
104
+ const onComplete = (p) => {
105
+ push({
106
+ type: "complete",
107
+ text: p.message.content,
108
+ usage: p.usage
109
+ ? {
110
+ promptTokens: p.usage.promptTokens,
111
+ completionTokens: p.usage.completionTokens,
112
+ totalTokens: p.usage.totalTokens,
113
+ }
114
+ : undefined,
115
+ });
116
+ done = true;
117
+ resolve?.();
118
+ };
119
+ const onError = (p) => {
120
+ push({ type: "error", code: p.code, message: p.message });
121
+ done = true;
122
+ resolve?.();
123
+ };
124
+ // Handle server requesting SDK to execute a user-defined tool
125
+ const onToolExec = async (p) => {
126
+ const tool = this.toolMap.get(p.name);
127
+ if (!tool) {
128
+ socket.emit(ClientEvents.TOOL_RESULT, {
129
+ sessionId: p.sessionId,
130
+ callId: p.callId,
131
+ error: `Tool "${p.name}" not found in SDK`,
132
+ });
133
+ return;
134
+ }
135
+ try {
136
+ const parsed = tool.parameters.parse(p.args);
137
+ const result = await tool.execute(parsed);
138
+ socket.emit(ClientEvents.TOOL_RESULT, {
139
+ sessionId: p.sessionId,
140
+ callId: p.callId,
141
+ result,
142
+ });
143
+ }
144
+ catch (err) {
145
+ socket.emit(ClientEvents.TOOL_RESULT, {
146
+ sessionId: p.sessionId,
147
+ callId: p.callId,
148
+ error: err.message ?? String(err),
149
+ });
150
+ }
151
+ };
152
+ socket.on(ServerEvents.SESSION_CREATED, onSessionCreated);
153
+ socket.on(ServerEvents.AGENT_TOKEN, onToken);
154
+ socket.on(ServerEvents.AGENT_TOOL_CALL, onToolCall);
155
+ socket.on(ServerEvents.AGENT_TOOL_RESULT, onToolResult);
156
+ socket.on(ServerEvents.AGENT_COMPLETE, onComplete);
157
+ socket.on(ServerEvents.AGENT_ERROR, onError);
158
+ socket.on(ServerEvents.TOOL_CALL, onToolExec);
159
+ // Send create request
160
+ socket.emit(ClientEvents.AGENT_CREATE, { config, message });
161
+ try {
162
+ while (!done || queue.length > 0) {
163
+ if (queue.length > 0) {
164
+ yield queue.shift();
165
+ }
166
+ else if (!done) {
167
+ await new Promise((r) => {
168
+ resolve = r;
169
+ });
170
+ }
171
+ }
172
+ }
173
+ finally {
174
+ // Clean up listeners
175
+ socket.off(ServerEvents.SESSION_CREATED, onSessionCreated);
176
+ socket.off(ServerEvents.AGENT_TOKEN, onToken);
177
+ socket.off(ServerEvents.AGENT_TOOL_CALL, onToolCall);
178
+ socket.off(ServerEvents.AGENT_TOOL_RESULT, onToolResult);
179
+ socket.off(ServerEvents.AGENT_COMPLETE, onComplete);
180
+ socket.off(ServerEvents.AGENT_ERROR, onError);
181
+ socket.off(ServerEvents.TOOL_CALL, onToolExec);
182
+ }
183
+ }
184
+ /**
185
+ * Send a follow-up message in an existing session.
186
+ */
187
+ async message(sessionId, message) {
188
+ const socket = this.getOrCreateSocket();
189
+ await this.ensureConnected(socket);
190
+ let result = { sessionId, text: "", usage: undefined };
191
+ let done = false;
192
+ let resolveRun = null;
193
+ const onComplete = (p) => {
194
+ if (p.sessionId !== sessionId)
195
+ return;
196
+ result.text = p.message.content;
197
+ result.usage = p.usage
198
+ ? {
199
+ promptTokens: p.usage.promptTokens,
200
+ completionTokens: p.usage.completionTokens,
201
+ totalTokens: p.usage.totalTokens,
202
+ }
203
+ : undefined;
204
+ done = true;
205
+ resolveRun?.();
206
+ };
207
+ const onError = (p) => {
208
+ if (p.sessionId !== sessionId)
209
+ return;
210
+ done = true;
211
+ resolveRun?.();
212
+ };
213
+ const onToolExec = async (p) => {
214
+ if (p.sessionId !== sessionId)
215
+ return;
216
+ const tool = this.toolMap.get(p.name);
217
+ if (!tool) {
218
+ socket.emit(ClientEvents.TOOL_RESULT, {
219
+ sessionId: p.sessionId,
220
+ callId: p.callId,
221
+ error: `Tool "${p.name}" not found in SDK`,
222
+ });
223
+ return;
224
+ }
225
+ try {
226
+ const parsed = tool.parameters.parse(p.args);
227
+ const res = await tool.execute(parsed);
228
+ socket.emit(ClientEvents.TOOL_RESULT, {
229
+ sessionId: p.sessionId,
230
+ callId: p.callId,
231
+ result: res,
232
+ });
233
+ }
234
+ catch (err) {
235
+ socket.emit(ClientEvents.TOOL_RESULT, {
236
+ sessionId: p.sessionId,
237
+ callId: p.callId,
238
+ error: err.message ?? String(err),
239
+ });
240
+ }
241
+ };
242
+ socket.on(ServerEvents.AGENT_COMPLETE, onComplete);
243
+ socket.on(ServerEvents.AGENT_ERROR, onError);
244
+ socket.on(ServerEvents.TOOL_CALL, onToolExec);
245
+ socket.emit(ClientEvents.AGENT_MESSAGE, { sessionId, message });
246
+ await new Promise((r) => {
247
+ if (done)
248
+ return r();
249
+ resolveRun = r;
250
+ });
251
+ socket.off(ServerEvents.AGENT_COMPLETE, onComplete);
252
+ socket.off(ServerEvents.AGENT_ERROR, onError);
253
+ socket.off(ServerEvents.TOOL_CALL, onToolExec);
254
+ return result;
255
+ }
256
+ /**
257
+ * Cancel a running session.
258
+ */
259
+ cancel(sessionId) {
260
+ this.socket?.emit(ClientEvents.AGENT_CANCEL, { sessionId });
261
+ }
262
+ /**
263
+ * Disconnect from the server.
264
+ */
265
+ disconnect() {
266
+ this.socket?.disconnect();
267
+ this.socket = null;
268
+ }
269
+ // ---------------------------------------------------------------------------
270
+ // Private helpers
271
+ // ---------------------------------------------------------------------------
272
+ getOrCreateSocket() {
273
+ if (!this.socket || this.socket.disconnected) {
274
+ this.socket = createConnection({
275
+ serverUrl: this.options.serverUrl,
276
+ apiKey: this.options.apiKey,
277
+ });
278
+ }
279
+ return this.socket;
280
+ }
281
+ ensureConnected(socket) {
282
+ if (socket.connected)
283
+ return Promise.resolve();
284
+ return new Promise((resolve, reject) => {
285
+ const timeout = setTimeout(() => {
286
+ reject(new Error("Connection timeout"));
287
+ }, 10_000);
288
+ socket.once("connect", () => {
289
+ clearTimeout(timeout);
290
+ resolve();
291
+ });
292
+ socket.once("connect_error", (err) => {
293
+ clearTimeout(timeout);
294
+ reject(err);
295
+ });
296
+ if (!socket.active)
297
+ socket.connect();
298
+ });
299
+ }
300
+ buildConfig() {
301
+ const toolSchemas = (this.options.tools ?? []).map((t) => ({
302
+ name: t.name,
303
+ description: t.description,
304
+ parameters: zodToJsonSchema(t.parameters, { target: "openApi3" }),
305
+ }));
306
+ const skills = resolveSkills(this.options.skills ?? []);
307
+ return {
308
+ model: this.options.model,
309
+ systemPrompt: this.options.systemPrompt,
310
+ skills,
311
+ toolSchemas,
312
+ builtinTools: (this.options.builtinTools ?? []),
313
+ maxTokens: this.options.maxTokens,
314
+ temperature: this.options.temperature,
315
+ };
316
+ }
317
+ }
318
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type Socket } from "socket.io-client";
2
+ import type { ClientToServerEvents, ServerToClientEvents } from "@gensis-agent/core";
3
+ export type TypedSocket = Socket<ServerToClientEvents, ClientToServerEvents>;
4
+ export interface ConnectionOptions {
5
+ serverUrl: string;
6
+ apiKey: string;
7
+ }
8
+ /**
9
+ * Create a typed Socket.IO connection to the Genesis server.
10
+ */
11
+ export declare function createConnection(opts: ConnectionOptions): TypedSocket;
12
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAG5B,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;AAE7E,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,WAAW,CAYrE"}
@@ -0,0 +1,18 @@
1
+ import { io } from "socket.io-client";
2
+ import { SOCKET_PATH, SOCKET_PING_TIMEOUT } from "@gensis-agent/core";
3
+ /**
4
+ * Create a typed Socket.IO connection to the Genesis server.
5
+ */
6
+ export function createConnection(opts) {
7
+ const socket = io(`${opts.serverUrl}/agent`, {
8
+ path: SOCKET_PATH,
9
+ auth: { apiKey: opts.apiKey },
10
+ transports: ["websocket"],
11
+ reconnection: true,
12
+ reconnectionAttempts: 5,
13
+ reconnectionDelay: 1000,
14
+ timeout: SOCKET_PING_TIMEOUT,
15
+ });
16
+ return socket;
17
+ }
18
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAe,MAAM,kBAAkB,CAAC;AAKnD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAStE;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAuB;IACtD,MAAM,MAAM,GAAgB,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,QAAQ,EAAE;QACxD,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;QAC7B,UAAU,EAAE,CAAC,WAAW,CAAC;QACzB,YAAY,EAAE,IAAI;QAClB,oBAAoB,EAAE,CAAC;QACvB,iBAAiB,EAAE,IAAI;QACvB,OAAO,EAAE,mBAAmB;KAC7B,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { Agent } from "./agent.js";
2
+ export { tool } from "./tool.js";
3
+ export { loadSkill } from "./skill.js";
4
+ export type { AgentOptions, RunResult, StreamEvent, UserTool } from "./types.js";
5
+ export type { SkillContent, ToolSchema, BuiltinToolName } from "@gensis-agent/core";
6
+ export { AVAILABLE_MODELS, DEFAULT_MODEL, BUILTIN_TOOL_NAMES } from "@gensis-agent/core";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGjF,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export { Agent } from "./agent.js";
2
+ export { tool } from "./tool.js";
3
+ export { loadSkill } from "./skill.js";
4
+ export { AVAILABLE_MODELS, DEFAULT_MODEL, BUILTIN_TOOL_NAMES } from "@gensis-agent/core";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAKvC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { SkillContent } from "@gensis-agent/core";
2
+ /**
3
+ * Load a skill from a markdown file with YAML frontmatter.
4
+ *
5
+ * Expected format:
6
+ * ```markdown
7
+ * ---
8
+ * name: my-skill
9
+ * description: What this skill does
10
+ * ---
11
+ *
12
+ * Skill content in markdown...
13
+ * ```
14
+ */
15
+ export declare function loadSkill(filePath: string): SkillContent;
16
+ /**
17
+ * Resolve an array of skill paths or inline objects into SkillContent[].
18
+ */
19
+ export declare function resolveSkills(skills: Array<string | SkillContent>): SkillContent[];
20
+ //# sourceMappingURL=skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAaxD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,YAAY,EAAE,CAOlF"}
package/dist/skill.js ADDED
@@ -0,0 +1,39 @@
1
+ import { readFileSync } from "node:fs";
2
+ import matter from "gray-matter";
3
+ /**
4
+ * Load a skill from a markdown file with YAML frontmatter.
5
+ *
6
+ * Expected format:
7
+ * ```markdown
8
+ * ---
9
+ * name: my-skill
10
+ * description: What this skill does
11
+ * ---
12
+ *
13
+ * Skill content in markdown...
14
+ * ```
15
+ */
16
+ export function loadSkill(filePath) {
17
+ const raw = readFileSync(filePath, "utf-8");
18
+ const { data, content } = matter(raw);
19
+ if (!data.name) {
20
+ throw new Error(`Skill file ${filePath} is missing a 'name' in frontmatter`);
21
+ }
22
+ return {
23
+ name: data.name,
24
+ description: data.description ?? "",
25
+ content: content.trim(),
26
+ };
27
+ }
28
+ /**
29
+ * Resolve an array of skill paths or inline objects into SkillContent[].
30
+ */
31
+ export function resolveSkills(skills) {
32
+ return skills.map((s) => {
33
+ if (typeof s === "string") {
34
+ return loadSkill(s);
35
+ }
36
+ return s;
37
+ });
38
+ }
39
+ //# sourceMappingURL=skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB;IACxC,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,qCAAqC,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAc;QACzB,WAAW,EAAG,IAAI,CAAC,WAAsB,IAAI,EAAE;QAC/C,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;KACxB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAoC;IAChE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACtB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/tool.d.ts ADDED
@@ -0,0 +1,22 @@
1
+ import type { z } from "zod";
2
+ import type { UserTool } from "./types.js";
3
+ /**
4
+ * Helper to define a user tool with Zod schema validation.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * const searchDB = tool({
9
+ * name: 'search_db',
10
+ * description: 'Query the database',
11
+ * parameters: z.object({ query: z.string() }),
12
+ * execute: async ({ query }) => db.query(query),
13
+ * });
14
+ * ```
15
+ */
16
+ export declare function tool<TArgs>(config: {
17
+ name: string;
18
+ description: string;
19
+ parameters: z.ZodType<TArgs>;
20
+ execute: (args: TArgs) => Promise<unknown>;
21
+ }): UserTool<TArgs>;
22
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5C,GAAG,QAAQ,CAAC,KAAK,CAAC,CAOlB"}
package/dist/tool.js ADDED
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Helper to define a user tool with Zod schema validation.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * const searchDB = tool({
7
+ * name: 'search_db',
8
+ * description: 'Query the database',
9
+ * parameters: z.object({ query: z.string() }),
10
+ * execute: async ({ query }) => db.query(query),
11
+ * });
12
+ * ```
13
+ */
14
+ export function tool(config) {
15
+ return {
16
+ name: config.name,
17
+ description: config.description,
18
+ parameters: config.parameters,
19
+ execute: config.execute,
20
+ };
21
+ }
22
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,IAAI,CAAQ,MAK3B;IACC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,78 @@
1
+ import type { z } from "zod";
2
+ import type { SkillContent, BuiltinToolName } from "@gensis-agent/core";
3
+ /**
4
+ * User-facing agent configuration passed to `new Agent(...)`.
5
+ */
6
+ export interface AgentOptions {
7
+ /** Genesis API key (gns_xxx) */
8
+ apiKey: string;
9
+ /** Server URL. Defaults to http://localhost:4000 */
10
+ serverUrl?: string;
11
+ /** Model ID to use */
12
+ model?: string;
13
+ /** System prompt for the agent */
14
+ systemPrompt?: string;
15
+ /** Skill files or inline skill objects */
16
+ skills?: Array<string | SkillContent>;
17
+ /** User-defined tools */
18
+ tools?: UserTool[];
19
+ /** Built-in tools to enable (e.g. "bash", "web_search") */
20
+ builtinTools?: BuiltinToolName[];
21
+ /** Max tokens for model output */
22
+ maxTokens?: number;
23
+ /** Temperature for model output */
24
+ temperature?: number;
25
+ }
26
+ /**
27
+ * A user-defined tool created via the `tool()` helper.
28
+ */
29
+ export interface UserTool<TArgs = unknown> {
30
+ name: string;
31
+ description: string;
32
+ parameters: z.ZodType<TArgs>;
33
+ execute: (args: TArgs) => Promise<unknown>;
34
+ }
35
+ /**
36
+ * Result returned from `agent.run()`.
37
+ */
38
+ export interface RunResult {
39
+ /** The session ID on the server */
40
+ sessionId: string;
41
+ /** Final text response from the agent */
42
+ text: string;
43
+ /** Token usage for the entire run */
44
+ usage?: {
45
+ promptTokens: number;
46
+ completionTokens: number;
47
+ totalTokens: number;
48
+ };
49
+ }
50
+ /**
51
+ * Events emitted during `agent.stream()`.
52
+ */
53
+ export type StreamEvent = {
54
+ type: "session_created";
55
+ sessionId: string;
56
+ } | {
57
+ type: "token";
58
+ token: string;
59
+ } | {
60
+ type: "tool_call";
61
+ name: string;
62
+ args: Record<string, unknown>;
63
+ location: "server" | "sdk";
64
+ } | {
65
+ type: "tool_result";
66
+ callId: string;
67
+ success: boolean;
68
+ output: unknown;
69
+ } | {
70
+ type: "complete";
71
+ text: string;
72
+ usage?: RunResult["usage"];
73
+ } | {
74
+ type: "error";
75
+ code: string;
76
+ message: string;
77
+ };
78
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;IACtC,yBAAyB;IACzB,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;IACjC,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,KAAK,GAAG,OAAO;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAA;CAAE,GAC9F;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@gensis-agent/sdk",
3
+ "version": "0.1.0-alpha.2",
4
+ "description": "Genesis Agent Platform SDK — build autonomous AI agents with a single API call",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "keywords": [
22
+ "ai",
23
+ "agent",
24
+ "llm",
25
+ "gensis",
26
+ "sdk",
27
+ "anthropic",
28
+ "openai"
29
+ ],
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "https://github.com/gensis-agent/gensis",
33
+ "directory": "packages/sdk"
34
+ },
35
+ "scripts": {
36
+ "build": "tsc",
37
+ "dev": "tsc --watch",
38
+ "lint": "eslint src/",
39
+ "typecheck": "tsc --noEmit",
40
+ "clean": "rm -rf dist",
41
+ "prepublishOnly": "pnpm run build"
42
+ },
43
+ "dependencies": {
44
+ "@gensis-agent/core": "0.1.0-alpha.2",
45
+ "socket.io-client": "^4.8.0",
46
+ "zod-to-json-schema": "^3.24.0",
47
+ "gray-matter": "^4.0.3"
48
+ },
49
+ "devDependencies": {
50
+ "@gensis/tsconfig": "workspace:*",
51
+ "@types/node": "^22.0.0",
52
+ "typescript": "^5.7.0"
53
+ },
54
+ "peerDependencies": {
55
+ "zod": "^3.23.0"
56
+ }
57
+ }