swipium 1.4.0 → 2.0.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 (541) hide show
  1. package/CHANGELOG.md +313 -0
  2. package/README.md +175 -219
  3. package/THREAT_MODEL.md +223 -47
  4. package/dist/appMap/automationLink.js +39 -26
  5. package/dist/appMap/automationLink.js.map +1 -1
  6. package/dist/appMap/build.js +68 -20
  7. package/dist/appMap/build.js.map +1 -1
  8. package/dist/appMap/codeIndex.js +31 -5
  9. package/dist/appMap/codeIndex.js.map +1 -1
  10. package/dist/appMap/featureIndex.js +23 -5
  11. package/dist/appMap/featureIndex.js.map +1 -1
  12. package/dist/appMap/featureModel.js +44 -8
  13. package/dist/appMap/featureModel.js.map +1 -1
  14. package/dist/appMap/firstRunApply.js +24 -6
  15. package/dist/appMap/firstRunApply.js.map +1 -1
  16. package/dist/appMap/fsWalk.js +19 -2
  17. package/dist/appMap/fsWalk.js.map +1 -1
  18. package/dist/appMap/issues.js +10 -30
  19. package/dist/appMap/issues.js.map +1 -1
  20. package/dist/appMap/migrations.js +6 -6
  21. package/dist/appMap/migrations.js.map +1 -1
  22. package/dist/appMap/prelaunch.js +2 -2
  23. package/dist/appMap/prelaunch.js.map +1 -1
  24. package/dist/appMap/projectRegistry.js +83 -11
  25. package/dist/appMap/projectRegistry.js.map +1 -1
  26. package/dist/appMap/provenance.js +2 -2
  27. package/dist/appMap/provenance.js.map +1 -1
  28. package/dist/appMap/query.js +21 -5
  29. package/dist/appMap/query.js.map +1 -1
  30. package/dist/appMap/runtimeMerge.js +12 -5
  31. package/dist/appMap/runtimeMerge.js.map +1 -1
  32. package/dist/appMap/schema.js +1 -1
  33. package/dist/appMap/schema.js.map +1 -1
  34. package/dist/appMap/screenMatch.js +6 -2
  35. package/dist/appMap/screenMatch.js.map +1 -1
  36. package/dist/appMap/staticScan.js +151 -39
  37. package/dist/appMap/staticScan.js.map +1 -1
  38. package/dist/appMap/store.js +58 -85
  39. package/dist/appMap/store.js.map +1 -1
  40. package/dist/appMap/tsAstScan.js +34 -12
  41. package/dist/appMap/tsAstScan.js.map +1 -1
  42. package/dist/artifacts/bundletool.js +49 -12
  43. package/dist/artifacts/bundletool.js.map +1 -1
  44. package/dist/artifacts/resolve.js +41 -14
  45. package/dist/artifacts/resolve.js.map +1 -1
  46. package/dist/automation/capabilities.js +112 -30
  47. package/dist/automation/capabilities.js.map +1 -1
  48. package/dist/automation/gestures.js +6 -2
  49. package/dist/automation/gestures.js.map +1 -1
  50. package/dist/automation/plan.js +71 -23
  51. package/dist/automation/plan.js.map +1 -1
  52. package/dist/automation/report.js +15 -5
  53. package/dist/automation/report.js.map +1 -1
  54. package/dist/automation/selectors.js +22 -28
  55. package/dist/automation/selectors.js.map +1 -1
  56. package/dist/automation/types.js +1 -1
  57. package/dist/automation/types.js.map +1 -1
  58. package/dist/automation/waits.js +14 -8
  59. package/dist/automation/waits.js.map +1 -1
  60. package/dist/automation/webview.js +9 -3
  61. package/dist/automation/webview.js.map +1 -1
  62. package/dist/automationGen/appiumModel.js +16 -8
  63. package/dist/automationGen/appiumModel.js.map +1 -1
  64. package/dist/automationGen/ciEmitter.js +6 -6
  65. package/dist/automationGen/ciEmitter.js.map +1 -1
  66. package/dist/automationGen/identifiers.js +224 -0
  67. package/dist/automationGen/identifiers.js.map +1 -0
  68. package/dist/automationGen/jsEmitter.js +288 -121
  69. package/dist/automationGen/jsEmitter.js.map +1 -1
  70. package/dist/automationGen/packagePatch.js +2 -2
  71. package/dist/automationGen/packagePatch.js.map +1 -1
  72. package/dist/automationGen/platformResolve.js +36 -0
  73. package/dist/automationGen/platformResolve.js.map +1 -0
  74. package/dist/automationGen/projectProfile.js +76 -27
  75. package/dist/automationGen/projectProfile.js.map +1 -1
  76. package/dist/automationGen/pythonEmitter.js +278 -107
  77. package/dist/automationGen/pythonEmitter.js.map +1 -1
  78. package/dist/automationGen/readmeEmitter.js +7 -6
  79. package/dist/automationGen/readmeEmitter.js.map +1 -1
  80. package/dist/automationGen/run.js +388 -0
  81. package/dist/automationGen/run.js.map +1 -0
  82. package/dist/automationGen/suitePlan.js +17 -10
  83. package/dist/automationGen/suitePlan.js.map +1 -1
  84. package/dist/automationGen/validation.js +52 -12
  85. package/dist/automationGen/validation.js.map +1 -1
  86. package/dist/build/parseBuildLog.js +235 -31
  87. package/dist/build/parseBuildLog.js.map +1 -1
  88. package/dist/build/plan.js +39 -18
  89. package/dist/build/plan.js.map +1 -1
  90. package/dist/ci/preflight.js +13 -4
  91. package/dist/ci/preflight.js.map +1 -1
  92. package/dist/cli/gc.js +74 -0
  93. package/dist/cli/gc.js.map +1 -0
  94. package/dist/cli/init.js +217 -26
  95. package/dist/cli/init.js.map +1 -1
  96. package/dist/cli/main.js +50 -0
  97. package/dist/cli/main.js.map +1 -0
  98. package/dist/cli/report.js +218 -0
  99. package/dist/cli/report.js.map +1 -0
  100. package/dist/cli/scan.js +36 -15
  101. package/dist/cli/scan.js.map +1 -1
  102. package/dist/cli/suite.js +7 -7
  103. package/dist/cli/suite.js.map +1 -1
  104. package/dist/cli/verify.js +7 -7
  105. package/dist/cli/verify.js.map +1 -1
  106. package/dist/consent/consent.js +162 -5
  107. package/dist/consent/consent.js.map +1 -1
  108. package/dist/context/detect.js +55 -18
  109. package/dist/context/detect.js.map +1 -1
  110. package/dist/context/findApps.js +22 -8
  111. package/dist/context/findApps.js.map +1 -1
  112. package/dist/context/projectRoot.js +174 -19
  113. package/dist/context/projectRoot.js.map +1 -1
  114. package/dist/context/scan.js +1 -1
  115. package/dist/context/scan.js.map +1 -1
  116. package/dist/core/capabilityGroups.js +90 -0
  117. package/dist/core/capabilityGroups.js.map +1 -0
  118. package/dist/core/target.js +10 -8
  119. package/dist/core/target.js.map +1 -1
  120. package/dist/core/targetPlan.js +160 -39
  121. package/dist/core/targetPlan.js.map +1 -1
  122. package/dist/drivers/DirectDriver.js +317 -43
  123. package/dist/drivers/DirectDriver.js.map +1 -1
  124. package/dist/drivers/SimctlDriver.js +124 -8
  125. package/dist/drivers/SimctlDriver.js.map +1 -1
  126. package/dist/drivers/WdaDriver.js +365 -55
  127. package/dist/drivers/WdaDriver.js.map +1 -1
  128. package/dist/explore/candidates.js +7 -3
  129. package/dist/explore/candidates.js.map +1 -1
  130. package/dist/explore/graph.js +15 -6
  131. package/dist/explore/graph.js.map +1 -1
  132. package/dist/explore/memory.js +4 -1
  133. package/dist/explore/memory.js.map +1 -1
  134. package/dist/explore/planner.js +54 -9
  135. package/dist/explore/planner.js.map +1 -1
  136. package/dist/explore/policy.js +11 -6
  137. package/dist/explore/policy.js.map +1 -1
  138. package/dist/explore/runner.js +363 -190
  139. package/dist/explore/runner.js.map +1 -1
  140. package/dist/explore/signatures.js +4 -2
  141. package/dist/explore/signatures.js.map +1 -1
  142. package/dist/explore/suite.js +3 -1
  143. package/dist/explore/suite.js.map +1 -1
  144. package/dist/featureTesting/executionBootstrap.js +137 -29
  145. package/dist/featureTesting/executionBootstrap.js.map +1 -1
  146. package/dist/featureTesting/featureMap.js +6 -3
  147. package/dist/featureTesting/featureMap.js.map +1 -1
  148. package/dist/featureTesting/featureScope.js +101 -20
  149. package/dist/featureTesting/featureScope.js.map +1 -1
  150. package/dist/featureTesting/mapFeatureScope.js +44 -15
  151. package/dist/featureTesting/mapFeatureScope.js.map +1 -1
  152. package/dist/featureTesting/objectiveModel.js +15 -11
  153. package/dist/featureTesting/objectiveModel.js.map +1 -1
  154. package/dist/featureTesting/resultMerge.js +16 -8
  155. package/dist/featureTesting/resultMerge.js.map +1 -1
  156. package/dist/featureTesting/sources.js +8 -5
  157. package/dist/featureTesting/sources.js.map +1 -1
  158. package/dist/featureTesting/suiteBridge.js +8 -2
  159. package/dist/featureTesting/suiteBridge.js.map +1 -1
  160. package/dist/featureTesting/synonyms.js +32 -4
  161. package/dist/featureTesting/synonyms.js.map +1 -1
  162. package/dist/featureTesting/testCaseFactory.js +27 -15
  163. package/dist/featureTesting/testCaseFactory.js.map +1 -1
  164. package/dist/featureTesting/testPlan.js +34 -12
  165. package/dist/featureTesting/testPlan.js.map +1 -1
  166. package/dist/firstRun/authStateMachine.js +1 -1
  167. package/dist/firstRun/authStateMachine.js.map +1 -1
  168. package/dist/firstRun/classifyScreen.js +9 -6
  169. package/dist/firstRun/classifyScreen.js.map +1 -1
  170. package/dist/firstRun/firstRunPlanner.js +16 -13
  171. package/dist/firstRun/firstRunPlanner.js.map +1 -1
  172. package/dist/firstRun/firstRunRunner.js +92 -31
  173. package/dist/firstRun/firstRunRunner.js.map +1 -1
  174. package/dist/firstRun/generatedDataPolicy.js +25 -15
  175. package/dist/firstRun/generatedDataPolicy.js.map +1 -1
  176. package/dist/firstRun/inputPlanner.js +45 -11
  177. package/dist/firstRun/inputPlanner.js.map +1 -1
  178. package/dist/firstRun/onboardingStateMachine.js +1 -1
  179. package/dist/firstRun/onboardingStateMachine.js.map +1 -1
  180. package/dist/firstRun/paywallPolicy.js +3 -3
  181. package/dist/firstRun/paywallPolicy.js.map +1 -1
  182. package/dist/firstRun/types.js +1 -1
  183. package/dist/firstRun/types.js.map +1 -1
  184. package/dist/fixtures/catalog.js +72 -9
  185. package/dist/fixtures/catalog.js.map +1 -1
  186. package/dist/fixtures/load.js +50 -0
  187. package/dist/fixtures/load.js.map +1 -0
  188. package/dist/flows/discover.js +2 -2
  189. package/dist/flows/discover.js.map +1 -1
  190. package/dist/flows/generate.js +68 -17
  191. package/dist/flows/generate.js.map +1 -1
  192. package/dist/flows/lint.js +88 -14
  193. package/dist/flows/lint.js.map +1 -1
  194. package/dist/flows/pack.js +21 -5
  195. package/dist/flows/pack.js.map +1 -1
  196. package/dist/flows/paths.js +57 -0
  197. package/dist/flows/paths.js.map +1 -0
  198. package/dist/flows/repair.js +176 -37
  199. package/dist/flows/repair.js.map +1 -1
  200. package/dist/flows/run.js +308 -99
  201. package/dist/flows/run.js.map +1 -1
  202. package/dist/flows/schema.js +107 -25
  203. package/dist/flows/schema.js.map +1 -1
  204. package/dist/flows/seedExec.js +8 -4
  205. package/dist/flows/seedExec.js.map +1 -1
  206. package/dist/flows/templates.js +5 -5
  207. package/dist/index.js +50 -8
  208. package/dist/index.js.map +1 -1
  209. package/dist/ios/signing.js +32 -3
  210. package/dist/ios/signing.js.map +1 -1
  211. package/dist/issues/classify.js +28 -20
  212. package/dist/issues/classify.js.map +1 -1
  213. package/dist/issues/fingerprint.js +35 -9
  214. package/dist/issues/fingerprint.js.map +1 -1
  215. package/dist/issues/index.js +93 -46
  216. package/dist/issues/index.js.map +1 -1
  217. package/dist/issues/metrics.js +6 -5
  218. package/dist/issues/metrics.js.map +1 -1
  219. package/dist/issues/recurrence.js +35 -8
  220. package/dist/issues/recurrence.js.map +1 -1
  221. package/dist/issues/report.js +12 -8
  222. package/dist/issues/report.js.map +1 -1
  223. package/dist/issues/reportBridge.js +40 -9
  224. package/dist/issues/reportBridge.js.map +1 -1
  225. package/dist/issues/schema.js +2 -2
  226. package/dist/issues/schema.js.map +1 -1
  227. package/dist/issues/sourceRevision.js +2 -2
  228. package/dist/issues/sourceRevision.js.map +1 -1
  229. package/dist/issues/store.js +110 -32
  230. package/dist/issues/store.js.map +1 -1
  231. package/dist/lib/abortScope.js +48 -0
  232. package/dist/lib/abortScope.js.map +1 -0
  233. package/dist/lib/android.js +84 -8
  234. package/dist/lib/android.js.map +1 -1
  235. package/dist/lib/coordSpace.js +1 -1
  236. package/dist/lib/coordSpace.js.map +1 -1
  237. package/dist/lib/device.js +53 -12
  238. package/dist/lib/device.js.map +1 -1
  239. package/dist/lib/gestures.js +141 -0
  240. package/dist/lib/gestures.js.map +1 -0
  241. package/dist/lib/gitignore.js +4 -3
  242. package/dist/lib/gitignore.js.map +1 -1
  243. package/dist/lib/image.js +12 -3
  244. package/dist/lib/image.js.map +1 -1
  245. package/dist/lib/lockfile.js +399 -0
  246. package/dist/lib/lockfile.js.map +1 -0
  247. package/dist/lib/needsInput.js +9 -6
  248. package/dist/lib/needsInput.js.map +1 -1
  249. package/dist/lib/png.js +4 -3
  250. package/dist/lib/png.js.map +1 -1
  251. package/dist/lib/redact.js +170 -9
  252. package/dist/lib/redact.js.map +1 -1
  253. package/dist/lib/result.js +94 -10
  254. package/dist/lib/result.js.map +1 -1
  255. package/dist/lib/schemaHash.js +7 -5
  256. package/dist/lib/schemaHash.js.map +1 -1
  257. package/dist/lib/sensitive.js +6 -3
  258. package/dist/lib/sensitive.js.map +1 -1
  259. package/dist/lib/simctl.js +3 -3
  260. package/dist/lib/simctl.js.map +1 -1
  261. package/dist/lib/spawn.js +78 -17
  262. package/dist/lib/spawn.js.map +1 -1
  263. package/dist/lib/toolAnnotations.js +114 -0
  264. package/dist/lib/toolAnnotations.js.map +1 -0
  265. package/dist/lib/wda.js +321 -25
  266. package/dist/lib/wda.js.map +1 -1
  267. package/dist/lib/wdaConfig.js +12 -5
  268. package/dist/lib/wdaConfig.js.map +1 -1
  269. package/dist/lib/wdaTune.js +52 -23
  270. package/dist/lib/wdaTune.js.map +1 -1
  271. package/dist/mobileAudit/checks.js +150 -28
  272. package/dist/mobileAudit/checks.js.map +1 -1
  273. package/dist/mobileAudit/evidence.js +4 -4
  274. package/dist/mobileAudit/evidence.js.map +1 -1
  275. package/dist/mobileAudit/profiles.js +121 -20
  276. package/dist/mobileAudit/profiles.js.map +1 -1
  277. package/dist/mobileAudit/results.js +9 -4
  278. package/dist/mobileAudit/results.js.map +1 -1
  279. package/dist/mobileAudit/runner.js +214 -35
  280. package/dist/mobileAudit/runner.js.map +1 -1
  281. package/dist/oracle/auth.js +1 -1
  282. package/dist/oracle/auth.js.map +1 -1
  283. package/dist/oracle/failures.js +1085 -145
  284. package/dist/oracle/failures.js.map +1 -1
  285. package/dist/oracle/health.js +148 -26
  286. package/dist/oracle/health.js.map +1 -1
  287. package/dist/oracle/locator.js +148 -19
  288. package/dist/oracle/locator.js.map +1 -1
  289. package/dist/oracle/record.js +3 -3
  290. package/dist/oracle/record.js.map +1 -1
  291. package/dist/orchestration/envelope.js +2 -2
  292. package/dist/orchestration/envelope.js.map +1 -1
  293. package/dist/orchestration/goal.js +7 -13
  294. package/dist/orchestration/goal.js.map +1 -1
  295. package/dist/orchestration/testThis/execute.js +167 -0
  296. package/dist/orchestration/testThis/execute.js.map +1 -0
  297. package/dist/orchestration/testThis/pipeline.js +413 -0
  298. package/dist/orchestration/testThis/pipeline.js.map +1 -0
  299. package/dist/orchestration/testThis/plan.js +519 -0
  300. package/dist/orchestration/testThis/plan.js.map +1 -0
  301. package/dist/orchestration/testThis/sessionIntent.js +72 -0
  302. package/dist/orchestration/testThis/sessionIntent.js.map +1 -0
  303. package/dist/orchestration/testThis/terminal.js +136 -0
  304. package/dist/orchestration/testThis/terminal.js.map +1 -0
  305. package/dist/orchestration/testThis/types.js +12 -0
  306. package/dist/orchestration/testThis/types.js.map +1 -0
  307. package/dist/plan/plan.js +9 -9
  308. package/dist/plan/plan.js.map +1 -1
  309. package/dist/prompts/index.js +24 -24
  310. package/dist/prompts/index.js.map +1 -1
  311. package/dist/report/coverage.js +0 -1
  312. package/dist/report/coverage.js.map +1 -1
  313. package/dist/report/evidence.js.map +1 -1
  314. package/dist/report/export.js +449 -72
  315. package/dist/report/export.js.map +1 -1
  316. package/dist/report/findingsDedupe.js +41 -0
  317. package/dist/report/findingsDedupe.js.map +1 -0
  318. package/dist/report/flake.js +13 -14
  319. package/dist/report/flake.js.map +1 -1
  320. package/dist/report/history.js +72 -38
  321. package/dist/report/history.js.map +1 -1
  322. package/dist/report/policy.js +18 -7
  323. package/dist/report/policy.js.map +1 -1
  324. package/dist/report/qaLevel.js +10 -16
  325. package/dist/report/qaLevel.js.map +1 -1
  326. package/dist/report/readiness.js +42 -12
  327. package/dist/report/readiness.js.map +1 -1
  328. package/dist/report/sarifSources.js +160 -0
  329. package/dist/report/sarifSources.js.map +1 -0
  330. package/dist/report/summary.js +2 -2
  331. package/dist/report/summary.js.map +1 -1
  332. package/dist/report/testCatalog.js +4 -4
  333. package/dist/report/testCatalog.js.map +1 -1
  334. package/dist/report/timing.js +23 -23
  335. package/dist/report/timing.js.map +1 -1
  336. package/dist/report/toolHealth.js +124 -0
  337. package/dist/report/toolHealth.js.map +1 -0
  338. package/dist/server.js +501 -69
  339. package/dist/server.js.map +1 -1
  340. package/dist/services/automationGenerate.js +8 -2
  341. package/dist/services/automationGenerate.js.map +1 -1
  342. package/dist/services/build.js +10 -4
  343. package/dist/services/build.js.map +1 -1
  344. package/dist/services/flowGenerate.js +75 -0
  345. package/dist/services/flowGenerate.js.map +1 -0
  346. package/dist/services/preflight.js +40 -8
  347. package/dist/services/preflight.js.map +1 -1
  348. package/dist/services/prepareAndroid.js +92 -18
  349. package/dist/services/prepareAndroid.js.map +1 -1
  350. package/dist/services/prepareIos.js +94 -17
  351. package/dist/services/prepareIos.js.map +1 -1
  352. package/dist/services/report.js +271 -80
  353. package/dist/services/report.js.map +1 -1
  354. package/dist/services/smoke.js +68 -22
  355. package/dist/services/smoke.js.map +1 -1
  356. package/dist/services/suiteGenerate.js +43 -6
  357. package/dist/services/suiteGenerate.js.map +1 -1
  358. package/dist/services/testSuiteKnowledge.js +78 -33
  359. package/dist/services/testSuiteKnowledge.js.map +1 -1
  360. package/dist/session/attach.js +284 -4
  361. package/dist/session/attach.js.map +1 -1
  362. package/dist/session/processRegistry.js +433 -0
  363. package/dist/session/processRegistry.js.map +1 -0
  364. package/dist/session/progress.js +1 -1
  365. package/dist/session/progress.js.map +1 -1
  366. package/dist/session/retention.js +201 -0
  367. package/dist/session/retention.js.map +1 -0
  368. package/dist/session/store.js +459 -59
  369. package/dist/session/store.js.map +1 -1
  370. package/dist/snapshot/overlays.js +60 -10
  371. package/dist/snapshot/overlays.js.map +1 -1
  372. package/dist/snapshot/parse.js +30 -12
  373. package/dist/snapshot/parse.js.map +1 -1
  374. package/dist/snapshot/present.js +36 -6
  375. package/dist/snapshot/present.js.map +1 -1
  376. package/dist/snapshot/settle.js +39 -9
  377. package/dist/snapshot/settle.js.map +1 -1
  378. package/dist/state/consent.js +99 -0
  379. package/dist/state/consent.js.map +1 -0
  380. package/dist/state/profile.js +82 -11
  381. package/dist/state/profile.js.map +1 -1
  382. package/dist/suite/compile.js +15 -6
  383. package/dist/suite/compile.js.map +1 -1
  384. package/dist/suite/lint.js +22 -4
  385. package/dist/suite/lint.js.map +1 -1
  386. package/dist/suite/pom.js +75 -44
  387. package/dist/suite/pom.js.map +1 -1
  388. package/dist/suite/secretGuard.js +266 -0
  389. package/dist/suite/secretGuard.js.map +1 -0
  390. package/dist/suite/testcase.js +15 -11
  391. package/dist/suite/testcase.js.map +1 -1
  392. package/dist/testSuite/exporter.js +7 -3
  393. package/dist/testSuite/exporter.js.map +1 -1
  394. package/dist/testSuite/generator.js +43 -14
  395. package/dist/testSuite/generator.js.map +1 -1
  396. package/dist/testSuite/history.js +1 -1
  397. package/dist/testSuite/history.js.map +1 -1
  398. package/dist/testSuite/issueLinks.js +3 -3
  399. package/dist/testSuite/issueLinks.js.map +1 -1
  400. package/dist/testSuite/lint.js +4 -4
  401. package/dist/testSuite/lint.js.map +1 -1
  402. package/dist/testSuite/merge.js +13 -7
  403. package/dist/testSuite/merge.js.map +1 -1
  404. package/dist/testSuite/schema.js +21 -16
  405. package/dist/testSuite/schema.js.map +1 -1
  406. package/dist/testSuite/store.js +12 -4
  407. package/dist/testSuite/store.js.map +1 -1
  408. package/dist/testSuite/traceability.js +2 -2
  409. package/dist/testSuite/traceability.js.map +1 -1
  410. package/dist/tools/act.js +868 -174
  411. package/dist/tools/act.js.map +1 -1
  412. package/dist/tools/agent.js +521 -112
  413. package/dist/tools/agent.js.map +1 -1
  414. package/dist/tools/appControl.js +82 -19
  415. package/dist/tools/appControl.js.map +1 -1
  416. package/dist/tools/appMap.js +393 -189
  417. package/dist/tools/appMap.js.map +1 -1
  418. package/dist/tools/build.js +92 -51
  419. package/dist/tools/build.js.map +1 -1
  420. package/dist/tools/bundletool.js +141 -40
  421. package/dist/tools/bundletool.js.map +1 -1
  422. package/dist/tools/clearOverlay.js +98 -18
  423. package/dist/tools/clearOverlay.js.map +1 -1
  424. package/dist/tools/device.js +108 -19
  425. package/dist/tools/device.js.map +1 -1
  426. package/dist/tools/doctor.js +98 -35
  427. package/dist/tools/doctor.js.map +1 -1
  428. package/dist/tools/explore.js +110 -42
  429. package/dist/tools/explore.js.map +1 -1
  430. package/dist/tools/featureTesting.js +152 -130
  431. package/dist/tools/featureTesting.js.map +1 -1
  432. package/dist/tools/firstRun.js +94 -66
  433. package/dist/tools/firstRun.js.map +1 -1
  434. package/dist/tools/flow.js +347 -132
  435. package/dist/tools/flow.js.map +1 -1
  436. package/dist/tools/flowRepair.js +42 -10
  437. package/dist/tools/flowRepair.js.map +1 -1
  438. package/dist/tools/generate.js +199 -0
  439. package/dist/tools/generate.js.map +1 -0
  440. package/dist/tools/getArtifact.js +37 -8
  441. package/dist/tools/getArtifact.js.map +1 -1
  442. package/dist/tools/health.js +17 -12
  443. package/dist/tools/health.js.map +1 -1
  444. package/dist/tools/ios.js +148 -194
  445. package/dist/tools/ios.js.map +1 -1
  446. package/dist/tools/issues.js +256 -171
  447. package/dist/tools/issues.js.map +1 -1
  448. package/dist/tools/jobs.js +55 -11
  449. package/dist/tools/jobs.js.map +1 -1
  450. package/dist/tools/metro.js +84 -38
  451. package/dist/tools/metro.js.map +1 -1
  452. package/dist/tools/mobileAudit.js +83 -26
  453. package/dist/tools/mobileAudit.js.map +1 -1
  454. package/dist/tools/network.js +36 -14
  455. package/dist/tools/network.js.map +1 -1
  456. package/dist/tools/note.js +31 -17
  457. package/dist/tools/note.js.map +1 -1
  458. package/dist/tools/prepareIosTarget.js +31 -14
  459. package/dist/tools/prepareIosTarget.js.map +1 -1
  460. package/dist/tools/prepareTarget.js +193 -47
  461. package/dist/tools/prepareTarget.js.map +1 -1
  462. package/dist/tools/report.js +16 -8
  463. package/dist/tools/report.js.map +1 -1
  464. package/dist/tools/resolveArtifact.js +12 -12
  465. package/dist/tools/resolveArtifact.js.map +1 -1
  466. package/dist/tools/resolveTarget.js +81 -18
  467. package/dist/tools/resolveTarget.js.map +1 -1
  468. package/dist/tools/screenRecord.js +85 -20
  469. package/dist/tools/screenRecord.js.map +1 -1
  470. package/dist/tools/screenshot.js +42 -18
  471. package/dist/tools/screenshot.js.map +1 -1
  472. package/dist/tools/smoke.js +29 -12
  473. package/dist/tools/smoke.js.map +1 -1
  474. package/dist/tools/snapshot.js +157 -107
  475. package/dist/tools/snapshot.js.map +1 -1
  476. package/dist/tools/startSession.js +117 -84
  477. package/dist/tools/startSession.js.map +1 -1
  478. package/dist/tools/suite.js +391 -310
  479. package/dist/tools/suite.js.map +1 -1
  480. package/dist/tools/testSuite.js +112 -36
  481. package/dist/tools/testSuite.js.map +1 -1
  482. package/dist/tools/testThis.js +35 -802
  483. package/dist/tools/testThis.js.map +1 -1
  484. package/dist/tools/visual.js +698 -116
  485. package/dist/tools/visual.js.map +1 -1
  486. package/dist/tools/wait.js +9 -23
  487. package/dist/tools/wait.js.map +1 -1
  488. package/dist/tools/wda.js +312 -54
  489. package/dist/tools/wda.js.map +1 -1
  490. package/dist/version.js +37 -64
  491. package/dist/version.js.map +1 -1
  492. package/dist/visual/ocr.js +65 -8
  493. package/dist/visual/ocr.js.map +1 -1
  494. package/dist/visual/provider.js +87 -15
  495. package/dist/visual/provider.js.map +1 -1
  496. package/docs/README.md +24 -10
  497. package/docs/ci-reports.md +328 -0
  498. package/docs/concepts.md +227 -0
  499. package/docs/flows.md +153 -0
  500. package/docs/mcp-server.md +210 -104
  501. package/docs/physical-devices.md +84 -0
  502. package/docs/tools.md +808 -217
  503. package/package.json +16 -6
  504. package/dist/appMap/diff.js +0 -60
  505. package/dist/appMap/diff.js.map +0 -1
  506. package/dist/automation/maestroIr.js +0 -282
  507. package/dist/automation/maestroIr.js.map +0 -1
  508. package/dist/interop/maestro.js +0 -151
  509. package/dist/interop/maestro.js.map +0 -1
  510. package/dist/tools/assertVisual.js +0 -74
  511. package/dist/tools/assertVisual.js.map +0 -1
  512. package/dist/tools/automationGenerate.js +0 -394
  513. package/dist/tools/automationGenerate.js.map +0 -1
  514. package/dist/tools/capabilities.js +0 -209
  515. package/dist/tools/capabilities.js.map +0 -1
  516. package/dist/tools/detectContext.js +0 -41
  517. package/dist/tools/detectContext.js.map +0 -1
  518. package/dist/tools/flowGenerate.js +0 -55
  519. package/dist/tools/flowGenerate.js.map +0 -1
  520. package/dist/tools/history.js +0 -56
  521. package/dist/tools/history.js.map +0 -1
  522. package/dist/tools/idling.js +0 -104
  523. package/dist/tools/idling.js.map +0 -1
  524. package/dist/tools/inputCapabilities.js +0 -30
  525. package/dist/tools/inputCapabilities.js.map +0 -1
  526. package/dist/tools/locator.js +0 -57
  527. package/dist/tools/locator.js.map +0 -1
  528. package/dist/tools/maestro.js +0 -78
  529. package/dist/tools/maestro.js.map +0 -1
  530. package/dist/tools/permissions.js +0 -149
  531. package/dist/tools/permissions.js.map +0 -1
  532. package/dist/tools/plan.js +0 -49
  533. package/dist/tools/plan.js.map +0 -1
  534. package/dist/tools/screenInfo.js +0 -70
  535. package/dist/tools/screenInfo.js.map +0 -1
  536. package/dist/tools/seed.js +0 -101
  537. package/dist/tools/seed.js.map +0 -1
  538. package/dist/tools/state.js +0 -170
  539. package/dist/tools/state.js.map +0 -1
  540. package/dist/tools/visualText.js +0 -61
  541. package/dist/tools/visualText.js.map +0 -1
@@ -1,12 +1,12 @@
1
- // qa_explore (Phase 3.3) — bounded, safe-by-default guided exploration as a background job. Drives
2
- // the runExplore service: observe → rank safe candidates → act → health → graph, writing a screen
1
+ // qa_explore (Phase 3.3): bounded, safe-by-default guided exploration as a background job. Drives
2
+ // the runExplore service: observe > rank safe candidates > act > health > graph, writing a screen
3
3
  // graph artifact (JSON + Markdown) and recording qa_note outcomes. Returns a running jobId; the
4
- // terminal state + graphUri land in the job result (poll qa_job_status). Thin wrapper — all logic
4
+ // terminal state + graphUri land in the job result (poll qa_job_status). Thin wrapper; all logic
5
5
  // is in src/explore/*.
6
6
  import { z } from 'zod';
7
- import { qaOk, qaError } from '../lib/result.js';
7
+ import { qaOk, qaError, unknownSessionError } from '../lib/result.js';
8
8
  import { requireConsent, consumeConsent } from '../consent/consent.js';
9
- import { getDriver } from '../session/attach.js';
9
+ import { blockedDeviceResult, getDriver } from '../session/attach.js';
10
10
  import { runExplore } from '../explore/runner.js';
11
11
  import { appendExploreMemory } from '../explore/memory.js';
12
12
  import { buildAppMap } from '../appMap/build.js';
@@ -15,6 +15,7 @@ import { hasDisposableState } from '../fixtures/catalog.js';
15
15
  import { generateAndCompileSuite } from '../services/suiteGenerate.js';
16
16
  import { startProgress } from '../session/progress.js';
17
17
  import { log } from '../lib/logger.js';
18
+ import { runWithSignal } from '../lib/abortScope.js';
18
19
  const HIGH_IMPACT_CONFIRMATION_CLASSES = new Set([
19
20
  'payment',
20
21
  'message_send',
@@ -42,10 +43,10 @@ function promotedActionsFor(session, graph, promotions) {
42
43
  const locatorValue = edge?.action.locator?.value;
43
44
  if (!edge || typeof locatorValue !== 'string')
44
45
  continue;
45
- const idx = session.recordedActions.findIndex((a, actionIdx) => (!used.has(actionIdx) &&
46
+ const idx = session.recordedActions.findIndex((a, actionIdx) => !used.has(actionIdx) &&
46
47
  a.action === edge.action.type &&
47
48
  a.selector === locatorValue &&
48
- a.provenance?.originalScreenSignature === edge.preActionState));
49
+ a.provenance?.originalScreenSignature === edge.preActionState);
49
50
  if (idx >= 0) {
50
51
  used.add(idx);
51
52
  actions.push(session.recordedActions[idx]);
@@ -56,16 +57,25 @@ function promotedActionsFor(session, graph, promotions) {
56
57
  export function registerExplore(server, sessions) {
57
58
  server.registerTool('qa_explore', {
58
59
  title: 'Guided exploration',
59
- description: 'Explore a launched app like a practical QA engineer: bounded, safe-by-default crawl that observes screens, ranks safe actions, taps them, checks health after each, and builds a SCREEN GRAPH (JSON + Markdown artifacts). Skips destructive actions (delete/pay/send/logout) in strict mode; verifies map/canvas screens visually with qa_assert_visual; stops with NeedsInput on an auth wall when credentials are missing. Records durable taps so qa_suite_generate can promote paths. Runs as a JOB — the terminal state (completed/blocked) + graphUri are in the job result (poll qa_job_status). Requires a prepared device (qa_test_this / qa_prepare_target first).',
60
+ description: 'Bounded, safe-by-default exploration of the launched app: observes screens, taps ranked safe actions, checks health after ' +
61
+ 'each, and builds a screen graph (JSON + Markdown). Destructive actions (delete/pay/send/logout) are skipped unless a ' +
62
+ 'candidate is explicitly approved; an auth wall without credentials returns needs_input. Taps are recorded for qa_generate. ' +
63
+ 'Runs as a job (graphUri + terminal state in the qa_job_status result); updates the app map. Needs a prepared device.',
60
64
  inputSchema: {
61
65
  sessionId: z.string(),
62
- goal: z.string().optional().describe('Optional natural-language focus (e.g. "exercise the main tabs").'),
66
+ goal: z.string().optional().describe('Natural-language focus, e.g. "exercise the main tabs".'),
63
67
  depth: z.number().optional().describe('Max navigation depth (default 3).'),
64
- maxActions: z.number().optional().describe('Max actions to try (default 20).'),
65
- maxScreens: z.number().optional().describe('Max distinct screens to visit (default 12).'),
66
- maxDurationMs: z.number().optional(),
67
- strategy: z.enum(['crawl', 'task_planner', 'hybrid']).optional().describe('crawl (default): deterministic screen crawl; task_planner: infer semantic QA tasks before acting; hybrid: task planning plus crawl.'),
68
- safeMode: z.enum(['strict', 'balanced', 'dry_run_destructive', 'approved_destructive_candidate', 'approved_destructive']).optional().describe('strict (default): safe actions only; balanced: unknown-risk allowed; dry_run_destructive: discover/list destructive candidates without tapping; approved_destructive_candidate: allow exactly one candidate-bound destructive action. approved_destructive is deprecated and refused.'),
68
+ maxActions: z.number().optional().describe('Default 20.'),
69
+ maxScreens: z.number().optional().describe('Default 12.'),
70
+ maxDurationMs: z.number().optional().describe('Wall-clock cap in ms (default 360000).'),
71
+ strategy: z
72
+ .enum(['crawl', 'task_planner', 'hybrid'])
73
+ .optional()
74
+ .describe('crawl (default, deterministic) | task_planner (infer QA tasks first) | hybrid.'),
75
+ safeMode: z
76
+ .enum(['strict', 'balanced', 'dry_run_destructive', 'approved_destructive_candidate', 'approved_destructive'])
77
+ .optional()
78
+ .describe('strict (default) | balanced (unknown-risk ok) | dry_run_destructive (list candidates, no taps) | approved_destructive_candidate (one exact candidate; consent-gated). approved_destructive is refused.'),
69
79
  destructiveCandidate: z
70
80
  .object({
71
81
  screenSignature: z.string(),
@@ -75,26 +85,35 @@ export function registerExplore(server, sessions) {
75
85
  riskClass: z.string().optional(),
76
86
  })
77
87
  .optional()
78
- .describe('Exact candidate returned by a dry_run_destructive exploration. Required with safeMode approved_destructive_candidate.'),
79
- confirmHighImpact: z.boolean().optional().describe('Required true for high-impact destructive candidates such as payment, send/share, permission change, account delete, or bulk delete.'),
80
- generateSuite: z.boolean().optional().describe('After exploration, score promotable paths and include suite-promotion guidance.'),
81
- includeTextEntry: z.boolean().optional().describe('Allow typing into fields (only with a value source — default false).'),
82
- stopOnAuth: z.boolean().optional().describe('Return NeedsInput when an auth wall blocks exploration and credentials are missing (default true).'),
88
+ .describe('The exact candidate from a dry_run_destructive run (for approved_destructive_candidate).'),
89
+ confirmHighImpact: z.boolean().optional().describe('Required for payment/send/permission/account-delete/bulk-delete candidates.'),
90
+ generateSuite: z
91
+ .boolean()
92
+ .optional()
93
+ .describe('Also write + compile a POM suite from the promoted paths (suitePromotion scoring is always returned).'),
94
+ includeTextEntry: z.boolean().optional().describe('Allow typing into fields that have a value source (default false).'),
95
+ stopOnAuth: z.boolean().optional().describe('needs_input on an auth wall without credentials (default true).'),
83
96
  accountCycle: z
84
97
  .boolean()
85
98
  .optional()
86
- .describe('SWIPIUM-REQ-07 controlled account-cycle workflow: on a DISPOSABLE generated account, permit LOGOUT (and only logout) as an expected step; delete/pay/send stay refused. Requires allowGeneratedData. Off by default.'),
87
- allowGeneratedData: z.boolean().optional().describe('Allow safe generated disposable-account data (test/staging) — required to use accountCycle.'),
99
+ .describe('On a DISPOSABLE generated account, permit logout (only) as a step; needs allowGeneratedData.'),
100
+ allowGeneratedData: z.boolean().optional().describe('Allow generated disposable test data (test/staging).'),
88
101
  consentId: z.string().optional(),
89
102
  approve: z.boolean().optional(),
90
103
  },
91
- }, async ({ sessionId, goal, depth, maxActions, maxScreens, maxDurationMs, strategy, safeMode, destructiveCandidate, confirmHighImpact, generateSuite, includeTextEntry, stopOnAuth, accountCycle, allowGeneratedData, consentId, approve }) => {
104
+ }, async ({ sessionId, goal, depth, maxActions, maxScreens, maxDurationMs, strategy, safeMode, destructiveCandidate, confirmHighImpact, generateSuite, includeTextEntry, stopOnAuth, accountCycle, allowGeneratedData, consentId, approve, }) => {
92
105
  const session = sessions.get(sessionId);
93
106
  if (!session)
94
- return qaError({ what: `Unknown sessionId ${sessionId}`, changedState: false, retrySafe: true, nextSteps: ['Call qa_start_session first.'] });
95
- const { driver } = await getDriver(session);
107
+ return unknownSessionError(sessionId);
108
+ const { driver, blocked } = await getDriver(session);
96
109
  if (!driver) {
97
- return qaError({ what: 'No device attached to this session', changedState: false, retrySafe: true, nextSteps: ['Prepare a device first: qa_test_this { mode:"execute" } or qa_prepare_target, then qa_explore.'] });
110
+ return (blockedDeviceResult(blocked) ??
111
+ qaError({
112
+ what: 'No device attached to this session',
113
+ changedState: false,
114
+ retrySafe: true,
115
+ nextSteps: ['Prepare a device first: qa_test_this { mode:"execute" } or qa_prepare_target, then qa_explore.'],
116
+ }));
98
117
  }
99
118
  if (safeMode === 'approved_destructive') {
100
119
  return qaError({
@@ -102,7 +121,9 @@ export function registerExplore(server, sessions) {
102
121
  changedState: false,
103
122
  retrySafe: false,
104
123
  failureCode: 'DESTRUCTIVE_REFUSED',
105
- nextSteps: ['Run qa_explore with safeMode:"dry_run_destructive" to discover candidates, then approve one exact candidate with safeMode:"approved_destructive_candidate" and disposable test state.'],
124
+ nextSteps: [
125
+ 'Run qa_explore with safeMode:"dry_run_destructive" to discover candidates, then approve one exact candidate with safeMode:"approved_destructive_candidate" and disposable test state.',
126
+ ],
106
127
  });
107
128
  }
108
129
  let destructiveApproval;
@@ -113,7 +134,9 @@ export function registerExplore(server, sessions) {
113
134
  changedState: false,
114
135
  retrySafe: false,
115
136
  failureCode: 'DESTRUCTIVE_REFUSED',
116
- nextSteps: ['Run safeMode:"dry_run_destructive" first and copy one candidate signature/screen/locator into destructiveCandidate.'],
137
+ nextSteps: [
138
+ 'Run safeMode:"dry_run_destructive" first and copy one candidate signature/screen/locator into destructiveCandidate.',
139
+ ],
117
140
  });
118
141
  }
119
142
  if (!hasDisposableState(session)) {
@@ -131,7 +154,9 @@ export function registerExplore(server, sessions) {
131
154
  changedState: false,
132
155
  retrySafe: false,
133
156
  failureCode: 'DESTRUCTIVE_REFUSED',
134
- nextSteps: ['Re-run with confirmHighImpact:true only if this is disposable test state and the action can be safely verified or rolled back.'],
157
+ nextSteps: [
158
+ 'Re-run with confirmHighImpact:true only if this is disposable test state and the action can be safely verified or rolled back.',
159
+ ],
135
160
  });
136
161
  }
137
162
  const approval = {
@@ -184,18 +209,35 @@ export function registerExplore(server, sessions) {
184
209
  }
185
210
  const accountCycleCtx = accountCycle ? { enabled: true, disposableAccount: allowGeneratedData === true } : undefined;
186
211
  const job = sessions.createJob(session, 'explore');
187
- void runExploreJob(sessions, session, job, { goal, depth, maxActions, maxScreens, maxDurationMs, strategy, safeMode, destructiveApproval, generateSuite, includeTextEntry, stopOnAuth, accountCycle: accountCycleCtx, allowGeneratedData });
212
+ void runWithSignal(sessions.abortSignal(session, job.jobId), () => runExploreJob(sessions, session, job, {
213
+ goal,
214
+ depth,
215
+ maxActions,
216
+ maxScreens,
217
+ maxDurationMs,
218
+ strategy,
219
+ safeMode,
220
+ destructiveApproval,
221
+ generateSuite,
222
+ includeTextEntry,
223
+ stopOnAuth,
224
+ accountCycle: accountCycleCtx,
225
+ allowGeneratedData,
226
+ }));
188
227
  return qaOk({ sessionId: session.id, state: 'running', jobId: job.jobId, kind: job.kind }, `🧭 guided exploration started as job ${job.jobId}. Poll qa_job_status { sessionId:"${session.id}", jobId:"${job.jobId}" } for the screen graph + terminal state.`);
189
228
  });
190
229
  }
191
230
  async function runExploreJob(sessions, session, job, opts) {
192
231
  const signal = sessions.abortSignal(session, job.jobId);
193
232
  const upd = (patch) => sessions.updateJobIfRunning(session, job, patch);
194
- const prog = startProgress(sessions, session, job, 'exploring', { statusText: 'Exploring the app safely.', nextExpected: 'Build a screen graph.' });
233
+ const prog = startProgress(sessions, session, job, 'exploring', {
234
+ statusText: 'Exploring the app safely.',
235
+ nextExpected: 'Build a screen graph.',
236
+ });
195
237
  try {
196
- const { driver } = await getDriver(session);
238
+ const { driver, blocked } = await getDriver(session);
197
239
  if (!driver) {
198
- upd({ status: 'failed', error: 'no driver', endedAt: Date.now() });
240
+ upd({ status: 'failed', error: blocked ? `${blocked.failureCode}: ${blocked.detail}` : 'no driver', endedAt: Date.now() });
199
241
  return;
200
242
  }
201
243
  const res = await runExplore(sessions, session, driver, opts, { signal, onProgress: (p) => prog.event(p) });
@@ -228,30 +270,56 @@ async function runExploreJob(sessions, session, job, opts) {
228
270
  ? generateAndCompileSuite(sessions, session, { name: 'explore-promoted', actions: promotedActions, save: true, compile: true })
229
271
  : {
230
272
  skipped: true,
231
- skippedReason: res.suitePromotion.some((p) => p.status === 'promote') ? 'promoted path did not map to recorded replay actions' : 'no promoted exploration path met the replay threshold',
232
- recommendation: 'Review suitePromotion reasons, improve locator readiness, then run qa_suite_generate after replayable actions are recorded.',
273
+ skippedReason: res.suitePromotion.some((p) => p.status === 'promote')
274
+ ? 'promoted path did not map to recorded replay actions'
275
+ : 'no promoted exploration path met the replay threshold',
276
+ recommendation: 'Review suitePromotion reasons, improve locator readiness, then run qa_generate target:"suite" after replayable actions are recorded.',
233
277
  written: [],
234
278
  compiledFlows: [],
235
279
  suiteRunnable: false,
236
280
  readinessLabels: [],
237
281
  }
238
282
  : undefined;
239
- const record = { at, graphUri, graphMdUri, state: res.state, stoppedReason: res.stoppedReason, summary: res.summary };
283
+ const record = {
284
+ at,
285
+ graphUri,
286
+ graphMdUri,
287
+ state: res.state,
288
+ stoppedReason: res.stoppedReason,
289
+ summary: res.summary,
290
+ };
240
291
  sessions.setExploration(session, record);
241
- // SWIPIUM-REQ-01: merge this exploration into the durable App Knowledge Map by default. Best-effort
242
- // — a map failure must never fail the exploration job.
292
+ // Merge this exploration into the durable App Knowledge Map by default. Best-effort:
293
+ // a map failure must never fail the exploration job.
243
294
  try {
244
- buildAppMap(session.root, { mode: 'runtime_merge', at: generatedAt, sessionId: session.id, exploreGraph: serializedGraph, persist: true });
295
+ buildAppMap(session.root, {
296
+ mode: 'runtime_merge',
297
+ at: generatedAt,
298
+ sessionId: session.id,
299
+ exploreGraph: serializedGraph,
300
+ persist: true,
301
+ });
245
302
  }
246
303
  catch (e) {
247
304
  log('warn', 'app map merge after explore failed', { jobId: job.jobId, err: String(e) });
248
305
  }
249
- // Fix 9: keep the persistent suite current directly after exploration — don't wait for a later
306
+ // Fix 9: keep the persistent suite current directly after exploration. Don't wait for a later
250
307
  // qa_report. Best-effort: a suite-merge failure is a warning, never an exploration failure.
251
- const suiteMerge = mergeFromExploration(session.root, record, { source: 'exploration', now: generatedAt, runId: `explore-${at}`, sourceUri: graphUri, appId: session.appId, sessionId: session.id });
308
+ const suiteMerge = mergeFromExploration(session.root, record, {
309
+ source: 'exploration',
310
+ now: generatedAt,
311
+ runId: `explore-${at}`,
312
+ sourceUri: graphUri,
313
+ appId: session.appId,
314
+ sessionId: session.id,
315
+ });
252
316
  prog.done(`explored ${res.summary.screensVisited} screens`);
253
317
  const nextRecommendedAction = res.needsInput
254
- ? { tool: 'qa_continue_from_blocker', args: { sessionId: session.id, kind: 'credentials' }, why: 'Provide credentials to explore authenticated screens' }
318
+ ? {
319
+ tool: 'qa_continue_from_blocker',
320
+ args: { sessionId: session.id, kind: 'credentials' },
321
+ why: 'Provide credentials to explore authenticated screens',
322
+ }
255
323
  : { tool: 'qa_report', args: { sessionId: session.id }, why: 'Summarize the exploration with the screen graph' };
256
324
  upd({
257
325
  status: 'done',
@@ -272,7 +340,7 @@ async function runExploreJob(sessions, session, job, opts) {
272
340
  suiteWarning: suiteMerge.warning ?? null,
273
341
  nextRecommendedAction,
274
342
  },
275
- resultText: `🧭 exploration ${res.state} — ${res.summary.screensVisited} screens, ${res.summary.actionsTried} actions, ${res.summary.workflowsFound} transitions, ${res.summary.visualOnlyScreens} visual-only, ${res.summary.unsafeActionsSkipped} unsafe skipped, ${res.summary.appErrors} app errors.\n` +
343
+ resultText: `🧭 exploration ${res.state}: ${res.summary.screensVisited} screens, ${res.summary.actionsTried} actions, ${res.summary.workflowsFound} transitions, ${res.summary.visualOnlyScreens} visual-only, ${res.summary.unsafeActionsSkipped} unsafe skipped, ${res.summary.appErrors} app errors.\n` +
276
344
  `reason: ${res.stoppedReason}\ngraph: ${graphUri}` +
277
345
  (generatedSuite && !generatedSuite.skipped ? `\npromoted suite: ${generatedSuite.name}` : '') +
278
346
  (res.needsInput ? `\n❓ ${res.needsInput.question}` : ''),
@@ -1 +1 @@
1
- {"version":3,"file":"explore.js","sourceRoot":"","sources":["../../src/tools/explore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explore.js","sourceRoot":"","sources":["../../src/tools/explore.ts"],"names":[],"mappings":"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"}