@elizaos/plugin-computeruse 2.0.0-alpha.9 → 2.0.11-beta.7

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 (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +80 -0
  3. package/package.json +126 -103
  4. package/dist/actions/click-coordinates.d.ts +0 -3
  5. package/dist/actions/click-coordinates.d.ts.map +0 -1
  6. package/dist/actions/click-coordinates.js +0 -139
  7. package/dist/actions/click-coordinates.js.map +0 -1
  8. package/dist/actions/click.d.ts +0 -3
  9. package/dist/actions/click.d.ts.map +0 -1
  10. package/dist/actions/click.js +0 -144
  11. package/dist/actions/click.js.map +0 -1
  12. package/dist/actions/drag.d.ts +0 -3
  13. package/dist/actions/drag.d.ts.map +0 -1
  14. package/dist/actions/drag.js +0 -145
  15. package/dist/actions/drag.js.map +0 -1
  16. package/dist/actions/get-applications.d.ts +0 -3
  17. package/dist/actions/get-applications.d.ts.map +0 -1
  18. package/dist/actions/get-applications.js +0 -105
  19. package/dist/actions/get-applications.js.map +0 -1
  20. package/dist/actions/get-window-tree.d.ts +0 -3
  21. package/dist/actions/get-window-tree.d.ts.map +0 -1
  22. package/dist/actions/get-window-tree.js +0 -133
  23. package/dist/actions/get-window-tree.js.map +0 -1
  24. package/dist/actions/open-application.d.ts +0 -3
  25. package/dist/actions/open-application.d.ts.map +0 -1
  26. package/dist/actions/open-application.js +0 -117
  27. package/dist/actions/open-application.js.map +0 -1
  28. package/dist/actions/press-key.d.ts +0 -3
  29. package/dist/actions/press-key.d.ts.map +0 -1
  30. package/dist/actions/press-key.js +0 -115
  31. package/dist/actions/press-key.js.map +0 -1
  32. package/dist/actions/screenshot.d.ts +0 -3
  33. package/dist/actions/screenshot.d.ts.map +0 -1
  34. package/dist/actions/screenshot.js +0 -99
  35. package/dist/actions/screenshot.js.map +0 -1
  36. package/dist/actions/scroll.d.ts +0 -3
  37. package/dist/actions/scroll.d.ts.map +0 -1
  38. package/dist/actions/scroll.js +0 -137
  39. package/dist/actions/scroll.js.map +0 -1
  40. package/dist/actions/type.d.ts +0 -3
  41. package/dist/actions/type.d.ts.map +0 -1
  42. package/dist/actions/type.js +0 -163
  43. package/dist/actions/type.js.map +0 -1
  44. package/dist/index.d.ts +0 -8
  45. package/dist/index.d.ts.map +0 -1
  46. package/dist/index.js +0 -66
  47. package/dist/index.js.map +0 -1
  48. package/dist/providers/available-apps.d.ts +0 -3
  49. package/dist/providers/available-apps.d.ts.map +0 -1
  50. package/dist/providers/available-apps.js +0 -28
  51. package/dist/providers/available-apps.js.map +0 -1
  52. package/dist/providers/computeruse-state.d.ts +0 -3
  53. package/dist/providers/computeruse-state.d.ts.map +0 -1
  54. package/dist/providers/computeruse-state.js +0 -36
  55. package/dist/providers/computeruse-state.js.map +0 -1
  56. package/dist/service-registry.d.ts +0 -7
  57. package/dist/service-registry.d.ts.map +0 -1
  58. package/dist/service-registry.js +0 -2
  59. package/dist/service-registry.js.map +0 -1
  60. package/dist/services/computeruse-service.d.ts +0 -36
  61. package/dist/services/computeruse-service.d.ts.map +0 -1
  62. package/dist/services/computeruse-service.js +0 -391
  63. package/dist/services/computeruse-service.js.map +0 -1
  64. package/dist/types.d.ts +0 -41
  65. package/dist/types.d.ts.map +0 -1
  66. package/dist/types.js +0 -11
  67. package/dist/types.js.map +0 -1
  68. package/dist/utils/params.d.ts +0 -5
  69. package/dist/utils/params.d.ts.map +0 -1
  70. package/dist/utils/params.js +0 -13
  71. package/dist/utils/params.js.map +0 -1
@@ -1,144 +0,0 @@
1
- import { logger } from "@elizaos/core";
2
- import { getNumberParam, getStringParam } from "../utils/params.js";
3
- export const computeruseClickAction = {
4
- name: "COMPUTERUSE_CLICK",
5
- description: "Clicks a UI element on the computer using a ComputerUse selector.",
6
- similes: ["CLICK_UI", "CLICK_ELEMENT", "TAP_UI"],
7
- parameters: [
8
- {
9
- name: "process",
10
- description: "Process name to scope the click when using MCP mode (e.g. 'chrome', 'notepad'). Optional if selector is prefixed with 'process:<name> >> ...'.",
11
- required: false,
12
- schema: { type: "string" },
13
- examples: ["chrome", "notepad"],
14
- },
15
- {
16
- name: "selector",
17
- description: "ComputerUse selector string for the target element",
18
- required: true,
19
- schema: { type: "string" },
20
- examples: ["role:Button && name:Submit", "role:Edit && name:Search"],
21
- },
22
- {
23
- name: "timeoutMs",
24
- description: "Timeout in milliseconds to find the element",
25
- required: false,
26
- schema: { type: "number", default: 5000, minimum: 0 },
27
- examples: [5000],
28
- },
29
- ],
30
- validate: async (runtime, message, state, options) => {
31
- const __avTextRaw = typeof message?.content?.text === "string" ? message.content.text : "";
32
- const __avText = __avTextRaw.toLowerCase();
33
- const __avKeywords = ["computeruse", "click"];
34
- const __avKeywordOk = __avKeywords.length > 0 &&
35
- __avKeywords.some((word) => word.length > 0 && __avText.includes(word));
36
- const __avRegex = /\b(?:computeruse|click)\b/i;
37
- const __avRegexOk = __avRegex.test(__avText);
38
- const __avSource = String(message?.content?.source ?? message?.source ?? "");
39
- const __avExpectedSource = "";
40
- const __avSourceOk = __avExpectedSource
41
- ? __avSource === __avExpectedSource
42
- : Boolean(__avSource ||
43
- state ||
44
- runtime?.agentId ||
45
- runtime?.getService ||
46
- runtime?.getSetting);
47
- const __avOptions = options && typeof options === "object" ? options : {};
48
- const __avInputOk = __avText.trim().length > 0 ||
49
- Object.keys(__avOptions).length > 0 ||
50
- Boolean(message?.content && typeof message.content === "object");
51
- if (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {
52
- return false;
53
- }
54
- const __avLegacyValidate = async (runtime, message, state, options) => {
55
- const __avTextRaw = typeof message?.content?.text === "string" ? message.content.text : "";
56
- const __avText = __avTextRaw.toLowerCase();
57
- const __avKeywords = ["computeruse", "click"];
58
- const __avKeywordOk = __avKeywords.length > 0 &&
59
- __avKeywords.some((kw) => kw.length > 0 && __avText.includes(kw));
60
- const __avRegex = /\b(?:computeruse|click)\b/i;
61
- const __avRegexOk = __avRegex.test(__avText);
62
- const __avSource = String(message?.content?.source ?? message?.source ?? "");
63
- const __avExpectedSource = "";
64
- const __avSourceOk = __avExpectedSource
65
- ? __avSource === __avExpectedSource
66
- : Boolean(__avSource || state || runtime?.agentId || runtime?.getService);
67
- const __avOptions = options && typeof options === "object" ? options : {};
68
- const __avInputOk = __avText.trim().length > 0 ||
69
- Object.keys(__avOptions).length > 0 ||
70
- Boolean(message?.content && typeof message.content === "object");
71
- if (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {
72
- return false;
73
- }
74
- const __avLegacyValidate = async (runtime, message) => {
75
- const service = runtime.getService("computeruse");
76
- if (!service || !service.isEnabled())
77
- return false;
78
- const text = message.content?.text?.toLowerCase() ?? "";
79
- return text.includes("click") || text.includes("tap");
80
- };
81
- try {
82
- return Boolean(await __avLegacyValidate(runtime, message, state, options));
83
- }
84
- catch {
85
- return false;
86
- }
87
- };
88
- try {
89
- return Boolean(await __avLegacyValidate(runtime, message, state, options));
90
- }
91
- catch {
92
- return false;
93
- }
94
- },
95
- handler: async (runtime, message, _state, options, callback) => {
96
- const service = runtime.getService("computeruse");
97
- if (!service) {
98
- return { success: false, text: "ComputerUse service not available" };
99
- }
100
- const params = options?.parameters;
101
- const process = getStringParam(params, "process");
102
- const selector = getStringParam(params, "selector");
103
- const timeoutMs = getNumberParam(params, "timeoutMs") ?? 5000;
104
- if (!selector) {
105
- return { success: false, text: "Missing required parameter: selector" };
106
- }
107
- try {
108
- await service.click(selector, timeoutMs, process);
109
- const response = {
110
- text: `Clicked element: ${selector}`,
111
- actions: ["COMPUTERUSE_CLICK"],
112
- source: message.content?.source ?? "action",
113
- };
114
- await callback?.(response);
115
- return {
116
- success: true,
117
- text: response.text ?? "",
118
- values: { process, selector, timeoutMs },
119
- data: {
120
- process,
121
- selector,
122
- timeoutMs,
123
- backend: service.getBackendName(),
124
- },
125
- };
126
- }
127
- catch (err) {
128
- const msg = err instanceof Error ? err.message : String(err);
129
- logger.error(`[computeruse] click failed: ${msg}`);
130
- return {
131
- success: false,
132
- text: `ComputerUse click failed: ${msg}`,
133
- values: { process, selector, timeoutMs },
134
- data: {
135
- process,
136
- selector,
137
- timeoutMs,
138
- backend: service.getBackendName(),
139
- },
140
- };
141
- }
142
- },
143
- };
144
- //# sourceMappingURL=click.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"click.js","sourceRoot":"","sources":["../../src/actions/click.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tAction,\n\tActionResult,\n\tContent,\n\tHandlerCallback,\n\tHandlerOptions,\n\tIAgentRuntime,\n\tMemory,\n\tState,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport type { ComputerUseService } from \"../services/computeruse-service.js\";\nimport { getNumberParam, getStringParam } from \"../utils/params.js\";\n\nexport const computeruseClickAction: Action = {\n\tname: \"COMPUTERUSE_CLICK\",\n\tdescription:\n\t\t\"Clicks a UI element on the computer using a ComputerUse selector.\",\n\tsimiles: [\"CLICK_UI\", \"CLICK_ELEMENT\", \"TAP_UI\"],\n\tparameters: [\n\t\t{\n\t\t\tname: \"process\",\n\t\t\tdescription:\n\t\t\t\t\"Process name to scope the click when using MCP mode (e.g. 'chrome', 'notepad'). Optional if selector is prefixed with 'process:<name> >> ...'.\",\n\t\t\trequired: false,\n\t\t\tschema: { type: \"string\" },\n\t\t\texamples: [\"chrome\", \"notepad\"],\n\t\t},\n\t\t{\n\t\t\tname: \"selector\",\n\t\t\tdescription: \"ComputerUse selector string for the target element\",\n\t\t\trequired: true,\n\t\t\tschema: { type: \"string\" },\n\t\t\texamples: [\"role:Button && name:Submit\", \"role:Edit && name:Search\"],\n\t\t},\n\t\t{\n\t\t\tname: \"timeoutMs\",\n\t\t\tdescription: \"Timeout in milliseconds to find the element\",\n\t\t\trequired: false,\n\t\t\tschema: { type: \"number\", default: 5000, minimum: 0 },\n\t\t\texamples: [5000],\n\t\t},\n\t],\n\n\tvalidate: async (\n\t\truntime: any,\n\t\tmessage: any,\n\t\tstate?: any,\n\t\toptions?: any,\n\t): Promise<boolean> => {\n\t\tconst __avTextRaw =\n\t\t\ttypeof message?.content?.text === \"string\" ? message.content.text : \"\";\n\t\tconst __avText = __avTextRaw.toLowerCase();\n\t\tconst __avKeywords = [\"computeruse\", \"click\"];\n\t\tconst __avKeywordOk =\n\t\t\t__avKeywords.length > 0 &&\n\t\t\t__avKeywords.some((word) => word.length > 0 && __avText.includes(word));\n\t\tconst __avRegex = /\\b(?:computeruse|click)\\b/i;\n\t\tconst __avRegexOk = __avRegex.test(__avText);\n\t\tconst __avSource = String(\n\t\t\tmessage?.content?.source ?? message?.source ?? \"\",\n\t\t);\n\t\tconst __avExpectedSource = \"\";\n\t\tconst __avSourceOk = __avExpectedSource\n\t\t\t? __avSource === __avExpectedSource\n\t\t\t: Boolean(\n\t\t\t\t\t__avSource ||\n\t\t\t\t\t\tstate ||\n\t\t\t\t\t\truntime?.agentId ||\n\t\t\t\t\t\truntime?.getService ||\n\t\t\t\t\t\truntime?.getSetting,\n\t\t\t\t);\n\t\tconst __avOptions = options && typeof options === \"object\" ? options : {};\n\t\tconst __avInputOk =\n\t\t\t__avText.trim().length > 0 ||\n\t\t\tObject.keys(__avOptions as Record<string, unknown>).length > 0 ||\n\t\t\tBoolean(message?.content && typeof message.content === \"object\");\n\n\t\tif (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst __avLegacyValidate = async (\n\t\t\truntime: any,\n\t\t\tmessage: any,\n\t\t\tstate?: any,\n\t\t\toptions?: any,\n\t\t): Promise<boolean> => {\n\t\t\tconst __avTextRaw =\n\t\t\t\ttypeof message?.content?.text === \"string\" ? message.content.text : \"\";\n\t\t\tconst __avText = __avTextRaw.toLowerCase();\n\t\t\tconst __avKeywords = [\"computeruse\", \"click\"];\n\t\t\tconst __avKeywordOk =\n\t\t\t\t__avKeywords.length > 0 &&\n\t\t\t\t__avKeywords.some((kw) => kw.length > 0 && __avText.includes(kw));\n\t\t\tconst __avRegex = /\\b(?:computeruse|click)\\b/i;\n\t\t\tconst __avRegexOk = __avRegex.test(__avText);\n\t\t\tconst __avSource = String(\n\t\t\t\tmessage?.content?.source ?? message?.source ?? \"\",\n\t\t\t);\n\t\t\tconst __avExpectedSource = \"\";\n\t\t\tconst __avSourceOk = __avExpectedSource\n\t\t\t\t? __avSource === __avExpectedSource\n\t\t\t\t: Boolean(\n\t\t\t\t\t\t__avSource || state || runtime?.agentId || runtime?.getService,\n\t\t\t\t\t);\n\t\t\tconst __avOptions = options && typeof options === \"object\" ? options : {};\n\t\t\tconst __avInputOk =\n\t\t\t\t__avText.trim().length > 0 ||\n\t\t\t\tObject.keys(__avOptions as Record<string, unknown>).length > 0 ||\n\t\t\t\tBoolean(message?.content && typeof message.content === \"object\");\n\n\t\t\tif (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst __avLegacyValidate = async (\n\t\t\t\truntime: IAgentRuntime,\n\t\t\t\tmessage: Memory,\n\t\t\t): Promise<boolean> => {\n\t\t\t\tconst service = runtime.getService<ComputerUseService>(\"computeruse\");\n\t\t\t\tif (!service || !service.isEnabled()) return false;\n\n\t\t\t\tconst text = message.content?.text?.toLowerCase() ?? \"\";\n\t\t\t\treturn text.includes(\"click\") || text.includes(\"tap\");\n\t\t\t};\n\t\t\ttry {\n\t\t\t\treturn Boolean(\n\t\t\t\t\tawait (__avLegacyValidate as any)(runtime, message, state, options),\n\t\t\t\t);\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\t\ttry {\n\t\t\treturn Boolean(\n\t\t\t\tawait (__avLegacyValidate as any)(runtime, message, state, options),\n\t\t\t);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t},\n\n\thandler: async (\n\t\truntime: IAgentRuntime,\n\t\tmessage: Memory,\n\t\t_state?: State,\n\t\toptions?: HandlerOptions,\n\t\tcallback?: HandlerCallback,\n\t): Promise<ActionResult> => {\n\t\tconst service = runtime.getService<ComputerUseService>(\"computeruse\");\n\t\tif (!service) {\n\t\t\treturn { success: false, text: \"ComputerUse service not available\" };\n\t\t}\n\n\t\tconst params = options?.parameters;\n\t\tconst process = getStringParam(params, \"process\");\n\t\tconst selector = getStringParam(params, \"selector\");\n\t\tconst timeoutMs = getNumberParam(params, \"timeoutMs\") ?? 5000;\n\t\tif (!selector) {\n\t\t\treturn { success: false, text: \"Missing required parameter: selector\" };\n\t\t}\n\n\t\ttry {\n\t\t\tawait service.click(selector, timeoutMs, process);\n\t\t\tconst response: Content = {\n\t\t\t\ttext: `Clicked element: ${selector}`,\n\t\t\t\tactions: [\"COMPUTERUSE_CLICK\"],\n\t\t\t\tsource: message.content?.source ?? \"action\",\n\t\t\t};\n\t\t\tawait callback?.(response);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\ttext: response.text ?? \"\",\n\t\t\t\tvalues: { process, selector, timeoutMs },\n\t\t\t\tdata: {\n\t\t\t\t\tprocess,\n\t\t\t\t\tselector,\n\t\t\t\t\ttimeoutMs,\n\t\t\t\t\tbackend: service.getBackendName(),\n\t\t\t\t},\n\t\t\t};\n\t\t} catch (err) {\n\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\tlogger.error(`[computeruse] click failed: ${msg}`);\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\ttext: `ComputerUse click failed: ${msg}`,\n\t\t\t\tvalues: { process, selector, timeoutMs },\n\t\t\t\tdata: {\n\t\t\t\t\tprocess,\n\t\t\t\t\tselector,\n\t\t\t\t\ttimeoutMs,\n\t\t\t\t\tbackend: service.getBackendName(),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t},\n};\n"]}
@@ -1,3 +0,0 @@
1
- import type { Action } from "@elizaos/core";
2
- export declare const computeruseDragAction: Action;
3
- //# sourceMappingURL=drag.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drag.d.ts","sourceRoot":"","sources":["../../src/actions/drag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,MAAM,EAQN,MAAM,eAAe,CAAC;AAKvB,eAAO,MAAM,qBAAqB,EAAE,MA6LnC,CAAC"}
@@ -1,145 +0,0 @@
1
- import { logger } from "@elizaos/core";
2
- import { getNumberParam } from "../utils/params.js";
3
- export const computeruseDragAction = {
4
- name: "COMPUTERUSE_DRAG",
5
- description: "Drag the mouse from one position to another. Use for drag-and-drop, resizing, selecting, sliders.",
6
- similes: ["DRAG", "DRAG_AND_DROP", "MOUSE_DRAG"],
7
- parameters: [
8
- {
9
- name: "startX",
10
- description: "Starting X coordinate",
11
- required: true,
12
- schema: { type: "number" },
13
- examples: [100],
14
- },
15
- {
16
- name: "startY",
17
- description: "Starting Y coordinate",
18
- required: true,
19
- schema: { type: "number" },
20
- examples: [200],
21
- },
22
- {
23
- name: "endX",
24
- description: "Ending X coordinate",
25
- required: true,
26
- schema: { type: "number" },
27
- examples: [500],
28
- },
29
- {
30
- name: "endY",
31
- description: "Ending Y coordinate",
32
- required: true,
33
- schema: { type: "number" },
34
- examples: [200],
35
- },
36
- ],
37
- validate: async (runtime, message, state, options) => {
38
- const __avTextRaw = typeof message?.content?.text === "string" ? message.content.text : "";
39
- const __avText = __avTextRaw.toLowerCase();
40
- const __avKeywords = ["computeruse", "drag"];
41
- const __avKeywordOk = __avKeywords.length > 0 &&
42
- __avKeywords.some((word) => word.length > 0 && __avText.includes(word));
43
- const __avRegex = /\b(?:computeruse|drag)\b/i;
44
- const __avRegexOk = __avRegex.test(__avText);
45
- const __avSource = String(message?.content?.source ?? message?.source ?? "");
46
- const __avExpectedSource = "";
47
- const __avSourceOk = __avExpectedSource
48
- ? __avSource === __avExpectedSource
49
- : Boolean(__avSource ||
50
- state ||
51
- runtime?.agentId ||
52
- runtime?.getService ||
53
- runtime?.getSetting);
54
- const __avOptions = options && typeof options === "object" ? options : {};
55
- const __avInputOk = __avText.trim().length > 0 ||
56
- Object.keys(__avOptions).length > 0 ||
57
- Boolean(message?.content && typeof message.content === "object");
58
- if (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {
59
- return false;
60
- }
61
- const __avLegacyValidate = async (runtime, message, state, options) => {
62
- const __avTextRaw = typeof message?.content?.text === "string" ? message.content.text : "";
63
- const __avText = __avTextRaw.toLowerCase();
64
- const __avKeywords = ["computeruse", "drag"];
65
- const __avKeywordOk = __avKeywords.length > 0 &&
66
- __avKeywords.some((kw) => kw.length > 0 && __avText.includes(kw));
67
- const __avRegex = /\b(?:computeruse|drag)\b/i;
68
- const __avRegexOk = __avRegex.test(__avText);
69
- const __avSource = String(message?.content?.source ?? message?.source ?? "");
70
- const __avExpectedSource = "";
71
- const __avSourceOk = __avExpectedSource
72
- ? __avSource === __avExpectedSource
73
- : Boolean(__avSource || state || runtime?.agentId || runtime?.getService);
74
- const __avOptions = options && typeof options === "object" ? options : {};
75
- const __avInputOk = __avText.trim().length > 0 ||
76
- Object.keys(__avOptions).length > 0 ||
77
- Boolean(message?.content && typeof message.content === "object");
78
- if (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {
79
- return false;
80
- }
81
- const __avLegacyValidate = async (runtime, _message) => {
82
- const service = runtime.getService("computeruse");
83
- return !!service && service.isEnabled();
84
- };
85
- try {
86
- return Boolean(await __avLegacyValidate(runtime, message, state, options));
87
- }
88
- catch {
89
- return false;
90
- }
91
- };
92
- try {
93
- return Boolean(await __avLegacyValidate(runtime, message, state, options));
94
- }
95
- catch {
96
- return false;
97
- }
98
- },
99
- handler: async (runtime, message, _state, options, callback) => {
100
- const service = runtime.getService("computeruse");
101
- if (!service) {
102
- return { success: false, text: "ComputerUse service not available" };
103
- }
104
- const params = options?.parameters;
105
- const startX = getNumberParam(params, "startX");
106
- const startY = getNumberParam(params, "startY");
107
- const endX = getNumberParam(params, "endX");
108
- const endY = getNumberParam(params, "endY");
109
- if (startX === undefined ||
110
- startY === undefined ||
111
- endX === undefined ||
112
- endY === undefined) {
113
- return {
114
- success: false,
115
- text: "Missing required parameters: startX, startY, endX, endY",
116
- };
117
- }
118
- const backend = service.getBackendName();
119
- try {
120
- await service.drag(startX, startY, endX, endY);
121
- const response = {
122
- text: `Dragged from (${startX}, ${startY}) to (${endX}, ${endY})`,
123
- actions: ["COMPUTERUSE_DRAG"],
124
- source: message.content?.source ?? "action",
125
- };
126
- await callback?.(response);
127
- return {
128
- success: true,
129
- text: response.text ?? "",
130
- values: { startX, startY, endX, endY },
131
- data: { startX, startY, endX, endY, backend },
132
- };
133
- }
134
- catch (err) {
135
- const msg = err instanceof Error ? err.message : String(err);
136
- logger.error(`[computeruse] drag failed: ${msg}`);
137
- return {
138
- success: false,
139
- text: `ComputerUse drag failed: ${msg}`,
140
- values: { startX, startY, endX, endY },
141
- };
142
- }
143
- },
144
- };
145
- //# sourceMappingURL=drag.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drag.js","sourceRoot":"","sources":["../../src/actions/drag.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tAction,\n\tActionResult,\n\tContent,\n\tHandlerCallback,\n\tHandlerOptions,\n\tIAgentRuntime,\n\tMemory,\n\tState,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport type { ComputerUseService } from \"../services/computeruse-service.js\";\nimport { getNumberParam } from \"../utils/params.js\";\n\nexport const computeruseDragAction: Action = {\n\tname: \"COMPUTERUSE_DRAG\",\n\tdescription:\n\t\t\"Drag the mouse from one position to another. Use for drag-and-drop, resizing, selecting, sliders.\",\n\tsimiles: [\"DRAG\", \"DRAG_AND_DROP\", \"MOUSE_DRAG\"],\n\tparameters: [\n\t\t{\n\t\t\tname: \"startX\",\n\t\t\tdescription: \"Starting X coordinate\",\n\t\t\trequired: true,\n\t\t\tschema: { type: \"number\" },\n\t\t\texamples: [100],\n\t\t},\n\t\t{\n\t\t\tname: \"startY\",\n\t\t\tdescription: \"Starting Y coordinate\",\n\t\t\trequired: true,\n\t\t\tschema: { type: \"number\" },\n\t\t\texamples: [200],\n\t\t},\n\t\t{\n\t\t\tname: \"endX\",\n\t\t\tdescription: \"Ending X coordinate\",\n\t\t\trequired: true,\n\t\t\tschema: { type: \"number\" },\n\t\t\texamples: [500],\n\t\t},\n\t\t{\n\t\t\tname: \"endY\",\n\t\t\tdescription: \"Ending Y coordinate\",\n\t\t\trequired: true,\n\t\t\tschema: { type: \"number\" },\n\t\t\texamples: [200],\n\t\t},\n\t],\n\n\tvalidate: async (\n\t\truntime: any,\n\t\tmessage: any,\n\t\tstate?: any,\n\t\toptions?: any,\n\t): Promise<boolean> => {\n\t\tconst __avTextRaw =\n\t\t\ttypeof message?.content?.text === \"string\" ? message.content.text : \"\";\n\t\tconst __avText = __avTextRaw.toLowerCase();\n\t\tconst __avKeywords = [\"computeruse\", \"drag\"];\n\t\tconst __avKeywordOk =\n\t\t\t__avKeywords.length > 0 &&\n\t\t\t__avKeywords.some((word) => word.length > 0 && __avText.includes(word));\n\t\tconst __avRegex = /\\b(?:computeruse|drag)\\b/i;\n\t\tconst __avRegexOk = __avRegex.test(__avText);\n\t\tconst __avSource = String(\n\t\t\tmessage?.content?.source ?? message?.source ?? \"\",\n\t\t);\n\t\tconst __avExpectedSource = \"\";\n\t\tconst __avSourceOk = __avExpectedSource\n\t\t\t? __avSource === __avExpectedSource\n\t\t\t: Boolean(\n\t\t\t\t\t__avSource ||\n\t\t\t\t\t\tstate ||\n\t\t\t\t\t\truntime?.agentId ||\n\t\t\t\t\t\truntime?.getService ||\n\t\t\t\t\t\truntime?.getSetting,\n\t\t\t\t);\n\t\tconst __avOptions = options && typeof options === \"object\" ? options : {};\n\t\tconst __avInputOk =\n\t\t\t__avText.trim().length > 0 ||\n\t\t\tObject.keys(__avOptions as Record<string, unknown>).length > 0 ||\n\t\t\tBoolean(message?.content && typeof message.content === \"object\");\n\n\t\tif (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst __avLegacyValidate = async (\n\t\t\truntime: any,\n\t\t\tmessage: any,\n\t\t\tstate?: any,\n\t\t\toptions?: any,\n\t\t): Promise<boolean> => {\n\t\t\tconst __avTextRaw =\n\t\t\t\ttypeof message?.content?.text === \"string\" ? message.content.text : \"\";\n\t\t\tconst __avText = __avTextRaw.toLowerCase();\n\t\t\tconst __avKeywords = [\"computeruse\", \"drag\"];\n\t\t\tconst __avKeywordOk =\n\t\t\t\t__avKeywords.length > 0 &&\n\t\t\t\t__avKeywords.some((kw) => kw.length > 0 && __avText.includes(kw));\n\t\t\tconst __avRegex = /\\b(?:computeruse|drag)\\b/i;\n\t\t\tconst __avRegexOk = __avRegex.test(__avText);\n\t\t\tconst __avSource = String(\n\t\t\t\tmessage?.content?.source ?? message?.source ?? \"\",\n\t\t\t);\n\t\t\tconst __avExpectedSource = \"\";\n\t\t\tconst __avSourceOk = __avExpectedSource\n\t\t\t\t? __avSource === __avExpectedSource\n\t\t\t\t: Boolean(\n\t\t\t\t\t\t__avSource || state || runtime?.agentId || runtime?.getService,\n\t\t\t\t\t);\n\t\t\tconst __avOptions = options && typeof options === \"object\" ? options : {};\n\t\t\tconst __avInputOk =\n\t\t\t\t__avText.trim().length > 0 ||\n\t\t\t\tObject.keys(__avOptions as Record<string, unknown>).length > 0 ||\n\t\t\t\tBoolean(message?.content && typeof message.content === \"object\");\n\n\t\t\tif (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst __avLegacyValidate = async (\n\t\t\t\truntime: IAgentRuntime,\n\t\t\t\t_message: Memory,\n\t\t\t): Promise<boolean> => {\n\t\t\t\tconst service = runtime.getService<ComputerUseService>(\"computeruse\");\n\t\t\t\treturn !!service && service.isEnabled();\n\t\t\t};\n\t\t\ttry {\n\t\t\t\treturn Boolean(\n\t\t\t\t\tawait (__avLegacyValidate as any)(runtime, message, state, options),\n\t\t\t\t);\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\t\ttry {\n\t\t\treturn Boolean(\n\t\t\t\tawait (__avLegacyValidate as any)(runtime, message, state, options),\n\t\t\t);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t},\n\n\thandler: async (\n\t\truntime: IAgentRuntime,\n\t\tmessage: Memory,\n\t\t_state?: State,\n\t\toptions?: HandlerOptions,\n\t\tcallback?: HandlerCallback,\n\t): Promise<ActionResult> => {\n\t\tconst service = runtime.getService<ComputerUseService>(\"computeruse\");\n\t\tif (!service) {\n\t\t\treturn { success: false, text: \"ComputerUse service not available\" };\n\t\t}\n\n\t\tconst params = options?.parameters;\n\t\tconst startX = getNumberParam(params, \"startX\");\n\t\tconst startY = getNumberParam(params, \"startY\");\n\t\tconst endX = getNumberParam(params, \"endX\");\n\t\tconst endY = getNumberParam(params, \"endY\");\n\n\t\tif (\n\t\t\tstartX === undefined ||\n\t\t\tstartY === undefined ||\n\t\t\tendX === undefined ||\n\t\t\tendY === undefined\n\t\t) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\ttext: \"Missing required parameters: startX, startY, endX, endY\",\n\t\t\t};\n\t\t}\n\n\t\tconst backend = service.getBackendName();\n\n\t\ttry {\n\t\t\tawait service.drag(startX, startY, endX, endY);\n\n\t\t\tconst response: Content = {\n\t\t\t\ttext: `Dragged from (${startX}, ${startY}) to (${endX}, ${endY})`,\n\t\t\t\tactions: [\"COMPUTERUSE_DRAG\"],\n\t\t\t\tsource: message.content?.source ?? \"action\",\n\t\t\t};\n\t\t\tawait callback?.(response);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\ttext: response.text ?? \"\",\n\t\t\t\tvalues: { startX, startY, endX, endY },\n\t\t\t\tdata: { startX, startY, endX, endY, backend },\n\t\t\t};\n\t\t} catch (err) {\n\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\tlogger.error(`[computeruse] drag failed: ${msg}`);\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\ttext: `ComputerUse drag failed: ${msg}`,\n\t\t\t\tvalues: { startX, startY, endX, endY },\n\t\t\t};\n\t\t}\n\t},\n};\n"]}
@@ -1,3 +0,0 @@
1
- import type { Action } from "@elizaos/core";
2
- export declare const computeruseGetApplicationsAction: Action;
3
- //# sourceMappingURL=get-applications.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-applications.d.ts","sourceRoot":"","sources":["../../src/actions/get-applications.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,MAAM,EAQN,MAAM,eAAe,CAAC;AAIvB,eAAO,MAAM,gCAAgC,EAAE,MAiJ9C,CAAC"}
@@ -1,105 +0,0 @@
1
- import { logger } from "@elizaos/core";
2
- export const computeruseGetApplicationsAction = {
3
- name: "COMPUTERUSE_GET_APPLICATIONS",
4
- description: "Lists currently running applications on the target machine.",
5
- similes: ["LIST_APPS", "LIST_APPLICATIONS", "SHOW_RUNNING_APPS"],
6
- validate: async (runtime, message, state, options) => {
7
- const __avTextRaw = typeof message?.content?.text === "string" ? message.content.text : "";
8
- const __avText = __avTextRaw.toLowerCase();
9
- const __avKeywords = ["computeruse", "get", "applications"];
10
- const __avKeywordOk = __avKeywords.length > 0 &&
11
- __avKeywords.some((word) => word.length > 0 && __avText.includes(word));
12
- const __avRegex = /\b(?:computeruse|get|applications)\b/i;
13
- const __avRegexOk = __avRegex.test(__avText);
14
- const __avSource = String(message?.content?.source ?? message?.source ?? "");
15
- const __avExpectedSource = "";
16
- const __avSourceOk = __avExpectedSource
17
- ? __avSource === __avExpectedSource
18
- : Boolean(__avSource ||
19
- state ||
20
- runtime?.agentId ||
21
- runtime?.getService ||
22
- runtime?.getSetting);
23
- const __avOptions = options && typeof options === "object" ? options : {};
24
- const __avInputOk = __avText.trim().length > 0 ||
25
- Object.keys(__avOptions).length > 0 ||
26
- Boolean(message?.content && typeof message.content === "object");
27
- if (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {
28
- return false;
29
- }
30
- const __avLegacyValidate = async (runtime, message, state, options) => {
31
- const __avTextRaw = typeof message?.content?.text === "string" ? message.content.text : "";
32
- const __avText = __avTextRaw.toLowerCase();
33
- const __avKeywords = ["computeruse", "get", "applications"];
34
- const __avKeywordOk = __avKeywords.length > 0 &&
35
- __avKeywords.some((kw) => kw.length > 0 && __avText.includes(kw));
36
- const __avRegex = /\b(?:computeruse|get|applications)\b/i;
37
- const __avRegexOk = __avRegex.test(__avText);
38
- const __avSource = String(message?.content?.source ?? message?.source ?? "");
39
- const __avExpectedSource = "";
40
- const __avSourceOk = __avExpectedSource
41
- ? __avSource === __avExpectedSource
42
- : Boolean(__avSource || state || runtime?.agentId || runtime?.getService);
43
- const __avOptions = options && typeof options === "object" ? options : {};
44
- const __avInputOk = __avText.trim().length > 0 ||
45
- Object.keys(__avOptions).length > 0 ||
46
- Boolean(message?.content && typeof message.content === "object");
47
- if (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {
48
- return false;
49
- }
50
- const __avLegacyValidate = async (runtime, message) => {
51
- const service = runtime.getService("computeruse");
52
- if (!service || !service.isEnabled())
53
- return false;
54
- const text = message.content?.text?.toLowerCase() ?? "";
55
- return (text.includes("applications") ||
56
- text.includes("apps") ||
57
- text.includes("running"));
58
- };
59
- try {
60
- return Boolean(await __avLegacyValidate(runtime, message, state, options));
61
- }
62
- catch {
63
- return false;
64
- }
65
- };
66
- try {
67
- return Boolean(await __avLegacyValidate(runtime, message, state, options));
68
- }
69
- catch {
70
- return false;
71
- }
72
- },
73
- handler: async (runtime, message, _state, _options, callback) => {
74
- const service = runtime.getService("computeruse");
75
- if (!service)
76
- return { success: false, text: "ComputerUse service not available" };
77
- try {
78
- const apps = await service.getApplications();
79
- const text = Array.isArray(apps)
80
- ? `Applications:\n${apps.map((a) => `- ${a}`).join("\n")}`
81
- : "Applications: (see output)";
82
- const response = {
83
- text,
84
- actions: ["COMPUTERUSE_GET_APPLICATIONS"],
85
- source: message.content?.source ?? "action",
86
- };
87
- await callback?.(response);
88
- return {
89
- success: true,
90
- text,
91
- values: { count: apps.length },
92
- data: { apps, backend: service.getBackendName() },
93
- };
94
- }
95
- catch (err) {
96
- const msg = err instanceof Error ? err.message : String(err);
97
- logger.error(`[computeruse] get applications failed: ${msg}`);
98
- return {
99
- success: false,
100
- text: `ComputerUse get applications failed: ${msg}`,
101
- };
102
- }
103
- },
104
- };
105
- //# sourceMappingURL=get-applications.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-applications.js","sourceRoot":"","sources":["../../src/actions/get-applications.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tAction,\n\tActionResult,\n\tContent,\n\tHandlerCallback,\n\tHandlerOptions,\n\tIAgentRuntime,\n\tMemory,\n\tState,\n} from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport type { ComputerUseService } from \"../services/computeruse-service.js\";\n\nexport const computeruseGetApplicationsAction: Action = {\n\tname: \"COMPUTERUSE_GET_APPLICATIONS\",\n\tdescription: \"Lists currently running applications on the target machine.\",\n\tsimiles: [\"LIST_APPS\", \"LIST_APPLICATIONS\", \"SHOW_RUNNING_APPS\"],\n\n\tvalidate: async (\n\t\truntime: any,\n\t\tmessage: any,\n\t\tstate?: any,\n\t\toptions?: any,\n\t): Promise<boolean> => {\n\t\tconst __avTextRaw =\n\t\t\ttypeof message?.content?.text === \"string\" ? message.content.text : \"\";\n\t\tconst __avText = __avTextRaw.toLowerCase();\n\t\tconst __avKeywords = [\"computeruse\", \"get\", \"applications\"];\n\t\tconst __avKeywordOk =\n\t\t\t__avKeywords.length > 0 &&\n\t\t\t__avKeywords.some((word) => word.length > 0 && __avText.includes(word));\n\t\tconst __avRegex = /\\b(?:computeruse|get|applications)\\b/i;\n\t\tconst __avRegexOk = __avRegex.test(__avText);\n\t\tconst __avSource = String(\n\t\t\tmessage?.content?.source ?? message?.source ?? \"\",\n\t\t);\n\t\tconst __avExpectedSource = \"\";\n\t\tconst __avSourceOk = __avExpectedSource\n\t\t\t? __avSource === __avExpectedSource\n\t\t\t: Boolean(\n\t\t\t\t\t__avSource ||\n\t\t\t\t\t\tstate ||\n\t\t\t\t\t\truntime?.agentId ||\n\t\t\t\t\t\truntime?.getService ||\n\t\t\t\t\t\truntime?.getSetting,\n\t\t\t\t);\n\t\tconst __avOptions = options && typeof options === \"object\" ? options : {};\n\t\tconst __avInputOk =\n\t\t\t__avText.trim().length > 0 ||\n\t\t\tObject.keys(__avOptions as Record<string, unknown>).length > 0 ||\n\t\t\tBoolean(message?.content && typeof message.content === \"object\");\n\n\t\tif (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst __avLegacyValidate = async (\n\t\t\truntime: any,\n\t\t\tmessage: any,\n\t\t\tstate?: any,\n\t\t\toptions?: any,\n\t\t): Promise<boolean> => {\n\t\t\tconst __avTextRaw =\n\t\t\t\ttypeof message?.content?.text === \"string\" ? message.content.text : \"\";\n\t\t\tconst __avText = __avTextRaw.toLowerCase();\n\t\t\tconst __avKeywords = [\"computeruse\", \"get\", \"applications\"];\n\t\t\tconst __avKeywordOk =\n\t\t\t\t__avKeywords.length > 0 &&\n\t\t\t\t__avKeywords.some((kw) => kw.length > 0 && __avText.includes(kw));\n\t\t\tconst __avRegex = /\\b(?:computeruse|get|applications)\\b/i;\n\t\t\tconst __avRegexOk = __avRegex.test(__avText);\n\t\t\tconst __avSource = String(\n\t\t\t\tmessage?.content?.source ?? message?.source ?? \"\",\n\t\t\t);\n\t\t\tconst __avExpectedSource = \"\";\n\t\t\tconst __avSourceOk = __avExpectedSource\n\t\t\t\t? __avSource === __avExpectedSource\n\t\t\t\t: Boolean(\n\t\t\t\t\t\t__avSource || state || runtime?.agentId || runtime?.getService,\n\t\t\t\t\t);\n\t\t\tconst __avOptions = options && typeof options === \"object\" ? options : {};\n\t\t\tconst __avInputOk =\n\t\t\t\t__avText.trim().length > 0 ||\n\t\t\t\tObject.keys(__avOptions as Record<string, unknown>).length > 0 ||\n\t\t\t\tBoolean(message?.content && typeof message.content === \"object\");\n\n\t\t\tif (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst __avLegacyValidate = async (\n\t\t\t\truntime: IAgentRuntime,\n\t\t\t\tmessage: Memory,\n\t\t\t): Promise<boolean> => {\n\t\t\t\tconst service = runtime.getService<ComputerUseService>(\"computeruse\");\n\t\t\t\tif (!service || !service.isEnabled()) return false;\n\n\t\t\t\tconst text = message.content?.text?.toLowerCase() ?? \"\";\n\t\t\t\treturn (\n\t\t\t\t\ttext.includes(\"applications\") ||\n\t\t\t\t\ttext.includes(\"apps\") ||\n\t\t\t\t\ttext.includes(\"running\")\n\t\t\t\t);\n\t\t\t};\n\t\t\ttry {\n\t\t\t\treturn Boolean(\n\t\t\t\t\tawait (__avLegacyValidate as any)(runtime, message, state, options),\n\t\t\t\t);\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\t\ttry {\n\t\t\treturn Boolean(\n\t\t\t\tawait (__avLegacyValidate as any)(runtime, message, state, options),\n\t\t\t);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t},\n\n\thandler: async (\n\t\truntime: IAgentRuntime,\n\t\tmessage: Memory,\n\t\t_state?: State,\n\t\t_options?: HandlerOptions,\n\t\tcallback?: HandlerCallback,\n\t): Promise<ActionResult> => {\n\t\tconst service = runtime.getService<ComputerUseService>(\"computeruse\");\n\t\tif (!service)\n\t\t\treturn { success: false, text: \"ComputerUse service not available\" };\n\n\t\ttry {\n\t\t\tconst apps = await service.getApplications();\n\t\t\tconst text = Array.isArray(apps)\n\t\t\t\t? `Applications:\\n${apps.map((a) => `- ${a}`).join(\"\\n\")}`\n\t\t\t\t: \"Applications: (see output)\";\n\t\t\tconst response: Content = {\n\t\t\t\ttext,\n\t\t\t\tactions: [\"COMPUTERUSE_GET_APPLICATIONS\"],\n\t\t\t\tsource: message.content?.source ?? \"action\",\n\t\t\t};\n\t\t\tawait callback?.(response);\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\ttext,\n\t\t\t\tvalues: { count: apps.length },\n\t\t\t\tdata: { apps, backend: service.getBackendName() },\n\t\t\t};\n\t\t} catch (err) {\n\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\tlogger.error(`[computeruse] get applications failed: ${msg}`);\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\ttext: `ComputerUse get applications failed: ${msg}`,\n\t\t\t};\n\t\t}\n\t},\n};\n"]}
@@ -1,3 +0,0 @@
1
- import type { Action } from "@elizaos/core";
2
- export declare const computeruseGetWindowTreeAction: Action;
3
- //# sourceMappingURL=get-window-tree.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-window-tree.d.ts","sourceRoot":"","sources":["../../src/actions/get-window-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,MAAM,EAQN,MAAM,eAAe,CAAC;AAKvB,eAAO,MAAM,8BAA8B,EAAE,MAgL5C,CAAC"}
@@ -1,133 +0,0 @@
1
- import { logger } from "@elizaos/core";
2
- import { getNumberParam, getStringParam } from "../utils/params.js";
3
- export const computeruseGetWindowTreeAction = {
4
- name: "COMPUTERUSE_GET_WINDOW_TREE",
5
- description: "Gets the UI tree for a running application (useful for understanding what is currently on screen).",
6
- similes: ["GET_UI_TREE", "WINDOW_TREE", "DUMP_UI_TREE"],
7
- parameters: [
8
- {
9
- name: "process",
10
- description: "Process name of the target application (e.g. 'chrome', 'notepad')",
11
- required: true,
12
- schema: { type: "string" },
13
- examples: ["chrome", "notepad"],
14
- },
15
- {
16
- name: "title",
17
- description: "Optional window title filter",
18
- required: false,
19
- schema: { type: "string" },
20
- },
21
- {
22
- name: "maxDepth",
23
- description: "Optional max tree depth (MCP mode only)",
24
- required: false,
25
- schema: { type: "number", minimum: 0 },
26
- examples: [6],
27
- },
28
- ],
29
- validate: async (runtime, message, state, options) => {
30
- const __avTextRaw = typeof message?.content?.text === "string" ? message.content.text : "";
31
- const __avText = __avTextRaw.toLowerCase();
32
- const __avKeywords = ["computeruse", "get", "window", "tree"];
33
- const __avKeywordOk = __avKeywords.length > 0 &&
34
- __avKeywords.some((word) => word.length > 0 && __avText.includes(word));
35
- const __avRegex = /\b(?:computeruse|get|window|tree)\b/i;
36
- const __avRegexOk = __avRegex.test(__avText);
37
- const __avSource = String(message?.content?.source ?? message?.source ?? "");
38
- const __avExpectedSource = "";
39
- const __avSourceOk = __avExpectedSource
40
- ? __avSource === __avExpectedSource
41
- : Boolean(__avSource ||
42
- state ||
43
- runtime?.agentId ||
44
- runtime?.getService ||
45
- runtime?.getSetting);
46
- const __avOptions = options && typeof options === "object" ? options : {};
47
- const __avInputOk = __avText.trim().length > 0 ||
48
- Object.keys(__avOptions).length > 0 ||
49
- Boolean(message?.content && typeof message.content === "object");
50
- if (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {
51
- return false;
52
- }
53
- const __avLegacyValidate = async (runtime, message, state, options) => {
54
- const __avTextRaw = typeof message?.content?.text === "string" ? message.content.text : "";
55
- const __avText = __avTextRaw.toLowerCase();
56
- const __avKeywords = ["computeruse", "get", "window", "tree"];
57
- const __avKeywordOk = __avKeywords.length > 0 &&
58
- __avKeywords.some((kw) => kw.length > 0 && __avText.includes(kw));
59
- const __avRegex = /\b(?:computeruse|get|window|tree)\b/i;
60
- const __avRegexOk = __avRegex.test(__avText);
61
- const __avSource = String(message?.content?.source ?? message?.source ?? "");
62
- const __avExpectedSource = "";
63
- const __avSourceOk = __avExpectedSource
64
- ? __avSource === __avExpectedSource
65
- : Boolean(__avSource || state || runtime?.agentId || runtime?.getService);
66
- const __avOptions = options && typeof options === "object" ? options : {};
67
- const __avInputOk = __avText.trim().length > 0 ||
68
- Object.keys(__avOptions).length > 0 ||
69
- Boolean(message?.content && typeof message.content === "object");
70
- if (!(__avKeywordOk && __avRegexOk && __avSourceOk && __avInputOk)) {
71
- return false;
72
- }
73
- const __avLegacyValidate = async (runtime, message) => {
74
- const service = runtime.getService("computeruse");
75
- if (!service || !service.isEnabled())
76
- return false;
77
- const text = message.content?.text?.toLowerCase() ?? "";
78
- return (text.includes("window tree") ||
79
- text.includes("ui tree") ||
80
- text.includes("dump tree"));
81
- };
82
- try {
83
- return Boolean(await __avLegacyValidate(runtime, message, state, options));
84
- }
85
- catch {
86
- return false;
87
- }
88
- };
89
- try {
90
- return Boolean(await __avLegacyValidate(runtime, message, state, options));
91
- }
92
- catch {
93
- return false;
94
- }
95
- },
96
- handler: async (runtime, message, _state, options, callback) => {
97
- const service = runtime.getService("computeruse");
98
- if (!service)
99
- return { success: false, text: "ComputerUse service not available" };
100
- const params = options?.parameters;
101
- const process = getStringParam(params, "process");
102
- const title = getStringParam(params, "title");
103
- const maxDepth = getNumberParam(params, "maxDepth");
104
- if (!process)
105
- return { success: false, text: "Missing required parameter: process" };
106
- try {
107
- const treeText = await service.getWindowTree(process, title, maxDepth);
108
- const response = {
109
- text: treeText.length > 0 ? treeText : "(empty tree result)",
110
- actions: ["COMPUTERUSE_GET_WINDOW_TREE"],
111
- source: message.content?.source ?? "action",
112
- };
113
- await callback?.(response);
114
- return {
115
- success: true,
116
- text: response.text ?? "",
117
- values: { process, title, maxDepth },
118
- data: { process, title, maxDepth, backend: service.getBackendName() },
119
- };
120
- }
121
- catch (err) {
122
- const msg = err instanceof Error ? err.message : String(err);
123
- logger.error(`[computeruse] get window tree failed: ${msg}`);
124
- return {
125
- success: false,
126
- text: `ComputerUse get window tree failed: ${msg}`,
127
- values: { process, title, maxDepth },
128
- data: { process, title, maxDepth, backend: service.getBackendName() },
129
- };
130
- }
131
- },
132
- };
133
- //# sourceMappingURL=get-window-tree.js.map