@skillful-agents/agent-computer 0.0.4 → 0.0.5
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/bin/ac-core-darwin-arm64 +0 -0
- package/bin/ac-core-darwin-x64 +0 -0
- package/bin/ac-core-win32-arm64.exe +0 -0
- package/bin/ac-core-win32-x64.exe +0 -0
- package/dist/src/platform/resolve.d.ts.map +1 -1
- package/dist/src/platform/resolve.js +17 -4
- package/dist/src/platform/resolve.js.map +1 -1
- package/dist-cjs/bin/ac.js +127 -0
- package/dist-cjs/package.json +1 -0
- package/dist-cjs/src/bridge.js +693 -0
- package/dist-cjs/src/cdp/ax-tree.js +162 -0
- package/dist-cjs/src/cdp/bounds.js +66 -0
- package/dist-cjs/src/cdp/client.js +272 -0
- package/dist-cjs/src/cdp/connection.js +285 -0
- package/dist-cjs/src/cdp/diff.js +55 -0
- package/dist-cjs/src/cdp/discovery.js +91 -0
- package/dist-cjs/src/cdp/index.js +27 -0
- package/dist-cjs/src/cdp/interactions.js +301 -0
- package/dist-cjs/src/cdp/port-manager.js +68 -0
- package/dist-cjs/src/cdp/role-map.js +102 -0
- package/dist-cjs/src/cdp/types.js +2 -0
- package/dist-cjs/src/cli/commands/apps.js +63 -0
- package/dist-cjs/src/cli/commands/batch.js +37 -0
- package/dist-cjs/src/cli/commands/click.js +61 -0
- package/dist-cjs/src/cli/commands/clipboard.js +31 -0
- package/dist-cjs/src/cli/commands/dialog.js +45 -0
- package/dist-cjs/src/cli/commands/drag.js +26 -0
- package/dist-cjs/src/cli/commands/find.js +99 -0
- package/dist-cjs/src/cli/commands/menu.js +36 -0
- package/dist-cjs/src/cli/commands/screenshot.js +27 -0
- package/dist-cjs/src/cli/commands/scroll.js +77 -0
- package/dist-cjs/src/cli/commands/session.js +27 -0
- package/dist-cjs/src/cli/commands/snapshot.js +24 -0
- package/dist-cjs/src/cli/commands/type.js +69 -0
- package/dist-cjs/src/cli/commands/windowmgmt.js +62 -0
- package/dist-cjs/src/cli/commands/windows.js +10 -0
- package/dist-cjs/src/cli/commands.js +215 -0
- package/dist-cjs/src/cli/output.js +253 -0
- package/dist-cjs/src/cli/parser.js +128 -0
- package/dist-cjs/src/config.js +79 -0
- package/dist-cjs/src/daemon.js +183 -0
- package/dist-cjs/src/errors.js +118 -0
- package/dist-cjs/src/index.js +24 -0
- package/dist-cjs/src/platform/index.js +16 -0
- package/dist-cjs/src/platform/resolve.js +83 -0
- package/dist-cjs/src/refs.js +91 -0
- package/dist-cjs/src/sdk.js +288 -0
- package/dist-cjs/src/types.js +11 -0
- package/package.json +4 -2
package/bin/ac-core-darwin-arm64
CHANGED
|
Binary file
|
package/bin/ac-core-darwin-x64
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/platform/resolve.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/platform/resolve.ts"],"names":[],"mappings":"AAgCA,wBAAgB,aAAa,IAAI,MAAM,CAuDtC"}
|
|
@@ -1,20 +1,33 @@
|
|
|
1
1
|
import { platform, arch } from 'os';
|
|
2
2
|
import { join, dirname } from 'path';
|
|
3
3
|
import { existsSync } from 'fs';
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Get directory of this file. Works in both ESM and CJS:
|
|
6
|
+
* - CJS: __dirname is a global provided by Node
|
|
7
|
+
* - ESM: use import.meta.url (wrapped in eval to avoid CJS parse error)
|
|
8
|
+
*/
|
|
9
|
+
function getModuleDir() {
|
|
10
|
+
if (typeof __dirname !== 'undefined')
|
|
11
|
+
return __dirname;
|
|
12
|
+
// ESM fallback — eval hides import.meta from the CJS parser
|
|
13
|
+
// eslint-disable-next-line no-eval
|
|
14
|
+
const url = eval('import.meta.url');
|
|
15
|
+
const { fileURLToPath } = require('url');
|
|
16
|
+
return dirname(fileURLToPath(url));
|
|
17
|
+
}
|
|
18
|
+
const _dirname = getModuleDir();
|
|
6
19
|
/**
|
|
7
20
|
* Find the package root by walking up from __dirname until we find package.json.
|
|
8
21
|
* Works whether running from source (src/platform/) or compiled (dist/src/platform/).
|
|
9
22
|
*/
|
|
10
23
|
function findProjectRoot() {
|
|
11
|
-
let dir =
|
|
24
|
+
let dir = _dirname;
|
|
12
25
|
for (let i = 0; i < 5; i++) {
|
|
13
26
|
if (existsSync(join(dir, 'package.json')))
|
|
14
27
|
return dir;
|
|
15
28
|
dir = dirname(dir);
|
|
16
29
|
}
|
|
17
|
-
return join(
|
|
30
|
+
return join(_dirname, '..', '..');
|
|
18
31
|
}
|
|
19
32
|
export function resolveBinary() {
|
|
20
33
|
const os = platform();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/platform/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/platform/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC;;;;GAIG;AACH,SAAS,YAAY;IACnB,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IACvD,4DAA4D;IAC5D,mCAAmC;IACnC,MAAM,GAAG,GAAW,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5C,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,KAAK,CAAyB,CAAC;IACjE,OAAO,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC,CAAC;AACD,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;AAEhC;;;GAGG;AACH,SAAS,eAAe;IACtB,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QACtD,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,IAAI,EAAE,CAAC;IAEnB,IAAI,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,yBAAyB,EAAE,8CAA8C,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IAEtC,iDAAiD;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;IACrE,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpB,oDAAoD;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC3F,IAAI,UAAU,CAAC,aAAa,CAAC;YAAE,OAAO,aAAa,CAAC;QAEpD,iCAAiC;QACjC,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3F,IAAI,UAAU,CAAC,eAAe,CAAC;YAAE,OAAO,eAAe,CAAC;IAC1D,CAAC;IAED,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QACtD,MAAM,IAAI,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAErE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,8CAA8C;YAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YAC9E,IAAI,UAAU,CAAC,WAAW,CAAC;gBAAE,OAAO,WAAW,CAAC;YAEhD,mDAAmD;YACnD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;YAC9D,IAAI,UAAU,CAAC,WAAW,CAAC;gBAAE,OAAO,WAAW,CAAC;YAEhD,iDAAiD;YACjD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;YAC1D,IAAI,UAAU,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,EAAE,KAAK,OAAO;QAC9B,CAAC,CAAC,mCAAmC;QACrC,CAAC,CAAC,2CAA2C,CAAC;IAChD,MAAM,IAAI,KAAK,CACb,+BAA+B,GAAG,IAAI;QACtC,sBAAsB,SAAS,EAAE,CAClC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const parser_js_1 = require("../src/cli/parser.js");
|
|
5
|
+
const commands_js_1 = require("../src/cli/commands.js");
|
|
6
|
+
const output_js_1 = require("../src/cli/output.js");
|
|
7
|
+
const bridge_js_1 = require("../src/bridge.js");
|
|
8
|
+
const errors_js_1 = require("../src/errors.js");
|
|
9
|
+
const config_js_1 = require("../src/config.js");
|
|
10
|
+
async function main() {
|
|
11
|
+
const parsed = (0, parser_js_1.parseArgs)(process.argv);
|
|
12
|
+
const config = (0, config_js_1.resolveConfig)();
|
|
13
|
+
// Resolve global options
|
|
14
|
+
const jsonMode = parsed.flags['json'] === true || process.env.AC_JSON === '1';
|
|
15
|
+
const textMode = !jsonMode;
|
|
16
|
+
const verbose = parsed.flags['verbose'] === true || process.env.AC_VERBOSE === '1';
|
|
17
|
+
const contentBoundary = parsed.flags['content-boundary'] === true || config['content-boundary'];
|
|
18
|
+
const maxOutput = typeof parsed.flags['max-output'] === 'string'
|
|
19
|
+
? parseInt(parsed.flags['max-output'], 10)
|
|
20
|
+
: undefined;
|
|
21
|
+
const timeout = typeof parsed.flags['timeout'] === 'string'
|
|
22
|
+
? parseInt(parsed.flags['timeout'], 10)
|
|
23
|
+
: config['default-timeout'];
|
|
24
|
+
if (verbose) {
|
|
25
|
+
process.env.AC_VERBOSE = '1';
|
|
26
|
+
}
|
|
27
|
+
// Special case: help outputs plain text
|
|
28
|
+
if (parsed.command === 'help') {
|
|
29
|
+
const handler = (0, commands_js_1.getCommand)('help');
|
|
30
|
+
const result = await handler(parsed, null);
|
|
31
|
+
console.log(result.data);
|
|
32
|
+
process.exit(0);
|
|
33
|
+
}
|
|
34
|
+
// Find command handler
|
|
35
|
+
const handler = await (0, commands_js_1.getCommandAsync)(parsed.command);
|
|
36
|
+
if (!handler) {
|
|
37
|
+
// Try sending as a raw method to the daemon
|
|
38
|
+
const bridge = new bridge_js_1.Bridge({ timeout });
|
|
39
|
+
try {
|
|
40
|
+
const result = await bridge.send(parsed.command, buildParamsFromArgs(parsed));
|
|
41
|
+
output(result, textMode, contentBoundary, maxOutput);
|
|
42
|
+
await bridge.disconnect();
|
|
43
|
+
process.exit(0);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
if (err instanceof errors_js_1.ACError) {
|
|
47
|
+
outputError(err, textMode);
|
|
48
|
+
await bridge.disconnect();
|
|
49
|
+
process.exit(err.exitCode);
|
|
50
|
+
}
|
|
51
|
+
console.error(`Unknown command: ${parsed.command}. Run 'agent-computer --help' for usage.`);
|
|
52
|
+
await bridge.disconnect();
|
|
53
|
+
process.exit(126);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Execute command
|
|
57
|
+
const bridge = new bridge_js_1.Bridge({ timeout });
|
|
58
|
+
try {
|
|
59
|
+
const result = await handler(parsed, bridge);
|
|
60
|
+
// Show hint (e.g., Chromium app warning) on stderr
|
|
61
|
+
if (result.data && typeof result.data === 'object' && 'hint' in result.data) {
|
|
62
|
+
const hint = result.data.hint;
|
|
63
|
+
process.stderr.write(`\n⚠️ ${hint}\n\n`);
|
|
64
|
+
}
|
|
65
|
+
output(result.data, textMode, contentBoundary, maxOutput);
|
|
66
|
+
await bridge.disconnect();
|
|
67
|
+
process.exit(result.exitCode);
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
if (err instanceof errors_js_1.ACError) {
|
|
71
|
+
outputError(err, textMode);
|
|
72
|
+
await bridge.disconnect();
|
|
73
|
+
process.exit(err.exitCode);
|
|
74
|
+
}
|
|
75
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
76
|
+
console.error(textMode ? `Error: ${message}` : JSON.stringify({ error: message }));
|
|
77
|
+
await bridge.disconnect();
|
|
78
|
+
process.exit(126);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function output(data, textMode, boundary, maxOutput) {
|
|
82
|
+
let out;
|
|
83
|
+
if (typeof data === 'string') {
|
|
84
|
+
out = data;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
out = (0, output_js_1.formatOutput)(data, textMode);
|
|
88
|
+
}
|
|
89
|
+
if (maxOutput) {
|
|
90
|
+
out = (0, output_js_1.truncateOutput)(out, maxOutput);
|
|
91
|
+
}
|
|
92
|
+
if (boundary) {
|
|
93
|
+
out = (0, output_js_1.wrapBoundary)(out);
|
|
94
|
+
}
|
|
95
|
+
console.log(out);
|
|
96
|
+
}
|
|
97
|
+
function outputError(err, textMode) {
|
|
98
|
+
if (textMode) {
|
|
99
|
+
console.error(`Error [${err.name}]: ${err.message}`);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
console.error(JSON.stringify({
|
|
103
|
+
error: {
|
|
104
|
+
code: err.code,
|
|
105
|
+
name: err.name,
|
|
106
|
+
message: err.message,
|
|
107
|
+
data: err.data,
|
|
108
|
+
},
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function buildParamsFromArgs(parsed) {
|
|
113
|
+
const params = { ...parsed.flags };
|
|
114
|
+
if (parsed.positional.length > 0) {
|
|
115
|
+
params._positional = parsed.positional;
|
|
116
|
+
// Common pattern: first positional is a ref or selector
|
|
117
|
+
params.ref = parsed.positional[0];
|
|
118
|
+
}
|
|
119
|
+
if (parsed.subcommand) {
|
|
120
|
+
params._subcommand = parsed.subcommand;
|
|
121
|
+
}
|
|
122
|
+
return params;
|
|
123
|
+
}
|
|
124
|
+
main().catch((err) => {
|
|
125
|
+
console.error(err);
|
|
126
|
+
process.exit(126);
|
|
127
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|