@openserv-labs/sdk 1.0.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/LICENSE +21 -0
- package/README.md +608 -0
- package/dist/agent.d.ts +369 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +643 -0
- package/dist/capability.d.ts +11 -0
- package/dist/capability.d.ts.map +1 -0
- package/dist/capability.js +16 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +13 -0
- package/dist/types.d.ts +1308 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +165 -0
- package/package.json +89 -0
package/dist/agent.d.ts
ADDED
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
import { type AxiosInstance } from 'axios';
|
|
2
|
+
import type { GetFilesParams, UploadFileParams, MarkTaskAsErroredParams, CompleteTaskParams, SendChatMessageParams, GetTaskDetailParams, GetAgentsParams, GetTasksParams, CreateTaskParams, AddLogToTaskParams, RequestHumanAssistanceParams, UpdateTaskStatusParams, ProcessParams } from './types';
|
|
3
|
+
import { actionSchema, doTaskActionSchema, respondChatMessageActionSchema } from './types';
|
|
4
|
+
import type { ChatCompletionMessageParam, ChatCompletion } from 'openai/resources/chat/completions';
|
|
5
|
+
import OpenAI from 'openai';
|
|
6
|
+
import type { z } from 'zod';
|
|
7
|
+
import { Capability } from './capability';
|
|
8
|
+
/**
|
|
9
|
+
* Configuration options for creating a new Agent instance.
|
|
10
|
+
*/
|
|
11
|
+
export interface AgentOptions {
|
|
12
|
+
/**
|
|
13
|
+
* The port number for the agent's HTTP server.
|
|
14
|
+
* Defaults to 7378 if not specified.
|
|
15
|
+
*/
|
|
16
|
+
port?: number;
|
|
17
|
+
/**
|
|
18
|
+
* The OpenServ API key for authentication.
|
|
19
|
+
* Can also be provided via OPENSERV_API_KEY environment variable.
|
|
20
|
+
*/
|
|
21
|
+
apiKey?: string;
|
|
22
|
+
/**
|
|
23
|
+
* The system prompt that defines the agent's behavior and context.
|
|
24
|
+
* Used as the initial system message in OpenAI chat completions.
|
|
25
|
+
*/
|
|
26
|
+
systemPrompt: string;
|
|
27
|
+
/**
|
|
28
|
+
* The OpenAI API key for chat completions.
|
|
29
|
+
* Can also be provided via OPENAI_API_KEY environment variable.
|
|
30
|
+
* Required when using the process() method.
|
|
31
|
+
*/
|
|
32
|
+
openaiApiKey?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare class Agent {
|
|
35
|
+
private options;
|
|
36
|
+
/**
|
|
37
|
+
* The Express application instance used to handle HTTP requests.
|
|
38
|
+
* This is initialized in the constructor and used to set up middleware and routes.
|
|
39
|
+
* @private
|
|
40
|
+
*/
|
|
41
|
+
private app;
|
|
42
|
+
/**
|
|
43
|
+
* The HTTP server instance created from the Express application.
|
|
44
|
+
* This is initialized when start() is called and used to listen for incoming requests.
|
|
45
|
+
* @private
|
|
46
|
+
*/
|
|
47
|
+
private server;
|
|
48
|
+
/**
|
|
49
|
+
* The Express router instance used to define API routes.
|
|
50
|
+
* This handles routing for health checks, tool execution, and action handling.
|
|
51
|
+
* @private
|
|
52
|
+
*/
|
|
53
|
+
private router;
|
|
54
|
+
/**
|
|
55
|
+
* The port number the server will listen on.
|
|
56
|
+
* Defaults to DEFAULT_PORT (7378) if not specified in options.
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
59
|
+
private port;
|
|
60
|
+
/**
|
|
61
|
+
* The system prompt used for OpenAI chat completions.
|
|
62
|
+
* This defines the base behavior and context for the agent.
|
|
63
|
+
* @protected
|
|
64
|
+
*/
|
|
65
|
+
protected systemPrompt: string;
|
|
66
|
+
/**
|
|
67
|
+
* Array of capabilities (tools) available to the agent.
|
|
68
|
+
* Each capability is an instance of the Capability class with a name, description, schema, and run function.
|
|
69
|
+
* @protected
|
|
70
|
+
*/
|
|
71
|
+
protected tools: Array<Capability<any>>;
|
|
72
|
+
/**
|
|
73
|
+
* The OpenServ API key used for authentication.
|
|
74
|
+
* Can be provided in options or via OPENSERV_API_KEY environment variable.
|
|
75
|
+
* @private
|
|
76
|
+
*/
|
|
77
|
+
private apiKey;
|
|
78
|
+
/**
|
|
79
|
+
* Axios instance for making requests to the OpenServ API.
|
|
80
|
+
* Pre-configured with base URL and authentication headers.
|
|
81
|
+
* @private
|
|
82
|
+
*/
|
|
83
|
+
private apiClient;
|
|
84
|
+
/**
|
|
85
|
+
* Axios instance for making requests to the OpenServ Runtime API.
|
|
86
|
+
* Pre-configured with base URL and authentication headers.
|
|
87
|
+
* @protected
|
|
88
|
+
*/
|
|
89
|
+
protected runtimeClient: AxiosInstance;
|
|
90
|
+
/**
|
|
91
|
+
* OpenAI client instance.
|
|
92
|
+
* Lazily initialized when needed using the provided API key.
|
|
93
|
+
* @protected
|
|
94
|
+
*/
|
|
95
|
+
protected _openai?: OpenAI;
|
|
96
|
+
/**
|
|
97
|
+
* Getter that converts the agent's tools into OpenAI function calling format.
|
|
98
|
+
* Used when making chat completion requests to OpenAI.
|
|
99
|
+
* @private
|
|
100
|
+
* @returns Array of ChatCompletionTool objects
|
|
101
|
+
*/
|
|
102
|
+
private get openAiTools();
|
|
103
|
+
/**
|
|
104
|
+
* Getter that provides access to the OpenAI client instance.
|
|
105
|
+
* Lazily initializes the client with the API key from options or environment.
|
|
106
|
+
* @private
|
|
107
|
+
* @throws {Error} If no OpenAI API key is available
|
|
108
|
+
* @returns {OpenAI} The OpenAI client instance
|
|
109
|
+
*/
|
|
110
|
+
private get openai();
|
|
111
|
+
/**
|
|
112
|
+
* Creates a new Agent instance.
|
|
113
|
+
* Sets up the Express application, middleware, and routes.
|
|
114
|
+
* Initializes API clients with appropriate authentication.
|
|
115
|
+
*
|
|
116
|
+
* @param {AgentOptions} options - Configuration options for the agent
|
|
117
|
+
* @throws {Error} If OpenServ API key is not provided in options or environment
|
|
118
|
+
*/
|
|
119
|
+
constructor(options: AgentOptions);
|
|
120
|
+
/**
|
|
121
|
+
* Adds a single capability (tool) to the agent.
|
|
122
|
+
* Each capability must have a unique name and defines a function that can be called via the API.
|
|
123
|
+
*
|
|
124
|
+
* @template S - The Zod schema type for the capability's parameters
|
|
125
|
+
* @param {Object} capability - The capability configuration
|
|
126
|
+
* @param {string} capability.name - Unique name for the capability
|
|
127
|
+
* @param {string} capability.description - Description of what the capability does
|
|
128
|
+
* @param {S} capability.schema - Zod schema defining the capability's parameters
|
|
129
|
+
* @param {Function} capability.run - Function that implements the capability's behavior
|
|
130
|
+
* @param {Object} capability.run.params - Parameters for the run function
|
|
131
|
+
* @param {z.infer<S>} capability.run.params.args - Validated arguments matching the schema
|
|
132
|
+
* @param {z.infer<typeof actionSchema>} [capability.run.params.action] - Optional action context
|
|
133
|
+
* @param {ChatCompletionMessageParam[]} capability.run.messages - Chat message history
|
|
134
|
+
* @returns {this} The agent instance for method chaining
|
|
135
|
+
* @throws {Error} If a capability with the same name already exists
|
|
136
|
+
*/
|
|
137
|
+
addCapability<S extends z.ZodTypeAny>({ name, description, schema, run }: {
|
|
138
|
+
name: string;
|
|
139
|
+
description: string;
|
|
140
|
+
schema: S;
|
|
141
|
+
run(params: {
|
|
142
|
+
args: z.infer<S>;
|
|
143
|
+
action?: z.infer<typeof actionSchema>;
|
|
144
|
+
}, messages: ChatCompletionMessageParam[]): string | Promise<string>;
|
|
145
|
+
}): this;
|
|
146
|
+
/**
|
|
147
|
+
* Adds multiple capabilities (tools) to the agent at once.
|
|
148
|
+
* Each capability must have a unique name and not conflict with existing capabilities.
|
|
149
|
+
*
|
|
150
|
+
* @template T - Tuple of Zod schema types for the capabilities' parameters
|
|
151
|
+
* @param {Object} capabilities - Array of capability configurations
|
|
152
|
+
* @param {string} capabilities[].name - Unique name for each capability
|
|
153
|
+
* @param {string} capabilities[].description - Description of what each capability does
|
|
154
|
+
* @param {T[number]} capabilities[].schema - Zod schema defining each capability's parameters
|
|
155
|
+
* @param {Function} capabilities[].run - Function that implements each capability's behavior
|
|
156
|
+
* @returns {this} The agent instance for method chaining
|
|
157
|
+
* @throws {Error} If any capability has a name that already exists
|
|
158
|
+
*/
|
|
159
|
+
addCapabilities<T extends readonly [z.ZodTypeAny, ...z.ZodTypeAny[]]>(capabilities: {
|
|
160
|
+
[K in keyof T]: {
|
|
161
|
+
name: string;
|
|
162
|
+
description: string;
|
|
163
|
+
schema: T[K];
|
|
164
|
+
run: (params: {
|
|
165
|
+
args: z.infer<T[K]>;
|
|
166
|
+
action?: z.infer<typeof actionSchema>;
|
|
167
|
+
}, messages: ChatCompletionMessageParam[]) => string | Promise<string>;
|
|
168
|
+
};
|
|
169
|
+
}): this;
|
|
170
|
+
/**
|
|
171
|
+
* Gets files in a workspace.
|
|
172
|
+
*
|
|
173
|
+
* @param {GetFilesParams} params - Parameters for the file retrieval
|
|
174
|
+
* @param {number} params.workspaceId - ID of the workspace to get files from
|
|
175
|
+
* @returns {Promise<any>} The files in the workspace
|
|
176
|
+
*/
|
|
177
|
+
getFiles(params: GetFilesParams): Promise<any>;
|
|
178
|
+
/**
|
|
179
|
+
* Uploads a file to a workspace.
|
|
180
|
+
*
|
|
181
|
+
* @param {UploadFileParams} params - Parameters for the file upload
|
|
182
|
+
* @param {number} params.workspaceId - ID of the workspace to upload to
|
|
183
|
+
* @param {string} params.path - Path where the file should be stored
|
|
184
|
+
* @param {number[]|number|null} [params.taskIds] - Optional task IDs to associate with the file
|
|
185
|
+
* @param {boolean} [params.skipSummarizer] - Whether to skip file summarization
|
|
186
|
+
* @param {Buffer|string} params.file - The file content to upload
|
|
187
|
+
* @returns {Promise<any>} The uploaded file details
|
|
188
|
+
*/
|
|
189
|
+
uploadFile(params: UploadFileParams): Promise<any>;
|
|
190
|
+
/**
|
|
191
|
+
* Marks a task as errored.
|
|
192
|
+
*
|
|
193
|
+
* @param {MarkTaskAsErroredParams} params - Parameters for marking the task as errored
|
|
194
|
+
* @param {number} params.workspaceId - ID of the workspace containing the task
|
|
195
|
+
* @param {number} params.taskId - ID of the task to mark as errored
|
|
196
|
+
* @param {string} params.error - Error message describing what went wrong
|
|
197
|
+
* @returns {Promise<any>} The updated task details
|
|
198
|
+
*/
|
|
199
|
+
markTaskAsErrored(params: MarkTaskAsErroredParams): Promise<any>;
|
|
200
|
+
/**
|
|
201
|
+
* Completes a task with the specified output.
|
|
202
|
+
*
|
|
203
|
+
* @param {CompleteTaskParams} params - Parameters for completing the task
|
|
204
|
+
* @param {number} params.workspaceId - ID of the workspace containing the task
|
|
205
|
+
* @param {number} params.taskId - ID of the task to complete
|
|
206
|
+
* @param {string} params.output - Output or result of the completed task
|
|
207
|
+
* @returns {Promise<any>} The completed task details
|
|
208
|
+
*/
|
|
209
|
+
completeTask(params: CompleteTaskParams): Promise<any>;
|
|
210
|
+
/**
|
|
211
|
+
* Sends a chat message from the agent.
|
|
212
|
+
*
|
|
213
|
+
* @param {SendChatMessageParams} params - Parameters for sending the chat message
|
|
214
|
+
* @param {number} params.workspaceId - ID of the workspace where the chat is happening
|
|
215
|
+
* @param {number} params.agentId - ID of the agent sending the message
|
|
216
|
+
* @param {string} params.message - Content of the message to send
|
|
217
|
+
* @returns {Promise<any>} The sent message details
|
|
218
|
+
*/
|
|
219
|
+
sendChatMessage(params: SendChatMessageParams): Promise<any>;
|
|
220
|
+
/**
|
|
221
|
+
* Gets detailed information about a specific task.
|
|
222
|
+
*
|
|
223
|
+
* @param {GetTaskDetailParams} params - Parameters for getting task details
|
|
224
|
+
* @param {number} params.workspaceId - ID of the workspace containing the task
|
|
225
|
+
* @param {number} params.taskId - ID of the task to get details for
|
|
226
|
+
* @returns {Promise<any>} The detailed task information
|
|
227
|
+
*/
|
|
228
|
+
getTaskDetail(params: GetTaskDetailParams): Promise<any>;
|
|
229
|
+
/**
|
|
230
|
+
* Gets a list of agents in a workspace.
|
|
231
|
+
*
|
|
232
|
+
* @param {GetAgentsParams} params - Parameters for getting agents
|
|
233
|
+
* @param {number} params.workspaceId - ID of the workspace to get agents from
|
|
234
|
+
* @returns {Promise<any>} List of agents in the workspace
|
|
235
|
+
*/
|
|
236
|
+
getAgents(params: GetAgentsParams): Promise<any>;
|
|
237
|
+
/**
|
|
238
|
+
* Gets a list of tasks in a workspace.
|
|
239
|
+
*
|
|
240
|
+
* @param {GetTasksParams} params - Parameters for getting tasks
|
|
241
|
+
* @param {number} params.workspaceId - ID of the workspace to get tasks from
|
|
242
|
+
* @returns {Promise<any>} List of tasks in the workspace
|
|
243
|
+
*/
|
|
244
|
+
getTasks(params: GetTasksParams): Promise<any>;
|
|
245
|
+
/**
|
|
246
|
+
* Creates a new task in a workspace.
|
|
247
|
+
*
|
|
248
|
+
* @param {CreateTaskParams} params - Parameters for creating the task
|
|
249
|
+
* @param {number} params.workspaceId - ID of the workspace to create the task in
|
|
250
|
+
* @param {number} params.assignee - ID of the agent to assign the task to
|
|
251
|
+
* @param {string} params.description - Short description of the task
|
|
252
|
+
* @param {string} params.body - Detailed body/content of the task
|
|
253
|
+
* @param {string} params.input - Input data for the task
|
|
254
|
+
* @param {string} params.expectedOutput - Expected output format or content
|
|
255
|
+
* @param {number[]} params.dependencies - IDs of tasks that this task depends on
|
|
256
|
+
* @returns {Promise<any>} The created task details
|
|
257
|
+
*/
|
|
258
|
+
createTask(params: CreateTaskParams): Promise<any>;
|
|
259
|
+
/**
|
|
260
|
+
* Adds a log entry to a task.
|
|
261
|
+
*
|
|
262
|
+
* @param {AddLogToTaskParams} params - Parameters for adding the log
|
|
263
|
+
* @param {number} params.workspaceId - ID of the workspace containing the task
|
|
264
|
+
* @param {number} params.taskId - ID of the task to add the log to
|
|
265
|
+
* @param {'info'|'warning'|'error'} params.severity - Severity level of the log
|
|
266
|
+
* @param {'text'|'openai-message'} params.type - Type of log entry
|
|
267
|
+
* @param {string|object} params.body - Content of the log entry
|
|
268
|
+
* @returns {Promise<any>} The created log entry details
|
|
269
|
+
*/
|
|
270
|
+
addLogToTask(params: AddLogToTaskParams): Promise<any>;
|
|
271
|
+
/**
|
|
272
|
+
* Requests human assistance for a task.
|
|
273
|
+
*
|
|
274
|
+
* @param {RequestHumanAssistanceParams} params - Parameters for requesting assistance
|
|
275
|
+
* @param {number} params.workspaceId - ID of the workspace containing the task
|
|
276
|
+
* @param {number} params.taskId - ID of the task needing assistance
|
|
277
|
+
* @param {'text'|'project-manager-plan-review'} params.type - Type of assistance needed
|
|
278
|
+
* @param {string|object} params.question - Question or request for the human
|
|
279
|
+
* @param {object} [params.agentDump] - Optional agent state/context information
|
|
280
|
+
* @returns {Promise<any>} The created assistance request details
|
|
281
|
+
*/
|
|
282
|
+
requestHumanAssistance(params: RequestHumanAssistanceParams): Promise<any>;
|
|
283
|
+
/**
|
|
284
|
+
* Updates the status of a task.
|
|
285
|
+
*
|
|
286
|
+
* @param {UpdateTaskStatusParams} params - Parameters for updating the status
|
|
287
|
+
* @param {number} params.workspaceId - ID of the workspace containing the task
|
|
288
|
+
* @param {number} params.taskId - ID of the task to update
|
|
289
|
+
* @param {TaskStatus} params.status - New status for the task
|
|
290
|
+
* @returns {Promise<any>} The updated task details
|
|
291
|
+
*/
|
|
292
|
+
updateTaskStatus(params: UpdateTaskStatusParams): Promise<any>;
|
|
293
|
+
/**
|
|
294
|
+
* Processes a conversation with OpenAI, handling tool calls iteratively until completion.
|
|
295
|
+
*
|
|
296
|
+
* @param {ProcessParams} params - Parameters for processing the conversation
|
|
297
|
+
* @param {ChatCompletionMessageParam[]} params.messages - The conversation history
|
|
298
|
+
* @returns {Promise<ChatCompletion>} The final response from OpenAI
|
|
299
|
+
* @throws {Error} If no response is received from OpenAI or max iterations are reached
|
|
300
|
+
*/
|
|
301
|
+
process({ messages }: ProcessParams): Promise<ChatCompletion>;
|
|
302
|
+
/**
|
|
303
|
+
* Handle a task execution request
|
|
304
|
+
* This method can be overridden by extending classes to customize task handling
|
|
305
|
+
* @protected
|
|
306
|
+
*/
|
|
307
|
+
protected doTask(action: z.infer<typeof doTaskActionSchema>): Promise<void>;
|
|
308
|
+
/**
|
|
309
|
+
* Handle a chat message response request
|
|
310
|
+
* This method can be overridden by extending classes to customize chat handling
|
|
311
|
+
* @protected
|
|
312
|
+
*/
|
|
313
|
+
protected respondToChat(action: z.infer<typeof respondChatMessageActionSchema>): Promise<void>;
|
|
314
|
+
/**
|
|
315
|
+
* Handles execution of a specific tool/capability.
|
|
316
|
+
*
|
|
317
|
+
* @param {Object} req - The request object
|
|
318
|
+
* @param {Object} req.params - Request parameters
|
|
319
|
+
* @param {string} req.params.toolName - Name of the tool to execute
|
|
320
|
+
* @param {Object} req.body - Request body
|
|
321
|
+
* @param {z.infer<z.ZodTypeAny>} [req.body.args] - Arguments for the tool
|
|
322
|
+
* @param {z.infer<typeof actionSchema>} [req.body.action] - Action context
|
|
323
|
+
* @returns {Promise<{result: string}>} The result of the tool execution
|
|
324
|
+
* @throws {BadRequest} If tool name is missing or tool is not found
|
|
325
|
+
* @throws {Error} If tool execution fails
|
|
326
|
+
*/
|
|
327
|
+
handleToolRoute(req: {
|
|
328
|
+
params: {
|
|
329
|
+
toolName: string;
|
|
330
|
+
};
|
|
331
|
+
body: {
|
|
332
|
+
args?: z.infer<z.ZodTypeAny>;
|
|
333
|
+
action?: z.infer<typeof actionSchema>;
|
|
334
|
+
};
|
|
335
|
+
}): Promise<{
|
|
336
|
+
result: string;
|
|
337
|
+
}>;
|
|
338
|
+
/**
|
|
339
|
+
* Handles the root route for task execution and chat message responses.
|
|
340
|
+
*
|
|
341
|
+
* @param {Object} req - The request object
|
|
342
|
+
* @param {unknown} req.body - Request body to be parsed as an action
|
|
343
|
+
* @returns {Promise<void>}
|
|
344
|
+
* @throws {Error} If action type is invalid
|
|
345
|
+
*/
|
|
346
|
+
handleRootRoute(req: {
|
|
347
|
+
body: unknown;
|
|
348
|
+
}): Promise<void>;
|
|
349
|
+
/**
|
|
350
|
+
* Sets up the Express routes for the agent's HTTP server.
|
|
351
|
+
* Configures health check endpoint and routes for tool execution.
|
|
352
|
+
* @private
|
|
353
|
+
*/
|
|
354
|
+
private setupRoutes;
|
|
355
|
+
/**
|
|
356
|
+
* Starts the agent's HTTP server.
|
|
357
|
+
*
|
|
358
|
+
* @returns {Promise<void>} Resolves when the server has started
|
|
359
|
+
* @throws {Error} If server fails to start
|
|
360
|
+
*/
|
|
361
|
+
start(): Promise<void>;
|
|
362
|
+
/**
|
|
363
|
+
* Stops the agent's HTTP server.
|
|
364
|
+
*
|
|
365
|
+
* @returns {Promise<void>} Resolves when the server has stopped
|
|
366
|
+
*/
|
|
367
|
+
stop(): Promise<void>;
|
|
368
|
+
}
|
|
369
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|