@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.
Files changed (49) hide show
  1. package/bin/ac-core-darwin-arm64 +0 -0
  2. package/bin/ac-core-darwin-x64 +0 -0
  3. package/bin/ac-core-win32-arm64.exe +0 -0
  4. package/bin/ac-core-win32-x64.exe +0 -0
  5. package/dist/src/platform/resolve.d.ts.map +1 -1
  6. package/dist/src/platform/resolve.js +17 -4
  7. package/dist/src/platform/resolve.js.map +1 -1
  8. package/dist-cjs/bin/ac.js +127 -0
  9. package/dist-cjs/package.json +1 -0
  10. package/dist-cjs/src/bridge.js +693 -0
  11. package/dist-cjs/src/cdp/ax-tree.js +162 -0
  12. package/dist-cjs/src/cdp/bounds.js +66 -0
  13. package/dist-cjs/src/cdp/client.js +272 -0
  14. package/dist-cjs/src/cdp/connection.js +285 -0
  15. package/dist-cjs/src/cdp/diff.js +55 -0
  16. package/dist-cjs/src/cdp/discovery.js +91 -0
  17. package/dist-cjs/src/cdp/index.js +27 -0
  18. package/dist-cjs/src/cdp/interactions.js +301 -0
  19. package/dist-cjs/src/cdp/port-manager.js +68 -0
  20. package/dist-cjs/src/cdp/role-map.js +102 -0
  21. package/dist-cjs/src/cdp/types.js +2 -0
  22. package/dist-cjs/src/cli/commands/apps.js +63 -0
  23. package/dist-cjs/src/cli/commands/batch.js +37 -0
  24. package/dist-cjs/src/cli/commands/click.js +61 -0
  25. package/dist-cjs/src/cli/commands/clipboard.js +31 -0
  26. package/dist-cjs/src/cli/commands/dialog.js +45 -0
  27. package/dist-cjs/src/cli/commands/drag.js +26 -0
  28. package/dist-cjs/src/cli/commands/find.js +99 -0
  29. package/dist-cjs/src/cli/commands/menu.js +36 -0
  30. package/dist-cjs/src/cli/commands/screenshot.js +27 -0
  31. package/dist-cjs/src/cli/commands/scroll.js +77 -0
  32. package/dist-cjs/src/cli/commands/session.js +27 -0
  33. package/dist-cjs/src/cli/commands/snapshot.js +24 -0
  34. package/dist-cjs/src/cli/commands/type.js +69 -0
  35. package/dist-cjs/src/cli/commands/windowmgmt.js +62 -0
  36. package/dist-cjs/src/cli/commands/windows.js +10 -0
  37. package/dist-cjs/src/cli/commands.js +215 -0
  38. package/dist-cjs/src/cli/output.js +253 -0
  39. package/dist-cjs/src/cli/parser.js +128 -0
  40. package/dist-cjs/src/config.js +79 -0
  41. package/dist-cjs/src/daemon.js +183 -0
  42. package/dist-cjs/src/errors.js +118 -0
  43. package/dist-cjs/src/index.js +24 -0
  44. package/dist-cjs/src/platform/index.js +16 -0
  45. package/dist-cjs/src/platform/resolve.js +83 -0
  46. package/dist-cjs/src/refs.js +91 -0
  47. package/dist-cjs/src/sdk.js +288 -0
  48. package/dist-cjs/src/types.js +11 -0
  49. package/package.json +4 -2
Binary file
Binary file
Binary file
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/platform/resolve.ts"],"names":[],"mappings":"AAoBA,wBAAgB,aAAa,IAAI,MAAM,CAuDtC"}
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
- import { fileURLToPath } from 'url';
5
- const __dirname = dirname(fileURLToPath(import.meta.url));
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 = __dirname;
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(__dirname, '..', '..');
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":"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"}
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"}