@agentorg/computer 0.0.20 → 0.0.21
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 +7 -1
- package/dist/agentcomputer.js +8 -6
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -36,6 +36,7 @@ This computer:
|
|
|
36
36
|
|
|
37
37
|
- **It is offered only by a service that no other machine reaches:** one that listens on loopback, with no `--tls-proxy` and no `--public-url`. A service that other machines can reach is a server, and doesn't offer its own machine. There `info` says why, attaching is refused with 409 in the same words, and a computer attached before is refused at start.
|
|
38
38
|
- **`--workspace`, which `attach` needs, is its work folder.** Commands and relative paths start there, and `about` names it. But its files reach the whole machine, as whoever started the service, and so do its commands at `--access terminal`.
|
|
39
|
+
- **Its commands, and a shell a person opens, get the environment the service was started with,** less every `AGENTCOMPUTER_` variable. That is no wall either: commands run in a login shell, so what the person's profile exports comes back, and with the terminal on an agent can read any of the person's processes' environment, the service's among them, with `ps -E`. So start the service from a shell holding nothing an agent shouldn't read.
|
|
39
40
|
- **`kill` detaches it.** What the service kept for it goes, and nothing of the machine's.
|
|
40
41
|
- **Its browser,** with `--browser`, is a headless one with a profile of its own. It runs the Chrome installed on the machine, or what `serve --browser-name` or `--browser-path` names. `info` says whether that program is there.
|
|
41
42
|
- **Or the person's own browser,** with `--own-browser` (`browser: "own"`): their Chrome or Edge, whichever has remote debugging on, Chrome where both do, as they use it, signed in. Its agent works in it with the same tools, and the person watches it in the same live view.
|
|
@@ -55,7 +56,11 @@ This computer:
|
|
|
55
56
|
- The grants are read from that driver, and listed under the outermost app the driver is inside.
|
|
56
57
|
- Asked for, they are asked for by the app: the service opens it through the system with `--args grant` and each grant to ask for, `screen-recording` or `accessibility`, which it asks for in turn.
|
|
57
58
|
- Once a grant changes, the app restarts its driver, which reads grants once. That ends the connections of computers using the screen, which then say Cua Driver has stopped.
|
|
58
|
-
- **What the service starts of Cua Driver sends no telemetry
|
|
59
|
+
- **What the service starts of Cua Driver sends no telemetry and checks for no updates,** so no update notice reaches a computer's log. The person's own Cua Driver app follows its own settings: `cua-driver telemetry disable` turns its telemetry off.
|
|
60
|
+
|
|
61
|
+
**Upgrading from 0.0.20:**
|
|
62
|
+
|
|
63
|
+
- **Commands on this computer no longer get the service's own `AGENTCOMPUTER_` variables,** such as `AGENTCOMPUTER_API_KEY` where the shell that started the service held it. A command that read one should be given what it needs another way.
|
|
59
64
|
|
|
60
65
|
**Upgrading from 0.0.19:**
|
|
61
66
|
|
|
@@ -196,6 +201,7 @@ These take the control token, kept in the data folder. A computer's own endpoint
|
|
|
196
201
|
- **The person's switches.** Each part of this computer an agent can use (`terminal`, `files`, `screen`, and `browser`, the person's own) has the person's own switch.
|
|
197
202
|
- Off, agents' new calls to that part refuse with "The person turned off the screen for agents on this Mac" (or "this machine" off macOS), `info` says the same, and attaching with the screen or the person's browser is refused with 409. What an agent already started, such as a command, runs on.
|
|
198
203
|
- The terminal and the screen each reach the whole machine: with the terminal on, commands read and change any file, whatever the files' switch; with the screen on, the agent acts in any app.
|
|
204
|
+
- So the switches tell an agent what it may use; they don't stop it. With the terminal, the files or the screen on, an agent acts as the person and can read the service's control token in its data folder, like any file of theirs; with the terminal or the screen, it can use it to set the other switches.
|
|
199
205
|
- Any browser's calls that reach the machine answer to its switches too: `browser_run_code_unsafe` to the terminal's, and a call that names files, by `paths` or `filename`, to the files'.
|
|
200
206
|
- The computer's own endpoint on this machine reads each call whole and checks it as it arrives, so it takes one JSON-RPC request in each POST, as the browser's does, and refuses a batch.
|
|
201
207
|
- A service started with `--lend` starts with every switch off, for the person to turn on. Any other starts with every one on. They are kept in the data folder, so they last across a restart. A switches file that can't be read leaves every one off.
|
package/dist/agentcomputer.js
CHANGED
|
@@ -97884,7 +97884,8 @@ var DRIVER_TOOLS = [
|
|
|
97884
97884
|
"bring_to_front"
|
|
97885
97885
|
];
|
|
97886
97886
|
var INSTALL = "Install the signed app from cua.ai/download";
|
|
97887
|
-
var
|
|
97887
|
+
var QUIET = { DO_NOT_TRACK: "1", CUA_DRIVER_RS_UPDATE_CHECK: "false" };
|
|
97888
|
+
var quiet = () => ({ ...process.env, ...QUIET });
|
|
97888
97889
|
var program = (path) => {
|
|
97889
97890
|
try {
|
|
97890
97891
|
const found = statSync2(path);
|
|
@@ -98769,7 +98770,7 @@ var ProcessRuntime = class {
|
|
|
98769
98770
|
};
|
|
98770
98771
|
|
|
98771
98772
|
// src/handlers.ts
|
|
98772
|
-
var VERSION2 = "0.0.
|
|
98773
|
+
var VERSION2 = "0.0.21";
|
|
98773
98774
|
function createHandlers(computers, connections, setup) {
|
|
98774
98775
|
return {
|
|
98775
98776
|
getInfo: async () => ({ version: VERSION2, ...await computers.offers() }),
|
|
@@ -100697,7 +100698,7 @@ var OPENAPI = {
|
|
|
100697
100698
|
"openapi": "3.1.0",
|
|
100698
100699
|
"info": {
|
|
100699
100700
|
"title": "AgentComputer",
|
|
100700
|
-
"version": "0.0.
|
|
100701
|
+
"version": "0.0.21",
|
|
100701
100702
|
"description": "Computers for agents. This file is the source of truth: the HTTP API, the MCP control tools and the SDK are all generated from it. An operation with `x-mcp-tool` is also an MCP tool of that name.",
|
|
100702
100703
|
"license": {
|
|
100703
100704
|
"name": "Apache-2.0",
|
|
@@ -106424,7 +106425,7 @@ var Setup = class {
|
|
|
106424
106425
|
/**
|
|
106425
106426
|
* Cua Driver's own grant, with its app running first, started through the system so that the
|
|
106426
106427
|
* Mac names CuaDriver in what it asks, not whatever started the service. It asks in its own
|
|
106427
|
-
* order, Accessibility first. Neither sends telemetry.
|
|
106428
|
+
* order, Accessibility first. Neither sends telemetry nor checks for updates.
|
|
106428
106429
|
*/
|
|
106429
106430
|
async #askScreen(driver) {
|
|
106430
106431
|
const answers = async () => (await driverGrants(driver)).accessibility !== void 0;
|
|
@@ -106434,8 +106435,7 @@ var Setup = class {
|
|
|
106434
106435
|
"-g",
|
|
106435
106436
|
"-a",
|
|
106436
106437
|
app.app,
|
|
106437
|
-
"--env",
|
|
106438
|
-
"DO_NOT_TRACK=1",
|
|
106438
|
+
...Object.entries(QUIET).flatMap(([name, value]) => ["--env", `${name}=${value}`]),
|
|
106439
106439
|
"--args",
|
|
106440
106440
|
"serve"
|
|
106441
106441
|
]);
|
|
@@ -106624,6 +106624,8 @@ async function main() {
|
|
|
106624
106624
|
if (values["own-browser"] && values.browser)
|
|
106625
106625
|
throw new UsageError("Take --browser or --own-browser: a computer has one browser.");
|
|
106626
106626
|
if (command === "serve") {
|
|
106627
|
+
for (const name of Object.keys(process.env))
|
|
106628
|
+
if (name.startsWith("AGENTCOMPUTER_")) delete process.env[name];
|
|
106627
106629
|
const switches = new Switches(data, values.lend === true);
|
|
106628
106630
|
const { "tls-cert": cert, "tls-key": key } = values;
|
|
106629
106631
|
if (Boolean(cert) !== Boolean(key))
|