@skillful-agents/agent-computer 0.0.3
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 +458 -0
- 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/bin/ac.d.ts +3 -0
- package/dist/bin/ac.d.ts.map +1 -0
- package/dist/bin/ac.js +126 -0
- package/dist/bin/ac.js.map +1 -0
- package/dist/src/bridge.d.ts +69 -0
- package/dist/src/bridge.d.ts.map +1 -0
- package/dist/src/bridge.js +687 -0
- package/dist/src/bridge.js.map +1 -0
- package/dist/src/cdp/ax-tree.d.ts +19 -0
- package/dist/src/cdp/ax-tree.d.ts.map +1 -0
- package/dist/src/cdp/ax-tree.js +159 -0
- package/dist/src/cdp/ax-tree.js.map +1 -0
- package/dist/src/cdp/bounds.d.ts +25 -0
- package/dist/src/cdp/bounds.d.ts.map +1 -0
- package/dist/src/cdp/bounds.js +62 -0
- package/dist/src/cdp/bounds.js.map +1 -0
- package/dist/src/cdp/client.d.ts +115 -0
- package/dist/src/cdp/client.d.ts.map +1 -0
- package/dist/src/cdp/client.js +269 -0
- package/dist/src/cdp/client.js.map +1 -0
- package/dist/src/cdp/connection.d.ts +25 -0
- package/dist/src/cdp/connection.d.ts.map +1 -0
- package/dist/src/cdp/connection.js +249 -0
- package/dist/src/cdp/connection.js.map +1 -0
- package/dist/src/cdp/diff.d.ts +17 -0
- package/dist/src/cdp/diff.d.ts.map +1 -0
- package/dist/src/cdp/diff.js +52 -0
- package/dist/src/cdp/diff.js.map +1 -0
- package/dist/src/cdp/discovery.d.ts +8 -0
- package/dist/src/cdp/discovery.d.ts.map +1 -0
- package/dist/src/cdp/discovery.js +54 -0
- package/dist/src/cdp/discovery.js.map +1 -0
- package/dist/src/cdp/index.d.ts +12 -0
- package/dist/src/cdp/index.d.ts.map +1 -0
- package/dist/src/cdp/index.js +10 -0
- package/dist/src/cdp/index.js.map +1 -0
- package/dist/src/cdp/interactions.d.ts +47 -0
- package/dist/src/cdp/interactions.d.ts.map +1 -0
- package/dist/src/cdp/interactions.js +298 -0
- package/dist/src/cdp/interactions.js.map +1 -0
- package/dist/src/cdp/port-manager.d.ts +3 -0
- package/dist/src/cdp/port-manager.d.ts.map +1 -0
- package/dist/src/cdp/port-manager.js +33 -0
- package/dist/src/cdp/port-manager.js.map +1 -0
- package/dist/src/cdp/role-map.d.ts +8 -0
- package/dist/src/cdp/role-map.d.ts.map +1 -0
- package/dist/src/cdp/role-map.js +99 -0
- package/dist/src/cdp/role-map.js.map +1 -0
- package/dist/src/cdp/types.d.ts +53 -0
- package/dist/src/cdp/types.d.ts.map +1 -0
- package/dist/src/cdp/types.js +2 -0
- package/dist/src/cdp/types.js.map +1 -0
- package/dist/src/cli/commands/apps.d.ts +2 -0
- package/dist/src/cli/commands/apps.d.ts.map +1 -0
- package/dist/src/cli/commands/apps.js +62 -0
- package/dist/src/cli/commands/apps.js.map +1 -0
- package/dist/src/cli/commands/batch.d.ts +2 -0
- package/dist/src/cli/commands/batch.d.ts.map +1 -0
- package/dist/src/cli/commands/batch.js +36 -0
- package/dist/src/cli/commands/batch.js.map +1 -0
- package/dist/src/cli/commands/click.d.ts +2 -0
- package/dist/src/cli/commands/click.d.ts.map +1 -0
- package/dist/src/cli/commands/click.js +60 -0
- package/dist/src/cli/commands/click.js.map +1 -0
- package/dist/src/cli/commands/clipboard.d.ts +2 -0
- package/dist/src/cli/commands/clipboard.d.ts.map +1 -0
- package/dist/src/cli/commands/clipboard.js +30 -0
- package/dist/src/cli/commands/clipboard.js.map +1 -0
- package/dist/src/cli/commands/dialog.d.ts +2 -0
- package/dist/src/cli/commands/dialog.d.ts.map +1 -0
- package/dist/src/cli/commands/dialog.js +44 -0
- package/dist/src/cli/commands/dialog.js.map +1 -0
- package/dist/src/cli/commands/drag.d.ts +2 -0
- package/dist/src/cli/commands/drag.d.ts.map +1 -0
- package/dist/src/cli/commands/drag.js +25 -0
- package/dist/src/cli/commands/drag.js.map +1 -0
- package/dist/src/cli/commands/find.d.ts +2 -0
- package/dist/src/cli/commands/find.d.ts.map +1 -0
- package/dist/src/cli/commands/find.js +98 -0
- package/dist/src/cli/commands/find.js.map +1 -0
- package/dist/src/cli/commands/menu.d.ts +2 -0
- package/dist/src/cli/commands/menu.d.ts.map +1 -0
- package/dist/src/cli/commands/menu.js +35 -0
- package/dist/src/cli/commands/menu.js.map +1 -0
- package/dist/src/cli/commands/screenshot.d.ts +2 -0
- package/dist/src/cli/commands/screenshot.d.ts.map +1 -0
- package/dist/src/cli/commands/screenshot.js +26 -0
- package/dist/src/cli/commands/screenshot.js.map +1 -0
- package/dist/src/cli/commands/scroll.d.ts +2 -0
- package/dist/src/cli/commands/scroll.d.ts.map +1 -0
- package/dist/src/cli/commands/scroll.js +76 -0
- package/dist/src/cli/commands/scroll.js.map +1 -0
- package/dist/src/cli/commands/session.d.ts +2 -0
- package/dist/src/cli/commands/session.d.ts.map +1 -0
- package/dist/src/cli/commands/session.js +26 -0
- package/dist/src/cli/commands/session.js.map +1 -0
- package/dist/src/cli/commands/snapshot.d.ts +2 -0
- package/dist/src/cli/commands/snapshot.d.ts.map +1 -0
- package/dist/src/cli/commands/snapshot.js +23 -0
- package/dist/src/cli/commands/snapshot.js.map +1 -0
- package/dist/src/cli/commands/type.d.ts +2 -0
- package/dist/src/cli/commands/type.d.ts.map +1 -0
- package/dist/src/cli/commands/type.js +68 -0
- package/dist/src/cli/commands/type.js.map +1 -0
- package/dist/src/cli/commands/windowmgmt.d.ts +2 -0
- package/dist/src/cli/commands/windowmgmt.d.ts.map +1 -0
- package/dist/src/cli/commands/windowmgmt.js +61 -0
- package/dist/src/cli/commands/windowmgmt.js.map +1 -0
- package/dist/src/cli/commands/windows.d.ts +2 -0
- package/dist/src/cli/commands/windows.d.ts.map +1 -0
- package/dist/src/cli/commands/windows.js +9 -0
- package/dist/src/cli/commands/windows.js.map +1 -0
- package/dist/src/cli/commands.d.ts +13 -0
- package/dist/src/cli/commands.d.ts.map +1 -0
- package/dist/src/cli/commands.js +177 -0
- package/dist/src/cli/commands.js.map +1 -0
- package/dist/src/cli/output.d.ts +4 -0
- package/dist/src/cli/output.d.ts.map +1 -0
- package/dist/src/cli/output.js +249 -0
- package/dist/src/cli/output.js.map +1 -0
- package/dist/src/cli/parser.d.ts +19 -0
- package/dist/src/cli/parser.d.ts.map +1 -0
- package/dist/src/cli/parser.js +125 -0
- package/dist/src/cli/parser.js.map +1 -0
- package/dist/src/config.d.ts +14 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +73 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/daemon.d.ts +21 -0
- package/dist/src/daemon.d.ts.map +1 -0
- package/dist/src/daemon.js +180 -0
- package/dist/src/daemon.js.map +1 -0
- package/dist/src/errors.d.ts +39 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +103 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +8 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/platform/index.d.ts +6 -0
- package/dist/src/platform/index.d.ts.map +1 -0
- package/dist/src/platform/index.js +14 -0
- package/dist/src/platform/index.js.map +1 -0
- package/dist/src/platform/resolve.d.ts +2 -0
- package/dist/src/platform/resolve.d.ts.map +1 -0
- package/dist/src/platform/resolve.js +54 -0
- package/dist/src/platform/resolve.js.map +1 -0
- package/dist/src/refs.d.ts +12 -0
- package/dist/src/refs.d.ts.map +1 -0
- package/dist/src/refs.js +85 -0
- package/dist/src/refs.js.map +1 -0
- package/dist/src/sdk.d.ts +258 -0
- package/dist/src/sdk.d.ts.map +1 -0
- package/dist/src/sdk.js +285 -0
- package/dist/src/sdk.js.map +1 -0
- package/dist/src/types.d.ts +93 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +9 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +67 -0
- package/schema/examples/click.response.example.json +9 -0
- package/schema/examples/error.response.example.json +12 -0
- package/schema/examples/ping.response.example.json +7 -0
- package/schema/examples/snapshot.response.example.json +50 -0
- package/schema/methods/click.request.json +26 -0
- package/schema/methods/click.response.json +24 -0
- package/schema/methods/error.response.json +19 -0
- package/schema/methods/ping.request.json +12 -0
- package/schema/methods/ping.response.json +17 -0
- package/schema/methods/snapshot.request.json +24 -0
- package/schema/methods/snapshot.response.json +23 -0
- package/schema/methods/status.request.json +12 -0
- package/schema/methods/status.response.json +20 -0
- package/schema/types/element.json +26 -0
- package/schema/types/normalized-role.json +13 -0
- package/schema/types/ref.json +7 -0
- package/schema/types/window-info.json +24 -0
- package/scripts/build-macos.sh +5 -0
- package/scripts/postinstall.js +35 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Normalized role names used across platforms
|
|
2
|
+
export const NORMALIZED_ROLES = [
|
|
3
|
+
'button', 'textfield', 'textarea', 'link', 'checkbox', 'radio',
|
|
4
|
+
'slider', 'dropdown', 'image', 'group', 'window', 'table', 'row',
|
|
5
|
+
'cell', 'tabgroup', 'tab', 'menubar', 'menuitem', 'scrollarea',
|
|
6
|
+
'text', 'toolbar', 'combobox', 'stepper', 'splitgroup', 'timeline',
|
|
7
|
+
'progress', 'treeview', 'webarea', 'generic',
|
|
8
|
+
];
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAkGA,8CAA8C;AAC9C,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;IAC9D,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK;IAChE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY;IAC9D,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU;IAClE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS;CACpC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@skillful-agents/agent-computer",
|
|
3
|
+
"version": "0.0.3",
|
|
4
|
+
"description": "Agent Computer — cross-platform desktop automation CLI for AI agents",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"agent-computer": "./dist/bin/ac.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/src/index.js",
|
|
10
|
+
"types": "./dist/src/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"import": "./dist/src/index.js",
|
|
14
|
+
"types": "./dist/src/index.d.ts"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist/",
|
|
19
|
+
"bin/ac-core-*",
|
|
20
|
+
"scripts/",
|
|
21
|
+
"schema/",
|
|
22
|
+
"README.md",
|
|
23
|
+
"LICENSE"
|
|
24
|
+
],
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "tsc",
|
|
27
|
+
"build:swift": "cd native/macos && swift build -c release",
|
|
28
|
+
"build:dotnet": "cd native/windows && dotnet build ACCore/ACCore.csproj",
|
|
29
|
+
"build:all": "npm run build && (node -e \"process.exit(process.platform==='win32'?0:1)\" && npm run build:dotnet || npm run build:swift)",
|
|
30
|
+
"postinstall": "node scripts/postinstall.js || true",
|
|
31
|
+
"prepublishOnly": "npm run build",
|
|
32
|
+
"test": "vitest run test/contract/ test/unit/",
|
|
33
|
+
"test:contract": "vitest run test/contract/",
|
|
34
|
+
"test:unit": "vitest run test/unit/",
|
|
35
|
+
"test:integration": "vitest run test/integration/",
|
|
36
|
+
"test:functional": "vitest run test/functional/",
|
|
37
|
+
"test:e2e": "vitest run test/e2e/ --timeout 120000",
|
|
38
|
+
"test:all": "vitest run",
|
|
39
|
+
"test:watch": "vitest watch test/unit/ test/contract/",
|
|
40
|
+
"typecheck": "tsc --noEmit",
|
|
41
|
+
"agent-computer": "tsx bin/ac.ts"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/node": "^25.5.0",
|
|
45
|
+
"ajv": "^8.17.1",
|
|
46
|
+
"tsx": "^4.19.0",
|
|
47
|
+
"typescript": "^5.6.0",
|
|
48
|
+
"vitest": "^2.1.0"
|
|
49
|
+
},
|
|
50
|
+
"engines": {
|
|
51
|
+
"node": ">=20",
|
|
52
|
+
"os": "darwin || win32"
|
|
53
|
+
},
|
|
54
|
+
"os": [
|
|
55
|
+
"darwin",
|
|
56
|
+
"win32"
|
|
57
|
+
],
|
|
58
|
+
"cpu": [
|
|
59
|
+
"arm64",
|
|
60
|
+
"x64"
|
|
61
|
+
],
|
|
62
|
+
"license": "MIT",
|
|
63
|
+
"repository": {
|
|
64
|
+
"type": "git",
|
|
65
|
+
"url": "https://github.com/datawizz/ac"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"jsonrpc": "2.0",
|
|
3
|
+
"id": 1,
|
|
4
|
+
"result": {
|
|
5
|
+
"snapshot_id": "a1b2c3d4",
|
|
6
|
+
"window": {
|
|
7
|
+
"ref": "@w1",
|
|
8
|
+
"title": "Untitled",
|
|
9
|
+
"app": "TextEdit",
|
|
10
|
+
"bundle_id": "com.apple.TextEdit",
|
|
11
|
+
"process_id": 12345,
|
|
12
|
+
"bounds": [0, 0, 800, 600],
|
|
13
|
+
"minimized": false,
|
|
14
|
+
"hidden": false,
|
|
15
|
+
"fullscreen": false
|
|
16
|
+
},
|
|
17
|
+
"elements": [
|
|
18
|
+
{
|
|
19
|
+
"ref": "@g1",
|
|
20
|
+
"role": "group",
|
|
21
|
+
"label": "Toolbar",
|
|
22
|
+
"value": null,
|
|
23
|
+
"enabled": true,
|
|
24
|
+
"focused": false,
|
|
25
|
+
"bounds": [0, 0, 800, 40],
|
|
26
|
+
"children": [
|
|
27
|
+
{
|
|
28
|
+
"ref": "@b1",
|
|
29
|
+
"role": "button",
|
|
30
|
+
"label": "Save",
|
|
31
|
+
"value": null,
|
|
32
|
+
"enabled": true,
|
|
33
|
+
"focused": false,
|
|
34
|
+
"bounds": [120, 40, 80, 24]
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"ref": "@t1",
|
|
40
|
+
"role": "textarea",
|
|
41
|
+
"label": "Editor",
|
|
42
|
+
"value": "Hello...",
|
|
43
|
+
"enabled": true,
|
|
44
|
+
"focused": true,
|
|
45
|
+
"bounds": [0, 64, 800, 500]
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"fallback": null
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "ClickRequest",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["jsonrpc", "id", "method", "params"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"jsonrpc": { "const": "2.0" },
|
|
8
|
+
"id": { "type": "integer" },
|
|
9
|
+
"method": { "const": "click" },
|
|
10
|
+
"params": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"properties": {
|
|
13
|
+
"ref": { "type": "string" },
|
|
14
|
+
"x": { "type": "number" },
|
|
15
|
+
"y": { "type": "number" },
|
|
16
|
+
"right": { "type": "boolean" },
|
|
17
|
+
"double": { "type": "boolean" },
|
|
18
|
+
"count": { "type": "integer", "minimum": 1 },
|
|
19
|
+
"modifiers": { "type": "array", "items": { "type": "string" } },
|
|
20
|
+
"wait": { "type": "boolean" },
|
|
21
|
+
"human": { "type": "boolean" },
|
|
22
|
+
"timeout": { "type": "integer" }
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "ClickResponse",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["jsonrpc", "id", "result"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"jsonrpc": { "const": "2.0" },
|
|
8
|
+
"id": { "type": "integer" },
|
|
9
|
+
"result": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"required": ["ok"],
|
|
12
|
+
"properties": {
|
|
13
|
+
"ok": { "const": true },
|
|
14
|
+
"ref": { "type": "string" },
|
|
15
|
+
"bounds": {
|
|
16
|
+
"type": "array",
|
|
17
|
+
"items": { "type": "number" },
|
|
18
|
+
"minItems": 4,
|
|
19
|
+
"maxItems": 4
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "ErrorResponse",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["jsonrpc", "id", "error"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"jsonrpc": { "const": "2.0" },
|
|
8
|
+
"id": { "type": "integer" },
|
|
9
|
+
"error": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"required": ["code", "message"],
|
|
12
|
+
"properties": {
|
|
13
|
+
"code": { "type": "integer" },
|
|
14
|
+
"message": { "type": "string" },
|
|
15
|
+
"data": { "type": "object" }
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "PingRequest",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["jsonrpc", "id", "method"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"jsonrpc": { "const": "2.0" },
|
|
8
|
+
"id": { "type": "integer" },
|
|
9
|
+
"method": { "const": "ping" },
|
|
10
|
+
"params": { "type": "object" }
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "PingResponse",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["jsonrpc", "id", "result"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"jsonrpc": { "const": "2.0" },
|
|
8
|
+
"id": { "type": "integer" },
|
|
9
|
+
"result": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"required": ["pong"],
|
|
12
|
+
"properties": {
|
|
13
|
+
"pong": { "const": true }
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "SnapshotRequest",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["jsonrpc", "id", "method"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"jsonrpc": { "const": "2.0" },
|
|
8
|
+
"id": { "type": "integer" },
|
|
9
|
+
"method": { "const": "snapshot" },
|
|
10
|
+
"params": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"properties": {
|
|
13
|
+
"interactive": { "type": "boolean" },
|
|
14
|
+
"compact": { "type": "boolean" },
|
|
15
|
+
"depth": { "type": "integer", "minimum": 1 },
|
|
16
|
+
"subtree": { "type": "string" },
|
|
17
|
+
"app": { "type": "string" },
|
|
18
|
+
"pid": { "type": "integer" },
|
|
19
|
+
"screen": { "type": "boolean" },
|
|
20
|
+
"window": { "type": "string" }
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "SnapshotResponse",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["jsonrpc", "id", "result"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"jsonrpc": { "const": "2.0" },
|
|
8
|
+
"id": { "type": "integer" },
|
|
9
|
+
"result": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"required": ["snapshot_id", "window", "elements", "fallback"],
|
|
12
|
+
"properties": {
|
|
13
|
+
"snapshot_id": { "type": "string" },
|
|
14
|
+
"window": { "$ref": "../types/window-info.json" },
|
|
15
|
+
"elements": {
|
|
16
|
+
"type": "array",
|
|
17
|
+
"items": { "$ref": "../types/element.json" }
|
|
18
|
+
},
|
|
19
|
+
"fallback": { "type": ["string", "null"], "enum": ["ocr", null] }
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "StatusRequest",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["jsonrpc", "id", "method"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"jsonrpc": { "const": "2.0" },
|
|
8
|
+
"id": { "type": "integer" },
|
|
9
|
+
"method": { "const": "status" },
|
|
10
|
+
"params": { "type": "object" }
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "StatusResponse",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["jsonrpc", "id", "result"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"jsonrpc": { "const": "2.0" },
|
|
8
|
+
"id": { "type": "integer" },
|
|
9
|
+
"result": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"required": ["grabbed_window", "last_snapshot_id"],
|
|
12
|
+
"properties": {
|
|
13
|
+
"grabbed_window": { "type": ["string", "null"] },
|
|
14
|
+
"last_snapshot_id": { "type": ["string", "null"] },
|
|
15
|
+
"daemon_pid": { "type": ["integer", "null"] },
|
|
16
|
+
"daemon_uptime_ms": { "type": ["integer", "null"] }
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Element",
|
|
4
|
+
"description": "A UI element in the accessibility tree",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["ref", "role", "label", "enabled", "focused", "bounds"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"ref": { "$ref": "ref.json" },
|
|
9
|
+
"role": { "$ref": "normalized-role.json" },
|
|
10
|
+
"label": { "type": ["string", "null"] },
|
|
11
|
+
"value": { "type": ["string", "null"] },
|
|
12
|
+
"enabled": { "type": "boolean" },
|
|
13
|
+
"focused": { "type": "boolean" },
|
|
14
|
+
"bounds": {
|
|
15
|
+
"type": "array",
|
|
16
|
+
"items": { "type": "number" },
|
|
17
|
+
"minItems": 4,
|
|
18
|
+
"maxItems": 4
|
|
19
|
+
},
|
|
20
|
+
"children": {
|
|
21
|
+
"type": "array",
|
|
22
|
+
"items": { "$ref": "#" }
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"additionalProperties": false
|
|
26
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "NormalizedRole",
|
|
4
|
+
"description": "Platform-normalized UI element role",
|
|
5
|
+
"type": "string",
|
|
6
|
+
"enum": [
|
|
7
|
+
"button", "textfield", "textarea", "link", "checkbox", "radio",
|
|
8
|
+
"slider", "dropdown", "image", "group", "window", "table", "row",
|
|
9
|
+
"cell", "tabgroup", "tab", "menubar", "menuitem", "scrollarea",
|
|
10
|
+
"text", "toolbar", "combobox", "stepper", "splitgroup", "timeline",
|
|
11
|
+
"progress", "treeview", "webarea", "generic"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "WindowInfo",
|
|
4
|
+
"description": "Information about a window",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["ref", "title", "app", "process_id", "bounds", "minimized", "hidden", "fullscreen"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"ref": { "type": "string" },
|
|
9
|
+
"title": { "type": "string" },
|
|
10
|
+
"app": { "type": "string" },
|
|
11
|
+
"bundle_id": { "type": "string" },
|
|
12
|
+
"process_id": { "type": "integer" },
|
|
13
|
+
"bounds": {
|
|
14
|
+
"type": "array",
|
|
15
|
+
"items": { "type": "number" },
|
|
16
|
+
"minItems": 4,
|
|
17
|
+
"maxItems": 4
|
|
18
|
+
},
|
|
19
|
+
"minimized": { "type": "boolean" },
|
|
20
|
+
"hidden": { "type": "boolean" },
|
|
21
|
+
"fullscreen": { "type": "boolean" }
|
|
22
|
+
},
|
|
23
|
+
"additionalProperties": false
|
|
24
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// Verify a bundled binary exists for the current platform/arch
|
|
4
|
+
import { platform, arch } from 'os';
|
|
5
|
+
import { existsSync } from 'fs';
|
|
6
|
+
import { join, dirname } from 'path';
|
|
7
|
+
import { fileURLToPath } from 'url';
|
|
8
|
+
import { execFileSync } from 'child_process';
|
|
9
|
+
|
|
10
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
const os = platform();
|
|
12
|
+
const cpu = arch() === 'arm64' ? 'arm64' : 'x64';
|
|
13
|
+
const ext = os === 'win32' ? '.exe' : '';
|
|
14
|
+
const key = `${os}-${cpu}`;
|
|
15
|
+
const binaryPath = join(__dirname, '..', 'bin', `ac-core-${key}${ext}`);
|
|
16
|
+
|
|
17
|
+
if (!existsSync(binaryPath)) {
|
|
18
|
+
const buildHint = os === 'win32'
|
|
19
|
+
? 'cd native/windows && dotnet build'
|
|
20
|
+
: 'cd native/macos && swift build -c release';
|
|
21
|
+
console.log(`\n⚠️ ac: No pre-built binary found for ${key}.`);
|
|
22
|
+
console.log(` Build from source: ${buildHint}\n`);
|
|
23
|
+
process.exit(0);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Verify the binary runs on this machine
|
|
27
|
+
try {
|
|
28
|
+
execFileSync(binaryPath, ['--version'], { timeout: 5000, stdio: 'pipe' });
|
|
29
|
+
} catch (err) {
|
|
30
|
+
console.log(`\n⚠️ ac: Bundled binary for ${key} failed to execute.`);
|
|
31
|
+
const buildHint = os === 'win32'
|
|
32
|
+
? 'cd native/windows && dotnet build'
|
|
33
|
+
: 'cd native/macos && swift build -c release';
|
|
34
|
+
console.log(` Rebuild from source: ${buildHint}\n`);
|
|
35
|
+
}
|