computer-agents 0.7.1 → 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/README.md +159 -401
- package/dist/ComputerAgentsClient.d.ts +357 -0
- package/dist/ComputerAgentsClient.js +359 -0
- package/dist/ComputerAgentsClient.js.map +1 -0
- package/dist/cloud/ApiClient.d.ts +62 -0
- package/dist/cloud/ApiClient.js +150 -0
- package/dist/cloud/ApiClient.js.map +1 -0
- package/dist/cloud/resources/AgentsResource.d.ts +39 -0
- package/dist/cloud/resources/AgentsResource.js +58 -0
- package/dist/cloud/resources/AgentsResource.js.map +1 -0
- package/dist/cloud/resources/BudgetResource.d.ts +167 -0
- package/dist/cloud/resources/BudgetResource.js +179 -0
- package/dist/cloud/resources/BudgetResource.js.map +1 -0
- package/dist/cloud/resources/EnvironmentsResource.d.ts +78 -0
- package/dist/cloud/resources/EnvironmentsResource.js +118 -0
- package/dist/cloud/resources/EnvironmentsResource.js.map +1 -0
- package/dist/cloud/resources/FilesResource.d.ts +177 -0
- package/dist/cloud/resources/FilesResource.js +180 -0
- package/dist/cloud/resources/FilesResource.js.map +1 -0
- package/dist/cloud/resources/GitResource.d.ts +28 -0
- package/dist/cloud/resources/GitResource.js +45 -0
- package/dist/cloud/resources/GitResource.js.map +1 -0
- package/dist/cloud/resources/ProjectsResource.d.ts +78 -0
- package/dist/cloud/resources/ProjectsResource.js +117 -0
- package/dist/cloud/resources/ProjectsResource.js.map +1 -0
- package/dist/cloud/resources/RunsResource.d.ts +61 -0
- package/dist/cloud/resources/RunsResource.js +84 -0
- package/dist/cloud/resources/RunsResource.js.map +1 -0
- package/dist/cloud/resources/SchedulesResource.d.ts +58 -0
- package/dist/cloud/resources/SchedulesResource.js +82 -0
- package/dist/cloud/resources/SchedulesResource.js.map +1 -0
- package/dist/cloud/resources/ThreadsResource.d.ts +124 -0
- package/dist/cloud/resources/ThreadsResource.js +178 -0
- package/dist/cloud/resources/ThreadsResource.js.map +1 -0
- package/dist/cloud/resources/index.d.ts +16 -0
- package/dist/cloud/resources/index.js +28 -0
- package/dist/cloud/resources/index.js.map +1 -0
- package/dist/cloud/types.d.ts +573 -0
- package/dist/cloud/types.js +9 -0
- package/dist/cloud/types.js.map +1 -0
- package/dist/index.d.ts +28 -5
- package/dist/index.js +51 -194
- package/dist/index.js.map +1 -1
- package/package.json +23 -25
- package/dist/metadata.d.ts +0 -8
- package/dist/metadata.js +0 -13
- package/dist/metadata.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,511 +1,269 @@
|
|
|
1
1
|
# Computer Agents SDK
|
|
2
2
|
|
|
3
|
-
[
|
|
4
|
-
[](https://opensource.org/licenses/MIT)
|
|
5
|
-
|
|
6
|
-
Build agents that write code, run tests, and modify files. Orchestrate unlimited agents in parallel with seamless local and cloud execution.
|
|
7
|
-
|
|
8
|
-
## Why Computer Agents?
|
|
9
|
-
|
|
10
|
-
Traditional agent frameworks limit you to single-agent workflows or rigid orchestration patterns. Computer Agents is designed for programmatic multi-agent orchestration at scale.
|
|
11
|
-
|
|
12
|
-
**Unlimited Parallel Orchestration**
|
|
13
|
-
Compose and run unlimited agents concurrently. Build custom multi-agent workflows programmatically—you control execution flow and agent communication. No framework constraints, just code.
|
|
14
|
-
|
|
15
|
-
**Seamless Local ↔ Cloud Execution**
|
|
16
|
-
Develop locally, scale to cloud by changing workspace configuration. Runtime abstraction handles the complexity while your code remains identical. Switch execution environments without rewriting workflows.
|
|
17
|
-
|
|
18
|
-
**Two Powerful Agent Types**
|
|
19
|
-
- **LLM agents** (OpenAI API) for planning, reasoning, and code review
|
|
20
|
-
- **Computer agents** (Codex SDK) for code generation and file operations
|
|
21
|
-
|
|
22
|
-
Mix agent types to build sophisticated workflows. Computer agents bypass LLM for tool selection, providing faster execution and lower costs.
|
|
23
|
-
|
|
24
|
-
**Production-Ready Infrastructure**
|
|
25
|
-
- Automatic session continuity across runs
|
|
26
|
-
- Efficient workspace synchronization
|
|
27
|
-
- Built on OpenAI Codex SDK
|
|
28
|
-
- Type-safe TypeScript with comprehensive documentation
|
|
29
|
-
|
|
30
|
-
**Use cases:** Parallel test generation, distributed code review, large-scale refactoring, automated debugging workflows, multi-repository updates.
|
|
3
|
+
Official TypeScript/JavaScript SDK for the [Computer Agents Cloud API](https://api.computer-agents.com).
|
|
31
4
|
|
|
32
5
|
## Installation
|
|
33
6
|
|
|
34
7
|
```bash
|
|
35
8
|
npm install computer-agents
|
|
9
|
+
# or
|
|
10
|
+
pnpm add computer-agents
|
|
11
|
+
# or
|
|
12
|
+
yarn add computer-agents
|
|
36
13
|
```
|
|
37
14
|
|
|
38
15
|
## Quick Start
|
|
39
16
|
|
|
40
|
-
### Local Computer Agent
|
|
41
|
-
|
|
42
17
|
```typescript
|
|
43
|
-
import {
|
|
18
|
+
import { ComputerAgentsClient } from 'computer-agents';
|
|
44
19
|
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
workspace: "./my-project",
|
|
48
|
-
instructions: "You are an expert developer."
|
|
20
|
+
const client = new ComputerAgentsClient({
|
|
21
|
+
apiKey: process.env.COMPUTER_AGENTS_API_KEY
|
|
49
22
|
});
|
|
50
23
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
### LLM Agent
|
|
56
|
-
|
|
57
|
-
```typescript
|
|
58
|
-
import { Agent, run } from 'computer-agents';
|
|
59
|
-
|
|
60
|
-
const agent = new Agent({
|
|
61
|
-
agentType: "llm",
|
|
62
|
-
model: "gpt-4o",
|
|
63
|
-
instructions: "You create detailed implementation plans."
|
|
24
|
+
// Execute a task
|
|
25
|
+
const result = await client.run('Create a REST API with Flask', {
|
|
26
|
+
environmentId: 'env_xxx',
|
|
27
|
+
onEvent: (event) => console.log(event.type)
|
|
64
28
|
});
|
|
65
29
|
|
|
66
|
-
|
|
67
|
-
console.log(result.finalOutput);
|
|
30
|
+
console.log(result.content);
|
|
68
31
|
```
|
|
69
32
|
|
|
70
|
-
##
|
|
33
|
+
## Features
|
|
71
34
|
|
|
72
|
-
|
|
35
|
+
- Full TypeScript support with complete type definitions
|
|
36
|
+
- SSE streaming for real-time execution progress
|
|
37
|
+
- Simple, intuitive API that mirrors the REST API structure
|
|
38
|
+
- Zero dependencies - uses native `fetch`
|
|
73
39
|
|
|
74
|
-
|
|
75
|
-
|------|-----------|-----------|
|
|
76
|
-
| `computer` | Codex SDK | Code generation, file operations, terminal commands |
|
|
77
|
-
| `llm` | OpenAI API | Planning, reasoning, text generation |
|
|
78
|
-
|
|
79
|
-
### Computer Agents
|
|
40
|
+
## API Reference
|
|
80
41
|
|
|
81
|
-
|
|
42
|
+
### Creating a Client
|
|
82
43
|
|
|
83
44
|
```typescript
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
45
|
+
const client = new ComputerAgentsClient({
|
|
46
|
+
apiKey: 'tb_xxx', // Required
|
|
47
|
+
baseUrl: 'https://api.computer-agents.com', // Optional
|
|
48
|
+
timeout: 60000, // Optional (default: 60s)
|
|
49
|
+
debug: false // Optional
|
|
88
50
|
});
|
|
89
|
-
|
|
90
|
-
await run(agent, "Add unit tests for the fibonacci module");
|
|
91
51
|
```
|
|
92
52
|
|
|
93
|
-
###
|
|
53
|
+
### Running Tasks
|
|
94
54
|
|
|
95
|
-
|
|
55
|
+
The simplest way to execute a task:
|
|
96
56
|
|
|
97
57
|
```typescript
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
instructions: "You review code for quality and security."
|
|
58
|
+
// One-shot execution
|
|
59
|
+
const result = await client.run('Fix the TypeScript errors', {
|
|
60
|
+
environmentId: 'env_xxx'
|
|
102
61
|
});
|
|
103
62
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
import { Agent, run } from 'computer-agents';
|
|
113
|
-
|
|
114
|
-
// LLM creates plan
|
|
115
|
-
const planner = new Agent({
|
|
116
|
-
agentType: 'llm',
|
|
117
|
-
model: 'gpt-4o',
|
|
118
|
-
instructions: 'Create implementation plans.'
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
// Computer agent executes
|
|
122
|
-
const executor = new Agent({
|
|
123
|
-
agentType: 'computer',
|
|
124
|
-
workspace: './my-project',
|
|
125
|
-
instructions: 'Execute implementation plans.'
|
|
63
|
+
// With streaming progress
|
|
64
|
+
const result = await client.run('Build a REST API', {
|
|
65
|
+
environmentId: 'env_xxx',
|
|
66
|
+
onEvent: (event) => {
|
|
67
|
+
if (event.type === 'response.item.completed') {
|
|
68
|
+
console.log(event.item);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
126
71
|
});
|
|
127
72
|
|
|
128
|
-
//
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
instructions: 'Review code quality.'
|
|
73
|
+
// Continue a conversation
|
|
74
|
+
const followUp = await client.run('Add authentication', {
|
|
75
|
+
environmentId: 'env_xxx',
|
|
76
|
+
threadId: result.threadId
|
|
133
77
|
});
|
|
134
|
-
|
|
135
|
-
const task = "Add user authentication";
|
|
136
|
-
const plan = await run(planner, `Plan: ${task}`);
|
|
137
|
-
const code = await run(executor, plan.finalOutput);
|
|
138
|
-
const review = await run(reviewer, `Review: ${code.finalOutput}`);
|
|
139
78
|
```
|
|
140
79
|
|
|
141
|
-
|
|
80
|
+
### Threads
|
|
142
81
|
|
|
143
|
-
|
|
82
|
+
For multi-turn conversations:
|
|
144
83
|
|
|
145
84
|
```typescript
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
agentType: "computer",
|
|
150
|
-
workspace: "./my-project"
|
|
85
|
+
// Create a thread
|
|
86
|
+
const thread = await client.threads.create({
|
|
87
|
+
environmentId: 'env_xxx'
|
|
151
88
|
});
|
|
152
89
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
break;
|
|
158
|
-
case 'item.completed':
|
|
159
|
-
if (event.item.type === 'file_change') {
|
|
160
|
-
const files = event.item.changes.map(c => `${c.kind} ${c.path}`).join(', ');
|
|
161
|
-
console.log(`Files: ${files}`);
|
|
162
|
-
}
|
|
163
|
-
break;
|
|
164
|
-
case 'turn.completed':
|
|
165
|
-
console.log(`Completed (${event.usage.input_tokens + event.usage.output_tokens} tokens)`);
|
|
166
|
-
break;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
## Task Control
|
|
172
|
-
|
|
173
|
-
Control running agents with pause, resume, abort, and messaging capabilities:
|
|
174
|
-
|
|
175
|
-
### Local Control
|
|
176
|
-
|
|
177
|
-
Control agents running in the same process:
|
|
178
|
-
|
|
179
|
-
```typescript
|
|
180
|
-
import { Agent, run } from 'computer-agents';
|
|
181
|
-
|
|
182
|
-
const agent = new Agent({
|
|
183
|
-
agentType: 'computer',
|
|
184
|
-
workspace: './my-project'
|
|
90
|
+
// Send a message
|
|
91
|
+
const result = await client.threads.sendMessage(thread.id, {
|
|
92
|
+
content: 'Create a REST API',
|
|
93
|
+
onEvent: (event) => console.log(event)
|
|
185
94
|
});
|
|
186
95
|
|
|
187
|
-
//
|
|
188
|
-
const
|
|
189
|
-
|
|
190
|
-
// Pause after 5 seconds
|
|
191
|
-
setTimeout(async () => {
|
|
192
|
-
await agent.pause();
|
|
193
|
-
console.log('Agent paused');
|
|
96
|
+
// List threads
|
|
97
|
+
const threads = await client.threads.list();
|
|
194
98
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
await run(agent, 'Continue analysis');
|
|
198
|
-
}, 5000);
|
|
99
|
+
// Get a specific thread
|
|
100
|
+
const thread = await client.threads.get('thread_xxx');
|
|
199
101
|
|
|
200
|
-
//
|
|
201
|
-
|
|
202
|
-
console.log(status);
|
|
203
|
-
// { status: 'running', threadId: 'thread-123', queuedMessages: 0 }
|
|
204
|
-
|
|
205
|
-
// Send messages
|
|
206
|
-
await agent.sendMessage('Focus on performance issues');
|
|
207
|
-
|
|
208
|
-
// Abort permanently
|
|
209
|
-
await agent.abort();
|
|
102
|
+
// Delete a thread
|
|
103
|
+
await client.threads.delete('thread_xxx');
|
|
210
104
|
```
|
|
211
105
|
|
|
212
|
-
###
|
|
213
|
-
|
|
214
|
-
Control cloud agents remotely via HTTP endpoints:
|
|
106
|
+
### Environments
|
|
215
107
|
|
|
216
|
-
|
|
217
|
-
# Get execution status
|
|
218
|
-
curl -X GET https://api.testbase.ai/control/status/thread-abc-123 \
|
|
219
|
-
-H "X-API-Key: your-api-key"
|
|
220
|
-
|
|
221
|
-
# Pause execution
|
|
222
|
-
curl -X POST https://api.testbase.ai/control/pause/thread-abc-123 \
|
|
223
|
-
-H "X-API-Key: your-api-key"
|
|
224
|
-
|
|
225
|
-
# Resume execution
|
|
226
|
-
curl -X POST https://api.testbase.ai/control/resume/thread-abc-123 \
|
|
227
|
-
-H "X-API-Key: your-api-key"
|
|
228
|
-
|
|
229
|
-
# Abort execution
|
|
230
|
-
curl -X POST https://api.testbase.ai/control/abort/thread-abc-123 \
|
|
231
|
-
-H "X-API-Key: your-api-key"
|
|
232
|
-
|
|
233
|
-
# Send message
|
|
234
|
-
curl -X POST https://api.testbase.ai/control/message/thread-abc-123 \
|
|
235
|
-
-H "X-API-Key: your-api-key" \
|
|
236
|
-
-H "Content-Type: application/json" \
|
|
237
|
-
-d '{"message": "Focus on critical files only"}'
|
|
238
|
-
|
|
239
|
-
# List all running executions
|
|
240
|
-
curl -X GET https://api.testbase.ai/control/executions \
|
|
241
|
-
-H "X-API-Key: your-api-key"
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
### Control Methods
|
|
245
|
-
|
|
246
|
-
| Method | Description | Returns |
|
|
247
|
-
|--------|-------------|---------|
|
|
248
|
-
| `agent.pause()` | Pause execution (can be resumed) | `Promise<void>` |
|
|
249
|
-
| `agent.resume()` | Resume paused execution | `Promise<void>` |
|
|
250
|
-
| `agent.abort()` | Stop permanently (cannot resume) | `Promise<void>` |
|
|
251
|
-
| `agent.sendMessage(msg)` | Queue message for agent | `Promise<void>` |
|
|
252
|
-
| `agent.getStatus()` | Get current status | `{ status, threadId, queuedMessages }` |
|
|
253
|
-
|
|
254
|
-
### Use Cases
|
|
255
|
-
|
|
256
|
-
- **Long-running tasks**: Pause agents that exceed time limits
|
|
257
|
-
- **User intervention**: Send messages to guide agent behavior
|
|
258
|
-
- **Error recovery**: Abort stuck or misbehaving agents
|
|
259
|
-
- **Resource management**: Control multiple cloud executions
|
|
260
|
-
- **Interactive workflows**: Pause for user review, then resume
|
|
261
|
-
|
|
262
|
-
## Session Continuity
|
|
263
|
-
|
|
264
|
-
Agents automatically maintain context across multiple runs:
|
|
108
|
+
Manage isolated execution environments:
|
|
265
109
|
|
|
266
110
|
```typescript
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
111
|
+
// Create an environment
|
|
112
|
+
const env = await client.environments.create({
|
|
113
|
+
name: 'production',
|
|
114
|
+
internetAccess: true
|
|
270
115
|
});
|
|
271
116
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
await run(agent, 'Add tests'); // Still same session
|
|
117
|
+
// List environments
|
|
118
|
+
const environments = await client.environments.list();
|
|
275
119
|
|
|
276
|
-
|
|
120
|
+
// Get environment status
|
|
121
|
+
const status = await client.environments.getStatus('env_xxx');
|
|
277
122
|
|
|
278
|
-
|
|
279
|
-
await
|
|
123
|
+
// Start/stop environment
|
|
124
|
+
await client.environments.start('env_xxx');
|
|
125
|
+
await client.environments.stop('env_xxx');
|
|
280
126
|
```
|
|
281
127
|
|
|
282
|
-
|
|
128
|
+
### Agents
|
|
283
129
|
|
|
284
|
-
|
|
285
|
-
>
|
|
286
|
-
> Interested in early access? [Join the waitlist →](https://testbase.ai)
|
|
287
|
-
|
|
288
|
-
Cloud execution will enable:
|
|
289
|
-
- Run agents in isolated cloud environments
|
|
290
|
-
- Project-based workspace management with bidirectional sync
|
|
291
|
-
- Seamless transition from local to cloud with workspace configuration
|
|
292
|
-
- Parallel execution at scale without local resource constraints
|
|
293
|
-
|
|
294
|
-
Example (available in private beta):
|
|
130
|
+
Configure agent behavior:
|
|
295
131
|
|
|
296
132
|
```typescript
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
133
|
+
// Create an agent
|
|
134
|
+
const agent = await client.agents.create({
|
|
135
|
+
name: 'Code Assistant',
|
|
136
|
+
model: 'gpt-4o',
|
|
137
|
+
instructions: 'You are a helpful coding assistant.'
|
|
301
138
|
});
|
|
302
139
|
|
|
303
|
-
//
|
|
304
|
-
const
|
|
140
|
+
// List agents
|
|
141
|
+
const agents = await client.agents.list();
|
|
305
142
|
|
|
306
|
-
//
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
workspace: project, // Use cloud project as workspace
|
|
310
|
-
instructions: "You are an expert developer."
|
|
143
|
+
// Update an agent
|
|
144
|
+
await client.agents.update('agent_xxx', {
|
|
145
|
+
instructions: 'Updated instructions'
|
|
311
146
|
});
|
|
312
|
-
|
|
313
|
-
const result = await run(agent, "Add error handling to the API");
|
|
314
|
-
console.log(result.finalOutput);
|
|
315
147
|
```
|
|
316
148
|
|
|
317
|
-
|
|
149
|
+
### Files
|
|
318
150
|
|
|
319
|
-
|
|
151
|
+
Manage files in environments:
|
|
320
152
|
|
|
321
153
|
```typescript
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
workspace: './my-project', // Required for computer agents
|
|
326
|
-
model: 'gpt-4o', // Required for LLM agents
|
|
327
|
-
instructions: "You are helpful.", // System prompt
|
|
328
|
-
debug: false, // Show detailed logs
|
|
329
|
-
timeout: 600000, // 10 minutes (default)
|
|
330
|
-
mcpServers: [], // MCP server configurations
|
|
154
|
+
// List files
|
|
155
|
+
const files = await client.files.listFiles({
|
|
156
|
+
environmentId: 'env_xxx'
|
|
331
157
|
});
|
|
332
|
-
```
|
|
333
158
|
|
|
334
|
-
|
|
159
|
+
// Upload a file
|
|
160
|
+
await client.files.uploadFile({
|
|
161
|
+
path: '/src/app.py',
|
|
162
|
+
content: 'print("hello")',
|
|
163
|
+
environmentId: 'env_xxx'
|
|
164
|
+
});
|
|
335
165
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
OPENAI_API_KEY=your-openai-key
|
|
166
|
+
// Get file content
|
|
167
|
+
const content = await client.files.getFile('/src/app.py', 'env_xxx');
|
|
339
168
|
|
|
340
|
-
|
|
341
|
-
|
|
169
|
+
// Delete a file
|
|
170
|
+
await client.files.deleteFile('/src/app.py');
|
|
342
171
|
```
|
|
343
172
|
|
|
344
|
-
|
|
173
|
+
### Schedules
|
|
345
174
|
|
|
346
|
-
|
|
175
|
+
Automate task execution:
|
|
347
176
|
|
|
348
177
|
```typescript
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
},
|
|
358
|
-
{
|
|
359
|
-
type: 'http',
|
|
360
|
-
name: 'notion',
|
|
361
|
-
url: 'https://notion-mcp.example.com/mcp',
|
|
362
|
-
bearerToken: process.env.NOTION_TOKEN
|
|
363
|
-
}
|
|
364
|
-
];
|
|
365
|
-
|
|
366
|
-
const agent = new Agent({
|
|
367
|
-
agentType: 'computer',
|
|
368
|
-
workspace: './my-project',
|
|
369
|
-
mcpServers
|
|
178
|
+
// Create a schedule
|
|
179
|
+
const schedule = await client.schedules.create({
|
|
180
|
+
name: 'Daily Report',
|
|
181
|
+
agentId: 'agent_xxx',
|
|
182
|
+
agentName: 'Reporter',
|
|
183
|
+
task: 'Generate daily report',
|
|
184
|
+
scheduleType: 'recurring',
|
|
185
|
+
cronExpression: '0 9 * * *'
|
|
370
186
|
});
|
|
371
|
-
```
|
|
372
187
|
|
|
373
|
-
|
|
188
|
+
// List schedules
|
|
189
|
+
const schedules = await client.schedules.list();
|
|
374
190
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
```typescript
|
|
378
|
-
class Agent {
|
|
379
|
-
constructor(config: AgentConfiguration);
|
|
380
|
-
|
|
381
|
-
currentThreadId: string | undefined;
|
|
382
|
-
resetSession(): void;
|
|
383
|
-
workspace: string;
|
|
384
|
-
agentType: 'llm' | 'computer';
|
|
385
|
-
|
|
386
|
-
// Task control
|
|
387
|
-
async pause(): Promise<void>;
|
|
388
|
-
async resume(): Promise<void>;
|
|
389
|
-
async abort(): Promise<void>;
|
|
390
|
-
async sendMessage(message: string): Promise<void>;
|
|
391
|
-
getStatus(): { status: 'idle' | 'running' | 'paused' | 'aborted', threadId?: string, queuedMessages: number };
|
|
392
|
-
}
|
|
191
|
+
// Trigger a schedule manually
|
|
192
|
+
await client.schedules.trigger('schedule_xxx');
|
|
393
193
|
```
|
|
394
194
|
|
|
395
|
-
###
|
|
396
|
-
|
|
397
|
-
```typescript
|
|
398
|
-
function run(
|
|
399
|
-
agent: Agent,
|
|
400
|
-
task: string,
|
|
401
|
-
options?: RunOptions
|
|
402
|
-
): Promise<RunResult>;
|
|
403
|
-
```
|
|
195
|
+
### Billing
|
|
404
196
|
|
|
405
|
-
|
|
197
|
+
Track usage and manage budgets:
|
|
406
198
|
|
|
407
199
|
```typescript
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
task: string,
|
|
411
|
-
options?: RunOptions
|
|
412
|
-
): AsyncGenerator<Event>;
|
|
413
|
-
```
|
|
200
|
+
// Get budget status
|
|
201
|
+
const status = await client.budget.getStatus();
|
|
414
202
|
|
|
415
|
-
|
|
203
|
+
// Check if can execute
|
|
204
|
+
const canRun = await client.budget.canExecute();
|
|
416
205
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
constructor(config?: CloudClientConfig);
|
|
206
|
+
// Get billing records
|
|
207
|
+
const records = await client.billing.listRecords({ limit: 10 });
|
|
420
208
|
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
async getProject(id: string): Promise<Project>;
|
|
424
|
-
async deleteProject(id: string, hard?: boolean): Promise<void>;
|
|
425
|
-
}
|
|
209
|
+
// Get usage stats
|
|
210
|
+
const stats = await client.billing.getStats({ period: 'month' });
|
|
426
211
|
```
|
|
427
212
|
|
|
428
|
-
###
|
|
213
|
+
### Git Operations
|
|
214
|
+
|
|
215
|
+
Manage version control:
|
|
429
216
|
|
|
430
217
|
```typescript
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
readonly name: string;
|
|
434
|
-
readonly localPath: string | undefined;
|
|
435
|
-
readonly cloudPath: string;
|
|
436
|
-
|
|
437
|
-
async sync(options?: SyncOptions): Promise<SyncResult>;
|
|
438
|
-
async listFiles(pattern?: string): Promise<ProjectFile[]>;
|
|
439
|
-
async readFile(path: string): Promise<string>;
|
|
440
|
-
async writeFile(path: string, content: string): Promise<void>;
|
|
441
|
-
async upload(files: string[]): Promise<void>;
|
|
442
|
-
async download(files: string[]): Promise<void>;
|
|
443
|
-
async delete(hard?: boolean): Promise<void>;
|
|
444
|
-
async getStats(): Promise<ProjectStats>;
|
|
445
|
-
async getSyncStats(): Promise<SyncStats>;
|
|
446
|
-
|
|
447
|
-
getWorkspacePath(): string;
|
|
448
|
-
}
|
|
449
|
-
```
|
|
218
|
+
// Get diff
|
|
219
|
+
const diff = await client.git.diff('env_xxx');
|
|
450
220
|
|
|
451
|
-
|
|
221
|
+
// Commit changes
|
|
222
|
+
await client.git.commit('env_xxx', {
|
|
223
|
+
message: 'Add new feature'
|
|
224
|
+
});
|
|
452
225
|
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
git clone https://github.com/TestBase-ai/computer-agents.git
|
|
456
|
-
cd computer-agents
|
|
457
|
-
npm install
|
|
458
|
-
npm run build
|
|
459
|
-
|
|
460
|
-
# Run examples
|
|
461
|
-
node examples/testbase/hello-world.mjs
|
|
462
|
-
node examples/testbase/multi-agent-workflow.mjs
|
|
463
|
-
node examples/testbase/streaming-progress.cjs
|
|
226
|
+
// Push to remote
|
|
227
|
+
await client.git.push('env_xxx');
|
|
464
228
|
```
|
|
465
229
|
|
|
466
|
-
|
|
230
|
+
## Error Handling
|
|
467
231
|
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
232
|
+
```typescript
|
|
233
|
+
import { ComputerAgentsClient, ApiClientError } from 'computer-agents';
|
|
234
|
+
|
|
235
|
+
try {
|
|
236
|
+
await client.run('Task', { environmentId: 'env_xxx' });
|
|
237
|
+
} catch (error) {
|
|
238
|
+
if (error instanceof ApiClientError) {
|
|
239
|
+
console.error(`API Error: ${error.message}`);
|
|
240
|
+
console.error(`Status: ${error.status}`);
|
|
241
|
+
console.error(`Code: ${error.code}`);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
474
244
|
```
|
|
475
245
|
|
|
476
|
-
|
|
246
|
+
## Environment Variables
|
|
477
247
|
|
|
478
|
-
|
|
248
|
+
| Variable | Description |
|
|
249
|
+
|----------|-------------|
|
|
250
|
+
| `COMPUTER_AGENTS_API_KEY` | API key for authentication |
|
|
479
251
|
|
|
480
|
-
|
|
481
|
-
// Correct
|
|
482
|
-
new Agent({ agentType: 'computer', workspace: './my-project' })
|
|
483
|
-
|
|
484
|
-
// Missing workspace - Error
|
|
485
|
-
new Agent({ agentType: 'computer' })
|
|
486
|
-
```
|
|
252
|
+
## TypeScript
|
|
487
253
|
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
Use the same agent instance across runs:
|
|
254
|
+
Full type definitions are included:
|
|
491
255
|
|
|
492
256
|
```typescript
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
257
|
+
import type {
|
|
258
|
+
Thread,
|
|
259
|
+
Environment,
|
|
260
|
+
CloudAgent,
|
|
261
|
+
Schedule,
|
|
262
|
+
BudgetStatus,
|
|
263
|
+
MessageStreamEvent,
|
|
264
|
+
} from 'computer-agents';
|
|
496
265
|
```
|
|
497
266
|
|
|
498
267
|
## License
|
|
499
268
|
|
|
500
269
|
MIT
|
|
501
|
-
|
|
502
|
-
## Links
|
|
503
|
-
|
|
504
|
-
- **GitHub**: [https://github.com/TestBase-ai/computer-agents](https://github.com/TestBase-ai/computer-agents)
|
|
505
|
-
- **npm**: [https://www.npmjs.com/package/computer-agents](https://www.npmjs.com/package/computer-agents)
|
|
506
|
-
- **Documentation**: [https://github.com/TestBase-ai/computer-agents/tree/main/examples/testbase](https://github.com/TestBase-ai/computer-agents/tree/main/examples/testbase)
|
|
507
|
-
|
|
508
|
-
## Support
|
|
509
|
-
|
|
510
|
-
- **Issues**: [GitHub Issues](https://github.com/TestBase-ai/computer-agents/issues)
|
|
511
|
-
- **Website**: [testbase.ai](https://testbase.ai)
|