@rpascene/core 0.30.8

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 (200) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/dist/es/agent/agent.mjs +636 -0
  4. package/dist/es/agent/agent.mjs.map +1 -0
  5. package/dist/es/agent/common.mjs +0 -0
  6. package/dist/es/agent/index.mjs +6 -0
  7. package/dist/es/agent/task-cache.mjs +184 -0
  8. package/dist/es/agent/task-cache.mjs.map +1 -0
  9. package/dist/es/agent/tasks.mjs +666 -0
  10. package/dist/es/agent/tasks.mjs.map +1 -0
  11. package/dist/es/agent/ui-utils.mjs +72 -0
  12. package/dist/es/agent/ui-utils.mjs.map +1 -0
  13. package/dist/es/agent/utils.mjs +162 -0
  14. package/dist/es/agent/utils.mjs.map +1 -0
  15. package/dist/es/ai-model/action-executor.mjs +129 -0
  16. package/dist/es/ai-model/action-executor.mjs.map +1 -0
  17. package/dist/es/ai-model/common.mjs +355 -0
  18. package/dist/es/ai-model/common.mjs.map +1 -0
  19. package/dist/es/ai-model/conversation-history.mjs +58 -0
  20. package/dist/es/ai-model/conversation-history.mjs.map +1 -0
  21. package/dist/es/ai-model/index.mjs +11 -0
  22. package/dist/es/ai-model/inspect.mjs +286 -0
  23. package/dist/es/ai-model/inspect.mjs.map +1 -0
  24. package/dist/es/ai-model/llm-planning.mjs +140 -0
  25. package/dist/es/ai-model/llm-planning.mjs.map +1 -0
  26. package/dist/es/ai-model/prompt/assertion.mjs +31 -0
  27. package/dist/es/ai-model/prompt/assertion.mjs.map +1 -0
  28. package/dist/es/ai-model/prompt/common.mjs +7 -0
  29. package/dist/es/ai-model/prompt/common.mjs.map +1 -0
  30. package/dist/es/ai-model/prompt/describe.mjs +44 -0
  31. package/dist/es/ai-model/prompt/describe.mjs.map +1 -0
  32. package/dist/es/ai-model/prompt/extraction.mjs +140 -0
  33. package/dist/es/ai-model/prompt/extraction.mjs.map +1 -0
  34. package/dist/es/ai-model/prompt/llm-locator.mjs +275 -0
  35. package/dist/es/ai-model/prompt/llm-locator.mjs.map +1 -0
  36. package/dist/es/ai-model/prompt/llm-planning.mjs +367 -0
  37. package/dist/es/ai-model/prompt/llm-planning.mjs.map +1 -0
  38. package/dist/es/ai-model/prompt/llm-section-locator.mjs +47 -0
  39. package/dist/es/ai-model/prompt/llm-section-locator.mjs.map +1 -0
  40. package/dist/es/ai-model/prompt/playwright-generator.mjs +117 -0
  41. package/dist/es/ai-model/prompt/playwright-generator.mjs.map +1 -0
  42. package/dist/es/ai-model/prompt/ui-tars-locator.mjs +34 -0
  43. package/dist/es/ai-model/prompt/ui-tars-locator.mjs.map +1 -0
  44. package/dist/es/ai-model/prompt/ui-tars-planning.mjs +36 -0
  45. package/dist/es/ai-model/prompt/ui-tars-planning.mjs.map +1 -0
  46. package/dist/es/ai-model/prompt/util.mjs +124 -0
  47. package/dist/es/ai-model/prompt/util.mjs.map +1 -0
  48. package/dist/es/ai-model/prompt/yaml-generator.mjs +219 -0
  49. package/dist/es/ai-model/prompt/yaml-generator.mjs.map +1 -0
  50. package/dist/es/ai-model/service-caller/index.mjs +537 -0
  51. package/dist/es/ai-model/service-caller/index.mjs.map +1 -0
  52. package/dist/es/ai-model/ui-tars-planning.mjs +201 -0
  53. package/dist/es/ai-model/ui-tars-planning.mjs.map +1 -0
  54. package/dist/es/device/index.mjs +152 -0
  55. package/dist/es/device/index.mjs.map +1 -0
  56. package/dist/es/image/index.mjs +2 -0
  57. package/dist/es/index.mjs +11 -0
  58. package/dist/es/index.mjs.map +1 -0
  59. package/dist/es/insight/index.mjs +233 -0
  60. package/dist/es/insight/index.mjs.map +1 -0
  61. package/dist/es/insight/utils.mjs +15 -0
  62. package/dist/es/insight/utils.mjs.map +1 -0
  63. package/dist/es/report.mjs +88 -0
  64. package/dist/es/report.mjs.map +1 -0
  65. package/dist/es/tree.mjs +2 -0
  66. package/dist/es/types.mjs +11 -0
  67. package/dist/es/types.mjs.map +1 -0
  68. package/dist/es/utils.mjs +204 -0
  69. package/dist/es/utils.mjs.map +1 -0
  70. package/dist/es/yaml/builder.mjs +13 -0
  71. package/dist/es/yaml/builder.mjs.map +1 -0
  72. package/dist/es/yaml/index.mjs +3 -0
  73. package/dist/es/yaml/player.mjs +372 -0
  74. package/dist/es/yaml/player.mjs.map +1 -0
  75. package/dist/es/yaml/utils.mjs +73 -0
  76. package/dist/es/yaml/utils.mjs.map +1 -0
  77. package/dist/es/yaml.mjs +0 -0
  78. package/dist/lib/agent/agent.js +683 -0
  79. package/dist/lib/agent/agent.js.map +1 -0
  80. package/dist/lib/agent/common.js +5 -0
  81. package/dist/lib/agent/index.js +81 -0
  82. package/dist/lib/agent/index.js.map +1 -0
  83. package/dist/lib/agent/task-cache.js +236 -0
  84. package/dist/lib/agent/task-cache.js.map +1 -0
  85. package/dist/lib/agent/tasks.js +703 -0
  86. package/dist/lib/agent/tasks.js.map +1 -0
  87. package/dist/lib/agent/ui-utils.js +121 -0
  88. package/dist/lib/agent/ui-utils.js.map +1 -0
  89. package/dist/lib/agent/utils.js +233 -0
  90. package/dist/lib/agent/utils.js.map +1 -0
  91. package/dist/lib/ai-model/action-executor.js +163 -0
  92. package/dist/lib/ai-model/action-executor.js.map +1 -0
  93. package/dist/lib/ai-model/common.js +461 -0
  94. package/dist/lib/ai-model/common.js.map +1 -0
  95. package/dist/lib/ai-model/conversation-history.js +92 -0
  96. package/dist/lib/ai-model/conversation-history.js.map +1 -0
  97. package/dist/lib/ai-model/index.js +131 -0
  98. package/dist/lib/ai-model/index.js.map +1 -0
  99. package/dist/lib/ai-model/inspect.js +326 -0
  100. package/dist/lib/ai-model/inspect.js.map +1 -0
  101. package/dist/lib/ai-model/llm-planning.js +174 -0
  102. package/dist/lib/ai-model/llm-planning.js.map +1 -0
  103. package/dist/lib/ai-model/prompt/assertion.js +65 -0
  104. package/dist/lib/ai-model/prompt/assertion.js.map +1 -0
  105. package/dist/lib/ai-model/prompt/common.js +41 -0
  106. package/dist/lib/ai-model/prompt/common.js.map +1 -0
  107. package/dist/lib/ai-model/prompt/describe.js +78 -0
  108. package/dist/lib/ai-model/prompt/describe.js.map +1 -0
  109. package/dist/lib/ai-model/prompt/extraction.js +180 -0
  110. package/dist/lib/ai-model/prompt/extraction.js.map +1 -0
  111. package/dist/lib/ai-model/prompt/llm-locator.js +315 -0
  112. package/dist/lib/ai-model/prompt/llm-locator.js.map +1 -0
  113. package/dist/lib/ai-model/prompt/llm-planning.js +407 -0
  114. package/dist/lib/ai-model/prompt/llm-planning.js.map +1 -0
  115. package/dist/lib/ai-model/prompt/llm-section-locator.js +84 -0
  116. package/dist/lib/ai-model/prompt/llm-section-locator.js.map +1 -0
  117. package/dist/lib/ai-model/prompt/playwright-generator.js +178 -0
  118. package/dist/lib/ai-model/prompt/playwright-generator.js.map +1 -0
  119. package/dist/lib/ai-model/prompt/ui-tars-locator.js +68 -0
  120. package/dist/lib/ai-model/prompt/ui-tars-locator.js.map +1 -0
  121. package/dist/lib/ai-model/prompt/ui-tars-planning.js +73 -0
  122. package/dist/lib/ai-model/prompt/ui-tars-planning.js.map +1 -0
  123. package/dist/lib/ai-model/prompt/util.js +176 -0
  124. package/dist/lib/ai-model/prompt/util.js.map +1 -0
  125. package/dist/lib/ai-model/prompt/yaml-generator.js +280 -0
  126. package/dist/lib/ai-model/prompt/yaml-generator.js.map +1 -0
  127. package/dist/lib/ai-model/service-caller/index.js +623 -0
  128. package/dist/lib/ai-model/service-caller/index.js.map +1 -0
  129. package/dist/lib/ai-model/ui-tars-planning.js +238 -0
  130. package/dist/lib/ai-model/ui-tars-planning.js.map +1 -0
  131. package/dist/lib/device/index.js +255 -0
  132. package/dist/lib/device/index.js.map +1 -0
  133. package/dist/lib/image/index.js +56 -0
  134. package/dist/lib/image/index.js.map +1 -0
  135. package/dist/lib/index.js +103 -0
  136. package/dist/lib/index.js.map +1 -0
  137. package/dist/lib/insight/index.js +267 -0
  138. package/dist/lib/insight/index.js.map +1 -0
  139. package/dist/lib/insight/utils.js +49 -0
  140. package/dist/lib/insight/utils.js.map +1 -0
  141. package/dist/lib/report.js +122 -0
  142. package/dist/lib/report.js.map +1 -0
  143. package/dist/lib/tree.js +44 -0
  144. package/dist/lib/tree.js.map +1 -0
  145. package/dist/lib/types.js +82 -0
  146. package/dist/lib/types.js.map +1 -0
  147. package/dist/lib/utils.js +283 -0
  148. package/dist/lib/utils.js.map +1 -0
  149. package/dist/lib/yaml/builder.js +57 -0
  150. package/dist/lib/yaml/builder.js.map +1 -0
  151. package/dist/lib/yaml/index.js +80 -0
  152. package/dist/lib/yaml/index.js.map +1 -0
  153. package/dist/lib/yaml/player.js +406 -0
  154. package/dist/lib/yaml/player.js.map +1 -0
  155. package/dist/lib/yaml/utils.js +126 -0
  156. package/dist/lib/yaml/utils.js.map +1 -0
  157. package/dist/lib/yaml.js +20 -0
  158. package/dist/lib/yaml.js.map +1 -0
  159. package/dist/types/agent/agent.d.ts +156 -0
  160. package/dist/types/agent/common.d.ts +0 -0
  161. package/dist/types/agent/index.d.ts +9 -0
  162. package/dist/types/agent/task-cache.d.ts +48 -0
  163. package/dist/types/agent/tasks.d.ts +48 -0
  164. package/dist/types/agent/ui-utils.d.ts +7 -0
  165. package/dist/types/agent/utils.d.ts +52 -0
  166. package/dist/types/ai-model/action-executor.d.ts +19 -0
  167. package/dist/types/ai-model/common.d.ts +569 -0
  168. package/dist/types/ai-model/conversation-history.d.ts +18 -0
  169. package/dist/types/ai-model/index.d.ts +13 -0
  170. package/dist/types/ai-model/inspect.d.ts +46 -0
  171. package/dist/types/ai-model/llm-planning.d.ts +11 -0
  172. package/dist/types/ai-model/prompt/assertion.d.ts +2 -0
  173. package/dist/types/ai-model/prompt/common.d.ts +2 -0
  174. package/dist/types/ai-model/prompt/describe.d.ts +1 -0
  175. package/dist/types/ai-model/prompt/extraction.d.ts +4 -0
  176. package/dist/types/ai-model/prompt/llm-locator.d.ts +9 -0
  177. package/dist/types/ai-model/prompt/llm-planning.d.ts +9 -0
  178. package/dist/types/ai-model/prompt/llm-section-locator.d.ts +6 -0
  179. package/dist/types/ai-model/prompt/playwright-generator.d.ts +26 -0
  180. package/dist/types/ai-model/prompt/ui-tars-locator.d.ts +1 -0
  181. package/dist/types/ai-model/prompt/ui-tars-planning.d.ts +2 -0
  182. package/dist/types/ai-model/prompt/util.d.ts +47 -0
  183. package/dist/types/ai-model/prompt/yaml-generator.d.ts +100 -0
  184. package/dist/types/ai-model/service-caller/index.d.ts +48 -0
  185. package/dist/types/ai-model/ui-tars-planning.d.ts +59 -0
  186. package/dist/types/device/index.d.ts +2158 -0
  187. package/dist/types/image/index.d.ts +1 -0
  188. package/dist/types/index.d.ts +12 -0
  189. package/dist/types/insight/index.d.ts +31 -0
  190. package/dist/types/insight/utils.d.ts +2 -0
  191. package/dist/types/report.d.ts +12 -0
  192. package/dist/types/tree.d.ts +1 -0
  193. package/dist/types/types.d.ts +414 -0
  194. package/dist/types/utils.d.ts +40 -0
  195. package/dist/types/yaml/builder.d.ts +2 -0
  196. package/dist/types/yaml/index.d.ts +3 -0
  197. package/dist/types/yaml/player.d.ts +34 -0
  198. package/dist/types/yaml/utils.d.ts +9 -0
  199. package/dist/types/yaml.d.ts +178 -0
  200. package/package.json +108 -0
@@ -0,0 +1,683 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.n = (module)=>{
5
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
+ __webpack_require__.d(getter, {
7
+ a: getter
8
+ });
9
+ return getter;
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.d = (exports1, definition)=>{
14
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
+ enumerable: true,
16
+ get: definition[key]
17
+ });
18
+ };
19
+ })();
20
+ (()=>{
21
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
22
+ })();
23
+ (()=>{
24
+ __webpack_require__.r = (exports1)=>{
25
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
26
+ value: 'Module'
27
+ });
28
+ Object.defineProperty(exports1, '__esModule', {
29
+ value: true
30
+ });
31
+ };
32
+ })();
33
+ var __webpack_exports__ = {};
34
+ __webpack_require__.r(__webpack_exports__);
35
+ __webpack_require__.d(__webpack_exports__, {
36
+ Agent: ()=>Agent,
37
+ createAgent: ()=>createAgent
38
+ });
39
+ const external_index_js_namespaceObject = require("../index.js");
40
+ const external_js_yaml_namespaceObject = require("js-yaml");
41
+ var external_js_yaml_default = /*#__PURE__*/ __webpack_require__.n(external_js_yaml_namespaceObject);
42
+ const external_utils_js_namespaceObject = require("../utils.js");
43
+ const index_js_namespaceObject = require("../yaml/index.js");
44
+ const env_namespaceObject = require("@rpascene/shared/env");
45
+ const img_namespaceObject = require("@rpascene/shared/img");
46
+ const logger_namespaceObject = require("@rpascene/shared/logger");
47
+ const utils_namespaceObject = require("@rpascene/shared/utils");
48
+ const external_task_cache_js_namespaceObject = require("./task-cache.js");
49
+ const external_tasks_js_namespaceObject = require("./tasks.js");
50
+ const external_ui_utils_js_namespaceObject = require("./ui-utils.js");
51
+ const external_utils_js_namespaceObject_1 = require("./utils.js");
52
+ function _define_property(obj, key, value) {
53
+ if (key in obj) Object.defineProperty(obj, key, {
54
+ value: value,
55
+ enumerable: true,
56
+ configurable: true,
57
+ writable: true
58
+ });
59
+ else obj[key] = value;
60
+ return obj;
61
+ }
62
+ const debug = (0, logger_namespaceObject.getDebug)('agent');
63
+ const distanceOfTwoPoints = (p1, p2)=>{
64
+ const [x1, y1] = p1;
65
+ const [x2, y2] = p2;
66
+ return Math.round(Math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2));
67
+ };
68
+ const includedInRect = (point, rect)=>{
69
+ const [x, y] = point;
70
+ const { left, top, width, height } = rect;
71
+ return x >= left && x <= left + width && y >= top && y <= top + height;
72
+ };
73
+ const defaultInsightExtractOption = {
74
+ domIncluded: false,
75
+ screenshotIncluded: true
76
+ };
77
+ const CACHE_STRATEGIES = [
78
+ 'read-only',
79
+ 'read-write',
80
+ 'write-only'
81
+ ];
82
+ const isValidCacheStrategy = (strategy)=>CACHE_STRATEGIES.some((value)=>value === strategy);
83
+ const CACHE_STRATEGY_VALUES = CACHE_STRATEGIES.map((value)=>`"${value}"`).join(', ');
84
+ class Agent {
85
+ get page() {
86
+ return this.interface;
87
+ }
88
+ ensureVLModelWarning() {
89
+ if (!this.hasWarnedNonVLModel && 'puppeteer' !== this.interface.interfaceType && 'playwright' !== this.interface.interfaceType && 'static' !== this.interface.interfaceType && 'chrome-extension-proxy' !== this.interface.interfaceType && 'page-over-chrome-extension-bridge' !== this.interface.interfaceType) {
90
+ this.modelConfigManager.throwErrorIfNonVLModel();
91
+ this.hasWarnedNonVLModel = true;
92
+ }
93
+ }
94
+ async getScreenshotScale(context) {
95
+ if (void 0 !== this.screenshotScale) return this.screenshotScale;
96
+ if (!this.screenshotScalePromise) this.screenshotScalePromise = (async ()=>{
97
+ var _context_size;
98
+ const pageWidth = null == (_context_size = context.size) ? void 0 : _context_size.width;
99
+ (0, utils_namespaceObject.assert)(pageWidth && pageWidth > 0, `Invalid page width when computing screenshot scale: ${pageWidth}`);
100
+ const { width: screenshotWidth } = await (0, img_namespaceObject.imageInfoOfBase64)(context.screenshotBase64);
101
+ (0, utils_namespaceObject.assert)(Number.isFinite(screenshotWidth) && screenshotWidth > 0, `Invalid screenshot width when computing screenshot scale: ${screenshotWidth}`);
102
+ const computedScale = screenshotWidth / pageWidth;
103
+ (0, utils_namespaceObject.assert)(Number.isFinite(computedScale) && computedScale > 0, `Invalid computed screenshot scale: ${computedScale}`);
104
+ debug(`Computed screenshot scale ${computedScale} from screenshot width ${screenshotWidth} and page width ${pageWidth}`);
105
+ return computedScale;
106
+ })();
107
+ try {
108
+ this.screenshotScale = await this.screenshotScalePromise;
109
+ return this.screenshotScale;
110
+ } finally{
111
+ this.screenshotScalePromise = void 0;
112
+ }
113
+ }
114
+ async getActionSpace() {
115
+ return this.interface.actionSpace();
116
+ }
117
+ async getUIContext(action) {
118
+ this.ensureVLModelWarning();
119
+ if (this.frozenUIContext) {
120
+ debug('Using frozen page context for action:', action);
121
+ return this.frozenUIContext;
122
+ }
123
+ let context;
124
+ if (this.interface.getContext) {
125
+ debug('Using page.getContext for action:', action);
126
+ context = await this.interface.getContext();
127
+ } else {
128
+ debug('Using commonContextParser for action:', action);
129
+ context = await (0, external_utils_js_namespaceObject_1.commonContextParser)(this.interface, {
130
+ uploadServerUrl: this.modelConfigManager.getUploadTestServerUrl()
131
+ });
132
+ }
133
+ const computedScreenshotScale = await this.getScreenshotScale(context);
134
+ if (1 !== computedScreenshotScale) {
135
+ const scaleForLog = Number.parseFloat(computedScreenshotScale.toFixed(4));
136
+ debug(`Applying computed screenshot scale: ${scaleForLog} (resize to logical size)`);
137
+ const targetWidth = Math.round(context.size.width);
138
+ const targetHeight = Math.round(context.size.height);
139
+ debug(`Resizing screenshot to ${targetWidth}x${targetHeight}`);
140
+ context.screenshotBase64 = await (0, img_namespaceObject.resizeImgBase64)(context.screenshotBase64, {
141
+ width: targetWidth,
142
+ height: targetHeight
143
+ });
144
+ } else debug(`screenshot scale=${computedScreenshotScale}`);
145
+ return context;
146
+ }
147
+ async _snapshotContext() {
148
+ return await this.getUIContext('locate');
149
+ }
150
+ async setAIActionContext(prompt) {
151
+ if (this.opts.aiActionContext) console.warn('aiActionContext is already set, and it is called again, will override the previous setting');
152
+ this.opts.aiActionContext = prompt;
153
+ }
154
+ resetDump() {
155
+ this.dump = {
156
+ sdkVersion: (0, external_utils_js_namespaceObject.getVersion)(),
157
+ groupName: this.opts.groupName,
158
+ groupDescription: this.opts.groupDescription,
159
+ executions: [],
160
+ modelBriefs: []
161
+ };
162
+ return this.dump;
163
+ }
164
+ appendExecutionDump(execution) {
165
+ const trimmedExecution = (0, external_utils_js_namespaceObject_1.trimContextByViewport)(execution);
166
+ const currentDump = this.dump;
167
+ currentDump.executions.push(trimmedExecution);
168
+ }
169
+ dumpDataString() {
170
+ this.dump.groupName = this.opts.groupName;
171
+ this.dump.groupDescription = this.opts.groupDescription;
172
+ return (0, external_utils_js_namespaceObject.stringifyDumpData)(this.dump);
173
+ }
174
+ reportHTMLString() {
175
+ return (0, external_utils_js_namespaceObject.reportHTMLContent)(this.dumpDataString());
176
+ }
177
+ writeOutActionDumps() {
178
+ if (this.destroyed) throw new Error('PageAgent has been destroyed. Cannot update report file.');
179
+ const { generateReport, autoPrintReportMsg } = this.opts;
180
+ this.reportFile = (0, external_utils_js_namespaceObject.writeLogFile)({
181
+ fileName: this.reportFileName,
182
+ fileExt: external_utils_js_namespaceObject.groupedActionDumpFileExt,
183
+ fileContent: this.dumpDataString(),
184
+ type: 'dump',
185
+ generateReport
186
+ });
187
+ debug('writeOutActionDumps', this.reportFile);
188
+ if (generateReport && autoPrintReportMsg && this.reportFile) (0, external_utils_js_namespaceObject_1.printReportMsg)(this.reportFile);
189
+ }
190
+ async callbackOnTaskStartTip(task) {
191
+ const param = (0, external_ui_utils_js_namespaceObject.paramStr)(task);
192
+ const tip = param ? `${(0, external_ui_utils_js_namespaceObject.typeStr)(task)} - ${param}` : (0, external_ui_utils_js_namespaceObject.typeStr)(task);
193
+ if (this.onTaskStartTip) await this.onTaskStartTip(tip);
194
+ }
195
+ async afterTaskRunning(executor, doNotThrowError = false) {
196
+ const executionDump = executor.dump();
197
+ if (this.opts.aiActionContext) executionDump.aiActionContext = this.opts.aiActionContext;
198
+ this.appendExecutionDump(executionDump);
199
+ try {
200
+ if (this.onDumpUpdate) this.onDumpUpdate(this.dumpDataString());
201
+ } catch (error) {
202
+ console.error('Error in onDumpUpdate', error);
203
+ }
204
+ this.writeOutActionDumps();
205
+ if (executor.isInErrorState() && !doNotThrowError) {
206
+ const errorTask = executor.latestErrorTask();
207
+ throw new Error(`${null == errorTask ? void 0 : errorTask.errorMessage}\n${null == errorTask ? void 0 : errorTask.errorStack}`, {
208
+ cause: null == errorTask ? void 0 : errorTask.error
209
+ });
210
+ }
211
+ }
212
+ async callActionInActionSpace(type, opt) {
213
+ debug('callActionInActionSpace', type, ',', opt);
214
+ const actionPlan = {
215
+ type: type,
216
+ param: opt || {},
217
+ thought: ''
218
+ };
219
+ debug('actionPlan', actionPlan);
220
+ const plans = [
221
+ actionPlan
222
+ ].filter(Boolean);
223
+ const title = (0, external_ui_utils_js_namespaceObject.taskTitleStr)(type, (0, external_ui_utils_js_namespaceObject.locateParamStr)((null == opt ? void 0 : opt.locate) || {}));
224
+ const modelConfig = this.modelConfigManager.getModelConfig('grounding');
225
+ const { output, executor } = await this.taskExecutor.runPlans(title, plans, modelConfig);
226
+ await this.afterTaskRunning(executor);
227
+ return output;
228
+ }
229
+ async aiTap(locatePrompt, opt) {
230
+ (0, utils_namespaceObject.assert)(locatePrompt, 'missing locate prompt for tap');
231
+ const detailedLocateParam = (0, index_js_namespaceObject.buildDetailedLocateParam)(locatePrompt, opt);
232
+ return this.callActionInActionSpace('Tap', {
233
+ locate: detailedLocateParam
234
+ });
235
+ }
236
+ async aiRightClick(locatePrompt, opt) {
237
+ (0, utils_namespaceObject.assert)(locatePrompt, 'missing locate prompt for right click');
238
+ const detailedLocateParam = (0, index_js_namespaceObject.buildDetailedLocateParam)(locatePrompt, opt);
239
+ return this.callActionInActionSpace('RightClick', {
240
+ locate: detailedLocateParam
241
+ });
242
+ }
243
+ async aiDoubleClick(locatePrompt, opt) {
244
+ (0, utils_namespaceObject.assert)(locatePrompt, 'missing locate prompt for double click');
245
+ const detailedLocateParam = (0, index_js_namespaceObject.buildDetailedLocateParam)(locatePrompt, opt);
246
+ return this.callActionInActionSpace('DoubleClick', {
247
+ locate: detailedLocateParam
248
+ });
249
+ }
250
+ async aiHover(locatePrompt, opt) {
251
+ (0, utils_namespaceObject.assert)(locatePrompt, 'missing locate prompt for hover');
252
+ const detailedLocateParam = (0, index_js_namespaceObject.buildDetailedLocateParam)(locatePrompt, opt);
253
+ return this.callActionInActionSpace('Hover', {
254
+ locate: detailedLocateParam
255
+ });
256
+ }
257
+ async aiInput(locatePromptOrValue, locatePromptOrOpt, optOrUndefined) {
258
+ let value;
259
+ let locatePrompt;
260
+ let opt;
261
+ if ('object' == typeof locatePromptOrOpt && null !== locatePromptOrOpt && 'value' in locatePromptOrOpt) {
262
+ locatePrompt = locatePromptOrValue;
263
+ const optWithValue = locatePromptOrOpt;
264
+ value = optWithValue.value;
265
+ opt = optWithValue;
266
+ } else {
267
+ value = locatePromptOrValue;
268
+ locatePrompt = locatePromptOrOpt;
269
+ opt = {
270
+ ...optOrUndefined,
271
+ value
272
+ };
273
+ }
274
+ (0, utils_namespaceObject.assert)('string' == typeof value || 'number' == typeof value, 'input value must be a string or number, use empty string if you want to clear the input');
275
+ (0, utils_namespaceObject.assert)(locatePrompt, 'missing locate prompt for input');
276
+ const detailedLocateParam = (0, index_js_namespaceObject.buildDetailedLocateParam)(locatePrompt, opt);
277
+ return this.callActionInActionSpace('Input', {
278
+ ...opt || {},
279
+ locate: detailedLocateParam
280
+ });
281
+ }
282
+ async aiKeyboardPress(locatePromptOrKeyName, locatePromptOrOpt, optOrUndefined) {
283
+ let keyName;
284
+ let locatePrompt;
285
+ let opt;
286
+ if ('object' == typeof locatePromptOrOpt && null !== locatePromptOrOpt && 'keyName' in locatePromptOrOpt) {
287
+ locatePrompt = locatePromptOrKeyName;
288
+ opt = locatePromptOrOpt;
289
+ } else {
290
+ keyName = locatePromptOrKeyName;
291
+ locatePrompt = locatePromptOrOpt;
292
+ opt = {
293
+ ...optOrUndefined || {},
294
+ keyName
295
+ };
296
+ }
297
+ (0, utils_namespaceObject.assert)(null == opt ? void 0 : opt.keyName, 'missing keyName for keyboard press');
298
+ const detailedLocateParam = locatePrompt ? (0, index_js_namespaceObject.buildDetailedLocateParam)(locatePrompt, opt) : void 0;
299
+ return this.callActionInActionSpace('KeyboardPress', {
300
+ ...opt || {},
301
+ locate: detailedLocateParam
302
+ });
303
+ }
304
+ async aiScroll(locatePromptOrScrollParam, locatePromptOrOpt, optOrUndefined) {
305
+ let scrollParam;
306
+ let locatePrompt;
307
+ let opt;
308
+ if ('object' == typeof locatePromptOrOpt && ('direction' in locatePromptOrOpt || 'scrollType' in locatePromptOrOpt || 'distance' in locatePromptOrOpt)) {
309
+ locatePrompt = locatePromptOrScrollParam;
310
+ opt = locatePromptOrOpt;
311
+ } else {
312
+ scrollParam = locatePromptOrScrollParam;
313
+ locatePrompt = locatePromptOrOpt;
314
+ opt = {
315
+ ...optOrUndefined || {},
316
+ ...scrollParam || {}
317
+ };
318
+ }
319
+ const detailedLocateParam = (0, index_js_namespaceObject.buildDetailedLocateParam)(locatePrompt || '', opt);
320
+ return this.callActionInActionSpace('Scroll', {
321
+ ...opt || {},
322
+ locate: detailedLocateParam
323
+ });
324
+ }
325
+ async aiAction(taskPrompt, opt) {
326
+ var _this_taskCache, _this_taskCache1;
327
+ const modelConfig = this.modelConfigManager.getModelConfig('planning');
328
+ const cacheable = null == opt ? void 0 : opt.cacheable;
329
+ const isVlmUiTars = 'vlm-ui-tars' === modelConfig.vlMode;
330
+ const matchedCache = isVlmUiTars || false === cacheable ? void 0 : null == (_this_taskCache = this.taskCache) ? void 0 : _this_taskCache.matchPlanCache(taskPrompt);
331
+ if (matchedCache && (null == (_this_taskCache1 = this.taskCache) ? void 0 : _this_taskCache1.isCacheResultUsed)) {
332
+ var _matchedCache_cacheContent, _matchedCache_cacheContent1;
333
+ const { executor } = await this.taskExecutor.loadYamlFlowAsPlanning(taskPrompt, null == (_matchedCache_cacheContent = matchedCache.cacheContent) ? void 0 : _matchedCache_cacheContent.yamlWorkflow);
334
+ await this.afterTaskRunning(executor);
335
+ debug('matched cache, will call .runYaml to run the action');
336
+ const yaml = null == (_matchedCache_cacheContent1 = matchedCache.cacheContent) ? void 0 : _matchedCache_cacheContent1.yamlWorkflow;
337
+ return this.runYaml(yaml);
338
+ }
339
+ const { output, executor } = await this.taskExecutor.action(taskPrompt, modelConfig, this.opts.aiActionContext, cacheable);
340
+ console.log(output, 'output');
341
+ if (this.taskCache && (null == output ? void 0 : output.yamlFlow) && false !== cacheable) {
342
+ const yamlContent = {
343
+ tasks: [
344
+ {
345
+ name: taskPrompt,
346
+ flow: output.yamlFlow
347
+ }
348
+ ]
349
+ };
350
+ const yamlFlowStr = external_js_yaml_default().dump(yamlContent);
351
+ this.taskCache.updateOrAppendCacheRecord({
352
+ type: 'plan',
353
+ prompt: taskPrompt,
354
+ yamlWorkflow: yamlFlowStr
355
+ }, matchedCache);
356
+ }
357
+ await this.afterTaskRunning(executor);
358
+ return output;
359
+ }
360
+ async aiQuery(demand, opt = defaultInsightExtractOption) {
361
+ const modelConfig = this.modelConfigManager.getModelConfig('VQA');
362
+ const { output, executor } = await this.taskExecutor.createTypeQueryExecution('Query', demand, modelConfig, opt);
363
+ await this.afterTaskRunning(executor);
364
+ return output;
365
+ }
366
+ async aiBoolean(prompt, opt = defaultInsightExtractOption) {
367
+ const modelConfig = this.modelConfigManager.getModelConfig('VQA');
368
+ const { textPrompt, multimodalPrompt } = (0, external_utils_js_namespaceObject_1.parsePrompt)(prompt);
369
+ const { output, executor } = await this.taskExecutor.createTypeQueryExecution('Boolean', textPrompt, modelConfig, opt, multimodalPrompt);
370
+ await this.afterTaskRunning(executor);
371
+ return output;
372
+ }
373
+ async aiNumber(prompt, opt = defaultInsightExtractOption) {
374
+ const modelConfig = this.modelConfigManager.getModelConfig('VQA');
375
+ const { textPrompt, multimodalPrompt } = (0, external_utils_js_namespaceObject_1.parsePrompt)(prompt);
376
+ const { output, executor } = await this.taskExecutor.createTypeQueryExecution('Number', textPrompt, modelConfig, opt, multimodalPrompt);
377
+ await this.afterTaskRunning(executor);
378
+ return output;
379
+ }
380
+ async aiString(prompt, opt = defaultInsightExtractOption) {
381
+ const modelConfig = this.modelConfigManager.getModelConfig('VQA');
382
+ const { textPrompt, multimodalPrompt } = (0, external_utils_js_namespaceObject_1.parsePrompt)(prompt);
383
+ const { output, executor } = await this.taskExecutor.createTypeQueryExecution('String', textPrompt, modelConfig, opt, multimodalPrompt);
384
+ await this.afterTaskRunning(executor);
385
+ return output;
386
+ }
387
+ async aiAsk(prompt, opt = defaultInsightExtractOption) {
388
+ return this.aiString(prompt, opt);
389
+ }
390
+ async describeElementAtPoint(center, opt) {
391
+ const { verifyPrompt = true, retryLimit = 3 } = opt || {};
392
+ let success = false;
393
+ let retryCount = 0;
394
+ let resultPrompt = '';
395
+ let deepThink = (null == opt ? void 0 : opt.deepThink) || false;
396
+ let verifyResult;
397
+ while(!success && retryCount < retryLimit){
398
+ if (retryCount >= 2) deepThink = true;
399
+ debug('aiDescribe', center, 'verifyPrompt', verifyPrompt, 'retryCount', retryCount, 'deepThink', deepThink);
400
+ const modelConfig = this.modelConfigManager.getModelConfig('grounding');
401
+ const text = await this.insight.describe(center, modelConfig, {
402
+ deepThink
403
+ });
404
+ debug('aiDescribe text', text);
405
+ (0, utils_namespaceObject.assert)(text.description, `failed to describe element at [${center}]`);
406
+ resultPrompt = text.description;
407
+ verifyResult = await this.verifyLocator(resultPrompt, deepThink ? {
408
+ deepThink: true
409
+ } : void 0, center, opt);
410
+ if (verifyResult.pass) success = true;
411
+ else retryCount++;
412
+ }
413
+ return {
414
+ prompt: resultPrompt,
415
+ deepThink,
416
+ verifyResult
417
+ };
418
+ }
419
+ async verifyLocator(prompt, locateOpt, expectCenter, verifyLocateOption) {
420
+ debug('verifyLocator', prompt, locateOpt, expectCenter, verifyLocateOption);
421
+ const { center: verifyCenter, rect: verifyRect } = await this.aiLocate(prompt, locateOpt);
422
+ const distance = distanceOfTwoPoints(expectCenter, verifyCenter);
423
+ const included = includedInRect(expectCenter, verifyRect);
424
+ const pass = distance <= ((null == verifyLocateOption ? void 0 : verifyLocateOption.centerDistanceThreshold) || 20) || included;
425
+ const verifyResult = {
426
+ pass,
427
+ rect: verifyRect,
428
+ center: verifyCenter,
429
+ centerDistance: distance
430
+ };
431
+ debug('aiDescribe verifyResult', verifyResult);
432
+ return verifyResult;
433
+ }
434
+ async aiLocate(prompt, opt) {
435
+ const locateParam = (0, index_js_namespaceObject.buildDetailedLocateParam)(prompt, opt);
436
+ (0, utils_namespaceObject.assert)(locateParam, 'cannot get locate param for aiLocate');
437
+ const locatePlan = (0, external_tasks_js_namespaceObject.locatePlanForLocate)(locateParam);
438
+ const plans = [
439
+ locatePlan
440
+ ];
441
+ const modelConfig = this.modelConfigManager.getModelConfig('grounding');
442
+ const { executor, output } = await this.taskExecutor.runPlans((0, external_ui_utils_js_namespaceObject.taskTitleStr)('Locate', (0, external_ui_utils_js_namespaceObject.locateParamStr)(locateParam)), plans, modelConfig);
443
+ await this.afterTaskRunning(executor);
444
+ const { element } = output;
445
+ const dprValue = await this.interface.size().dpr;
446
+ const dprEntry = dprValue ? {
447
+ dpr: dprValue
448
+ } : {};
449
+ return {
450
+ rect: null == element ? void 0 : element.rect,
451
+ center: null == element ? void 0 : element.center,
452
+ ...dprEntry
453
+ };
454
+ }
455
+ async aiAssert(assertion, msg, opt) {
456
+ var _executor_latestErrorTask;
457
+ const modelConfig = this.modelConfigManager.getModelConfig('VQA');
458
+ const insightOpt = {
459
+ domIncluded: (null == opt ? void 0 : opt.domIncluded) ?? defaultInsightExtractOption.domIncluded,
460
+ screenshotIncluded: (null == opt ? void 0 : opt.screenshotIncluded) ?? defaultInsightExtractOption.screenshotIncluded,
461
+ doNotThrowError: null == opt ? void 0 : opt.doNotThrowError
462
+ };
463
+ const { textPrompt, multimodalPrompt } = (0, external_utils_js_namespaceObject_1.parsePrompt)(assertion);
464
+ const { output, executor, thought } = await this.taskExecutor.createTypeQueryExecution('Assert', textPrompt, modelConfig, insightOpt, multimodalPrompt);
465
+ await this.afterTaskRunning(executor, true);
466
+ const message = output ? void 0 : `Assertion failed: ${msg || ('string' == typeof assertion ? assertion : assertion.prompt)}\nReason: ${thought || (null == (_executor_latestErrorTask = executor.latestErrorTask()) ? void 0 : _executor_latestErrorTask.error) || '(no_reason)'}`;
467
+ if (null == opt ? void 0 : opt.keepRawResponse) return {
468
+ pass: output,
469
+ thought,
470
+ message
471
+ };
472
+ if (!output) throw new Error(message);
473
+ }
474
+ async aiWaitFor(assertion, opt) {
475
+ const modelConfig = this.modelConfigManager.getModelConfig('VQA');
476
+ const { executor } = await this.taskExecutor.waitFor(assertion, {
477
+ timeoutMs: (null == opt ? void 0 : opt.timeoutMs) || 15000,
478
+ checkIntervalMs: (null == opt ? void 0 : opt.checkIntervalMs) || 3000
479
+ }, modelConfig);
480
+ await this.afterTaskRunning(executor, true);
481
+ if (executor.isInErrorState()) {
482
+ const errorTask = executor.latestErrorTask();
483
+ throw new Error(`${null == errorTask ? void 0 : errorTask.error}\n${null == errorTask ? void 0 : errorTask.errorStack}`);
484
+ }
485
+ }
486
+ async ai(taskPrompt, type = 'action') {
487
+ if ('action' === type) return this.aiAction(taskPrompt);
488
+ if ('query' === type) return this.aiQuery(taskPrompt);
489
+ if ('assert' === type) return this.aiAssert(taskPrompt);
490
+ if ('tap' === type) return this.aiTap(taskPrompt);
491
+ if ('rightClick' === type) return this.aiRightClick(taskPrompt);
492
+ if ('doubleClick' === type) return this.aiDoubleClick(taskPrompt);
493
+ throw new Error(`Unknown type: ${type}, only support 'action', 'query', 'assert', 'tap', 'rightClick', 'doubleClick'`);
494
+ }
495
+ async runYaml(yamlScriptContent) {
496
+ const script = (0, index_js_namespaceObject.parseYamlScript)(yamlScriptContent, 'yaml');
497
+ const player = new index_js_namespaceObject.ScriptPlayer(script, async ()=>({
498
+ agent: this,
499
+ freeFn: []
500
+ }));
501
+ await player.run();
502
+ if ('error' === player.status) {
503
+ const errors = player.taskStatusList.filter((task)=>'error' === task.status).map((task)=>{
504
+ var _task_error;
505
+ return `task - ${task.name}: ${null == (_task_error = task.error) ? void 0 : _task_error.message}`;
506
+ }).join('\n');
507
+ throw new Error(`Error(s) occurred in running yaml script:\n${errors}`);
508
+ }
509
+ return {
510
+ result: player.result
511
+ };
512
+ }
513
+ async evaluateJavaScript(script) {
514
+ (0, utils_namespaceObject.assert)(this.interface.evaluateJavaScript, 'evaluateJavaScript is not supported in current agent');
515
+ return this.interface.evaluateJavaScript(script);
516
+ }
517
+ async destroy() {
518
+ var _this_interface_destroy, _this_interface;
519
+ if (this.destroyed) return;
520
+ await (null == (_this_interface_destroy = (_this_interface = this.interface).destroy) ? void 0 : _this_interface_destroy.call(_this_interface));
521
+ this.resetDump();
522
+ this.destroyed = true;
523
+ }
524
+ async logScreenshot(title, opt) {
525
+ const base64 = await this.interface.screenshotBase64();
526
+ const now = Date.now();
527
+ const recorder = [
528
+ {
529
+ type: 'screenshot',
530
+ ts: now,
531
+ screenshot: base64
532
+ }
533
+ ];
534
+ const task = {
535
+ type: 'Log',
536
+ subType: 'Screenshot',
537
+ status: 'finished',
538
+ recorder,
539
+ timing: {
540
+ start: now,
541
+ end: now,
542
+ cost: 0
543
+ },
544
+ param: {
545
+ content: (null == opt ? void 0 : opt.content) || ''
546
+ },
547
+ executor: async ()=>{}
548
+ };
549
+ const executionDump = {
550
+ logTime: now,
551
+ name: `Log - ${title || 'untitled'}`,
552
+ description: (null == opt ? void 0 : opt.content) || '',
553
+ tasks: [
554
+ task
555
+ ]
556
+ };
557
+ if (this.opts.aiActionContext) executionDump.aiActionContext = this.opts.aiActionContext;
558
+ this.appendExecutionDump(executionDump);
559
+ try {
560
+ var _this_onDumpUpdate, _this;
561
+ null == (_this_onDumpUpdate = (_this = this).onDumpUpdate) || _this_onDumpUpdate.call(_this, this.dumpDataString());
562
+ } catch (error) {
563
+ console.error('Failed to update dump', error);
564
+ }
565
+ this.writeOutActionDumps();
566
+ }
567
+ _unstableLogContent() {
568
+ const { groupName, groupDescription, executions } = this.dump;
569
+ const newExecutions = Array.isArray(executions) ? executions.map((execution)=>{
570
+ const { tasks, ...restExecution } = execution;
571
+ let newTasks = tasks;
572
+ if (Array.isArray(tasks)) newTasks = tasks.map((task)=>{
573
+ const { uiContext, log, ...restTask } = task;
574
+ return restTask;
575
+ });
576
+ return {
577
+ ...restExecution,
578
+ ...newTasks ? {
579
+ tasks: newTasks
580
+ } : {}
581
+ };
582
+ }) : [];
583
+ return {
584
+ groupName,
585
+ groupDescription,
586
+ executions: newExecutions
587
+ };
588
+ }
589
+ async freezePageContext() {
590
+ debug('Freezing page context');
591
+ const context = await this._snapshotContext();
592
+ context._isFrozen = true;
593
+ this.frozenUIContext = context;
594
+ debug('Page context frozen successfully');
595
+ }
596
+ async unfreezePageContext() {
597
+ debug('Unfreezing page context');
598
+ this.frozenUIContext = void 0;
599
+ debug('Page context unfrozen successfully');
600
+ }
601
+ processCacheConfig(opts) {
602
+ if (true === opts.cache) throw new Error('cache: true requires an explicit cache ID. Please provide:\nExample: cache: { id: "my-cache-id" }');
603
+ if (opts.cache && 'object' == typeof opts.cache && null !== opts.cache && !opts.cache.id) throw new Error('cache configuration requires an explicit id.\nExample: cache: { id: "my-cache-id" }');
604
+ const cacheConfig = (0, external_utils_js_namespaceObject.processCacheConfig)(opts.cache, opts.cacheId || opts.testId || 'default');
605
+ if (!cacheConfig) return null;
606
+ if ('object' == typeof cacheConfig && null !== cacheConfig) {
607
+ const id = cacheConfig.id;
608
+ const rawStrategy = cacheConfig.strategy;
609
+ let strategyValue;
610
+ if (void 0 === rawStrategy) strategyValue = 'read-write';
611
+ else if ('string' == typeof rawStrategy) strategyValue = rawStrategy;
612
+ else throw new Error(`cache.strategy must be a string when provided, but received type ${typeof rawStrategy}`);
613
+ if (!isValidCacheStrategy(strategyValue)) throw new Error(`cache.strategy must be one of ${CACHE_STRATEGY_VALUES}, but received "${strategyValue}"`);
614
+ const isReadOnly = 'read-only' === strategyValue;
615
+ const isWriteOnly = 'write-only' === strategyValue;
616
+ return {
617
+ id,
618
+ enabled: !isWriteOnly,
619
+ readOnly: isReadOnly,
620
+ writeOnly: isWriteOnly
621
+ };
622
+ }
623
+ return null;
624
+ }
625
+ async flushCache(options) {
626
+ if (!this.taskCache) throw new Error('Cache is not configured');
627
+ this.taskCache.flushCacheToFile(options);
628
+ }
629
+ constructor(interfaceInstance, opts){
630
+ _define_property(this, "interface", void 0);
631
+ _define_property(this, "insight", void 0);
632
+ _define_property(this, "dump", void 0);
633
+ _define_property(this, "reportFile", void 0);
634
+ _define_property(this, "reportFileName", void 0);
635
+ _define_property(this, "taskExecutor", void 0);
636
+ _define_property(this, "opts", void 0);
637
+ _define_property(this, "dryMode", false);
638
+ _define_property(this, "onTaskStartTip", void 0);
639
+ _define_property(this, "taskCache", void 0);
640
+ _define_property(this, "onDumpUpdate", void 0);
641
+ _define_property(this, "destroyed", false);
642
+ _define_property(this, "modelConfigManager", void 0);
643
+ _define_property(this, "frozenUIContext", void 0);
644
+ _define_property(this, "hasWarnedNonVLModel", false);
645
+ _define_property(this, "screenshotScale", void 0);
646
+ _define_property(this, "screenshotScalePromise", void 0);
647
+ this.interface = interfaceInstance;
648
+ this.opts = Object.assign({
649
+ generateReport: true,
650
+ autoPrintReportMsg: true,
651
+ groupName: 'Rpascene Report',
652
+ groupDescription: ''
653
+ }, opts || {});
654
+ if ((null == opts ? void 0 : opts.modelConfig) && 'function' != typeof (null == opts ? void 0 : opts.modelConfig)) throw new Error(`opts.modelConfig must be one of function or undefined, but got ${typeof (null == opts ? void 0 : opts.modelConfig)}`);
655
+ this.modelConfigManager = (null == opts ? void 0 : opts.modelConfig) ? new env_namespaceObject.ModelConfigManager(opts.modelConfig) : env_namespaceObject.globalModelConfigManager;
656
+ this.onTaskStartTip = this.opts.onTaskStartTip;
657
+ this.insight = new external_index_js_namespaceObject.Insight(async (action)=>this.getUIContext(action));
658
+ const cacheConfigObj = this.processCacheConfig(opts || {});
659
+ if (cacheConfigObj) this.taskCache = new external_task_cache_js_namespaceObject.TaskCache(cacheConfigObj.id, cacheConfigObj.enabled, void 0, {
660
+ readOnly: cacheConfigObj.readOnly,
661
+ writeOnly: cacheConfigObj.writeOnly
662
+ });
663
+ this.taskExecutor = new external_tasks_js_namespaceObject.TaskExecutor(this.interface, this.insight, {
664
+ taskCache: this.taskCache,
665
+ onTaskStart: this.callbackOnTaskStartTip.bind(this),
666
+ replanningCycleLimit: this.opts.replanningCycleLimit
667
+ });
668
+ this.dump = this.resetDump();
669
+ this.reportFileName = (null == opts ? void 0 : opts.reportFileName) || (0, external_utils_js_namespaceObject_1.getReportFileName)((null == opts ? void 0 : opts.testId) || this.interface.interfaceType || 'web');
670
+ }
671
+ }
672
+ const createAgent = (interfaceInstance, opts)=>new Agent(interfaceInstance, opts);
673
+ exports.Agent = __webpack_exports__.Agent;
674
+ exports.createAgent = __webpack_exports__.createAgent;
675
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
676
+ "Agent",
677
+ "createAgent"
678
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
679
+ Object.defineProperty(exports, '__esModule', {
680
+ value: true
681
+ });
682
+
683
+ //# sourceMappingURL=agent.js.map