plato-sandbox-sdk 1.1.3 → 1.1.4

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 (320) hide show
  1. package/package.json +1 -1
  2. package/src/flow/README.md +384 -0
  3. package/dist/apis/EnvApi.d.ts +0 -308
  4. package/dist/apis/EnvApi.js +0 -693
  5. package/dist/apis/GiteaApi.d.ts +0 -109
  6. package/dist/apis/GiteaApi.js +0 -225
  7. package/dist/apis/PublicBuildApi.d.ts +0 -125
  8. package/dist/apis/PublicBuildApi.js +0 -331
  9. package/dist/apis/SimulatorApi.d.ts +0 -62
  10. package/dist/apis/SimulatorApi.js +0 -162
  11. package/dist/apis/TestcasesApi.d.ts +0 -42
  12. package/dist/apis/TestcasesApi.js +0 -111
  13. package/dist/apis/UserApi.d.ts +0 -30
  14. package/dist/apis/UserApi.js +0 -71
  15. package/dist/apis/index.d.ts +0 -6
  16. package/dist/apis/index.js +0 -24
  17. package/dist/client.d.ts +0 -92
  18. package/dist/client.js +0 -256
  19. package/dist/esm/apis/EnvApi.d.ts +0 -308
  20. package/dist/esm/apis/EnvApi.js +0 -689
  21. package/dist/esm/apis/GiteaApi.d.ts +0 -109
  22. package/dist/esm/apis/GiteaApi.js +0 -221
  23. package/dist/esm/apis/PublicBuildApi.d.ts +0 -125
  24. package/dist/esm/apis/PublicBuildApi.js +0 -327
  25. package/dist/esm/apis/SimulatorApi.d.ts +0 -62
  26. package/dist/esm/apis/SimulatorApi.js +0 -158
  27. package/dist/esm/apis/TestcasesApi.d.ts +0 -42
  28. package/dist/esm/apis/TestcasesApi.js +0 -107
  29. package/dist/esm/apis/UserApi.d.ts +0 -30
  30. package/dist/esm/apis/UserApi.js +0 -67
  31. package/dist/esm/apis/index.d.ts +0 -6
  32. package/dist/esm/apis/index.js +0 -8
  33. package/dist/esm/client.d.ts +0 -92
  34. package/dist/esm/client.js +0 -250
  35. package/dist/esm/flow/executor.d.ts +0 -108
  36. package/dist/esm/flow/executor.js +0 -617
  37. package/dist/esm/flow/index.d.ts +0 -6
  38. package/dist/esm/flow/index.js +0 -6
  39. package/dist/esm/flow/types.d.ts +0 -138
  40. package/dist/esm/flow/types.js +0 -21
  41. package/dist/esm/index.d.ts +0 -4
  42. package/dist/esm/index.js +0 -6
  43. package/dist/esm/models/Authentication.d.ts +0 -38
  44. package/dist/esm/models/Authentication.js +0 -47
  45. package/dist/esm/models/BaseScoringConfig.d.ts +0 -53
  46. package/dist/esm/models/BaseScoringConfig.js +0 -63
  47. package/dist/esm/models/BaseStructuredRunLog.d.ts +0 -67
  48. package/dist/esm/models/BaseStructuredRunLog.js +0 -66
  49. package/dist/esm/models/BatchLogRequest.d.ts +0 -63
  50. package/dist/esm/models/BatchLogRequest.js +0 -64
  51. package/dist/esm/models/ChromeCookie.d.ts +0 -68
  52. package/dist/esm/models/ChromeCookie.js +0 -67
  53. package/dist/esm/models/CreateSimulatorRequest.d.ts +0 -93
  54. package/dist/esm/models/CreateSimulatorRequest.js +0 -68
  55. package/dist/esm/models/CreateSnapshotRequest.d.ts +0 -74
  56. package/dist/esm/models/CreateSnapshotRequest.js +0 -55
  57. package/dist/esm/models/CreateSnapshotResponse.d.ts +0 -56
  58. package/dist/esm/models/CreateSnapshotResponse.js +0 -59
  59. package/dist/esm/models/CreateVMRequest.d.ts +0 -69
  60. package/dist/esm/models/CreateVMRequest.js +0 -58
  61. package/dist/esm/models/CreateVMResponse.d.ts +0 -62
  62. package/dist/esm/models/CreateVMResponse.js +0 -61
  63. package/dist/esm/models/DbConfigResponse.d.ts +0 -56
  64. package/dist/esm/models/DbConfigResponse.js +0 -59
  65. package/dist/esm/models/EvaluateRequest.d.ts +0 -34
  66. package/dist/esm/models/EvaluateRequest.js +0 -41
  67. package/dist/esm/models/GetOperationEvents200Response.d.ts +0 -60
  68. package/dist/esm/models/GetOperationEvents200Response.js +0 -58
  69. package/dist/esm/models/GetOperationEventsApiPublicBuildEventsCorrelationIdGet200Response.d.ts +0 -60
  70. package/dist/esm/models/GetOperationEventsApiPublicBuildEventsCorrelationIdGet200Response.js +0 -58
  71. package/dist/esm/models/HTTPValidationError.d.ts +0 -33
  72. package/dist/esm/models/HTTPValidationError.js +0 -42
  73. package/dist/esm/models/JobStatusResponse.d.ts +0 -50
  74. package/dist/esm/models/JobStatusResponse.js +0 -55
  75. package/dist/esm/models/LocationInner.d.ts +0 -26
  76. package/dist/esm/models/LocationInner.js +0 -31
  77. package/dist/esm/models/Log.d.ts +0 -63
  78. package/dist/esm/models/Log.js +0 -64
  79. package/dist/esm/models/MakeEnvRequest2.d.ts +0 -145
  80. package/dist/esm/models/MakeEnvRequest2.js +0 -91
  81. package/dist/esm/models/MakeEnvResponse.d.ts +0 -38
  82. package/dist/esm/models/MakeEnvResponse.js +0 -45
  83. package/dist/esm/models/ResetEnvRequest.d.ts +0 -87
  84. package/dist/esm/models/ResetEnvRequest.js +0 -60
  85. package/dist/esm/models/ResetEnvTask.d.ts +0 -57
  86. package/dist/esm/models/ResetEnvTask.js +0 -54
  87. package/dist/esm/models/ScoreRequest.d.ts +0 -52
  88. package/dist/esm/models/ScoreRequest.js +0 -49
  89. package/dist/esm/models/SetupRootPasswordRequest.d.ts +0 -38
  90. package/dist/esm/models/SetupRootPasswordRequest.js +0 -45
  91. package/dist/esm/models/SetupSandboxRequest.d.ts +0 -63
  92. package/dist/esm/models/SetupSandboxRequest.js +0 -56
  93. package/dist/esm/models/SetupSandboxResponse.d.ts +0 -50
  94. package/dist/esm/models/SetupSandboxResponse.js +0 -53
  95. package/dist/esm/models/SimConfigCompute.d.ts +0 -56
  96. package/dist/esm/models/SimConfigCompute.js +0 -49
  97. package/dist/esm/models/SimConfigDataset.d.ts +0 -58
  98. package/dist/esm/models/SimConfigDataset.js +0 -60
  99. package/dist/esm/models/SimConfigListener.d.ts +0 -41
  100. package/dist/esm/models/SimConfigListener.js +0 -51
  101. package/dist/esm/models/SimConfigMetadata.d.ts +0 -76
  102. package/dist/esm/models/SimConfigMetadata.js +0 -55
  103. package/dist/esm/models/SimConfigService.d.ts +0 -40
  104. package/dist/esm/models/SimConfigService.js +0 -50
  105. package/dist/esm/models/SimStatusHistory.d.ts +0 -50
  106. package/dist/esm/models/SimStatusHistory.js +0 -53
  107. package/dist/esm/models/SimulatorConfig.d.ts +0 -130
  108. package/dist/esm/models/SimulatorConfig.js +0 -95
  109. package/dist/esm/models/SimulatorVersionDetails.d.ts +0 -68
  110. package/dist/esm/models/SimulatorVersionDetails.js +0 -67
  111. package/dist/esm/models/SimulatorVersionsResponse.d.ts +0 -45
  112. package/dist/esm/models/SimulatorVersionsResponse.js +0 -52
  113. package/dist/esm/models/VMManagementRequest.d.ts +0 -51
  114. package/dist/esm/models/VMManagementRequest.js +0 -52
  115. package/dist/esm/models/VMManagementResponse.d.ts +0 -44
  116. package/dist/esm/models/VMManagementResponse.js +0 -49
  117. package/dist/esm/models/ValidationError.d.ts +0 -45
  118. package/dist/esm/models/ValidationError.js +0 -52
  119. package/dist/esm/models/WorkerReadyResponse.d.ts +0 -76
  120. package/dist/esm/models/WorkerReadyResponse.js +0 -57
  121. package/dist/esm/models/index.d.ts +0 -37
  122. package/dist/esm/models/index.js +0 -39
  123. package/dist/esm/runtime.d.ts +0 -184
  124. package/dist/esm/runtime.js +0 -334
  125. package/dist/examples/flow-executor-example.d.ts +0 -11
  126. package/dist/examples/flow-executor-example.js +0 -193
  127. package/dist/flow/executor.d.ts +0 -108
  128. package/dist/flow/executor.js +0 -621
  129. package/dist/flow/index.d.ts +0 -6
  130. package/dist/flow/index.js +0 -22
  131. package/dist/flow/types.d.ts +0 -138
  132. package/dist/flow/types.js +0 -25
  133. package/dist/index.d.ts +0 -4
  134. package/dist/index.js +0 -22
  135. package/dist/models/Authentication.d.ts +0 -38
  136. package/dist/models/Authentication.js +0 -54
  137. package/dist/models/BaseScoringConfig.d.ts +0 -53
  138. package/dist/models/BaseScoringConfig.js +0 -71
  139. package/dist/models/BaseStructuredRunLog.d.ts +0 -67
  140. package/dist/models/BaseStructuredRunLog.js +0 -74
  141. package/dist/models/BatchLogRequest.d.ts +0 -63
  142. package/dist/models/BatchLogRequest.js +0 -71
  143. package/dist/models/ChromeCookie.d.ts +0 -68
  144. package/dist/models/ChromeCookie.js +0 -74
  145. package/dist/models/CreateSimulatorRequest.d.ts +0 -93
  146. package/dist/models/CreateSimulatorRequest.js +0 -75
  147. package/dist/models/CreateSnapshotRequest.d.ts +0 -74
  148. package/dist/models/CreateSnapshotRequest.js +0 -62
  149. package/dist/models/CreateSnapshotResponse.d.ts +0 -56
  150. package/dist/models/CreateSnapshotResponse.js +0 -66
  151. package/dist/models/CreateVMRequest.d.ts +0 -69
  152. package/dist/models/CreateVMRequest.js +0 -65
  153. package/dist/models/CreateVMResponse.d.ts +0 -62
  154. package/dist/models/CreateVMResponse.js +0 -68
  155. package/dist/models/DbConfigResponse.d.ts +0 -56
  156. package/dist/models/DbConfigResponse.js +0 -66
  157. package/dist/models/EvaluateRequest.d.ts +0 -34
  158. package/dist/models/EvaluateRequest.js +0 -48
  159. package/dist/models/GetOperationEvents200Response.d.ts +0 -60
  160. package/dist/models/GetOperationEvents200Response.js +0 -66
  161. package/dist/models/GetOperationEventsApiPublicBuildEventsCorrelationIdGet200Response.d.ts +0 -60
  162. package/dist/models/GetOperationEventsApiPublicBuildEventsCorrelationIdGet200Response.js +0 -66
  163. package/dist/models/HTTPValidationError.d.ts +0 -33
  164. package/dist/models/HTTPValidationError.js +0 -49
  165. package/dist/models/JobStatusResponse.d.ts +0 -50
  166. package/dist/models/JobStatusResponse.js +0 -62
  167. package/dist/models/LocationInner.d.ts +0 -26
  168. package/dist/models/LocationInner.js +0 -38
  169. package/dist/models/Log.d.ts +0 -63
  170. package/dist/models/Log.js +0 -71
  171. package/dist/models/MakeEnvRequest2.d.ts +0 -145
  172. package/dist/models/MakeEnvRequest2.js +0 -99
  173. package/dist/models/MakeEnvResponse.d.ts +0 -38
  174. package/dist/models/MakeEnvResponse.js +0 -52
  175. package/dist/models/ResetEnvRequest.d.ts +0 -87
  176. package/dist/models/ResetEnvRequest.js +0 -67
  177. package/dist/models/ResetEnvTask.d.ts +0 -57
  178. package/dist/models/ResetEnvTask.js +0 -61
  179. package/dist/models/ScoreRequest.d.ts +0 -52
  180. package/dist/models/ScoreRequest.js +0 -56
  181. package/dist/models/SetupRootPasswordRequest.d.ts +0 -38
  182. package/dist/models/SetupRootPasswordRequest.js +0 -52
  183. package/dist/models/SetupSandboxRequest.d.ts +0 -63
  184. package/dist/models/SetupSandboxRequest.js +0 -63
  185. package/dist/models/SetupSandboxResponse.d.ts +0 -50
  186. package/dist/models/SetupSandboxResponse.js +0 -60
  187. package/dist/models/SimConfigCompute.d.ts +0 -56
  188. package/dist/models/SimConfigCompute.js +0 -56
  189. package/dist/models/SimConfigDataset.d.ts +0 -58
  190. package/dist/models/SimConfigDataset.js +0 -67
  191. package/dist/models/SimConfigListener.d.ts +0 -41
  192. package/dist/models/SimConfigListener.js +0 -59
  193. package/dist/models/SimConfigMetadata.d.ts +0 -76
  194. package/dist/models/SimConfigMetadata.js +0 -62
  195. package/dist/models/SimConfigService.d.ts +0 -40
  196. package/dist/models/SimConfigService.js +0 -58
  197. package/dist/models/SimStatusHistory.d.ts +0 -50
  198. package/dist/models/SimStatusHistory.js +0 -60
  199. package/dist/models/SimulatorConfig.d.ts +0 -130
  200. package/dist/models/SimulatorConfig.js +0 -103
  201. package/dist/models/SimulatorVersionDetails.d.ts +0 -68
  202. package/dist/models/SimulatorVersionDetails.js +0 -74
  203. package/dist/models/SimulatorVersionsResponse.d.ts +0 -45
  204. package/dist/models/SimulatorVersionsResponse.js +0 -59
  205. package/dist/models/VMManagementRequest.d.ts +0 -51
  206. package/dist/models/VMManagementRequest.js +0 -59
  207. package/dist/models/VMManagementResponse.d.ts +0 -44
  208. package/dist/models/VMManagementResponse.js +0 -56
  209. package/dist/models/ValidationError.d.ts +0 -45
  210. package/dist/models/ValidationError.js +0 -59
  211. package/dist/models/WorkerReadyResponse.d.ts +0 -76
  212. package/dist/models/WorkerReadyResponse.js +0 -64
  213. package/dist/models/index.d.ts +0 -37
  214. package/dist/models/index.js +0 -55
  215. package/dist/runtime.d.ts +0 -184
  216. package/dist/runtime.js +0 -350
  217. package/dist/src/apis/EnvApi.d.ts +0 -304
  218. package/dist/src/apis/EnvApi.js +0 -693
  219. package/dist/src/apis/GiteaApi.d.ts +0 -109
  220. package/dist/src/apis/GiteaApi.js +0 -225
  221. package/dist/src/apis/PublicBuildApi.d.ts +0 -125
  222. package/dist/src/apis/PublicBuildApi.js +0 -331
  223. package/dist/src/apis/SimulatorApi.d.ts +0 -62
  224. package/dist/src/apis/SimulatorApi.js +0 -162
  225. package/dist/src/apis/TestcasesApi.d.ts +0 -42
  226. package/dist/src/apis/TestcasesApi.js +0 -111
  227. package/dist/src/apis/UserApi.d.ts +0 -30
  228. package/dist/src/apis/UserApi.js +0 -71
  229. package/dist/src/apis/index.d.ts +0 -6
  230. package/dist/src/apis/index.js +0 -24
  231. package/dist/src/client.d.ts +0 -90
  232. package/dist/src/client.js +0 -256
  233. package/dist/src/flow/executor.d.ts +0 -108
  234. package/dist/src/flow/executor.js +0 -621
  235. package/dist/src/flow/index.d.ts +0 -6
  236. package/dist/src/flow/index.js +0 -22
  237. package/dist/src/flow/types.d.ts +0 -138
  238. package/dist/src/flow/types.js +0 -25
  239. package/dist/src/index.d.ts +0 -4
  240. package/dist/src/index.js +0 -22
  241. package/dist/src/models/Authentication.d.ts +0 -38
  242. package/dist/src/models/Authentication.js +0 -54
  243. package/dist/src/models/BaseScoringConfig.d.ts +0 -53
  244. package/dist/src/models/BaseScoringConfig.js +0 -71
  245. package/dist/src/models/BaseStructuredRunLog.d.ts +0 -67
  246. package/dist/src/models/BaseStructuredRunLog.js +0 -74
  247. package/dist/src/models/BatchLogRequest.d.ts +0 -63
  248. package/dist/src/models/BatchLogRequest.js +0 -71
  249. package/dist/src/models/ChromeCookie.d.ts +0 -68
  250. package/dist/src/models/ChromeCookie.js +0 -74
  251. package/dist/src/models/CreateSimulatorRequest.d.ts +0 -93
  252. package/dist/src/models/CreateSimulatorRequest.js +0 -75
  253. package/dist/src/models/CreateSnapshotRequest.d.ts +0 -74
  254. package/dist/src/models/CreateSnapshotRequest.js +0 -62
  255. package/dist/src/models/CreateSnapshotResponse.d.ts +0 -56
  256. package/dist/src/models/CreateSnapshotResponse.js +0 -66
  257. package/dist/src/models/CreateVMRequest.d.ts +0 -69
  258. package/dist/src/models/CreateVMRequest.js +0 -65
  259. package/dist/src/models/CreateVMResponse.d.ts +0 -62
  260. package/dist/src/models/CreateVMResponse.js +0 -68
  261. package/dist/src/models/DbConfigResponse.d.ts +0 -56
  262. package/dist/src/models/DbConfigResponse.js +0 -66
  263. package/dist/src/models/EvaluateRequest.d.ts +0 -34
  264. package/dist/src/models/EvaluateRequest.js +0 -48
  265. package/dist/src/models/GetOperationEventsApiPublicBuildEventsCorrelationIdGet200Response.d.ts +0 -60
  266. package/dist/src/models/GetOperationEventsApiPublicBuildEventsCorrelationIdGet200Response.js +0 -66
  267. package/dist/src/models/HTTPValidationError.d.ts +0 -33
  268. package/dist/src/models/HTTPValidationError.js +0 -49
  269. package/dist/src/models/JobStatusResponse.d.ts +0 -50
  270. package/dist/src/models/JobStatusResponse.js +0 -62
  271. package/dist/src/models/LocationInner.d.ts +0 -26
  272. package/dist/src/models/LocationInner.js +0 -38
  273. package/dist/src/models/Log.d.ts +0 -63
  274. package/dist/src/models/Log.js +0 -71
  275. package/dist/src/models/MakeEnvRequest2.d.ts +0 -145
  276. package/dist/src/models/MakeEnvRequest2.js +0 -99
  277. package/dist/src/models/MakeEnvResponse.d.ts +0 -38
  278. package/dist/src/models/MakeEnvResponse.js +0 -52
  279. package/dist/src/models/ResetEnvRequest.d.ts +0 -87
  280. package/dist/src/models/ResetEnvRequest.js +0 -67
  281. package/dist/src/models/ResetEnvTask.d.ts +0 -57
  282. package/dist/src/models/ResetEnvTask.js +0 -61
  283. package/dist/src/models/ScoreRequest.d.ts +0 -52
  284. package/dist/src/models/ScoreRequest.js +0 -56
  285. package/dist/src/models/SetupRootPasswordRequest.d.ts +0 -38
  286. package/dist/src/models/SetupRootPasswordRequest.js +0 -52
  287. package/dist/src/models/SetupSandboxRequest.d.ts +0 -63
  288. package/dist/src/models/SetupSandboxRequest.js +0 -63
  289. package/dist/src/models/SetupSandboxResponse.d.ts +0 -50
  290. package/dist/src/models/SetupSandboxResponse.js +0 -60
  291. package/dist/src/models/SimConfigCompute.d.ts +0 -56
  292. package/dist/src/models/SimConfigCompute.js +0 -56
  293. package/dist/src/models/SimConfigDataset.d.ts +0 -58
  294. package/dist/src/models/SimConfigDataset.js +0 -67
  295. package/dist/src/models/SimConfigListener.d.ts +0 -41
  296. package/dist/src/models/SimConfigListener.js +0 -59
  297. package/dist/src/models/SimConfigMetadata.d.ts +0 -76
  298. package/dist/src/models/SimConfigMetadata.js +0 -62
  299. package/dist/src/models/SimConfigService.d.ts +0 -40
  300. package/dist/src/models/SimConfigService.js +0 -58
  301. package/dist/src/models/SimStatusHistory.d.ts +0 -50
  302. package/dist/src/models/SimStatusHistory.js +0 -60
  303. package/dist/src/models/SimulatorConfig.d.ts +0 -130
  304. package/dist/src/models/SimulatorConfig.js +0 -103
  305. package/dist/src/models/SimulatorVersionDetails.d.ts +0 -68
  306. package/dist/src/models/SimulatorVersionDetails.js +0 -74
  307. package/dist/src/models/SimulatorVersionsResponse.d.ts +0 -45
  308. package/dist/src/models/SimulatorVersionsResponse.js +0 -59
  309. package/dist/src/models/VMManagementRequest.d.ts +0 -51
  310. package/dist/src/models/VMManagementRequest.js +0 -59
  311. package/dist/src/models/VMManagementResponse.d.ts +0 -44
  312. package/dist/src/models/VMManagementResponse.js +0 -56
  313. package/dist/src/models/ValidationError.d.ts +0 -45
  314. package/dist/src/models/ValidationError.js +0 -59
  315. package/dist/src/models/WorkerReadyResponse.d.ts +0 -76
  316. package/dist/src/models/WorkerReadyResponse.js +0 -64
  317. package/dist/src/models/index.d.ts +0 -38
  318. package/dist/src/models/index.js +0 -56
  319. package/dist/src/runtime.d.ts +0 -184
  320. package/dist/src/runtime.js +0 -350
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "plato-sandbox-sdk",
3
- "version": "1.1.3",
3
+ "version": "1.1.4",
4
4
  "description": "TypeScript SDK for interacting with the Plato platform - manage environments, VMs, simulators, and more",
5
5
  "author": "Plato AI",
6
6
  "repository": {
@@ -0,0 +1,384 @@
1
+ # Flow Executor
2
+
3
+ The Flow Executor provides a powerful way to define and execute browser automation flows using Playwright. This is particularly useful for testing simulator interactions in the Plato platform.
4
+
5
+ ## Installation
6
+
7
+ First, install Playwright as a peer dependency:
8
+
9
+ ```bash
10
+ npm install playwright
11
+ # or
12
+ yarn add playwright
13
+ ```
14
+
15
+ ## Basic Usage
16
+
17
+ ```typescript
18
+ import { chromium } from 'playwright';
19
+ import { FlowExecutor, Flow } from '@plato-ai/sdk';
20
+
21
+ async function runFlow() {
22
+ const browser = await chromium.launch();
23
+ const page = await browser.newPage();
24
+
25
+ const flow: Flow = {
26
+ name: 'login',
27
+ description: 'Login to the application',
28
+ steps: [
29
+ {
30
+ type: 'navigate',
31
+ url: 'https://example.com/login',
32
+ description: 'Navigate to login page'
33
+ },
34
+ {
35
+ type: 'fill',
36
+ selector: '#username',
37
+ value: 'testuser',
38
+ description: 'Fill username'
39
+ },
40
+ {
41
+ type: 'fill',
42
+ selector: '#password',
43
+ value: 'password123',
44
+ description: 'Fill password'
45
+ },
46
+ {
47
+ type: 'click',
48
+ selector: 'button[type="submit"]',
49
+ description: 'Click login button'
50
+ },
51
+ {
52
+ type: 'wait_for_url',
53
+ urlContains: '/dashboard',
54
+ description: 'Wait for redirect to dashboard'
55
+ },
56
+ {
57
+ type: 'verify',
58
+ verifyType: 'page_title',
59
+ title: 'Dashboard',
60
+ contains: true,
61
+ description: 'Verify we are on the dashboard'
62
+ }
63
+ ]
64
+ };
65
+
66
+ const executor = new FlowExecutor({
67
+ page,
68
+ flow,
69
+ screenshotsDir: './screenshots'
70
+ });
71
+
72
+ const success = await executor.executeFlow();
73
+ console.log(`Flow ${success ? 'succeeded' : 'failed'}`);
74
+
75
+ await browser.close();
76
+ }
77
+
78
+ runFlow();
79
+ ```
80
+
81
+ ## Flow Step Types
82
+
83
+ ### Navigation Steps
84
+
85
+ #### `navigate`
86
+ Navigate to a URL.
87
+
88
+ ```typescript
89
+ {
90
+ type: 'navigate',
91
+ url: 'https://example.com',
92
+ description: 'Navigate to homepage'
93
+ }
94
+ ```
95
+
96
+ #### `wait_for_url`
97
+ Wait for URL to contain specific text.
98
+
99
+ ```typescript
100
+ {
101
+ type: 'wait_for_url',
102
+ urlContains: '/dashboard',
103
+ timeout: 5000
104
+ }
105
+ ```
106
+
107
+ ### Interaction Steps
108
+
109
+ #### `click`
110
+ Click on an element.
111
+
112
+ ```typescript
113
+ {
114
+ type: 'click',
115
+ selector: 'button.submit',
116
+ description: 'Click submit button'
117
+ }
118
+ ```
119
+
120
+ #### `fill`
121
+ Fill an input field.
122
+
123
+ ```typescript
124
+ {
125
+ type: 'fill',
126
+ selector: '#email',
127
+ value: 'user@example.com',
128
+ description: 'Fill email field'
129
+ }
130
+ ```
131
+
132
+ ### Wait Steps
133
+
134
+ #### `wait`
135
+ Wait for a specified duration.
136
+
137
+ ```typescript
138
+ {
139
+ type: 'wait',
140
+ duration: 2000, // milliseconds
141
+ description: 'Wait for animation'
142
+ }
143
+ ```
144
+
145
+ #### `wait_for_selector`
146
+ Wait for a selector to be present.
147
+
148
+ ```typescript
149
+ {
150
+ type: 'wait_for_selector',
151
+ selector: '.loading-spinner',
152
+ timeout: 10000
153
+ }
154
+ ```
155
+
156
+ ### Verification Steps
157
+
158
+ #### `verify`
159
+ Generic verification with multiple subtypes:
160
+
161
+ **Element Exists**
162
+ ```typescript
163
+ {
164
+ type: 'verify',
165
+ verifyType: 'element_exists',
166
+ selector: '.success-message'
167
+ }
168
+ ```
169
+
170
+ **Element Visible**
171
+ ```typescript
172
+ {
173
+ type: 'verify',
174
+ verifyType: 'element_visible',
175
+ selector: '.modal'
176
+ }
177
+ ```
178
+
179
+ **Element Text**
180
+ ```typescript
181
+ {
182
+ type: 'verify',
183
+ verifyType: 'element_text',
184
+ selector: '.welcome-message',
185
+ text: 'Welcome back',
186
+ contains: true
187
+ }
188
+ ```
189
+
190
+ **Element Count**
191
+ ```typescript
192
+ {
193
+ type: 'verify',
194
+ verifyType: 'element_count',
195
+ selector: '.list-item',
196
+ count: 5
197
+ }
198
+ ```
199
+
200
+ **Page Title**
201
+ ```typescript
202
+ {
203
+ type: 'verify',
204
+ verifyType: 'page_title',
205
+ title: 'Dashboard',
206
+ contains: true
207
+ }
208
+ ```
209
+
210
+ #### `verify_text`
211
+ Verify text appears anywhere on the page.
212
+
213
+ ```typescript
214
+ {
215
+ type: 'verify_text',
216
+ text: 'Success!',
217
+ shouldExist: true
218
+ }
219
+ ```
220
+
221
+ #### `verify_url`
222
+ Verify the current URL.
223
+
224
+ ```typescript
225
+ {
226
+ type: 'verify_url',
227
+ url: '/dashboard',
228
+ contains: true
229
+ }
230
+ ```
231
+
232
+ #### `verify_no_errors`
233
+ Verify no error indicators are present.
234
+
235
+ ```typescript
236
+ {
237
+ type: 'verify_no_errors',
238
+ errorSelectors: ['.error', '.alert-danger', '[role="alert"]']
239
+ }
240
+ ```
241
+
242
+ #### `check_element`
243
+ Check if an element exists (non-blocking).
244
+
245
+ ```typescript
246
+ {
247
+ type: 'check_element',
248
+ selector: '.optional-banner',
249
+ shouldExist: false
250
+ }
251
+ ```
252
+
253
+ ### Utility Steps
254
+
255
+ #### `screenshot`
256
+ Take a screenshot for visual verification.
257
+
258
+ ```typescript
259
+ {
260
+ type: 'screenshot',
261
+ filename: 'dashboard.png',
262
+ fullPage: true,
263
+ description: 'Capture dashboard state'
264
+ }
265
+ ```
266
+
267
+ ## Custom Logger
268
+
269
+ You can provide a custom logger implementation:
270
+
271
+ ```typescript
272
+ import { FlowLogger } from '@plato-ai/sdk';
273
+
274
+ class CustomLogger implements FlowLogger {
275
+ info(message: string): void {
276
+ // Custom info logging
277
+ }
278
+
279
+ error(message: string): void {
280
+ // Custom error logging
281
+ }
282
+
283
+ warn(message: string): void {
284
+ // Custom warning logging
285
+ }
286
+
287
+ debug(message: string): void {
288
+ // Custom debug logging
289
+ }
290
+ }
291
+
292
+ const executor = new FlowExecutor({
293
+ page,
294
+ flow,
295
+ logger: new CustomLogger()
296
+ });
297
+ ```
298
+
299
+ ## Complete Example with Error Handling
300
+
301
+ ```typescript
302
+ import { chromium } from 'playwright';
303
+ import { FlowExecutor, Flow } from '@plato-ai/sdk';
304
+
305
+ async function runCompleteFlow() {
306
+ let browser;
307
+ try {
308
+ browser = await chromium.launch({ headless: false });
309
+ const page = await browser.newPage();
310
+
311
+ const flow: Flow = {
312
+ name: 'e2e-test',
313
+ description: 'End-to-end test flow',
314
+ steps: [
315
+ {
316
+ type: 'navigate',
317
+ url: 'https://example.com',
318
+ description: 'Navigate to homepage'
319
+ },
320
+ {
321
+ type: 'screenshot',
322
+ filename: 'homepage.png',
323
+ fullPage: true,
324
+ description: 'Capture homepage'
325
+ },
326
+ {
327
+ type: 'verify',
328
+ verifyType: 'page_title',
329
+ title: 'Example Domain',
330
+ contains: false,
331
+ description: 'Verify page title'
332
+ },
333
+ {
334
+ type: 'verify_no_errors',
335
+ description: 'Ensure no errors on page'
336
+ }
337
+ ]
338
+ };
339
+
340
+ const executor = new FlowExecutor({
341
+ page,
342
+ flow,
343
+ screenshotsDir: './test-screenshots'
344
+ });
345
+
346
+ const success = await executor.executeFlow();
347
+
348
+ if (success) {
349
+ console.log('✅ Flow completed successfully');
350
+ } else {
351
+ console.error('❌ Flow failed');
352
+ process.exit(1);
353
+ }
354
+ } catch (error) {
355
+ console.error('Fatal error:', error);
356
+ process.exit(1);
357
+ } finally {
358
+ if (browser) {
359
+ await browser.close();
360
+ }
361
+ }
362
+ }
363
+
364
+ runCompleteFlow();
365
+ ```
366
+
367
+ ## Features
368
+
369
+ - ✅ Type-safe flow definitions with TypeScript
370
+ - ✅ Comprehensive step types for common browser interactions
371
+ - ✅ Built-in verification and validation steps
372
+ - ✅ Automatic screenshot capture with timestamps
373
+ - ✅ Customizable logging
374
+ - ✅ Relative URL resolution
375
+ - ✅ Password masking in logs
376
+ - ✅ Detailed error messages
377
+
378
+ ## Notes
379
+
380
+ - All timeouts are in milliseconds (default: 10000ms)
381
+ - Screenshots are automatically timestamped for chronological sorting
382
+ - Passwords in selectors containing "password" are automatically masked in logs
383
+ - The flow executor is protected from OpenAPI generator overwrites
384
+
@@ -1,308 +0,0 @@
1
- /**
2
- * Plato API
3
- * API for Plato platform - SDK routes only
4
- *
5
- * The version of the OpenAPI document: 1.0.0
6
- *
7
- *
8
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
- * https://openapi-generator.tech
10
- * Do not edit the class manually.
11
- */
12
- import * as runtime from '../runtime';
13
- import type { CreateSimulatorRequest, EvaluateRequest, JobStatusResponse, Log, MakeEnvRequest2, ResetEnvRequest, ScoreRequest, WorkerReadyResponse } from '../models/index';
14
- export interface BackupEnvironmentRequest {
15
- jobGroupId: string;
16
- authorization?: string;
17
- xInternalService?: string;
18
- }
19
- export interface CloseEnvironmentRequest {
20
- jobGroupId: string;
21
- authorization?: string;
22
- xInternalService?: string;
23
- }
24
- export interface CreateSimulatorOperationRequest {
25
- createSimulatorRequest: CreateSimulatorRequest;
26
- authorization?: string;
27
- xInternalService?: string;
28
- }
29
- export interface EvaluateSessionRequest {
30
- sessionId: string;
31
- authorization?: string;
32
- xInternalService?: string;
33
- evaluateRequest?: EvaluateRequest;
34
- }
35
- export interface GetActiveSessionRequest {
36
- jobGroupId: string;
37
- authorization?: string;
38
- xInternalService?: string;
39
- }
40
- export interface GetCdpUrlRequest {
41
- jobGroupId: string;
42
- authorization?: string;
43
- xInternalService?: string;
44
- }
45
- export interface GetEnvironmentStateRequest {
46
- jobGroupId: string;
47
- authorization?: string;
48
- xInternalService?: string;
49
- }
50
- export interface GetJobStatusRequest {
51
- jobGroupId: string;
52
- authorization?: string;
53
- xInternalService?: string;
54
- }
55
- export interface GetProxyUrlRequest {
56
- jobGroupId: string;
57
- authorization?: string;
58
- xInternalService?: string;
59
- }
60
- export interface GetSimulatorsRequest {
61
- authorization?: string;
62
- xInternalService?: string;
63
- }
64
- export interface GetWorkerReadyApiEnvJobIdWorkerReadyGetRequest {
65
- jobId: string;
66
- timeout?: number;
67
- authorization?: string;
68
- xInternalService?: string;
69
- }
70
- export interface LogStateMutationApiEnvSessionIdLogPostRequest {
71
- sessionId: string;
72
- log: Log;
73
- }
74
- export interface MakeEnvironmentRequest {
75
- makeEnvRequest2: MakeEnvRequest2;
76
- authorization?: string;
77
- xInternalService?: string;
78
- }
79
- export interface ResetEnvironmentRequest {
80
- jobGroupId: string;
81
- resetEnvRequest: ResetEnvRequest;
82
- authorization?: string;
83
- xInternalService?: string;
84
- }
85
- export interface ScoreEnvApiEnvSessionSessionIdScorePostRequest {
86
- sessionId: string;
87
- scoreRequest: ScoreRequest;
88
- authorization?: string;
89
- xInternalService?: string;
90
- }
91
- export interface SendHeartbeatRequest {
92
- jobId: string;
93
- authorization?: string;
94
- xInternalService?: string;
95
- }
96
- /**
97
- *
98
- */
99
- export declare class EnvApi extends runtime.BaseAPI {
100
- /**
101
- * Create a backup of the environment.
102
- * Backup Env
103
- */
104
- backupEnvironmentRaw(requestParameters: BackupEnvironmentRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{
105
- [key: string]: any;
106
- }>>;
107
- /**
108
- * Create a backup of the environment.
109
- * Backup Env
110
- */
111
- backupEnvironment(requestParameters: BackupEnvironmentRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{
112
- [key: string]: any;
113
- }>;
114
- /**
115
- * Close Env
116
- */
117
- closeEnvironmentRaw(requestParameters: CloseEnvironmentRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{
118
- [key: string]: any;
119
- }>>;
120
- /**
121
- * Close Env
122
- */
123
- closeEnvironment(requestParameters: CloseEnvironmentRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{
124
- [key: string]: any;
125
- }>;
126
- /**
127
- * Create a new simulator.
128
- * Create Simulator
129
- */
130
- createSimulatorRaw(requestParameters: CreateSimulatorOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{
131
- [key: string]: any;
132
- }>>;
133
- /**
134
- * Create a new simulator.
135
- * Create Simulator
136
- */
137
- createSimulator(requestParameters: CreateSimulatorOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{
138
- [key: string]: any;
139
- }>;
140
- /**
141
- * Evaluate the session.
142
- * Evaluate Session
143
- */
144
- evaluateSessionRaw(requestParameters: EvaluateSessionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{
145
- [key: string]: any;
146
- }>>;
147
- /**
148
- * Evaluate the session.
149
- * Evaluate Session
150
- */
151
- evaluateSession(requestParameters: EvaluateSessionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{
152
- [key: string]: any;
153
- }>;
154
- /**
155
- * Get the active session for a job group.
156
- * Get Active Session
157
- */
158
- getActiveSessionRaw(requestParameters: GetActiveSessionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{
159
- [key: string]: any;
160
- }>>;
161
- /**
162
- * Get the active session for a job group.
163
- * Get Active Session
164
- */
165
- getActiveSession(requestParameters: GetActiveSessionRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{
166
- [key: string]: any;
167
- }>;
168
- /**
169
- * Get the CDP URL for the environment.
170
- * Get Cdp Url
171
- */
172
- getCdpUrlRaw(requestParameters: GetCdpUrlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{
173
- [key: string]: any;
174
- }>>;
175
- /**
176
- * Get the CDP URL for the environment.
177
- * Get Cdp Url
178
- */
179
- getCdpUrl(requestParameters: GetCdpUrlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{
180
- [key: string]: any;
181
- }>;
182
- /**
183
- * Get Env State
184
- */
185
- getEnvironmentStateRaw(requestParameters: GetEnvironmentStateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{
186
- [key: string]: any;
187
- }>>;
188
- /**
189
- * Get Env State
190
- */
191
- getEnvironmentState(requestParameters: GetEnvironmentStateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{
192
- [key: string]: any;
193
- }>;
194
- /**
195
- * Get Job Status
196
- */
197
- getJobStatusRaw(requestParameters: GetJobStatusRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<JobStatusResponse>>;
198
- /**
199
- * Get Job Status
200
- */
201
- getJobStatus(requestParameters: GetJobStatusRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<JobStatusResponse>;
202
- /**
203
- * Get the public URL for the environment.
204
- * Get Proxy Url
205
- */
206
- getProxyUrlRaw(requestParameters: GetProxyUrlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{
207
- [key: string]: any;
208
- }>>;
209
- /**
210
- * Get the public URL for the environment.
211
- * Get Proxy Url
212
- */
213
- getProxyUrl(requestParameters: GetProxyUrlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{
214
- [key: string]: any;
215
- }>;
216
- /**
217
- * Get all simulators with optimized queries.
218
- * Get Simulators
219
- */
220
- getSimulatorsRaw(requestParameters: GetSimulatorsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<{
221
- [key: string]: any;
222
- }>>>;
223
- /**
224
- * Get all simulators with optimized queries.
225
- * Get Simulators
226
- */
227
- getSimulators(requestParameters?: GetSimulatorsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<{
228
- [key: string]: any;
229
- }>>;
230
- /**
231
- * Check if the workers for this job group are ready and healthy. Uses the persistent job ready notification service to wait for job readiness. Falls back to checking Redis if notification not received (in case we missed it). Raises 500 if job not ready after all checks.
232
- * Get Worker Ready
233
- */
234
- getWorkerReadyApiEnvJobIdWorkerReadyGetRaw(requestParameters: GetWorkerReadyApiEnvJobIdWorkerReadyGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WorkerReadyResponse>>;
235
- /**
236
- * Check if the workers for this job group are ready and healthy. Uses the persistent job ready notification service to wait for job readiness. Falls back to checking Redis if notification not received (in case we missed it). Raises 500 if job not ready after all checks.
237
- * Get Worker Ready
238
- */
239
- getWorkerReadyApiEnvJobIdWorkerReadyGet(requestParameters: GetWorkerReadyApiEnvJobIdWorkerReadyGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WorkerReadyResponse>;
240
- /**
241
- * Log a state mutation or batch of mutations.
242
- * Log State Mutation
243
- */
244
- logStateMutationApiEnvSessionIdLogPostRaw(requestParameters: LogStateMutationApiEnvSessionIdLogPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{
245
- [key: string]: any;
246
- }>>;
247
- /**
248
- * Log a state mutation or batch of mutations.
249
- * Log State Mutation
250
- */
251
- logStateMutationApiEnvSessionIdLogPost(requestParameters: LogStateMutationApiEnvSessionIdLogPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{
252
- [key: string]: any;
253
- }>;
254
- /**
255
- * Make Env
256
- */
257
- makeEnvironmentRaw(requestParameters: MakeEnvironmentRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{
258
- [key: string]: any;
259
- }>>;
260
- /**
261
- * Make Env
262
- */
263
- makeEnvironment(requestParameters: MakeEnvironmentRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{
264
- [key: string]: any;
265
- }>;
266
- /**
267
- * Reset the environment with an optional task.
268
- * Reset Env
269
- */
270
- resetEnvironmentRaw(requestParameters: ResetEnvironmentRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{
271
- [key: string]: any;
272
- }>>;
273
- /**
274
- * Reset the environment with an optional task.
275
- * Reset Env
276
- */
277
- resetEnvironment(requestParameters: ResetEnvironmentRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{
278
- [key: string]: any;
279
- }>;
280
- /**
281
- * Score the environment.
282
- * Score Env
283
- */
284
- scoreEnvApiEnvSessionSessionIdScorePostRaw(requestParameters: ScoreEnvApiEnvSessionSessionIdScorePostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{
285
- [key: string]: any;
286
- }>>;
287
- /**
288
- * Score the environment.
289
- * Score Env
290
- */
291
- scoreEnvApiEnvSessionSessionIdScorePost(requestParameters: ScoreEnvApiEnvSessionSessionIdScorePostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{
292
- [key: string]: any;
293
- }>;
294
- /**
295
- * Send a heartbeat to keep the environment session alive.
296
- * Send Heartbeat
297
- */
298
- sendHeartbeatRaw(requestParameters: SendHeartbeatRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{
299
- [key: string]: any;
300
- }>>;
301
- /**
302
- * Send a heartbeat to keep the environment session alive.
303
- * Send Heartbeat
304
- */
305
- sendHeartbeat(requestParameters: SendHeartbeatRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{
306
- [key: string]: any;
307
- }>;
308
- }