@skillful-agents/agent-computer 0.0.4 → 0.0.6

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 (50) 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 +5 -3
  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 +71 -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
  50. package/scripts/fix-cjs-resolve.js +27 -0
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":"AAsBA,wBAAgB,aAAa,IAAI,MAAM,CAuDtC"}
@@ -2,19 +2,21 @@ import { platform, arch } from 'os';
2
2
  import { join, dirname } from 'path';
3
3
  import { existsSync } from 'fs';
4
4
  import { fileURLToPath } from 'url';
5
- const __dirname = dirname(fileURLToPath(import.meta.url));
5
+ // ESM: use import.meta.url directly (CJS build patches this line — see scripts/fix-cjs-resolve.js)
6
+ // @ts-ignore — import.meta.url is valid in ESM; CJS tsconfig rejects it but post-build script fixes it
7
+ const _dirname = dirname(fileURLToPath(import.meta.url));
6
8
  /**
7
9
  * Find the package root by walking up from __dirname until we find package.json.
8
10
  * Works whether running from source (src/platform/) or compiled (dist/src/platform/).
9
11
  */
10
12
  function findProjectRoot() {
11
- let dir = __dirname;
13
+ let dir = _dirname;
12
14
  for (let i = 0; i < 5; i++) {
13
15
  if (existsSync(join(dir, 'package.json')))
14
16
  return dir;
15
17
  dir = dirname(dir);
16
18
  }
17
- return join(__dirname, '..', '..');
19
+ return join(_dirname, '..', '..');
18
20
  }
19
21
  export function resolveBinary() {
20
22
  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":"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"}
@@ -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"}