computer-agents 0.7.1 → 1.0.1
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 +170 -399
- 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,282 @@
|
|
|
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
|
-
##
|
|
71
|
-
|
|
72
|
-
The SDK supports two agent types:
|
|
73
|
-
|
|
74
|
-
| Type | Execution | Use Cases |
|
|
75
|
-
|------|-----------|-----------|
|
|
76
|
-
| `computer` | Codex SDK | Code generation, file operations, terminal commands |
|
|
77
|
-
| `llm` | OpenAI API | Planning, reasoning, text generation |
|
|
78
|
-
|
|
79
|
-
### Computer Agents
|
|
33
|
+
## Features
|
|
80
34
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
agentType: "computer",
|
|
86
|
-
workspace: "./my-project",
|
|
87
|
-
instructions: "You are a Python developer."
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
await run(agent, "Add unit tests for the fibonacci module");
|
|
91
|
-
```
|
|
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`
|
|
92
39
|
|
|
93
|
-
|
|
40
|
+
## API Reference
|
|
94
41
|
|
|
95
|
-
|
|
42
|
+
### Creating a Client
|
|
96
43
|
|
|
97
44
|
```typescript
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
|
|
102
50
|
});
|
|
103
|
-
|
|
104
|
-
await run(agent, "Review the authentication implementation");
|
|
105
51
|
```
|
|
106
52
|
|
|
107
|
-
|
|
53
|
+
### Running Tasks
|
|
108
54
|
|
|
109
|
-
|
|
55
|
+
The simplest way to execute a task:
|
|
110
56
|
|
|
111
57
|
```typescript
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
const planner = new Agent({
|
|
116
|
-
agentType: 'llm',
|
|
117
|
-
model: 'gpt-4o',
|
|
118
|
-
instructions: 'Create implementation plans.'
|
|
58
|
+
// One-shot execution
|
|
59
|
+
const result = await client.run('Fix the TypeScript errors', {
|
|
60
|
+
environmentId: 'env_xxx'
|
|
119
61
|
});
|
|
120
62
|
|
|
121
|
-
//
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
|
|
85
|
+
// Create a thread
|
|
86
|
+
const thread = await client.threads.create({
|
|
87
|
+
environmentId: 'env_xxx'
|
|
88
|
+
});
|
|
147
89
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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)
|
|
151
94
|
});
|
|
152
95
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
case 'thread.started':
|
|
156
|
-
console.log(`Thread: ${event.thread_id}`);
|
|
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
|
-
```
|
|
96
|
+
// List threads
|
|
97
|
+
const threads = await client.threads.list();
|
|
170
98
|
|
|
171
|
-
|
|
99
|
+
// Get a specific thread
|
|
100
|
+
const thread = await client.threads.get('thread_xxx');
|
|
172
101
|
|
|
173
|
-
|
|
102
|
+
// Delete a thread
|
|
103
|
+
await client.threads.delete('thread_xxx');
|
|
104
|
+
```
|
|
174
105
|
|
|
175
|
-
###
|
|
106
|
+
### Environments
|
|
176
107
|
|
|
177
|
-
|
|
108
|
+
Manage isolated execution environments:
|
|
178
109
|
|
|
179
110
|
```typescript
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
workspace: './my-project'
|
|
111
|
+
// Create an environment
|
|
112
|
+
const env = await client.environments.create({
|
|
113
|
+
name: 'production',
|
|
114
|
+
internetAccess: true
|
|
185
115
|
});
|
|
186
116
|
|
|
187
|
-
//
|
|
188
|
-
const
|
|
189
|
-
|
|
190
|
-
// Pause after 5 seconds
|
|
191
|
-
setTimeout(async () => {
|
|
192
|
-
await agent.pause();
|
|
193
|
-
console.log('Agent paused');
|
|
194
|
-
|
|
195
|
-
// Resume later
|
|
196
|
-
await agent.resume();
|
|
197
|
-
await run(agent, 'Continue analysis');
|
|
198
|
-
}, 5000);
|
|
117
|
+
// List environments
|
|
118
|
+
const environments = await client.environments.list();
|
|
199
119
|
|
|
200
|
-
//
|
|
201
|
-
const
|
|
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();
|
|
210
|
-
```
|
|
120
|
+
// Get an environment
|
|
121
|
+
const env = await client.environments.get('env_xxx');
|
|
211
122
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
123
|
+
// Update an environment
|
|
124
|
+
await client.environments.update('env_xxx', {
|
|
125
|
+
internetAccess: false
|
|
126
|
+
});
|
|
215
127
|
|
|
216
|
-
|
|
217
|
-
|
|
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"
|
|
128
|
+
// Delete an environment
|
|
129
|
+
await client.environments.delete('env_xxx');
|
|
242
130
|
```
|
|
243
131
|
|
|
244
|
-
###
|
|
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
|
|
132
|
+
### Agents
|
|
255
133
|
|
|
256
|
-
|
|
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:
|
|
134
|
+
Configure agent behavior:
|
|
265
135
|
|
|
266
136
|
```typescript
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
137
|
+
// Create an agent
|
|
138
|
+
const agent = await client.agents.create({
|
|
139
|
+
name: 'Code Assistant',
|
|
140
|
+
model: 'gpt-4o',
|
|
141
|
+
instructions: 'You are a helpful coding assistant.'
|
|
270
142
|
});
|
|
271
143
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
await run(agent, 'Add tests'); // Still same session
|
|
144
|
+
// List agents
|
|
145
|
+
const agents = await client.agents.list();
|
|
275
146
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
147
|
+
// Update an agent
|
|
148
|
+
await client.agents.update('agent_xxx', {
|
|
149
|
+
instructions: 'Updated instructions'
|
|
150
|
+
});
|
|
280
151
|
```
|
|
281
152
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
> **Note**: Cloud execution with `CloudClient` and `Project` management is currently in private beta. Public access coming soon.
|
|
285
|
-
>
|
|
286
|
-
> Interested in early access? [Join the waitlist →](https://testbase.ai)
|
|
153
|
+
### Files
|
|
287
154
|
|
|
288
|
-
|
|
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):
|
|
155
|
+
Manage files in environment workspaces:
|
|
295
156
|
|
|
296
157
|
```typescript
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
158
|
+
// List files in an environment
|
|
159
|
+
const files = await client.files.listFiles('env_xxx');
|
|
160
|
+
|
|
161
|
+
// Upload a file
|
|
162
|
+
await client.files.uploadFile({
|
|
163
|
+
environmentId: 'env_xxx',
|
|
164
|
+
filename: 'app.py',
|
|
165
|
+
path: 'src', // optional subdirectory
|
|
166
|
+
content: 'print("hello")'
|
|
301
167
|
});
|
|
302
168
|
|
|
303
|
-
//
|
|
304
|
-
const
|
|
169
|
+
// Download file content
|
|
170
|
+
const content = await client.files.getFile('env_xxx', 'src/app.py');
|
|
171
|
+
|
|
172
|
+
// Download as Buffer
|
|
173
|
+
const buffer = await client.files.downloadFile('env_xxx', 'src/app.py');
|
|
305
174
|
|
|
306
|
-
//
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
175
|
+
// Move/rename a file
|
|
176
|
+
await client.files.moveFile({
|
|
177
|
+
environmentId: 'env_xxx',
|
|
178
|
+
sourcePath: 'old-name.py',
|
|
179
|
+
destPath: 'new-name.py'
|
|
311
180
|
});
|
|
312
181
|
|
|
313
|
-
|
|
314
|
-
|
|
182
|
+
// Delete a file
|
|
183
|
+
await client.files.deleteFile('env_xxx', 'src/app.py');
|
|
315
184
|
```
|
|
316
185
|
|
|
317
|
-
|
|
186
|
+
### Schedules
|
|
318
187
|
|
|
319
|
-
|
|
188
|
+
Automate task execution:
|
|
320
189
|
|
|
321
190
|
```typescript
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
mcpServers: [], // MCP server configurations
|
|
191
|
+
// Create a schedule
|
|
192
|
+
const schedule = await client.schedules.create({
|
|
193
|
+
name: 'Daily Report',
|
|
194
|
+
agentId: 'agent_xxx',
|
|
195
|
+
agentName: 'Reporter',
|
|
196
|
+
task: 'Generate daily report',
|
|
197
|
+
scheduleType: 'recurring',
|
|
198
|
+
cronExpression: '0 9 * * *'
|
|
331
199
|
});
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
### Environment Variables
|
|
335
200
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
OPENAI_API_KEY=your-openai-key
|
|
201
|
+
// List schedules
|
|
202
|
+
const schedules = await client.schedules.list();
|
|
339
203
|
|
|
340
|
-
|
|
341
|
-
|
|
204
|
+
// Trigger a schedule manually
|
|
205
|
+
await client.schedules.trigger('schedule_xxx');
|
|
342
206
|
```
|
|
343
207
|
|
|
344
|
-
|
|
208
|
+
### Billing
|
|
345
209
|
|
|
346
|
-
|
|
210
|
+
Track usage and manage budgets:
|
|
347
211
|
|
|
348
212
|
```typescript
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
const mcpServers: McpServerConfig[] = [
|
|
352
|
-
{
|
|
353
|
-
type: 'stdio',
|
|
354
|
-
name: 'filesystem',
|
|
355
|
-
command: 'npx',
|
|
356
|
-
args: ['@modelcontextprotocol/server-filesystem', '/workspace']
|
|
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
|
|
370
|
-
});
|
|
371
|
-
```
|
|
213
|
+
// Get budget status
|
|
214
|
+
const status = await client.budget.getStatus();
|
|
372
215
|
|
|
373
|
-
|
|
216
|
+
// Check if can execute
|
|
217
|
+
const canRun = await client.budget.canExecute();
|
|
374
218
|
|
|
375
|
-
|
|
219
|
+
// Get billing records
|
|
220
|
+
const records = await client.billing.listRecords({ limit: 10 });
|
|
376
221
|
|
|
377
|
-
|
|
378
|
-
|
|
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
|
-
}
|
|
222
|
+
// Get usage stats
|
|
223
|
+
const stats = await client.billing.getStats({ period: 'month' });
|
|
393
224
|
```
|
|
394
225
|
|
|
395
|
-
###
|
|
226
|
+
### Git Operations
|
|
396
227
|
|
|
397
|
-
|
|
398
|
-
function run(
|
|
399
|
-
agent: Agent,
|
|
400
|
-
task: string,
|
|
401
|
-
options?: RunOptions
|
|
402
|
-
): Promise<RunResult>;
|
|
403
|
-
```
|
|
404
|
-
|
|
405
|
-
### runStreamed()
|
|
228
|
+
Manage version control:
|
|
406
229
|
|
|
407
230
|
```typescript
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
task: string,
|
|
411
|
-
options?: RunOptions
|
|
412
|
-
): AsyncGenerator<Event>;
|
|
413
|
-
```
|
|
231
|
+
// Get diff
|
|
232
|
+
const diff = await client.git.diff('env_xxx');
|
|
414
233
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
constructor(config?: CloudClientConfig);
|
|
234
|
+
// Commit changes
|
|
235
|
+
await client.git.commit('env_xxx', {
|
|
236
|
+
message: 'Add new feature'
|
|
237
|
+
});
|
|
420
238
|
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
async getProject(id: string): Promise<Project>;
|
|
424
|
-
async deleteProject(id: string, hard?: boolean): Promise<void>;
|
|
425
|
-
}
|
|
239
|
+
// Push to remote
|
|
240
|
+
await client.git.push('env_xxx');
|
|
426
241
|
```
|
|
427
242
|
|
|
428
|
-
|
|
243
|
+
## Error Handling
|
|
429
244
|
|
|
430
245
|
```typescript
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
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;
|
|
246
|
+
import { ComputerAgentsClient, ApiClientError } from 'computer-agents';
|
|
247
|
+
|
|
248
|
+
try {
|
|
249
|
+
await client.run('Task', { environmentId: 'env_xxx' });
|
|
250
|
+
} catch (error) {
|
|
251
|
+
if (error instanceof ApiClientError) {
|
|
252
|
+
console.error(`API Error: ${error.message}`);
|
|
253
|
+
console.error(`Status: ${error.status}`);
|
|
254
|
+
console.error(`Code: ${error.code}`);
|
|
255
|
+
}
|
|
448
256
|
}
|
|
449
257
|
```
|
|
450
258
|
|
|
451
|
-
##
|
|
452
|
-
|
|
453
|
-
```bash
|
|
454
|
-
# Clone the repository
|
|
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
|
|
464
|
-
```
|
|
465
|
-
|
|
466
|
-
[View all examples →](https://github.com/TestBase-ai/computer-agents/tree/main/examples/testbase)
|
|
259
|
+
## Environment Variables
|
|
467
260
|
|
|
468
|
-
|
|
261
|
+
| Variable | Description |
|
|
262
|
+
|----------|-------------|
|
|
263
|
+
| `COMPUTER_AGENTS_API_KEY` | API key for authentication |
|
|
469
264
|
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
```bash
|
|
473
|
-
export OPENAI_API_KEY=sk-...
|
|
474
|
-
```
|
|
265
|
+
## TypeScript
|
|
475
266
|
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
Computer agents need a workspace parameter:
|
|
267
|
+
Full type definitions are included:
|
|
479
268
|
|
|
480
269
|
```typescript
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
Use the same agent instance across runs:
|
|
491
|
-
|
|
492
|
-
```typescript
|
|
493
|
-
const agent = new Agent({ agentType: 'computer', workspace: './project' });
|
|
494
|
-
await run(agent, 'Task 1');
|
|
495
|
-
await run(agent, 'Task 2'); // Same instance = session continues
|
|
270
|
+
import type {
|
|
271
|
+
Thread,
|
|
272
|
+
Environment,
|
|
273
|
+
CloudAgent,
|
|
274
|
+
Schedule,
|
|
275
|
+
BudgetStatus,
|
|
276
|
+
MessageStreamEvent,
|
|
277
|
+
} from 'computer-agents';
|
|
496
278
|
```
|
|
497
279
|
|
|
498
280
|
## License
|
|
499
281
|
|
|
500
282
|
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)
|