computer-agents 2.1.0 → 2.2.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
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
# Computer Agents SDK
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/computer-agents)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
|
|
6
|
+
Official TypeScript/JavaScript SDK for the [Computer Agents Cloud API](https://computer-agents.com). Execute Claude-powered AI agents in isolated cloud containers.
|
|
4
7
|
|
|
5
8
|
## Installation
|
|
6
9
|
|
|
7
10
|
```bash
|
|
8
11
|
npm install computer-agents
|
|
9
|
-
# or
|
|
10
|
-
pnpm add computer-agents
|
|
11
|
-
# or
|
|
12
|
-
yarn add computer-agents
|
|
13
12
|
```
|
|
14
13
|
|
|
15
14
|
## Quick Start
|
|
@@ -23,7 +22,6 @@ const client = new ComputerAgentsClient({
|
|
|
23
22
|
|
|
24
23
|
// Execute a task
|
|
25
24
|
const result = await client.run('Create a REST API with Flask', {
|
|
26
|
-
environmentId: 'env_xxx',
|
|
27
25
|
onEvent: (event) => console.log(event.type)
|
|
28
26
|
});
|
|
29
27
|
|
|
@@ -32,54 +30,57 @@ console.log(result.content);
|
|
|
32
30
|
|
|
33
31
|
## Features
|
|
34
32
|
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
33
|
+
- **Claude-powered** — agents run on Claude Opus 4.6, Sonnet 4.5, or Haiku 4.5
|
|
34
|
+
- **Cloud execution** — isolated containers with persistent workspaces
|
|
35
|
+
- **SSE streaming** — real-time execution progress and tool calls
|
|
36
|
+
- **Session continuity** — multi-turn conversations via threads
|
|
37
|
+
- **MCP integration** — extend capabilities with Model Context Protocol servers
|
|
38
|
+
- **Skills** — web search, image generation, deep research
|
|
39
|
+
- **Zero dependencies** — uses native `fetch`
|
|
40
|
+
- **Full TypeScript support** — complete type definitions
|
|
41
|
+
|
|
42
|
+
## Supported Models
|
|
43
|
+
|
|
44
|
+
| Model | ID | Use Case |
|
|
45
|
+
|-------|-----|----------|
|
|
46
|
+
| Claude 4.6 Opus | `claude-opus-4-6` | Most capable, complex tasks |
|
|
47
|
+
| Claude 4.5 Sonnet | `claude-sonnet-4-5` | Balanced (default) |
|
|
48
|
+
| Claude 4.5 Haiku | `claude-haiku-4-5` | Fast, efficient |
|
|
39
49
|
|
|
40
50
|
## API Reference
|
|
41
51
|
|
|
42
|
-
###
|
|
52
|
+
### Client
|
|
43
53
|
|
|
44
54
|
```typescript
|
|
45
55
|
const client = new ComputerAgentsClient({
|
|
46
|
-
apiKey: '
|
|
47
|
-
baseUrl: 'https://api.computer-agents.com',
|
|
48
|
-
timeout: 60000,
|
|
49
|
-
debug: false
|
|
56
|
+
apiKey: 'your-api-key', // Required
|
|
57
|
+
baseUrl: 'https://api.computer-agents.com', // Optional (default)
|
|
58
|
+
timeout: 60000, // Optional (default: 60s)
|
|
59
|
+
debug: false // Optional
|
|
50
60
|
});
|
|
51
61
|
```
|
|
52
62
|
|
|
53
63
|
### Running Tasks
|
|
54
64
|
|
|
55
|
-
The simplest way to execute a task:
|
|
56
|
-
|
|
57
65
|
```typescript
|
|
58
66
|
// One-shot execution
|
|
59
67
|
const result = await client.run('Fix the TypeScript errors', {
|
|
60
68
|
environmentId: 'env_xxx'
|
|
61
69
|
});
|
|
62
70
|
|
|
63
|
-
// With streaming
|
|
71
|
+
// With streaming
|
|
64
72
|
const result = await client.run('Build a REST API', {
|
|
65
|
-
environmentId: 'env_xxx',
|
|
66
73
|
onEvent: (event) => {
|
|
67
74
|
if (event.type === 'response.item.completed') {
|
|
68
|
-
console.log(event
|
|
75
|
+
console.log(event);
|
|
69
76
|
}
|
|
70
77
|
}
|
|
71
78
|
});
|
|
72
|
-
|
|
73
|
-
// Continue a conversation
|
|
74
|
-
const followUp = await client.run('Add authentication', {
|
|
75
|
-
environmentId: 'env_xxx',
|
|
76
|
-
threadId: result.threadId
|
|
77
|
-
});
|
|
78
79
|
```
|
|
79
80
|
|
|
80
81
|
### Threads
|
|
81
82
|
|
|
82
|
-
|
|
83
|
+
Multi-turn conversations with persistent context:
|
|
83
84
|
|
|
84
85
|
```typescript
|
|
85
86
|
// Create a thread
|
|
@@ -87,154 +88,103 @@ const thread = await client.threads.create({
|
|
|
87
88
|
environmentId: 'env_xxx'
|
|
88
89
|
});
|
|
89
90
|
|
|
90
|
-
// Send
|
|
91
|
-
|
|
92
|
-
content: 'Create a
|
|
91
|
+
// Send messages — the agent remembers the full context
|
|
92
|
+
await client.threads.sendMessage(thread.id, {
|
|
93
|
+
content: 'Create a Python web server',
|
|
93
94
|
onEvent: (event) => console.log(event)
|
|
94
95
|
});
|
|
95
96
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
// Get a specific thread
|
|
100
|
-
const thread = await client.threads.get('thread_xxx');
|
|
101
|
-
|
|
102
|
-
// Delete a thread
|
|
103
|
-
await client.threads.delete('thread_xxx');
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### Environments
|
|
107
|
-
|
|
108
|
-
Manage isolated execution environments:
|
|
109
|
-
|
|
110
|
-
```typescript
|
|
111
|
-
// Create an environment with custom configuration
|
|
112
|
-
const env = await client.environments.create({
|
|
113
|
-
name: 'data-science',
|
|
114
|
-
description: 'Environment for data processing',
|
|
115
|
-
runtimes: { python: '3.12', nodejs: '20' },
|
|
116
|
-
packages: {
|
|
117
|
-
system: ['ffmpeg'],
|
|
118
|
-
python: ['pandas', 'numpy'],
|
|
119
|
-
node: ['typescript']
|
|
120
|
-
},
|
|
121
|
-
internetAccess: true
|
|
97
|
+
await client.threads.sendMessage(thread.id, {
|
|
98
|
+
content: 'Add authentication to it',
|
|
99
|
+
onEvent: (event) => console.log(event)
|
|
122
100
|
});
|
|
123
101
|
|
|
124
|
-
//
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
// Get an environment
|
|
128
|
-
const env = await client.environments.get('env_xxx');
|
|
129
|
-
|
|
130
|
-
// Get default environment (creates one if doesn't exist)
|
|
131
|
-
const defaultEnv = await client.environments.getDefault();
|
|
132
|
-
|
|
133
|
-
// Update an environment
|
|
134
|
-
await client.environments.update('env_xxx', {
|
|
135
|
-
description: 'Updated description'
|
|
102
|
+
// Copy a thread to fork the conversation
|
|
103
|
+
const copy = await client.threads.copy(thread.id, {
|
|
104
|
+
title: 'Experiment v2'
|
|
136
105
|
});
|
|
137
106
|
|
|
138
|
-
//
|
|
139
|
-
await client.
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
#### Runtime Management
|
|
143
|
-
|
|
144
|
-
```typescript
|
|
145
|
-
// List all available runtimes and versions
|
|
146
|
-
const available = await client.environments.listAvailableRuntimes();
|
|
147
|
-
// { python: ['3.9', '3.10', '3.11', '3.12', '3.13'], nodejs: ['18', '20', '22'], ... }
|
|
148
|
-
|
|
149
|
-
// Get current runtimes for an environment
|
|
150
|
-
const runtimes = await client.environments.getRuntimes('env_xxx');
|
|
151
|
-
// { python: '3.12', nodejs: '20' }
|
|
152
|
-
|
|
153
|
-
// Set runtime versions (triggers rebuild)
|
|
154
|
-
await client.environments.setRuntimes('env_xxx', {
|
|
155
|
-
python: '3.12',
|
|
156
|
-
nodejs: '20',
|
|
157
|
-
go: '1.22'
|
|
107
|
+
// Search across threads
|
|
108
|
+
const results = await client.threads.search({
|
|
109
|
+
query: 'REST API',
|
|
110
|
+
limit: 10
|
|
158
111
|
});
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
#### Package Management
|
|
162
|
-
|
|
163
|
-
```typescript
|
|
164
|
-
// List installed packages
|
|
165
|
-
const packages = await client.environments.listPackages('env_xxx');
|
|
166
|
-
// { system: ['ffmpeg'], python: ['pandas'], node: ['typescript'] }
|
|
167
112
|
|
|
168
|
-
//
|
|
169
|
-
await client.
|
|
170
|
-
await client.environments.installPackages('env_xxx', 'system', ['imagemagick']);
|
|
171
|
-
await client.environments.installPackages('env_xxx', 'node', ['tsx']);
|
|
113
|
+
// Get execution logs
|
|
114
|
+
const logs = await client.threads.getLogs(thread.id);
|
|
172
115
|
|
|
173
|
-
//
|
|
174
|
-
await client.
|
|
116
|
+
// List, get, update, delete
|
|
117
|
+
const threads = await client.threads.list();
|
|
118
|
+
const t = await client.threads.get('thread_xxx');
|
|
119
|
+
await client.threads.update('thread_xxx', { title: 'New title' });
|
|
120
|
+
await client.threads.delete('thread_xxx');
|
|
175
121
|
```
|
|
176
122
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
```typescript
|
|
180
|
-
// Get Dockerfile configuration
|
|
181
|
-
const dockerfile = await client.environments.getDockerfile('env_xxx');
|
|
182
|
-
// { baseImage: '...', dockerfileExtensions: '...', effectiveDockerfile: '...' }
|
|
183
|
-
|
|
184
|
-
// Set Dockerfile extensions (triggers rebuild)
|
|
185
|
-
await client.environments.setDockerfileExtensions('env_xxx',
|
|
186
|
-
'RUN pip install custom-package\nRUN apt-get install -y custom-tool'
|
|
187
|
-
);
|
|
188
|
-
|
|
189
|
-
// Validate Dockerfile syntax without building
|
|
190
|
-
const validation = await client.environments.validateDockerfile('env_xxx',
|
|
191
|
-
'RUN pip install something'
|
|
192
|
-
);
|
|
193
|
-
// { valid: true, warnings: [], effectiveDockerfile: '...' }
|
|
194
|
-
```
|
|
123
|
+
### Agents
|
|
195
124
|
|
|
196
|
-
|
|
125
|
+
Configure agent behavior with specific models and instructions:
|
|
197
126
|
|
|
198
127
|
```typescript
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
// Get build status
|
|
207
|
-
const status = await client.environments.getBuildStatus('env_xxx');
|
|
208
|
-
// { buildStatus: 'ready', buildHash: '...', imageTag: '...', lastBuildAt: '...' }
|
|
209
|
-
|
|
210
|
-
// Get build logs
|
|
211
|
-
const logs = await client.environments.getBuildLogs('env_xxx');
|
|
212
|
-
// { logs: '...', buildStatus: 'ready' }
|
|
128
|
+
const agent = await client.agents.create({
|
|
129
|
+
name: 'Senior Developer',
|
|
130
|
+
model: 'claude-sonnet-4-5',
|
|
131
|
+
instructions: 'You are a senior developer. Write clean, tested code.',
|
|
132
|
+
reasoningEffort: 'high'
|
|
133
|
+
});
|
|
213
134
|
|
|
214
|
-
//
|
|
215
|
-
const
|
|
216
|
-
|
|
135
|
+
// Use the agent in a thread
|
|
136
|
+
const thread = await client.threads.create({
|
|
137
|
+
environmentId: 'env_xxx',
|
|
138
|
+
agentId: agent.id
|
|
139
|
+
});
|
|
217
140
|
```
|
|
218
141
|
|
|
219
|
-
###
|
|
142
|
+
### Environments
|
|
220
143
|
|
|
221
|
-
|
|
144
|
+
Isolated containers with custom runtimes, packages, and configuration:
|
|
222
145
|
|
|
223
146
|
```typescript
|
|
224
|
-
// Create an
|
|
225
|
-
const
|
|
226
|
-
name: '
|
|
227
|
-
|
|
228
|
-
instructions: 'You are a helpful coding assistant.'
|
|
147
|
+
// Create an environment
|
|
148
|
+
const env = await client.environments.create({
|
|
149
|
+
name: 'python-dev',
|
|
150
|
+
internetAccess: true
|
|
229
151
|
});
|
|
230
152
|
|
|
231
|
-
//
|
|
232
|
-
|
|
153
|
+
// Configure runtimes
|
|
154
|
+
await client.environments.setRuntimes(env.id, {
|
|
155
|
+
python: '3.12',
|
|
156
|
+
nodejs: '20'
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
// Install packages
|
|
160
|
+
await client.environments.installPackages(env.id, {
|
|
161
|
+
packages: [
|
|
162
|
+
{ type: 'python', name: 'flask' },
|
|
163
|
+
{ type: 'python', name: 'pytest' },
|
|
164
|
+
{ type: 'system', name: 'curl' }
|
|
165
|
+
]
|
|
166
|
+
});
|
|
233
167
|
|
|
234
|
-
//
|
|
235
|
-
await client.
|
|
236
|
-
|
|
168
|
+
// Add MCP servers
|
|
169
|
+
await client.environments.update(env.id, {
|
|
170
|
+
mcpServers: [
|
|
171
|
+
{
|
|
172
|
+
type: 'stdio',
|
|
173
|
+
name: 'filesystem',
|
|
174
|
+
command: 'npx',
|
|
175
|
+
args: ['-y', '@modelcontextprotocol/server-filesystem', '/workspace']
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
type: 'http',
|
|
179
|
+
name: 'notion',
|
|
180
|
+
url: 'https://mcp.notion.com/mcp',
|
|
181
|
+
bearerToken: process.env.NOTION_TOKEN
|
|
182
|
+
}
|
|
183
|
+
]
|
|
237
184
|
});
|
|
185
|
+
|
|
186
|
+
// Trigger a build
|
|
187
|
+
await client.environments.build(env.id);
|
|
238
188
|
```
|
|
239
189
|
|
|
240
190
|
### Files
|
|
@@ -242,89 +192,92 @@ await client.agents.update('agent_xxx', {
|
|
|
242
192
|
Manage files in environment workspaces:
|
|
243
193
|
|
|
244
194
|
```typescript
|
|
245
|
-
// List files in an environment
|
|
246
|
-
const files = await client.files.listFiles('env_xxx');
|
|
247
|
-
|
|
248
195
|
// Upload a file
|
|
249
196
|
await client.files.uploadFile({
|
|
250
197
|
environmentId: 'env_xxx',
|
|
251
|
-
|
|
252
|
-
path: 'src', // optional subdirectory
|
|
198
|
+
path: 'src/app.py',
|
|
253
199
|
content: 'print("hello")'
|
|
254
200
|
});
|
|
255
201
|
|
|
256
202
|
// Download file content
|
|
257
203
|
const content = await client.files.getFile('env_xxx', 'src/app.py');
|
|
258
204
|
|
|
259
|
-
//
|
|
260
|
-
const
|
|
261
|
-
|
|
262
|
-
// Move/rename a file
|
|
263
|
-
await client.files.moveFile({
|
|
264
|
-
environmentId: 'env_xxx',
|
|
265
|
-
sourcePath: 'old-name.py',
|
|
266
|
-
destPath: 'new-name.py'
|
|
267
|
-
});
|
|
205
|
+
// List files
|
|
206
|
+
const files = await client.files.listFiles('env_xxx');
|
|
268
207
|
|
|
269
208
|
// Delete a file
|
|
270
209
|
await client.files.deleteFile('env_xxx', 'src/app.py');
|
|
271
210
|
```
|
|
272
211
|
|
|
212
|
+
### Git
|
|
213
|
+
|
|
214
|
+
Version control on workspaces:
|
|
215
|
+
|
|
216
|
+
```typescript
|
|
217
|
+
// View uncommitted changes
|
|
218
|
+
const diff = await client.git.diff('env_xxx');
|
|
219
|
+
|
|
220
|
+
// Commit and push
|
|
221
|
+
await client.git.commit('env_xxx', { message: 'Add new feature' });
|
|
222
|
+
await client.git.push('env_xxx');
|
|
223
|
+
```
|
|
224
|
+
|
|
273
225
|
### Schedules
|
|
274
226
|
|
|
275
|
-
Automate
|
|
227
|
+
Automate recurring tasks:
|
|
276
228
|
|
|
277
229
|
```typescript
|
|
278
|
-
// Create a schedule
|
|
279
230
|
const schedule = await client.schedules.create({
|
|
280
|
-
name: 'Daily
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
task: '
|
|
284
|
-
|
|
285
|
-
cronExpression: '0 9 * * *'
|
|
231
|
+
name: 'Daily Code Review',
|
|
232
|
+
type: 'cron',
|
|
233
|
+
cronExpression: '0 9 * * *',
|
|
234
|
+
task: 'Review all uncommitted changes',
|
|
235
|
+
environmentId: 'env_xxx'
|
|
286
236
|
});
|
|
287
237
|
|
|
288
|
-
//
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
// Trigger a schedule manually
|
|
292
|
-
await client.schedules.trigger('schedule_xxx');
|
|
238
|
+
// Trigger manually
|
|
239
|
+
await client.schedules.trigger(schedule.id);
|
|
293
240
|
```
|
|
294
241
|
|
|
295
|
-
###
|
|
242
|
+
### Budget
|
|
296
243
|
|
|
297
|
-
|
|
244
|
+
Monitor spending and control execution:
|
|
298
245
|
|
|
299
246
|
```typescript
|
|
300
|
-
// Get budget status
|
|
301
247
|
const status = await client.budget.getStatus();
|
|
248
|
+
console.log(`Balance: $${(status.balance / 100).toFixed(2)}`);
|
|
302
249
|
|
|
303
|
-
// Check if can execute
|
|
304
250
|
const canRun = await client.budget.canExecute();
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
// Get usage stats
|
|
310
|
-
const stats = await client.billing.getStats({ period: 'month' });
|
|
251
|
+
if (!canRun.canExecute) {
|
|
252
|
+
console.log('Budget exceeded:', canRun.reason);
|
|
253
|
+
}
|
|
311
254
|
```
|
|
312
255
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
Manage version control:
|
|
256
|
+
## Streaming Events
|
|
316
257
|
|
|
317
258
|
```typescript
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
259
|
+
await client.threads.sendMessage(threadId, {
|
|
260
|
+
content: 'Build a REST API',
|
|
261
|
+
onEvent: (event) => {
|
|
262
|
+
switch (event.type) {
|
|
263
|
+
case 'response.started':
|
|
264
|
+
console.log('Execution started');
|
|
265
|
+
break;
|
|
266
|
+
case 'response.item.completed':
|
|
267
|
+
console.log('Item:', event);
|
|
268
|
+
break;
|
|
269
|
+
case 'response.completed':
|
|
270
|
+
console.log('Response finished');
|
|
271
|
+
break;
|
|
272
|
+
case 'stream.completed':
|
|
273
|
+
console.log('Done');
|
|
274
|
+
break;
|
|
275
|
+
case 'stream.error':
|
|
276
|
+
console.error('Error:', event);
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
324
280
|
});
|
|
325
|
-
|
|
326
|
-
// Push to remote
|
|
327
|
-
await client.git.push('env_xxx');
|
|
328
281
|
```
|
|
329
282
|
|
|
330
283
|
## Error Handling
|
|
@@ -333,7 +286,7 @@ await client.git.push('env_xxx');
|
|
|
333
286
|
import { ComputerAgentsClient, ApiClientError } from 'computer-agents';
|
|
334
287
|
|
|
335
288
|
try {
|
|
336
|
-
await client.run('Task'
|
|
289
|
+
await client.run('Task');
|
|
337
290
|
} catch (error) {
|
|
338
291
|
if (error instanceof ApiClientError) {
|
|
339
292
|
console.error(`API Error: ${error.message}`);
|
|
@@ -343,11 +296,31 @@ try {
|
|
|
343
296
|
}
|
|
344
297
|
```
|
|
345
298
|
|
|
346
|
-
##
|
|
299
|
+
## Examples
|
|
300
|
+
|
|
301
|
+
See the [`examples/`](./examples) directory for complete, runnable examples:
|
|
347
302
|
|
|
348
|
-
|
|
|
349
|
-
|
|
350
|
-
|
|
|
303
|
+
| Example | Description |
|
|
304
|
+
|---------|-------------|
|
|
305
|
+
| [Hello World](./examples/01-hello-world.ts) | Simplest possible usage |
|
|
306
|
+
| [Multi-turn Conversation](./examples/02-multi-turn-conversation.ts) | Thread-based conversations |
|
|
307
|
+
| [Streaming](./examples/03-streaming.ts) | Real-time SSE event handling |
|
|
308
|
+
| [Custom Agent](./examples/04-custom-agent.ts) | Agent configuration with models and instructions |
|
|
309
|
+
| [Environments](./examples/05-environments.ts) | Environment management |
|
|
310
|
+
| [File Operations](./examples/06-file-operations.ts) | Upload, download, and manage files |
|
|
311
|
+
| [Copy Thread](./examples/07-copy-thread.ts) | Fork conversations |
|
|
312
|
+
| [Search Threads](./examples/08-search-threads.ts) | Full-text search across threads |
|
|
313
|
+
| [MCP Servers](./examples/09-mcp-servers.ts) | Model Context Protocol integration |
|
|
314
|
+
| [Git Operations](./examples/10-git-operations.ts) | Diffs, commits, and pushes |
|
|
315
|
+
| [Budget Management](./examples/11-budget-management.ts) | Monitor spending |
|
|
316
|
+
| [Schedules](./examples/12-schedules.ts) | Automate recurring tasks |
|
|
317
|
+
| [Execution Logs](./examples/13-execution-logs.ts) | Logs and deep research sessions |
|
|
318
|
+
|
|
319
|
+
Run any example:
|
|
320
|
+
|
|
321
|
+
```bash
|
|
322
|
+
COMPUTER_AGENTS_API_KEY=your-key npx tsx examples/01-hello-world.ts
|
|
323
|
+
```
|
|
351
324
|
|
|
352
325
|
## TypeScript
|
|
353
326
|
|
|
@@ -355,25 +328,29 @@ Full type definitions are included:
|
|
|
355
328
|
|
|
356
329
|
```typescript
|
|
357
330
|
import type {
|
|
358
|
-
// Core types
|
|
359
331
|
Thread,
|
|
360
332
|
Environment,
|
|
361
333
|
CloudAgent,
|
|
362
334
|
Schedule,
|
|
363
|
-
|
|
335
|
+
Run,
|
|
336
|
+
AgentModel,
|
|
337
|
+
ReasoningEffort,
|
|
364
338
|
MessageStreamEvent,
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
BuildStatus,
|
|
372
|
-
BuildStatusResult,
|
|
373
|
-
DockerfileResult,
|
|
339
|
+
McpServer,
|
|
340
|
+
BudgetStatus,
|
|
341
|
+
CopyThreadParams,
|
|
342
|
+
SearchThreadsResponse,
|
|
343
|
+
ThreadLogEntry,
|
|
344
|
+
ResearchSession,
|
|
374
345
|
} from 'computer-agents';
|
|
375
346
|
```
|
|
376
347
|
|
|
377
348
|
## License
|
|
378
349
|
|
|
379
350
|
MIT
|
|
351
|
+
|
|
352
|
+
## Links
|
|
353
|
+
|
|
354
|
+
- [Website](https://computer-agents.com)
|
|
355
|
+
- [npm](https://www.npmjs.com/package/computer-agents)
|
|
356
|
+
- [GitHub](https://github.com/computer-agents/computer-agents-sdk)
|
|
@@ -157,11 +157,11 @@ export declare class EnvironmentsResource {
|
|
|
157
157
|
*/
|
|
158
158
|
getStatus(environmentId: string): Promise<ContainerStatus>;
|
|
159
159
|
/**
|
|
160
|
-
* Get the
|
|
160
|
+
* Get the agent configuration for an environment
|
|
161
161
|
*/
|
|
162
162
|
getConfig(environmentId: string): Promise<string>;
|
|
163
163
|
/**
|
|
164
|
-
* Update the
|
|
164
|
+
* Update the agent configuration for an environment
|
|
165
165
|
*/
|
|
166
166
|
updateConfig(environmentId: string, config: string): Promise<void>;
|
|
167
167
|
}
|
|
@@ -239,14 +239,14 @@ class EnvironmentsResource {
|
|
|
239
239
|
// Configuration Management
|
|
240
240
|
// =========================================================================
|
|
241
241
|
/**
|
|
242
|
-
* Get the
|
|
242
|
+
* Get the agent configuration for an environment
|
|
243
243
|
*/
|
|
244
244
|
async getConfig(environmentId) {
|
|
245
245
|
const response = await this.client.get(`/environments/${environmentId}/config`);
|
|
246
246
|
return response.config;
|
|
247
247
|
}
|
|
248
248
|
/**
|
|
249
|
-
* Update the
|
|
249
|
+
* Update the agent configuration for an environment
|
|
250
250
|
*/
|
|
251
251
|
async updateConfig(environmentId, config) {
|
|
252
252
|
await this.client.put(`/environments/${environmentId}/config`, { config });
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "computer-agents",
|
|
3
|
-
"repository": "https://github.com/
|
|
3
|
+
"repository": "https://github.com/computer-agents/computer-agents-sdk",
|
|
4
4
|
"homepage": "https://computer-agents.com",
|
|
5
|
-
"version": "2.
|
|
5
|
+
"version": "2.2.0",
|
|
6
6
|
"description": "Official SDK for the Computer Agents Cloud API. Execute Claude-powered AI agents in isolated cloud containers.",
|
|
7
7
|
"author": "Computer Agents",
|
|
8
8
|
"main": "dist/index.js",
|