ff-automationv2 2.2.31 → 2.2.32-beta.0

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 (265) hide show
  1. package/dist/ai/llmprompts/llmPromptTypes/systemPromptTypes.d.ts +3 -0
  2. package/dist/ai/llmprompts/promptRegistry.js +10 -2
  3. package/dist/ai/llmprompts/systemPrompts/actionExtractorPrompt.js +83 -27
  4. package/dist/ai/llmprompts/systemPrompts/fileVerifyActionExtractorPrompt.d.ts +2 -0
  5. package/dist/ai/llmprompts/systemPrompts/fileVerifyActionExtractorPrompt.js +35 -0
  6. package/dist/ai/llmprompts/systemPrompts/fireflinkElementIndexExtactors.js +35 -0
  7. package/dist/ai/llmprompts/systemPrompts/fireflinkElementIndexExtractor_Mob.js +5 -2
  8. package/dist/ai/llmprompts/systemPrompts/getActionExtractorPrompt.js +4 -2
  9. package/dist/ai/llmprompts/systemPrompts/getActionExtractorPromptMob.js +3 -1
  10. package/dist/ai/llmprompts/systemPrompts/inputContextPrompt.d.ts +2 -0
  11. package/dist/ai/llmprompts/systemPrompts/inputContextPrompt.js +54 -0
  12. package/dist/ai/llmprompts/systemPrompts/mobileKeywordExtractor.js +53 -8
  13. package/dist/ai/llmprompts/systemPrompts/verifyActionExtractorPrompt.js +5 -4
  14. package/dist/ai/llmprompts/systemPrompts/verifyActionExtractorPromptMob.js +1 -1
  15. package/dist/ai/llmprompts/userPrompts/userPrompt.js +2 -0
  16. package/dist/automation/actions/executor.d.ts +14 -6
  17. package/dist/automation/actions/executor.js +968 -251
  18. package/dist/automation/actions/interaction/alert/enterDataToAlert.js +3 -1
  19. package/dist/automation/actions/interaction/alert/getTextPresentOnAlertPopup.js +4 -0
  20. package/dist/automation/actions/interaction/alert/verifyAlertPopUpMessageContainsString.js +1 -1
  21. package/dist/automation/actions/interaction/alert/verifyAlertPopupIsDisplayed.js +1 -1
  22. package/dist/automation/actions/interaction/alert/verifyTextPresentOnAlertPopup.js +1 -1
  23. package/dist/automation/actions/interaction/clear/clearAndEnter.js +6 -3
  24. package/dist/automation/actions/interaction/elementlessActions/getOtp.js +25 -24
  25. package/dist/automation/actions/interaction/enterActions/EnterInputIntoElementFromClipBoardInterface_mob.js +3 -1
  26. package/dist/automation/actions/interaction/enterActions/enterInput.js +5 -2
  27. package/dist/automation/actions/interaction/enterActions/enterInputAndPress.js +5 -2
  28. package/dist/automation/actions/interaction/enterActions/enterUrl.js +5 -2
  29. package/dist/automation/actions/interaction/enterActions/enterusingJs.js +3 -1
  30. package/dist/automation/actions/interaction/enterActions/waitAndEnter.js +5 -2
  31. package/dist/automation/actions/interaction/files/VerifyPDF.d.ts +2 -0
  32. package/dist/automation/actions/interaction/files/VerifyPDF.js +171 -0
  33. package/dist/automation/actions/interaction/get/MOB_GetADBLogsForGivenAppPackage.js +4 -1
  34. package/dist/automation/actions/interaction/get/MOB_GetAllContexts.js +5 -1
  35. package/dist/automation/actions/interaction/get/MOB_GetAllWindowHandles.d.ts +1 -1
  36. package/dist/automation/actions/interaction/get/MOB_GetAllWindowHandles.js +10 -6
  37. package/dist/automation/actions/interaction/get/MOB_GetAltitude.js +5 -1
  38. package/dist/automation/actions/interaction/get/MOB_GetBatteryPercentage.js +5 -1
  39. package/dist/automation/actions/interaction/get/MOB_GetBatteryStatus.d.ts +1 -1
  40. package/dist/automation/actions/interaction/get/MOB_GetBatteryStatus.js +7 -3
  41. package/dist/automation/actions/interaction/get/MOB_GetClipBoardText.js +5 -1
  42. package/dist/automation/actions/interaction/get/MOB_GetCurrentActivity.js +5 -1
  43. package/dist/automation/actions/interaction/get/MOB_GetCurrentAppPackage.js +5 -1
  44. package/dist/automation/actions/interaction/get/MOB_GetCurrentContext.js +5 -1
  45. package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceDate.js +5 -1
  46. package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceSettings.js +5 -1
  47. package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceStatus.js +5 -1
  48. package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceSystemBars.js +5 -2
  49. package/dist/automation/actions/interaction/get/MOB_GetCurrentDeviceTime.js +5 -1
  50. package/dist/automation/actions/interaction/get/MOB_GetCurrentOrientation.js +5 -1
  51. package/dist/automation/actions/interaction/get/MOB_GetCurrentSessionId.js +5 -1
  52. package/dist/automation/actions/interaction/get/MOB_GetDeviceLocation.js +5 -1
  53. package/dist/automation/actions/interaction/get/MOB_GetDeviceName.js +5 -1
  54. package/dist/automation/actions/interaction/get/MOB_GetDeviceOsVersion.js +5 -1
  55. package/dist/automation/actions/interaction/get/MOB_GetDeviceUdid.js +5 -1
  56. package/dist/automation/actions/interaction/get/MOB_GetHeightOfElement.js +5 -1
  57. package/dist/automation/actions/interaction/get/MOB_GetHeightOfScreen.js +4 -0
  58. package/dist/automation/actions/interaction/get/MOB_GetHourFromCurrentDeviceTime.js +5 -1
  59. package/dist/automation/actions/interaction/get/MOB_GetLatitude.js +5 -1
  60. package/dist/automation/actions/interaction/get/MOB_GetLongitude.js +5 -1
  61. package/dist/automation/actions/interaction/get/MOB_GetMinuteFromCurrentDeviceTime.js +5 -1
  62. package/dist/automation/actions/interaction/get/MOB_GetSecondFromCurrentDeviceTime.js +5 -1
  63. package/dist/automation/actions/interaction/get/MOB_GetSizeOfScreen.js +5 -1
  64. package/dist/automation/actions/interaction/get/MOB_GetSupportedPerformanceDataTypes.js +5 -1
  65. package/dist/automation/actions/interaction/get/MOB_GetTextFromElementAndSetToClipBoard.js +5 -1
  66. package/dist/automation/actions/interaction/get/MOB_GetWidthOfElement.js +5 -1
  67. package/dist/automation/actions/interaction/get/MOB_GetWidthOfScreen.js +5 -1
  68. package/dist/automation/actions/interaction/get/browserWindowGetPosition.js +5 -0
  69. package/dist/automation/actions/interaction/get/getAllBrokenImages.js +9 -0
  70. package/dist/automation/actions/interaction/get/getAllBrokenLinkCount.js +9 -0
  71. package/dist/automation/actions/interaction/get/getAllBrokenLinks.js +10 -1
  72. package/dist/automation/actions/interaction/get/getAllConsoleErrors.js +11 -0
  73. package/dist/automation/actions/interaction/get/getAllConsoleInformation.js +12 -1
  74. package/dist/automation/actions/interaction/get/getAllConsoleLogs.js +11 -1
  75. package/dist/automation/actions/interaction/get/getAllConsoleWarnings.js +12 -1
  76. package/dist/automation/actions/interaction/get/getAllCookieNames.js +6 -1
  77. package/dist/automation/actions/interaction/get/getAllCookieValues.js +6 -1
  78. package/dist/automation/actions/interaction/get/getAllSelectedOptions.js +8 -1
  79. package/dist/automation/actions/interaction/get/getAllTheOptionsFromListBoxAsText.js +4 -1
  80. package/dist/automation/actions/interaction/get/getAllTheOptionsFromListBoxAsTextInSortedOrder.js +4 -1
  81. package/dist/automation/actions/interaction/get/getAllTheSelectedOptionsFromListBoxAsText.js +4 -1
  82. package/dist/automation/actions/interaction/get/getAllWindowHandles.js +5 -1
  83. package/dist/automation/actions/interaction/get/getAttribute.js +19 -14
  84. package/dist/automation/actions/interaction/get/getAudioCurrentPlaybackRate.js +4 -1
  85. package/dist/automation/actions/interaction/get/getAudioCurrentSeekTime.js +4 -1
  86. package/dist/automation/actions/interaction/get/getAudioCurrentVolume.js +4 -1
  87. package/dist/automation/actions/interaction/get/getAudioDecodedByte.js +4 -1
  88. package/dist/automation/actions/interaction/get/getAudioDefaultPlaybackRate.js +4 -1
  89. package/dist/automation/actions/interaction/get/getAudioMediaLength.js +4 -1
  90. package/dist/automation/actions/interaction/get/getAudioMediaSource.js +4 -1
  91. package/dist/automation/actions/interaction/get/getBestPracticesScore.js +11 -3
  92. package/dist/automation/actions/interaction/get/getBrowserCount.js +5 -0
  93. package/dist/automation/actions/interaction/get/getBrowserVersion.js +5 -0
  94. package/dist/automation/actions/interaction/get/getCapabilityNames.js +5 -0
  95. package/dist/automation/actions/interaction/get/getClipBoardText.js +13 -0
  96. package/dist/automation/actions/interaction/get/getCollectiveApiResponseTime.js +4 -1
  97. package/dist/automation/actions/interaction/get/getCollectiveApiStatusCode.js +4 -1
  98. package/dist/automation/actions/interaction/get/getCssValue.js +5 -1
  99. package/dist/automation/actions/interaction/get/getCurrentDayOfTheWeek.js +4 -0
  100. package/dist/automation/actions/interaction/get/getCurrentSecondsFromCurrentSystemTime.js +5 -1
  101. package/dist/automation/actions/interaction/get/getCurrentSystemDate.js +4 -0
  102. package/dist/automation/actions/interaction/get/getCurrentSystemDay.js +5 -1
  103. package/dist/automation/actions/interaction/get/getCurrentSystemMonth.js +5 -1
  104. package/dist/automation/actions/interaction/get/getCurrentSystemTime.js +5 -1
  105. package/dist/automation/actions/interaction/get/getCurrentSystemYear.js +5 -1
  106. package/dist/automation/actions/interaction/get/getCurrentWindowHandle.js +13 -26
  107. package/dist/automation/actions/interaction/get/getDataFromApiRequestHeaderForJsonPath.js +5 -4
  108. package/dist/automation/actions/interaction/get/getDataFromApiResponseForJsonPath.js +5 -4
  109. package/dist/automation/actions/interaction/get/getDateWithGivenFormat.js +13 -16
  110. package/dist/automation/actions/interaction/get/getDriverInstance.js +13 -28
  111. package/dist/automation/actions/interaction/get/getFirstContentfulPaint.js +8 -1
  112. package/dist/automation/actions/interaction/get/getFirstSelectedOption.js +5 -1
  113. package/dist/automation/actions/interaction/get/getFullPaintTime.js +8 -1
  114. package/dist/automation/actions/interaction/get/getHTMLCodeOfPage.js +4 -0
  115. package/dist/automation/actions/interaction/get/getHeightOfBrowserWindow.js +5 -0
  116. package/dist/automation/actions/interaction/get/getHeightOfWebElement.js +4 -1
  117. package/dist/automation/actions/interaction/get/getHourFromCurrentSystemTime.js +4 -0
  118. package/dist/automation/actions/interaction/get/getImplicitTimeOut.js +15 -28
  119. package/dist/automation/actions/interaction/get/getLargestContentfulPaint.js +7 -0
  120. package/dist/automation/actions/interaction/get/getListBoxSize.d.ts +1 -1
  121. package/dist/automation/actions/interaction/get/getListBoxSize.js +4 -2
  122. package/dist/automation/actions/interaction/get/getListOfElementsFromLocatorTypeLocatorValue.js +7 -2
  123. package/dist/automation/actions/interaction/get/getLocation.js +14 -8
  124. package/dist/automation/actions/interaction/get/getMinuteFromCurrentSystemTime.js +4 -0
  125. package/dist/automation/actions/interaction/get/getNetworkRouteTime.js +7 -0
  126. package/dist/automation/actions/interaction/get/getNumberOfBrokenImages.js +7 -0
  127. package/dist/automation/actions/interaction/get/getNumberOfLinksPresentInCurrentPage.js +5 -0
  128. package/dist/automation/actions/interaction/get/getNumberOfWorkingLinksFromCurrentPage.js +9 -0
  129. package/dist/automation/actions/interaction/get/getOptions.js +4 -1
  130. package/dist/automation/actions/interaction/get/getPageTitle.js +5 -1
  131. package/dist/automation/actions/interaction/get/getPerformanceMetrics.js +12 -1
  132. package/dist/automation/actions/interaction/get/getPwaScore.js +11 -3
  133. package/dist/automation/actions/interaction/get/getRect.js +9 -2
  134. package/dist/automation/actions/interaction/get/getScreenshot.js +13 -28
  135. package/dist/automation/actions/interaction/get/getScreenshotAs.js +14 -44
  136. package/dist/automation/actions/interaction/get/getSeoScore.js +15 -3
  137. package/dist/automation/actions/interaction/get/getSingleApiRequestPayload.js +5 -3
  138. package/dist/automation/actions/interaction/get/getSingleApiResponse.js +9 -8
  139. package/dist/automation/actions/interaction/get/getSingleApiResponseTime.js +9 -9
  140. package/dist/automation/actions/interaction/get/getSingleApiStatusCode.d.ts +1 -1
  141. package/dist/automation/actions/interaction/get/getSingleApiStatusCode.js +10 -17
  142. package/dist/automation/actions/interaction/get/getSize.js +7 -2
  143. package/dist/automation/actions/interaction/get/getSizeOfBrowserWindow.js +5 -4
  144. package/dist/automation/actions/interaction/get/getStringDataFromLocalFile.js +10 -7
  145. package/dist/automation/actions/interaction/get/getSystemProperty.js +6 -4
  146. package/dist/automation/actions/interaction/get/getTagName.js +9 -2
  147. package/dist/automation/actions/interaction/get/getText.js +7 -2
  148. package/dist/automation/actions/interaction/get/getTheFirstSelectedOptionFromListBoxAsText.js +5 -1
  149. package/dist/automation/actions/interaction/get/getTotalNumberOfCookies.js +6 -1
  150. package/dist/automation/actions/interaction/get/getTunnelIdentifier.js +5 -8
  151. package/dist/automation/actions/interaction/get/getURLPresentInAddressBar.js +5 -1
  152. package/dist/automation/actions/interaction/get/getUserHomeDirectory.js +9 -1
  153. package/dist/automation/actions/interaction/get/getValueByCookieName.js +7 -4
  154. package/dist/automation/actions/interaction/get/getValueFromLocalStorage.js +6 -4
  155. package/dist/automation/actions/interaction/get/getValueOfSystemVariable.js +6 -4
  156. package/dist/automation/actions/interaction/get/getVideoCurrentPlaybackRate.js +4 -1
  157. package/dist/automation/actions/interaction/get/getVideoCurrentSeekTime.js +4 -1
  158. package/dist/automation/actions/interaction/get/getVideoCurrentVolume.js +4 -1
  159. package/dist/automation/actions/interaction/get/getVideoDecodedByte.js +4 -1
  160. package/dist/automation/actions/interaction/get/getVideoDefaultPlaybackRate.js +4 -1
  161. package/dist/automation/actions/interaction/get/getVideoMediaLength.js +4 -1
  162. package/dist/automation/actions/interaction/get/getVideoMediaSource.js +5 -1
  163. package/dist/automation/actions/interaction/get/getWidthOfBrowser.js +6 -1
  164. package/dist/automation/actions/interaction/get/getWidthOfWebElement.js +4 -1
  165. package/dist/automation/actions/interaction/get/getWorkingLinksFromCurrentPage.js +10 -1
  166. package/dist/automation/actions/interaction/get/getWrappedElement.js +5 -1
  167. package/dist/automation/actions/interaction/get/getWrappedOptionFromListBoxAsText.d.ts +1 -1
  168. package/dist/automation/actions/interaction/get/getWrappedOptionFromListBoxAsText.js +4 -2
  169. package/dist/automation/actions/interaction/get/getXLocationOfBrowserWindow.js +4 -3
  170. package/dist/automation/actions/interaction/get/getXLocationOfWebElement.js +7 -2
  171. package/dist/automation/actions/interaction/get/getYLocationOfBrowserWindow.js +6 -1
  172. package/dist/automation/actions/interaction/get/getYLocationOfWebElement.js +7 -2
  173. package/dist/automation/actions/interaction/shadowDom/shadowDomEnter.js +2 -0
  174. package/dist/automation/actions/interaction/shadowDom/shadowDomGetText.js +5 -2
  175. package/dist/automation/actions/interaction/verify/MOB_VerifyBatteryLevel.js +1 -1
  176. package/dist/automation/actions/interaction/verify/VerifyAttributeValue.js +2 -2
  177. package/dist/automation/actions/interaction/verify/VerifyBrowserHtmlCodeContainsString.js +1 -1
  178. package/dist/automation/actions/interaction/verify/VerifyBrowserWindowHeight.js +1 -1
  179. package/dist/automation/actions/interaction/verify/VerifyBrowserWindowTitleContainsString.js +1 -1
  180. package/dist/automation/actions/interaction/verify/VerifyBrowserWindowTitleIsString.js +1 -1
  181. package/dist/automation/actions/interaction/verify/VerifyBrowserWindowUrlContainsExpectedUrl.js +1 -1
  182. package/dist/automation/actions/interaction/verify/VerifyBrowserWindowUrlIsString.js +1 -1
  183. package/dist/automation/actions/interaction/verify/VerifyBrowserWindowWidth.js +1 -1
  184. package/dist/automation/actions/interaction/verify/VerifyBrowserWindowXLocation.js +1 -1
  185. package/dist/automation/actions/interaction/verify/VerifyBrowserWindowYLocation.js +1 -1
  186. package/dist/automation/actions/interaction/verify/VerifyCssAttributeValue.js +1 -1
  187. package/dist/automation/actions/interaction/verify/VerifyElementNotContainsText.js +2 -2
  188. package/dist/automation/actions/interaction/verify/VerifyHeightOfWebElement.js +2 -2
  189. package/dist/automation/actions/interaction/verify/VerifyHexCodeForGivenXYCoordinates.js +1 -1
  190. package/dist/automation/actions/interaction/verify/VerifyIfAllCookiesAreDeleted.js +1 -1
  191. package/dist/automation/actions/interaction/verify/VerifyIfCookieNameIsAdded.js +1 -1
  192. package/dist/automation/actions/interaction/verify/VerifyIfCookieNameIsDeleted.js +1 -1
  193. package/dist/automation/actions/interaction/verify/VerifyIfCookieObjectIsPresent.js +1 -1
  194. package/dist/automation/actions/interaction/verify/VerifyIfGivenOptionIsDuplicate.js +1 -1
  195. package/dist/automation/actions/interaction/verify/VerifyIfImageIsBroken.js +1 -1
  196. package/dist/automation/actions/interaction/verify/VerifyIfLinkIsBroken.js +1 -1
  197. package/dist/automation/actions/interaction/verify/VerifyIfLinkIsWorking.js +1 -1
  198. package/dist/automation/actions/interaction/verify/VerifyIfLinksAreBroken.js +1 -1
  199. package/dist/automation/actions/interaction/verify/VerifyIfLinksAreWorking.js +1 -1
  200. package/dist/automation/actions/interaction/verify/VerifyIfOptionWithTextIsDeselected.js +1 -1
  201. package/dist/automation/actions/interaction/verify/VerifyIfOptionWithValueIsDeselected.js +1 -1
  202. package/dist/automation/actions/interaction/verify/VerifyIfOptionWithValueIsSelected.js +1 -1
  203. package/dist/automation/actions/interaction/verify/VerifyIfOptionWithVisibleTextIsSelected.js +1 -1
  204. package/dist/automation/actions/interaction/verify/VerifyIfSpecifiedOptionIsSelected.js +1 -1
  205. package/dist/automation/actions/interaction/verify/VerifyNavigateURL.js +1 -1
  206. package/dist/automation/actions/interaction/verify/VerifyPartialAttributeValue.js +2 -2
  207. package/dist/automation/actions/interaction/verify/VerifyPartialTitleOfCurrentPage.js +1 -1
  208. package/dist/automation/actions/interaction/verify/VerifyTagName.js +1 -1
  209. package/dist/automation/actions/interaction/verify/VerifyThatSpecifiedOptionIsNotSelected.js +1 -1
  210. package/dist/automation/actions/interaction/verify/VerifyTitleInAllPage.js +1 -1
  211. package/dist/automation/actions/interaction/verify/VerifyTitleOfCurrentPage.js +1 -1
  212. package/dist/automation/actions/interaction/verify/VerifyValueOfElementContainsString.js +1 -1
  213. package/dist/automation/actions/interaction/verify/VerifyValueOfElementIsString.js +1 -1
  214. package/dist/automation/actions/interaction/verify/VerifyWidthOfElement.js +2 -2
  215. package/dist/automation/actions/interaction/verify/VerifyXLocationOfElement.js +2 -2
  216. package/dist/automation/actions/interaction/verify/VerifyYLocationOfElement.js +2 -2
  217. package/dist/automation/actions/interaction/verify/checkIfElementIsDisplayed.js +2 -2
  218. package/dist/automation/actions/interaction/verify/verifypartialtext.js +2 -2
  219. package/dist/automation/actions/interaction/verify/verifytext.js +2 -2
  220. package/dist/automation/actions/interface/FireFlinkResponseSchema.d.ts +22 -1
  221. package/dist/automation/actions/interface/FireFlinkResponseSchema.js +18 -4
  222. package/dist/automation/actions/interface/alertActionInterface.d.ts +11 -0
  223. package/dist/automation/actions/interface/clearActionInterface.d.ts +4 -0
  224. package/dist/automation/actions/interface/getActionInterface.d.ts +150 -141
  225. package/dist/automation/actions/interface/getOtpInterface.d.ts +5 -0
  226. package/dist/automation/actions/interface/interactionActionInterface.d.ts +14 -7
  227. package/dist/automation/actions/interface/shadowDomInterface.d.ts +10 -0
  228. package/dist/automation/actions/interface/verifyActionInterface.d.ts +100 -0
  229. package/dist/core/Errors/InvalidFileTypeError.d.ts +5 -0
  230. package/dist/core/Errors/InvalidFileTypeError.js +14 -0
  231. package/dist/core/constants/supportedActions.js +4 -0
  232. package/dist/core/helpers/elementSelectorResolver.d.ts +11 -0
  233. package/dist/core/helpers/elementSelectorResolver.js +102 -0
  234. package/dist/core/helpers/runnerDomPipeline.d.ts +9 -0
  235. package/dist/core/helpers/runnerDomPipeline.js +97 -0
  236. package/dist/core/helpers/runnerKafkaReporter.d.ts +17 -0
  237. package/dist/core/helpers/runnerKafkaReporter.js +71 -0
  238. package/dist/core/helpers/runnerPostActionHelper.d.ts +2 -0
  239. package/dist/core/helpers/runnerPostActionHelper.js +30 -0
  240. package/dist/core/helpers/stepActionInspector.d.ts +5 -0
  241. package/dist/core/helpers/stepActionInspector.js +113 -0
  242. package/dist/core/helpers/visionFallbackHandler.d.ts +3 -0
  243. package/dist/core/helpers/visionFallbackHandler.js +138 -0
  244. package/dist/core/interfaces/actionInterface.d.ts +7 -5
  245. package/dist/core/interfaces/automationRunnerInterface.d.ts +56 -1
  246. package/dist/core/interfaces/fireflinkScriptPayloadInterface.d.ts +2 -0
  247. package/dist/core/interfaces/llmResponseInterface.d.ts +5 -0
  248. package/dist/core/interfaces/promptInterface.d.ts +9 -2
  249. package/dist/core/interfaces/scriptGenrationDataInterface.d.ts +4 -0
  250. package/dist/core/main/actionHandlerFactory.js +37 -7
  251. package/dist/core/main/executionContext.d.ts +2 -1
  252. package/dist/core/main/executionContext.js +3 -2
  253. package/dist/core/main/runAutomationScript.d.ts +1 -0
  254. package/dist/core/main/runAutomationScript.js +390 -1008
  255. package/dist/core/types/llmResponseType.d.ts +2 -2
  256. package/dist/core/types/promptType.d.ts +3 -1
  257. package/dist/core/types/promptType.js +2 -0
  258. package/dist/fireflinkData/fireflinkScript/appendScriptData.js +3 -0
  259. package/dist/utils/browserCap/capability.js +17 -0
  260. package/dist/utils/helpers/getHelper.d.ts +8 -0
  261. package/dist/utils/helpers/getHelper.js +115 -0
  262. package/dist/utils/helpers/platformSyntax.d.ts +1 -1
  263. package/package.json +2 -1
  264. package/dist/ai/llmprompts/systemPrompts/combinedActionExtractorPrompt.d.ts +0 -2
  265. package/dist/ai/llmprompts/systemPrompts/combinedActionExtractorPrompt.js +0 -36
@@ -35,3 +35,6 @@ export type combinedActionArgs = {
35
35
  extractedDomJson: string;
36
36
  priorAndNextSteps: string[];
37
37
  };
38
+ export type inputContextArgs = {
39
+ inputStepsContext: any[];
40
+ };
@@ -16,8 +16,10 @@ const mobileKeywordExtractor_js_1 = require("./systemPrompts/mobileKeywordExtrac
16
16
  const combinedActionExtractorPromptMob_js_1 = require("./systemPrompts/combinedActionExtractorPromptMob.js");
17
17
  const waitActionExtractorPromptMob_js_1 = require("./systemPrompts/waitActionExtractorPromptMob.js");
18
18
  const waitActionExtractorPrompt_js_1 = require("./systemPrompts/waitActionExtractorPrompt.js");
19
- const combinedActionExtractorPrompt_js_1 = require("./systemPrompts/combinedActionExtractorPrompt.js");
19
+ const inputContextPrompt_js_1 = require("./systemPrompts/inputContextPrompt.js");
20
+ // import { combinedActionExtractorPrompt } from "./systemPrompts/combinedActionExtractorPrompt.js";
20
21
  const otpExtractorPrompt_js_1 = require("./systemPrompts/otpExtractorPrompt.js");
22
+ const fileVerifyActionExtractorPrompt_js_1 = require("./systemPrompts/fileVerifyActionExtractorPrompt.js");
21
23
  exports.prompts = {
22
24
  web: {
23
25
  userStoryToList: userStoryToListPrompt_js_1.buildStepExtractionPrompt,
@@ -27,9 +29,11 @@ exports.prompts = {
27
29
  verifyActionExtractorPrompt: verifyActionExtractorPrompt_js_1.verifyActionExtractorPrompt,
28
30
  visionPrompt: visionPrompt_js_1.visionPrompt,
29
31
  getActionExtractorPrompt: getActionExtractorPrompt_js_1.getActionExtractorPrompt,
30
- combinedActionExtractorPrompt: combinedActionExtractorPrompt_js_1.combinedActionExtractorPrompt,
32
+ combinedActionExtractorPrompt: combinedActionExtractorPromptMob_js_1.combinedActionExtractorPromptMob,
31
33
  waitActionExtractorPrompt: waitActionExtractorPrompt_js_1.waitActionExtractorPrompt,
34
+ inputContextPrompt: inputContextPrompt_js_1.inputContextPrompt,
32
35
  otpExtractorPrompt: otpExtractorPrompt_js_1.otpExtractorPrompt,
36
+ fileVerifyActionExtractorPrompt: fileVerifyActionExtractorPrompt_js_1.fileVerifyActionExtractorPrompt,
33
37
  },
34
38
  android: {
35
39
  userStoryToList: userStoryToListPrompt_js_1.androidbuildStepExtractionPrompt,
@@ -41,7 +45,9 @@ exports.prompts = {
41
45
  getActionExtractorPrompt: getActionExtractorPromptMob_js_1.getActionExtractorPromptMob,
42
46
  combinedActionExtractorPrompt: combinedActionExtractorPromptMob_js_1.combinedActionExtractorPromptMob,
43
47
  waitActionExtractorPrompt: waitActionExtractorPromptMob_js_1.waitActionExtractorPromptMob,
48
+ inputContextPrompt: inputContextPrompt_js_1.inputContextPrompt,
44
49
  otpExtractorPrompt: otpExtractorPrompt_js_1.otpExtractorPrompt,
50
+ fileVerifyActionExtractorPrompt: fileVerifyActionExtractorPrompt_js_1.fileVerifyActionExtractorPrompt,
45
51
  },
46
52
  ios: {
47
53
  userStoryToList: userStoryToListPrompt_js_1.androidbuildStepExtractionPrompt,
@@ -53,6 +59,8 @@ exports.prompts = {
53
59
  getActionExtractorPrompt: getActionExtractorPromptMob_js_1.getActionExtractorPromptMob,
54
60
  combinedActionExtractorPrompt: combinedActionExtractorPromptMob_js_1.combinedActionExtractorPromptMob,
55
61
  waitActionExtractorPrompt: waitActionExtractorPromptMob_js_1.waitActionExtractorPromptMob,
62
+ inputContextPrompt: inputContextPrompt_js_1.inputContextPrompt,
56
63
  otpExtractorPrompt: otpExtractorPrompt_js_1.otpExtractorPrompt,
64
+ fileVerifyActionExtractorPrompt: fileVerifyActionExtractorPrompt_js_1.fileVerifyActionExtractorPrompt,
57
65
  }
58
66
  };
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.keywordExtractor = keywordExtractor;
4
4
  async function keywordExtractor({ priorAndNextSteps }) {
5
- const allowedActions = ["enter", "refresh", "wait", "verify", "scroll", "navigate", "navigateBack", "click", "maximize", "minimize", "get", "upload", "close", "open", "drag_and_drop", "switch", "cleartext", "notwebopenaction", "mouseAction", "switchToAndroid", "getOtp", "enterOtp"];
5
+ const allowedActions = ["enter", "refresh", "wait", "verify", "scroll", "navigate", "navigateBack", "click", "maximize", "minimize", "get", "upload", "close", "open", "drag_and_drop", "switch", "cleartext", "notwebopenaction", "mouseAction", "switchToAndroid", "getOtp"];
6
6
  const prompt = `
7
7
  You are an expert in Web application testing.
8
8
  From the step, extract ONLY the meaningful keywords so that i can search for the element in the dom.
@@ -11,19 +11,20 @@ You are an expert in Web application testing.
11
11
  - understand the step and context from the ${JSON.stringify(priorAndNextSteps)}.and keywords should be from step. it should not be related to other steps.
12
12
  - Keywords must represent ONLY the element label or visible text, never add action or instruction words in keywords.
13
13
  - Element name + type keywords: strip action words, leaving the core element name and any
14
- type word(s) attached to it (icon, button, dropdown, filter, tab, field, etc., in the order
15
- they appear in the step). Build keywords as a growing chain starting from the core name and
16
- adding one more type word each time: [name], [name+type1], [name+type1+type2], ...
17
- The core name alone is ALWAYS keyword 1 — never drop it, no matter how many type words follow.
18
- Treat "input field", "text field", "search box", "check box", "drop down" as ONE type word,
19
- not two.
14
+ type word(s) attached to it (icon, button, dropdown, filter, tab, field, etc., in the order
15
+ they appear in the step). Build keywords as a growing chain starting from the core name and
16
+ adding one more type word each time: [name], [name+type1], [name+type1+type2], ...
17
+ The core name alone is ALWAYS keyword 1 — never drop it, no matter how many type words follow.
18
+ Treat "input field", "text field", "search box", "check box", "dropdown" as ONE type word,
19
+ not two.
20
20
  No type word in the step → only [name] as the keyword.
21
- Example: "click X filter dropdown" → ["X", "X filter", "X filter dropdown"]
21
+ Example: "click X filter dropdown" → ["X", "X filter", "X filter dropdown"]
22
+ If more than 3 type words are attached to the element (chain would exceed 5 keywords), keep the core name plus only the 2-3 type words CLOSEST to the element name and drop the rest, so total keywords stay within the 3-5 max.
22
23
  - When a step contains two elements connected by a positional or relational phrase, keywords MUST contain at least one keyword from each element — TARGET element first, then the reference element. Never omit the reference element. Example: "Click on x above y" → x is the target, y is the reference → ["x", "y"].
23
- - 3 to 5 keywords maximum. dont give more than 5 keywords. and no need for casesensitive.
24
+ - 3 to 5 keywords maximum. dont give more then 5 keywords. and no need for case sensitive.
24
25
  - General ordering rule: whenever a step involves both a target element and a reference/context element, the TARGET element's keyword(s) must always come FIRST, followed by the reference/context element's keyword(s). This applies to positional/relational steps, selection steps, and any other multi-element step.
25
26
  - For the open action if they are not provided anything like profile, capablities in the step in that case don't add them check whether the profile and the capablities are present in the step if not please don't add them.
26
- - For the Open action, if a browser path and profile are provided, return keywords as ["path:<path_value>", "profile:<profile_value>"]. Should not remove backslach from path.
27
+ - For the Open action, if a browser path and profile are provided, return keywords as ["path:<path_value>", "profile:<profile_value>"]. Should not remove backslash from path.
27
28
  example: step open browser,x:\\x\\x\\x,default -> ["path:c:\\x\\x\\x","profile:default"]
28
29
  - For the Open action, if the user requests specific browser capabilities/arguments, extract them into the keywords array using the "caps:" prefix followed by one of these exact allowed values:
29
30
  - "headless" (for running in headless / no-gui mode)
@@ -44,37 +45,92 @@ You are an expert in Web application testing.
44
45
  - "passwordManager" (for disabling credentials and password manager prompts)
45
46
  Do NOT extract or generate any capability strings outside of this list.
46
47
  - Do NOT split the keyword into individual words or generate variations such as ["sign", "in"] or ["add", "to", "cart"] for ["Sign In","Add to Cart"]. Only include the original phrase should not add type for first keyword.
47
- - If icon is metioned in step than 'svg' should add in keywords and for Upload action first keyword should be 'file'.
48
- - If the step is about selecting, include keywords for both the target value and the source/reference, with the TARGET value FIRST and the source/reference SECOND (example: select 'x' in 'y' → "x", "y"), ensuring both are meaningful and action should set to 'click'.
48
+ - If the step is about selecting/choosing/picking a SINGLE element with no separate reference element present (e.g. "select the Agree checkbox", "select India"), treat it as ONE step: keywords = [target element] only, action = "click".
49
49
  - If the step is about entering text or Uploading file, Should NOT include input value from the step into keywords.
50
- - If the step is about entering the OTP then give the action as the enterOtp, just only for the entering OTP only.
51
50
  - If the step has words like tag name audio, video, image,svg, checkbox etc, include them in the keywords.
52
- - **If icon is metioned in step than 'svg' should add in keywords ex: click on x icon -> [x, x icon,svg] and for Upload action first keyword should be 'file'. ex: upload file in x -> [file,x].**
51
+ - **If icon is mentioned in step then 'svg' should add in keywords ex: click on x icon -> [x, x icon,svg] and for Upload action first keyword should be 'file'. ex: upload file in x -> [file,x].**
53
52
  - Do NOT split single-word keywords and do NOT include relation terms (above, below, next to, etc.) in keywords.
54
53
  - Treat each keyword independently never merge different keywords.
55
- - Keywords can be string or number if the step contains a number ,add it also as keyword.
54
+ - Keywords can be string or number if the step contains a number as part of the ELEMENT's name/label (e.g. "click on Step 2 tab" -> "Step 2" is a keyword). This does NOT apply to numbers that are the value being entered/typed/uploaded — those stay excluded per the "entering text or Uploading file" rule below, even if numeric (e.g. "Enter 5 in Quantity field" -> "5" is NOT a keyword).
56
55
  - Do Not include any other unrelated keywords for step.
57
56
  - Do NOT include generic UI words (button, field, etc) and action words (tap, click, press, etc).
58
57
  - Do NOT include status/technical words (displayed, enabled, authenticate, visible).
59
58
  - If the step is for the switching to android then provide the action as the switchToAndroid
60
- - element_name: extract name of the element that mentioned in the the step.(eg:tap on x -> element_name:x) keep element_name as short as possible and make the first letter of first word of the element_name as capital. beacuse element_name is also used to find element in the dom. and if element_name is not mentioned in step than return action of the step as element_name.
59
+ - element_name: extract name of the element that mentioned in the the step.(eg:tap on x -> element_name:x) keep element_name as short as possible and make the first letter of first word of the element_name as capital. because element_name is also used to find element in the dom. and if element_name is not mentioned in step then return action of the step as element_name.
61
60
  - Set action to notwebopenaction only when the instruction is related to a mobile application, app, application, installed package, or bundle .
62
- - action: click for taping, clicking or selecting, enter for entering input, wait for waiting or sleeping,scroll for scrolling and swiping, navigate for navigating to page using url, navigateBack for navigateing back to previous page, get for getting,fetching element,maximize for maximizing browser window, close for closing browser window,open for opening browser window, upload for uploading file using path, drag_and_drop for dragging and dropping element, switch is for switching to tab or window or frame,cleartext for clearing or removing text from element, mouseAction for the action related mouse actions even for mouse click , refresh is for .
61
+ - action: click for taping, clicking or selecting, enter for entering input, wait for waiting or sleeping,scroll for scrolling and swiping, navigate for navigating to page using url, navigateBack for navigateing back to previous page, get for getting,fetching element,maximize for maximizing browser window, close for closing browser window,open for opening browser window, upload for uploading file using path, drag_and_drop for dragging and dropping element, switch is for switching to tab or window or frame,cleartext for clearing or removing text from element, mouseAction for the action related mouse actions even for mouse click , refresh is for refreshing or reloading pages, getOtp for fetching/reading an OTP value.
63
62
  - If mouse action related step is there select mouseAction from the allowed actions list check for the step and provide it.
64
63
  - action must be one of from this list ${JSON.stringify(allowedActions)}.if not one of them, return '0'. if step about set or find action return '0'
65
- - For navigate action, keywords should contain only one keyword which is full url from the step and should not include any other text. and if step has another actions, including navigate action, don't return navigate action return another action witch is in the step. and element_name should be "URL".
66
- Navigate action is allowed only when the step intent is purely navigation (e.g., "Navigate to URL").
67
- If the step includes verification intent (verify/check/confirm/etc), you MUST return "verify" and MUST NOT return "navigate".
68
- only give navigate action if step has only navigate action.
69
- - Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
70
- Respond only with JSON using this format:
64
+ - For navigate action, keywords should contain only one keyword which is full url from the step and should not include any other text. and if step has another actions, including navigate action, don't return navigate action return another action which is in the step. and element_name should be "URL".
65
+ - Navigate action rules:
66
+ - Use action "navigate" ONLY when the step gives an explicit instruction to go to a URL (e.g., "Navigate to https://x.com"). keywords must contain only the full URL, nothing else. elementName should be "URL".
67
+ - If the step ONLY checks/confirms the current or already-navigated URL, with NO "go to/navigate to" instruction present in that same step (e.g., "Verify navigated URL", "Get navigated URL"), return whichever action word the step itself uses (verify, get, check, confirm, etc. — never "navigate"), and do NOT split it — it is already a single atomic step. keywords should be ["URL"], elementName "URL".
68
+ CRITICAL RULES:
69
+ 1.If the step contains multiple actions, you MUST split it into multiple objects in the "steps" array in the same sequence and generate the response object in the same flow.
70
+ - Each object must represent EXACTLY ONE action.
71
+ - Preserve the ORIGINAL ORDER of actions strictly.
72
+ Example 1: "Enter username , Password as Username and Password and click on button", should be split into 3 steps: 1.Enter Username in Username, 2.Enter Password in Password, 3.Click on button. and elementName for first step should be Username, for second step should be Password and for third step should be click on button.
73
+
74
+ 2.If the step contains Select, choose, pick and also contains a connecting word to a reference element ("from", "in", "on", "under") then you must always split into exactly two steps, click on the reference element first and then click on the target value. elementName for the first step should be the reference element (mentioned after the connecting word), and for the second step it should be the target value (mentioned after select/choose/pick). if the step has more than one connecting word then consider only the first one for elementName and keyword extraction.
75
+ Example: "Select 'India' from Country" → 1.Click on Country, 2.Click on India. elementName for first step should be Country and for second step should be India.
76
+ Example: "select 'x' in 'y'" → 1.Click on y, 2.Click on x. elementName for first step should be y and for second step should be x.
77
+ 3.If the step contains a compound action (e.g., "Enter text in field and click button"), you MUST split it into separate steps for each action, ensuring that each step is represented as a distinct object in the "steps" array with its own keywords and elementName.
78
+ Example: "Enter 'John' in Name field and click Submit" → 1.Enter 'John' in Name field, 2.Click on Submit. and elementName for first step should be Name field and for second step should be Submit.
79
+ 4. ONLY IF the step text itself contains BOTH an explicit "go to/navigate to URL" instruction AND a separate URL-checking instruction (e.g., "Navigate to url and verify navigated url"), split into atomic steps with navigate FIRST, then the checking action SECOND, using whichever action word the step itself uses for the second part. Do not split a step that only checks the URL with no navigate instruction present — that stays a single step per the Navigate action rules above.
80
+ 5.Keywords in the multiple steps should be extracted based on single step and it should not contain any keywords from other steps.
81
+ 6. If the step performs the SAME action on TWO OR MORE DIFFERENT target elements joined by "and"/"," (with or without a value), split into separate steps — one per target element — each step keeping the same action (and same value, if any) with its own elementName and keywords. The "step" field for EACH split step must repeat the full action phrase from the original step, not just the element name — this is the one case where "step" is reconstructed rather than a literal substring, since the original sentence never repeated the action for each element.
82
+ Example (with value): "enter x in both a and b" -> 1. Enter x in a (elementName "a", keywords ["a"], step: "enter x in a"), 2. Enter x in b (elementName "b", keywords ["b"], step: "enter x in b").
83
+ Example (no value): "get text from a and b" -> 1. Get text from a (elementName "a", keywords ["a"], step: "get text from a"), 2. Get text from b (elementName "b", keywords ["b"], step: "get text from b").
84
+
85
+ - fileType: If the verify action step mentions verifying or checking any file extension or document (e.g. "pdf" or any file extension), extract that file extension in lowercase (without dot, e.g. "pdf") and set it in fileType. For all non-file/UI verification steps, set fileType to null.
86
+
87
+ Respond ONLY with valid JSON in this EXACT format:
88
+
71
89
  {
72
- "keywords": [key1,key2,key3,key4,key5],
73
- "elementName": "x",
74
- "action": "x",
75
- "liveLog": "Should Generate a short, human-readable description of what the AI is about to do.",
90
+ "steps": [
91
+ {
92
+ "keywords": ["key1", "key2"],
93
+ "elementName": "element name",
94
+ "action": ${allowedActions.join("|")},
95
+ "isStepValueDependable": boolean (true ONLY if action is verify/enter AND the step contains an actual referential phrase pointing to an earlier step's data — see isStepValueDependable rule below for the full test and examples; false if the value is literal or no referential phrase is present. Never consider future steps.),
96
+ "liveLog": "Should Generate a short, human-readable description of what the AI is about to do.",
97
+ "fileType": "pdf" | other lowercase file extension | null,
98
+ "step": Return the original step exactly as-is if it contains a single action; if multiple actions exist, split into atomic steps without changing any wording, spelling, casing, spacing, or punctuation.(Rules: No rephrasing, no additions/removals—each output step must be an exact substring of the input.)
99
+ }
100
+ ]
76
101
  }
77
102
 
103
+
104
+ STEP RULES (VERY IMPORTANT):
105
+
106
+ - Each "step" MUST represent EXACTLY ONE action.
107
+ - isStepValueDependable (boolean):
108
+ • Test is REFERENTIAL vs LITERAL, not sentence completeness — e.g. "enter 2nd step input in name" is a complete sentence but still referential, since the value itself isn't written there.
109
+ • Set true ONLY when action is 'verify' or 'enter' AND the step contains an actual referential phrase pointing to data from an earlier step (by step number, "previous/prior/earlier/that/same" wording, or naming what was fetched/copied/retrieved there). Confirm the referenced step exists earlier in priorAndNextSteps, never a future step.
110
+ • Set false when the value is written literally, or no referential phrase is present, or the action isn't verify/enter.
111
+ • DO NOT infer true from an element/field name alone when that word appears only in the CURRENT step's own target/element — e.g. "get text from Password" is false because "Password" there is just this step's own target, not a value pointing elsewhere.
112
+ • EXCEPTION — reference-by-element-name: if the VALUE being entered matches (case-insensitively) the elementName or keyword of a 'get' or 'enter' action from an EARLIER step in priorAndNextSteps, treat this as referential (true) even with no explicit pointer wording like "previous"/"same" — this is a common shorthand for "reuse whatever was entered/fetched there". Example: step 2 is "enter santosh@123 in password" (elementName "Password"), step 3 is "enter password in confirm password" → true, because the value "password" matches step 2's elementName, meaning step 3 is reusing step 2's entered value, not typing the literal word "password".
113
+ • Examples (illustrative, not exhaustive): "enter 2nd step input in name" → true. "enter the OTP received earlier in name" → true. "enter 'John' in name" → false. "get text from Password" → false (no reference present). "enter password in confirm password" (given step 2 entered a value into a "Password" field) → true.
114
+ - Step MUST be rewritten as a CLEAN and COMPLETE instruction.
115
+ - Step MUST contain:
116
+ • action
117
+ • target element
118
+ • value (if applicable)
119
+ - DO NOT copy original sentence if it contains multiple actions.
120
+ - EXCEPTION: for steps split under Critical Rule 6 (same action repeated across multiple elements), the "step" field is reconstructed to repeat the action phrase per element (see Rule 6) — it will not be a literal substring of the original in this one case.
121
+ - DO NOT keep unnecessary words like:
122
+ "select", "choose", "pick", "credentials", "details", etc.
123
+
124
+ - ALWAYS normalize action wording:
125
+
126
+ Examples:
127
+ "Select X from Y"
128
+ "Click on Y"
129
+ "Click on X"
130
+
131
+ - Each step must be SELF-CONTAINED and EXECUTABLE.
132
+
133
+
78
134
  No other text.
79
135
  `;
80
136
  return prompt;
@@ -0,0 +1,2 @@
1
+ import { verifyActionArgs } from "../llmPromptTypes/systemPromptTypes.js";
2
+ export declare function fileVerifyActionExtractorPrompt({ extractedDomJson, priorAndNextSteps, }: verifyActionArgs): Promise<string>;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fileVerifyActionExtractorPrompt = fileVerifyActionExtractorPrompt;
4
+ async function fileVerifyActionExtractorPrompt({ extractedDomJson, priorAndNextSteps, }) {
5
+ const nlpList = `VerifyPDF,CompareTwoPdf,VerifyPDFExist,CheckAccessibilityForPdfUsingPython,CheckIfPdfIsXfaFrom,VerifyElementIsDisplayed,VerifyElementIsNotDisplayed,VerifyElementIsEnabled,VerifyElementIsDisabled,VerifyElementIsClickable,VerifyNavigateURL,VerifyIfLinkIsWorking`;
6
+ const elementType = ['link', 'textfield', 'icon', 'button', 'radioButton', 'text', 'textarea', 'image', 'dropdown', 'checkbox', 'tab', 'action overflow button', 'hamburger icon', 'toggle button', 'suggestion', 'time picker', 'date picker', 'toaster message', 'card', 'tooltip', 'option', 'calender', 'sliders', 'visual testing'];
7
+ const prompt = `You are an intelligent assistant that extracts structured UI action data for file and element verification.
8
+ Given the step, the simplified DOM: ${extractedDomJson}, and the list of NLP names: ${nlpList} don't provide the other nlp names which are not present in the list in any manner.
9
+
10
+ Select the perfect matching NLP name from the list that best fits the step's intent.
11
+ **The NLP name must match exactly one value from the approved NLP list. Do not generate or suggest any new NLP names under any condition.**
12
+ step may give any way, you need to get most matching and most related nlp name from the list that relates to step.
13
+
14
+ - Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
15
+ Return **only valid JSON** in the following format:
16
+ {
17
+ "attributeValue": "Fire-Flink-x",
18
+ "nlpName": "x",
19
+ "inputText": "x",
20
+ "elementType": "x"
21
+ }
22
+
23
+ Rules:
24
+ - PDF steps: if step specifies checking/verifying text, content, or phrases inside a PDF → choose VerifyPDF and extract the expected text into inputText | if step only verifies the presence, creation, or download of the file without checking inner text → choose VerifyPDFExist with inputText: "".
25
+ - nlpName must be exactly one from the provided list.
26
+ - While matching nlpName with step (ignore spaces, case differences). If multiple NLPs are similar, choose the MOST SPECIFIC and EXACT match.
27
+ - Use context from the steps: ${priorAndNextSteps}, keyword and json to search for FF-inspecter.
28
+ - **Find the FF-inspecter attribute value of the element in the Simplified JSON whose text or any other attributes best match the step in the simplified DOM.**
29
+ - If no matching element found for the step or if step is file/pdf verification, return attributeValue as 'Fire-Flink-0'.
30
+ - Extract inputText from the step that is being verified (e.g. expected text to verify in PDF or element). If no input text in step, return keyword or empty string "" as inputText.
31
+ - Based on step give most relevant type of element. Use this list to choose elementType: ${elementType}. If elementType is not there in list return 'link'.
32
+ - **Respond with valid JSON only. don't return any other text or don't return response in list format**
33
+ `;
34
+ return prompt;
35
+ }
@@ -15,6 +15,7 @@ async function ffInspectorNumExtractor({ stepAction, extractedDomJson, priorAndN
15
15
  "WaitTillAlertIsPresent",
16
16
  "VerifyTextPresentOnAlertPopup"
17
17
  ];
18
+ const OtpAction = ["getOtp"];
18
19
  const scrollActions = ["ScrollToElement", "ScrollVerticallyTillElementIsVisible", "ScrollHorizontallyTillElementIsVisible", "ScrollPageToSpecificLocation"];
19
20
  const elementType = ['link', 'textfield', 'icon', 'button', 'radioButton', 'text', 'textarea', 'image', 'dropdown', 'checkbox', 'tab', 'action overflow button', 'hamburger icon', 'toggle button', 'suggestion', 'time picker', 'date picker', 'toaster message', 'card', 'tooltip', 'option', 'calender', 'sliders', 'visual testing'];
20
21
  const enterActions = ["SendKeys", "ClearThenEnterInput", "WaitAndSendKeys", "EnterInputUsingJS", "EnterDataAndPressKey"];
@@ -181,6 +182,40 @@ You are an AI assistant. For the step, extract the element keyword from the step
181
182
  - Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
182
183
  - Respond with valid JSON only.Don
183
184
  `;
185
+ }
186
+ else if (stepAction === "getOtp") {
187
+ prompt = `
188
+ You are an intelligent assistant that extracts structured mobile getOTP action data.
189
+ Given the step: ${JSON.stringify(priorAndNextSteps)},and the list of NLP names: ${OtpAction}.
190
+
191
+ Select the perfect matching NLP name from the list that best fits the step's intent.
192
+
193
+ Return **only valid JSON** in the following format:
194
+ {{
195
+ "nlpName": "x",
196
+ "inputText": "x",
197
+ "timeFrom": "x",
198
+ "waitTime": "x",
199
+ "activity": "x",
200
+ "variableName": "validVariableName"
201
+ }}
202
+
203
+ Rules:
204
+ - nlpName must be exactly one from the provided list from here ${OtpAction} and always pick the value as it is.
205
+ - "variableName": Generate a valid, descriptive variable name for storing the fetched OTP value based on the step intent (e.g., valid camelCase identifier such as "otp", "extractedOtp", "smsOtp"). It must be a valid programming identifier (letters, numbers, underscores; cannot start with a number; no spaces or special characters).
206
+ - If the steps are provided with the message header and the messaging app provide the message header in the inputText and messaging app in the bundleID in the activity field.
207
+ - If the step does not provides the messaging app don't provide example provide "activity":"" empty.
208
+ - If the step does not provides the time range don't provide example provide "timeFrom":"" and "waitTime":"" empty.
209
+
210
+ - **Extraction**:
211
+ - inputText: The header of the message mentioned in the step.
212
+ - activity: The messaging app from which the OTP is to be extracted.
213
+ - timeFrom: The time range for which the OTP is to be extracted just give number like "60" for 60 seconds like that don't add any extra words with that.
214
+ - waitTime: The time to wait for the OTP to be extracted just give number like "60" for 60 seconds like that don't add any extra words with that.
215
+ - variableName: A valid camelCase variable name (e.g. "otp", "extractedOtp") for storing the extracted OTP.
216
+ - Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
217
+
218
+ - response:valid json only.`;
184
219
  }
185
220
  else if (stepAction === "click" || stepAction === "cleartext") {
186
221
  prompt = `
@@ -64,11 +64,13 @@ Return **only valid JSON** in the following format:
64
64
  "inputText": "x",
65
65
  "timeFrom": "x",
66
66
  "waitTime": "x",
67
- "activity": "x"
67
+ "activity": "x",
68
+ "variableName": "validVariableName"
68
69
  }}
69
70
 
70
71
  Rules:
71
- - nlpName must be exactly one from the provided list.
72
+ - nlpName must be exactly one from the provided list of ${OtpAction} don't generate any other nlpName.
73
+ - "variableName": Generate a valid, descriptive variable name for storing the fetched OTP value based on the step intent (e.g., valid camelCase identifier such as "otp", "extractedOtp", "smsOtp"). It must be a valid programming identifier (letters, numbers, underscores; cannot start with a number; no spaces or special characters).
72
74
  - If the steps are provided with the message header and the messaging app provide the message header in the inputText and messaging app in the bundleID in the activity field.
73
75
  - If the step does not provides the messaging app don't provide example provide "activity":"" empty.
74
76
  - If the step does not provides the time range don't provide example provide "timeFrom":"" and "waitTime":"" empty.
@@ -78,6 +80,7 @@ Rules:
78
80
  - activity: The messaging app from which the OTP is to be extracted.
79
81
  - timeFrom: The time range for which the OTP is to be extracted just give number like "60" for 60 seconds like that don't add any extra words with that.
80
82
  - waitTime: The time to wait for the OTP to be extracted just give number like "60" for 60 seconds like that don't add any extra words with that.
83
+ - variableName: A valid camelCase variable name (e.g. "otp", "extractedOtp") for storing the extracted OTP.
81
84
  - Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
82
85
 
83
86
  - response:valid json only.`;
@@ -27,12 +27,14 @@ Select the perfect matching NLP name from the list that best fits the step's int
27
27
  "attributeValue": "Fire-Flink-x",
28
28
  "nlpName": "x",
29
29
  "inputText":"x",
30
- "elementType": "x"
30
+ "elementType": "x",
31
+ "variableName": "validVariableName"
31
32
  }
32
33
  Rules:
33
34
  - nlpName must be exactly one from the provided list.
35
+ - "variableName": Generate a valid, descriptive variable name for storing the fetched value based on the step intent (e.g., valid camelCase identifier such as "pageTitle", "extractedText", "userEmail", "itemPrice", "orderId"). It must be a valid programming identifier (letters, numbers, underscores; cannot start with a number; no spaces or special characters).
34
36
  - Use context from the steps : ${priorAndNextSteps}, keyword and json to search for FF-inspecter.
35
- - **Find the FF-inspecter attribute value of the element in the Simplified JSON whose text or attributes best match the step.**
37
+ - **Find the FF-inspecter attribute value of the element in the Simplified DOM whose text or attributes best match the step.**
36
38
  - **CRITICAL: For media actions (GetVideo..., GetAudio...), ALWAYS prioritize the actual <video> or <audio> element. DO NOT select container <div>, <span> or code block elements that merely contain the media tag as text. If you see a code block and a real media element, choose the real media element.**
37
39
  - For some steps you can see two inputs but you need to understand step and send the required inputText. inputText can be string, number, url or xpath.
38
40
  ex: get the flights matches the flight, Get Single Api Response of url- 'https://app.talentscan.ai/login' and request url-'https://app.talentscan.ai/sign up', if they give x-30,y-50 just send 30,50 and for this nlps GetDataFromApiRequestHeaderForJsonPath and Get Data From Api Response of url- 'https://app.talentscan.ai/login' and request url-'https://app.talentscan.ai/sign up' For JsonPath - c:jsonpath format than fill inputText in this order "https://app.talentscan.ai/login,https://app.talentscan.ai/sign up,c:jsonpath"
@@ -25,10 +25,12 @@ Return **only valid JSON** in the following format:
25
25
  "inputText":"x",
26
26
  "elementType": "x",
27
27
  "locator_type": "x",
28
- "attributeType": "x"
28
+ "attributeType": "x",
29
+ "variableName": "validVariableName"
29
30
  }
30
31
  Rules:
31
32
  - nlpName must be exactly one from the provided list.
33
+ - "variableName": Generate a valid, descriptive variable name for storing the fetched value based on the step intent (e.g., valid camelCase identifier such as "deviceDate", "extractedText", "batteryLevel", "currentOrientation"). It must be a valid programming identifier (letters, numbers, underscores; cannot start with a number; no spaces or special characters).
32
34
  - for screenshots, extract the inputText from the step. like what they what to name image.if not present then leave it empty.
33
35
  - Use context from the steps : ${priorAndNextSteps}, json to search for FF-inspecter.
34
36
  - **Find the FF-inspecter attribute value of the element in the Simplified JSON whose text or attributes best match the step.**
@@ -0,0 +1,2 @@
1
+ import { inputContextArgs } from "../llmPromptTypes/systemPromptTypes";
2
+ export declare function inputContextPrompt({ inputStepsContext }: inputContextArgs): Promise<string>;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.inputContextPrompt = inputContextPrompt;
4
+ async function inputContextPrompt({ inputStepsContext }) {
5
+ const prompt = `
6
+ You are an intelligent assistant that extracts input data for the current step.
7
+
8
+ Previous steps data:
9
+ ${JSON.stringify(inputStepsContext, null, 2)}
10
+
11
+ Instructions:
12
+
13
+ 1. Analyze the current step and previous steps carefully.
14
+
15
+ 2. Priority rules (strict order):
16
+ - If a step index or step reference is mentioned (e.g., "step 2", "2nd step", "3rd step", "3nd step", "step 1.1", "sub-step 1.1") → match to the corresponding stepindex (e.g., 2nd step -> stepindex 2, step 1.1 -> sub-step with stepindex "1.1"). If the matched step contains "subSteps", extract from the subStep matching the field name or sub-step index, and extract ONLY from that subStep.
17
+ - If a field name is mentioned (e.g., email, password, first name) → extract from the matching field step or subStep.
18
+ - If words like "above", "previous", "same" → extract from the most relevant previous step or subStep.
19
+
20
+ 3. If the step is normal (no reference):
21
+ - Extract input directly from the current step.
22
+ - Do NOT use previous steps.
23
+
24
+ 4. Conflict rule:
25
+ - If both source and destination fields exist (e.g., "enter first name in password"):
26
+ - Use the SOURCE field value ("first name").
27
+ - Ignore the destination field ("password").
28
+
29
+ 5. Extraction rules:
30
+ - Use ONLY given data (previous or current step).
31
+ - If input exists in the current step, then extract that input only, should not use input from previous steps.
32
+ - If step is about extracting two values from previous steps, extract both values and return them as an inputText as "input1input2".
33
+ - Do NOT create or merge values.
34
+ -If the step modifies an input value from the current or previous steps, return the updated value as "inputText".
35
+ Example: If the input is "abc" and the step says to add "@123" or and add @ and one number, return "inputText": "abc@123" || "abc@5".
36
+ - If step is saying to genarate a input using previous steps input values, genarate the input value and return it as "inputText". if that is is Password genarate a strong password.
37
+ - Always return a single value.
38
+
39
+ 6. Output rules:
40
+ - "inputText": Return ONLY the input value. inputText must NEVER be empty → fallback to most relevant previous value.
41
+ - "variableName": Do NOT generate a new variable name. Extract and return the "variableName" from the matching step or subStep in "Previous steps data" (inputStepsContext). If the matched previous step has a "variableName", return that exact variableName. If no variableName is present or no previous step is referenced, return "".
42
+
43
+ 7. Never generate new input. Always follow priority rules strictly.
44
+
45
+ Respond ONLY with valid JSON:
46
+
47
+ {
48
+ "inputText": "x",
49
+ "variableName": "variableNameFromPreviousStep"
50
+ }
51
+
52
+ `;
53
+ return prompt;
54
+ }
@@ -34,16 +34,61 @@ Rules:
34
34
  - If step is press any key give action as tap.if step is clear or clearandenter give action as enter and if step is open chrome browser app por application and it doesnot have app package or bundle id give action as combined but if step has app package or bundle id give action as openApp.
35
35
  - action must be one of from this list ${allowedActions}.if not one of them, return action as 'combined'. if step about set or setting or find, install apk or ipa, uninstall apk or ipa,activate app with app package or bundle id, pinch in or pinch out or related turn wifi or airplane mode return action as 'combined'
36
36
  - if the step action is about finding or check app is installed or open chrome browser or open notification bar or terminate app using app package or bumdle id or running app in the background for some seconds then provide action as combined.
37
- - Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
38
- Respond only with JSON using this format:
37
+ CRITICAL SPLITTING RULES:
38
+ 1. If the step contains multiple actions (two or more, in any combination), you MUST split it into multiple objects in the "steps" array in the same sequence and flow.
39
+ - Each object must represent EXACTLY ONE action.
40
+ - Preserve the ORIGINAL ORDER strictly.
41
+ Example: "Enter 'admin' in Username, '1234' in Password and tap Login" → split into 3 steps:
42
+ 1. Enter 'admin' in Username (action: "enter", elementName: "Username")
43
+ 2. Enter '1234' in Password (action: "enter", elementName: "Password")
44
+ 3. Tap on Login (action: "tap", elementName: "Login")
45
+ Example: "Enter 'x' in a and tap b" → split into 2 steps:
46
+ 1. Enter 'x' in a (action: "enter", elementName: "a")
47
+ 2. Tap on b (action: "tap", elementName: "b")
48
+ 2. If the step contains "select", "choose", "pick" and also contains a connecting reference ("from", "in", "under"):
49
+ Split into two atomic steps: tap reference element first, then tap target option.
50
+ Example: "Select 'India' from Country" →
51
+ 1. Tap on Country (action: "tap", elementName: "Country")
52
+ 2. Tap on India (action: "tap", elementName: "India")
53
+ 3. If the step performs the SAME action with ONE VALUE into TWO OR MORE DIFFERENT elements:
54
+ Split into separate steps — one per target element:
55
+ Example: "Enter '1234' in PIN and Confirm PIN" →
56
+ 1. Enter '1234' in PIN (elementName: "PIN", keywords: ["PIN"])
57
+ 2. Enter '1234' in Confirm PIN (elementName: "Confirm PIN", keywords: ["Confirm PIN"])
58
+ 4. Keywords in multiple steps should be extracted based on each individual sub-step only.
59
+ 5. If the step performs the SAME action on TWO OR MORE DIFFERENT target elements joined by "and"/"," (with or without a value), split into separate steps — one per target element — each step keeping the same action (and same value, if any) with its own elementName and keywords.
60
+ Example (with value): "enter x in both a and b" -> 1. Enter x in a (elementName "a", keywords ["a"]), 2. Enter x in b (elementName "b", keywords ["b"]).
61
+ Example (no value): "get text from a and b" -> 1. Get text from a (elementName "a", keywords ["a"]), 2. Get text from b (elementName "b", keywords ["b"]).
62
+ 6. fileType: If the verify action step mentions verifying or checking any file extension or document (e.g. "pdf" or any file extension), extract that file extension in lowercase (without dot, e.g. "pdf") and set it in fileType. For all non-file/UI verification steps, set fileType to null.
63
+
64
+ Respond ONLY with valid JSON in this EXACT format:
65
+ {
66
+ "steps": [
39
67
  {
40
- "keywords": [key1,key2,key3,key4,key5] if step is opening app then keywords should be like ["key1:value1","key2:value2"...],
41
- "elementName": "x",
42
- "action": "x",
43
- "liveLog": "Should Generate a short, human-readable description of what the AI is about to do.for open app dont include whole step jsut give Opening app",
68
+ "keywords": [key1,key2,key3,key4,key5] if step is opening app then keywords should be like ["key1:value1","key2:value2"...],
69
+ "elementName": "x",
70
+ "action": ${allowedActions.join("|")},
71
+ "isStepValueDependable": boolean (true ONLY if action is verify/enter AND the step contains an actual referential phrase pointing to an earlier step's data — see isStepValueDependable rule below for the full test and examples; false if the value is literal or no referential phrase is present. Never consider future steps.),
72
+ "liveLog": "Should Generate a short, human-readable description of what the AI is about to do.",
73
+ "fileType": "pdf" | other lowercase file extension | null,
74
+ "step": "Clean, complete instruction of the step (or atomic sub-step if split)."
44
75
  }
45
-
46
- No other text.
76
+ ]
77
+ }
78
+ STEP RULES (VERY IMPORTANT):
79
+ - Each "step" MUST represent EXACTLY ONE action.
80
+ - isStepValueDependable (boolean):
81
+ • Test is REFERENTIAL vs LITERAL, not sentence completeness — e.g. "enter 2nd step input in name" is a complete sentence but still referential, since the value itself isn't written there.
82
+ • Set true ONLY when action is 'verify' or 'enter' AND the step contains an actual referential phrase pointing to data from an earlier step (by step number, "previous/prior/earlier/that/same" wording, or naming what was fetched/copied/retrieved there). Confirm the referenced step exists earlier in priorAndNextSteps, never a future step.
83
+ • Set false when the value is written literally, or no referential phrase is present, or the action isn't verify/enter.
84
+ • DO NOT infer true from an element/field name alone when that word appears only in the CURRENT step's own target/element — e.g. "get text from Password" is false because "Password" there is just this step's own target, not a value pointing elsewhere.
85
+ • EXCEPTION — reference-by-element-name: if the VALUE being entered matches (case-insensitively) the elementName or keyword of a 'get' or 'enter' action from an EARLIER step in priorAndNextSteps, treat this as referential (true) even with no explicit pointer wording like "previous"/"same" — this is a common shorthand for "reuse whatever was entered/fetched there". Example: step 2 is "enter santosh@123 in password" (elementName "Password"), step 3 is "enter password in confirm password" → true, because the value "password" matches step 2's elementName, meaning step 3 is reusing step 2's entered value, not typing the literal word "password".
86
+ • Examples (illustrative, not exhaustive): "enter 2nd step input in name" → true. "enter the OTP received earlier in name" → true. "enter 'John' in name" → false. "get text from Password" → false (no reference present). "enter password in confirm password" (given step 2 entered a value into a "Password" field) → true.
87
+ - Step MUST be rewritten as a CLEAN and COMPLETE instruction containing action, target element, and value (if applicable).
88
+ - DO NOT copy original sentence if it contains multiple actions.
89
+ - ALWAYS normalize mobile action wording (e.g., use "Tap on Y", not "Click on Y").
90
+ - Each step must be SELF-CONTAINED and EXECUTABLE.
91
+ No other text.
47
92
  `;
48
93
  return prompt;
49
94
  }
@@ -39,10 +39,11 @@ Given the step, the simplified DOM: ${extractedDomJson}, and the list of NLP nam
39
39
  Select the perfect matching NLP name from the list that best fits the step's intent.
40
40
  **The NLP name must match exactly one value from the approved NLP list. Do not generate or suggest any new NLP names under any condition.**
41
41
  step may give any way,you need to get most matching and most related nlp name from the list that relates to step.
42
- for these nlp's VerifyIfSpecifiedOptionIsSelected,VerifyThatSpecifiedOptionIsNotSelected,VerifyIfOptionWithValueIsSelected,VerifyIfOptionWithValueIsDeselected,in step if they mention word value then only match with these VerifyIfOptionWithValueIsSelected,VerifyIfOptionWithValueIsDeselected.Otherwise go with specified option nlp's. and only select tags for these nlp's from the given tag list.
42
+ for these nlp's VerifyIfSpecifiedOptionIsSelected,VerifyThatSpecifiedOptionIsNotSelected,VerifyIfOptionWithValueIsSelected,VerifyIfOptionWithValueIsDeselected,VerifyIfOptionWithVisibleTextIsSelected,VerifyIfOptionWithTextIsDeselected,use this precedence: if step mentions word "value" then only match with VerifyIfOptionWithValueIsSelected,VerifyIfOptionWithValueIsDeselected. if step mentions word "text" then only match with VerifyIfOptionWithVisibleTextIsSelected,VerifyIfOptionWithTextIsDeselected. Otherwise go with specified option nlp's (VerifyIfSpecifiedOptionIsSelected,VerifyThatSpecifiedOptionIsNotSelected). and only select tags for these nlp's from the given tag list.
43
43
  if step is verify option with index is deselected map to VerifyIfOptionWithIndexIsDeselectedInElement and if step is verify option with index is selected then map to VerifyIfOptionWithIndexIsSelectedInListBox.
44
44
  example: verify if email element is present
45
45
  nlp name should be VerifyElementIsDisplayed
46
+ - Distinguish element-presence from text-presence: if the step says the ELEMENT/component itself is present/displayed/visible (e.g., "verify email element is present"), map to VerifyElementIsDisplayed. If the step says specific TEXT is present/displayed (e.g., "verify login text is present", "verify 'Login' text is displayed"), map to VerifyText instead (or VerifyPartialText if the step says "partial"/"contains"/"includes").
46
47
  - Return ONLY a valid JSON object; the response must start with '{' and end with '}', with no markdown, code fences, explanations, or extra text.
47
48
  Return **only valid JSON** in the following format:
48
49
  {
@@ -62,13 +63,13 @@ Rules:
62
63
  - For some steps you can see two inputs but you need to understand step and send the required inputText. inputText can be string, number, url or xpath.
63
64
  ex: Verify the flights matches the flight, Verify the home has 30 and 50 coordinates if they give x-30,y-50 just send 30,50 and verify hex code '#FFFFFF' for given (34,11) coordinates or they will give x-34,y-11 hexcode-#FFFFFF format than fill inputText in this order "#FFFFFF,34,11"
64
65
  here keyword : "flights" , input : "flight", here input:"30,50" , here input:"#FFFFFF,34,11"
65
- - If step is about checking attribute value then map to attribute nlps and inputText: "attribute_name,element_name" here attribute_name can be id,text,href etc not fire-flink-x. inputText should be in this format.if they mention css attribute value then inputText should be "css_property,expected_value" from the step only.
66
+ - If step is about checking attribute value then map to attribute nlps and inputText: "attribute_name,expected_value" here attribute_name can be id,text,href etc not fire-flink-x, and expected_value is the value being checked against from the step. inputText should be in this format. if they mention css attribute value then inputText should be "css_property,expected_value" from the step only.
66
67
  and also If a step requires comparing two values, provide the input in the format inputText: "value1,value2".
67
68
  - if step is about tag name then inputText: "tag name". and if step is about verifying tag name and with count then inputText: "tag name,count". and if any step is about verifying number of elements with xpath then inputText should be "xpath,count"
68
- - if step is about verifying location then inputText: "coordinates".
69
+ - if step is about verifying location then inputText should be the actual coordinate values from the step, formatted as "x,y" (e.g. "30,50") — never the literal word "coordinates".
69
70
  - If the step requires verifying text from an element, only select elements capable of containing text. Do not select image or image-related elements (e.g., img, svg, picture, source).
70
71
  - If no explicit option is mentioned in the step, map it to the most relevant non-option verification NLP based on the intent of the step.
71
- - **Extract inputText from the step that is which is being verified in the step, if you can't find any input text in the step, return keyword as inputText.**
72
+ - **Extract inputText from the step — this is the specific value/text being verified in the step. If the step does not contain any explicit value being verified, return the element or subject name mentioned in the step as inputText instead.**
72
73
  if step is verifying value of element then extract value which is being verified only not any other words in the step.
73
74
  - Only for VerifyIfStatusCodeOfAllLinksIsStatusCode extract all links given in step and give in inputText as '[link1,link2,link3...],statusCode'
74
75
  - For performance and accessibility score extraction from step, use the inputs from step: [url,device,score] should be in this order. if any input is missing send remining inputs from step itself.
@@ -24,7 +24,7 @@ Return **only valid JSON** in the following format:
24
24
  "nlpName": "x",
25
25
  "inputText":"x"
26
26
  "elementType": "x",
27
- "locator_type":"x"
27
+ "locatorType":"x"
28
28
  }
29
29
  Rules:
30
30
  - nlpName must be exactly one from the provided list.
@@ -12,7 +12,9 @@ exports.userInputFormatters = {
12
12
  [promptType_js_1.PromptType.GET_PROMPT]: (userInput) => `Inspect the DOM for the following get context:\n\n${JSON.stringify(userInput.currentStep, null, 2)}`,
13
13
  [promptType_js_1.PromptType.COMBINED_ACTION_EXTRACTOR_PROMPT]: (userInput) => `Inspect the DOM for the following wait context:\n\n${JSON.stringify(userInput.currentStep, null, 2)}`,
14
14
  [promptType_js_1.PromptType.WAIT_ACTION_EXTRACTOR_PROMPT]: (userInput) => `Inspect the DOM for the following wait context:\n\n${JSON.stringify(userInput.currentStep, null, 2)}`,
15
+ [promptType_js_1.PromptType.INPUT_CONTEXT_PROMPT]: (userInput) => `Extract the input text from the following context:\n\n${JSON.stringify(userInput.currentStep, null, 2)}`,
15
16
  [promptType_js_1.PromptType.OTP_EXTRACTOR]: (userInput) => `Extract the OTP from this SMS body:\n\n${JSON.stringify(userInput.smsBody, null, 2)}`,
17
+ [promptType_js_1.PromptType.FILE_VERIFY_PROMPT]: (userInput) => `Extract the file verification action data for the following step:\n\n${JSON.stringify(userInput.currentStep, null, 2)}`,
16
18
  [promptType_js_1.PromptType.VISION_PROMPT]: (userInput) => {
17
19
  let imageBase64 = null;
18
20
  if (userInput.annotatedScreenshot) {