swipium 1.3.0 → 1.5.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 (438) hide show
  1. package/CHANGELOG.md +142 -0
  2. package/README.md +89 -25
  3. package/THREAT_MODEL.md +1 -1
  4. package/dist/appMap/automationLink.js +13 -3
  5. package/dist/appMap/automationLink.js.map +1 -1
  6. package/dist/appMap/build.js +28 -6
  7. package/dist/appMap/build.js.map +1 -1
  8. package/dist/appMap/codeIndex.js +29 -3
  9. package/dist/appMap/codeIndex.js.map +1 -1
  10. package/dist/appMap/featureIndex.js +20 -2
  11. package/dist/appMap/featureIndex.js.map +1 -1
  12. package/dist/appMap/featureModel.js +42 -6
  13. package/dist/appMap/featureModel.js.map +1 -1
  14. package/dist/appMap/firstRunApply.js +22 -4
  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 +0 -20
  19. package/dist/appMap/issues.js.map +1 -1
  20. package/dist/appMap/migrations.js +1 -1
  21. package/dist/appMap/migrations.js.map +1 -1
  22. package/dist/appMap/prelaunch.js.map +1 -1
  23. package/dist/appMap/projectRegistry.js +8 -2
  24. package/dist/appMap/projectRegistry.js.map +1 -1
  25. package/dist/appMap/query.js +20 -4
  26. package/dist/appMap/query.js.map +1 -1
  27. package/dist/appMap/runtimeMerge.js +9 -2
  28. package/dist/appMap/runtimeMerge.js.map +1 -1
  29. package/dist/appMap/schema.js.map +1 -1
  30. package/dist/appMap/screenMatch.js +5 -1
  31. package/dist/appMap/screenMatch.js.map +1 -1
  32. package/dist/appMap/staticScan.js +134 -22
  33. package/dist/appMap/staticScan.js.map +1 -1
  34. package/dist/appMap/store.js +4 -79
  35. package/dist/appMap/store.js.map +1 -1
  36. package/dist/appMap/tsAstScan.js +31 -9
  37. package/dist/appMap/tsAstScan.js.map +1 -1
  38. package/dist/artifacts/bundletool.js +44 -7
  39. package/dist/artifacts/bundletool.js.map +1 -1
  40. package/dist/artifacts/resolve.js +33 -6
  41. package/dist/artifacts/resolve.js.map +1 -1
  42. package/dist/automation/capabilities.js +109 -27
  43. package/dist/automation/capabilities.js.map +1 -1
  44. package/dist/automation/gestures.js +5 -1
  45. package/dist/automation/gestures.js.map +1 -1
  46. package/dist/automation/plan.js +65 -17
  47. package/dist/automation/plan.js.map +1 -1
  48. package/dist/automation/report.js +12 -2
  49. package/dist/automation/report.js.map +1 -1
  50. package/dist/automation/selectors.js +8 -3
  51. package/dist/automation/selectors.js.map +1 -1
  52. package/dist/automation/types.js.map +1 -1
  53. package/dist/automation/waits.js +9 -3
  54. package/dist/automation/waits.js.map +1 -1
  55. package/dist/automation/webview.js +7 -1
  56. package/dist/automation/webview.js.map +1 -1
  57. package/dist/automationGen/appiumModel.js +3 -1
  58. package/dist/automationGen/appiumModel.js.map +1 -1
  59. package/dist/automationGen/ciEmitter.js +1 -1
  60. package/dist/automationGen/ciEmitter.js.map +1 -1
  61. package/dist/automationGen/jsEmitter.js +29 -21
  62. package/dist/automationGen/jsEmitter.js.map +1 -1
  63. package/dist/automationGen/projectProfile.js +5 -1
  64. package/dist/automationGen/projectProfile.js.map +1 -1
  65. package/dist/automationGen/pythonEmitter.js +3 -3
  66. package/dist/automationGen/pythonEmitter.js.map +1 -1
  67. package/dist/automationGen/readmeEmitter.js.map +1 -1
  68. package/dist/automationGen/suitePlan.js +11 -6
  69. package/dist/automationGen/suitePlan.js.map +1 -1
  70. package/dist/automationGen/validation.js +33 -5
  71. package/dist/automationGen/validation.js.map +1 -1
  72. package/dist/build/parseBuildLog.js +234 -30
  73. package/dist/build/parseBuildLog.js.map +1 -1
  74. package/dist/build/plan.js +33 -12
  75. package/dist/build/plan.js.map +1 -1
  76. package/dist/ci/preflight.js.map +1 -1
  77. package/dist/cli/init.js.map +1 -1
  78. package/dist/cli/scan.js +1 -1
  79. package/dist/cli/scan.js.map +1 -1
  80. package/dist/cli/suite.js +2 -2
  81. package/dist/cli/suite.js.map +1 -1
  82. package/dist/cli/verify.js.map +1 -1
  83. package/dist/context/detect.js +10 -4
  84. package/dist/context/detect.js.map +1 -1
  85. package/dist/context/findApps.js +16 -2
  86. package/dist/context/findApps.js.map +1 -1
  87. package/dist/context/scan.js.map +1 -1
  88. package/dist/core/target.js +7 -5
  89. package/dist/core/target.js.map +1 -1
  90. package/dist/core/targetPlan.js +135 -17
  91. package/dist/core/targetPlan.js.map +1 -1
  92. package/dist/drivers/DirectDriver.js +17 -7
  93. package/dist/drivers/DirectDriver.js.map +1 -1
  94. package/dist/drivers/SimctlDriver.js +4 -1
  95. package/dist/drivers/SimctlDriver.js.map +1 -1
  96. package/dist/drivers/WdaDriver.js +15 -5
  97. package/dist/drivers/WdaDriver.js.map +1 -1
  98. package/dist/explore/candidates.js +5 -1
  99. package/dist/explore/candidates.js.map +1 -1
  100. package/dist/explore/graph.js +11 -2
  101. package/dist/explore/graph.js.map +1 -1
  102. package/dist/explore/memory.js +4 -1
  103. package/dist/explore/memory.js.map +1 -1
  104. package/dist/explore/planner.js +54 -9
  105. package/dist/explore/planner.js.map +1 -1
  106. package/dist/explore/policy.js +6 -1
  107. package/dist/explore/policy.js.map +1 -1
  108. package/dist/explore/runner.js +179 -23
  109. package/dist/explore/runner.js.map +1 -1
  110. package/dist/explore/signatures.js +3 -1
  111. package/dist/explore/signatures.js.map +1 -1
  112. package/dist/explore/suite.js +3 -1
  113. package/dist/explore/suite.js.map +1 -1
  114. package/dist/featureTesting/executionBootstrap.js +128 -19
  115. package/dist/featureTesting/executionBootstrap.js.map +1 -1
  116. package/dist/featureTesting/featureMap.js +4 -1
  117. package/dist/featureTesting/featureMap.js.map +1 -1
  118. package/dist/featureTesting/featureScope.js +94 -13
  119. package/dist/featureTesting/featureScope.js.map +1 -1
  120. package/dist/featureTesting/mapFeatureScope.js +37 -8
  121. package/dist/featureTesting/mapFeatureScope.js.map +1 -1
  122. package/dist/featureTesting/objectiveModel.js +5 -1
  123. package/dist/featureTesting/objectiveModel.js.map +1 -1
  124. package/dist/featureTesting/resultMerge.js +10 -2
  125. package/dist/featureTesting/resultMerge.js.map +1 -1
  126. package/dist/featureTesting/sources.js +4 -1
  127. package/dist/featureTesting/sources.js.map +1 -1
  128. package/dist/featureTesting/suiteBridge.js +7 -1
  129. package/dist/featureTesting/suiteBridge.js.map +1 -1
  130. package/dist/featureTesting/synonyms.js +31 -3
  131. package/dist/featureTesting/synonyms.js.map +1 -1
  132. package/dist/featureTesting/testCaseFactory.js +16 -4
  133. package/dist/featureTesting/testCaseFactory.js.map +1 -1
  134. package/dist/featureTesting/testPlan.js +32 -10
  135. package/dist/featureTesting/testPlan.js.map +1 -1
  136. package/dist/firstRun/classifyScreen.js +4 -1
  137. package/dist/firstRun/classifyScreen.js.map +1 -1
  138. package/dist/firstRun/firstRunPlanner.js +5 -2
  139. package/dist/firstRun/firstRunPlanner.js.map +1 -1
  140. package/dist/firstRun/firstRunRunner.js +84 -23
  141. package/dist/firstRun/firstRunRunner.js.map +1 -1
  142. package/dist/firstRun/generatedDataPolicy.js +16 -6
  143. package/dist/firstRun/generatedDataPolicy.js.map +1 -1
  144. package/dist/firstRun/inputPlanner.js +40 -6
  145. package/dist/firstRun/inputPlanner.js.map +1 -1
  146. package/dist/firstRun/paywallPolicy.js.map +1 -1
  147. package/dist/fixtures/catalog.js +39 -6
  148. package/dist/fixtures/catalog.js.map +1 -1
  149. package/dist/flows/generate.js +53 -12
  150. package/dist/flows/generate.js.map +1 -1
  151. package/dist/flows/lint.js +88 -14
  152. package/dist/flows/lint.js.map +1 -1
  153. package/dist/flows/pack.js +18 -2
  154. package/dist/flows/pack.js.map +1 -1
  155. package/dist/flows/repair.js +71 -20
  156. package/dist/flows/repair.js.map +1 -1
  157. package/dist/flows/run.js +164 -51
  158. package/dist/flows/run.js.map +1 -1
  159. package/dist/flows/schema.js +57 -20
  160. package/dist/flows/schema.js.map +1 -1
  161. package/dist/flows/seedExec.js +5 -1
  162. package/dist/flows/seedExec.js.map +1 -1
  163. package/dist/ios/signing.js +32 -3
  164. package/dist/ios/signing.js.map +1 -1
  165. package/dist/issues/classify.js +12 -4
  166. package/dist/issues/classify.js.map +1 -1
  167. package/dist/issues/fingerprint.js +11 -5
  168. package/dist/issues/fingerprint.js.map +1 -1
  169. package/dist/issues/index.js +4 -20
  170. package/dist/issues/index.js.map +1 -1
  171. package/dist/issues/metrics.js +2 -1
  172. package/dist/issues/metrics.js.map +1 -1
  173. package/dist/issues/recurrence.js.map +1 -1
  174. package/dist/issues/report.js +8 -4
  175. package/dist/issues/report.js.map +1 -1
  176. package/dist/issues/reportBridge.js +36 -5
  177. package/dist/issues/reportBridge.js.map +1 -1
  178. package/dist/issues/schema.js.map +1 -1
  179. package/dist/issues/store.js.map +1 -1
  180. package/dist/lib/android.js +9 -1
  181. package/dist/lib/android.js.map +1 -1
  182. package/dist/lib/device.js +21 -5
  183. package/dist/lib/device.js.map +1 -1
  184. package/dist/lib/image.js +11 -2
  185. package/dist/lib/image.js.map +1 -1
  186. package/dist/lib/lockfile.js +60 -0
  187. package/dist/lib/lockfile.js.map +1 -0
  188. package/dist/lib/needsInput.js +6 -3
  189. package/dist/lib/needsInput.js.map +1 -1
  190. package/dist/lib/png.js +2 -1
  191. package/dist/lib/png.js.map +1 -1
  192. package/dist/lib/result.js +16 -1
  193. package/dist/lib/result.js.map +1 -1
  194. package/dist/lib/schemaHash.js +4 -2
  195. package/dist/lib/schemaHash.js.map +1 -1
  196. package/dist/lib/sensitive.js +3 -1
  197. package/dist/lib/sensitive.js.map +1 -1
  198. package/dist/lib/simctl.js.map +1 -1
  199. package/dist/lib/spawn.js +29 -10
  200. package/dist/lib/spawn.js.map +1 -1
  201. package/dist/lib/wda.js +27 -10
  202. package/dist/lib/wda.js.map +1 -1
  203. package/dist/lib/wdaConfig.js +12 -5
  204. package/dist/lib/wdaConfig.js.map +1 -1
  205. package/dist/lib/wdaTune.js +52 -23
  206. package/dist/lib/wdaTune.js.map +1 -1
  207. package/dist/mobileAudit/checks.js +141 -19
  208. package/dist/mobileAudit/checks.js.map +1 -1
  209. package/dist/mobileAudit/profiles.js +120 -19
  210. package/dist/mobileAudit/profiles.js.map +1 -1
  211. package/dist/mobileAudit/results.js +7 -2
  212. package/dist/mobileAudit/results.js.map +1 -1
  213. package/dist/mobileAudit/runner.js +144 -19
  214. package/dist/mobileAudit/runner.js.map +1 -1
  215. package/dist/oracle/auth.js.map +1 -1
  216. package/dist/oracle/failures.js +888 -131
  217. package/dist/oracle/failures.js.map +1 -1
  218. package/dist/oracle/health.js +90 -14
  219. package/dist/oracle/health.js.map +1 -1
  220. package/dist/oracle/locator.js +147 -18
  221. package/dist/oracle/locator.js.map +1 -1
  222. package/dist/oracle/record.js.map +1 -1
  223. package/dist/orchestration/goal.js +3 -9
  224. package/dist/orchestration/goal.js.map +1 -1
  225. package/dist/orchestration/testThis/execute.js +126 -0
  226. package/dist/orchestration/testThis/execute.js.map +1 -0
  227. package/dist/orchestration/testThis/pipeline.js +324 -0
  228. package/dist/orchestration/testThis/pipeline.js.map +1 -0
  229. package/dist/orchestration/testThis/plan.js +430 -0
  230. package/dist/orchestration/testThis/plan.js.map +1 -0
  231. package/dist/orchestration/testThis/terminal.js +118 -0
  232. package/dist/orchestration/testThis/terminal.js.map +1 -0
  233. package/dist/orchestration/testThis/types.js +12 -0
  234. package/dist/orchestration/testThis/types.js.map +1 -0
  235. package/dist/plan/plan.js.map +1 -1
  236. package/dist/prompts/index.js +3 -3
  237. package/dist/prompts/index.js.map +1 -1
  238. package/dist/report/coverage.js +0 -1
  239. package/dist/report/coverage.js.map +1 -1
  240. package/dist/report/evidence.js.map +1 -1
  241. package/dist/report/export.js +59 -37
  242. package/dist/report/export.js.map +1 -1
  243. package/dist/report/flake.js +13 -14
  244. package/dist/report/flake.js.map +1 -1
  245. package/dist/report/history.js +72 -38
  246. package/dist/report/history.js.map +1 -1
  247. package/dist/report/policy.js +11 -3
  248. package/dist/report/policy.js.map +1 -1
  249. package/dist/report/qaLevel.js +2 -8
  250. package/dist/report/qaLevel.js.map +1 -1
  251. package/dist/report/readiness.js +42 -12
  252. package/dist/report/readiness.js.map +1 -1
  253. package/dist/report/summary.js.map +1 -1
  254. package/dist/report/timing.js +23 -23
  255. package/dist/report/timing.js.map +1 -1
  256. package/dist/server.js +42 -37
  257. package/dist/server.js.map +1 -1
  258. package/dist/services/automationGenerate.js.map +1 -1
  259. package/dist/services/build.js +8 -2
  260. package/dist/services/build.js.map +1 -1
  261. package/dist/services/preflight.js +38 -6
  262. package/dist/services/preflight.js.map +1 -1
  263. package/dist/services/prepareAndroid.js +46 -10
  264. package/dist/services/prepareAndroid.js.map +1 -1
  265. package/dist/services/prepareIos.js +72 -10
  266. package/dist/services/prepareIos.js.map +1 -1
  267. package/dist/services/report.js +173 -37
  268. package/dist/services/report.js.map +1 -1
  269. package/dist/services/smoke.js +36 -6
  270. package/dist/services/smoke.js.map +1 -1
  271. package/dist/services/suiteGenerate.js +16 -4
  272. package/dist/services/suiteGenerate.js.map +1 -1
  273. package/dist/services/testSuiteKnowledge.js +38 -6
  274. package/dist/services/testSuiteKnowledge.js.map +1 -1
  275. package/dist/session/attach.js +16 -0
  276. package/dist/session/attach.js.map +1 -1
  277. package/dist/session/processRegistry.js +164 -0
  278. package/dist/session/processRegistry.js.map +1 -0
  279. package/dist/session/progress.js +1 -1
  280. package/dist/session/progress.js.map +1 -1
  281. package/dist/session/store.js +216 -43
  282. package/dist/session/store.js.map +1 -1
  283. package/dist/snapshot/overlays.js +7 -2
  284. package/dist/snapshot/overlays.js.map +1 -1
  285. package/dist/snapshot/parse.js +2 -8
  286. package/dist/snapshot/parse.js.map +1 -1
  287. package/dist/snapshot/present.js +27 -3
  288. package/dist/snapshot/present.js.map +1 -1
  289. package/dist/state/profile.js +36 -9
  290. package/dist/state/profile.js.map +1 -1
  291. package/dist/suite/compile.js +7 -2
  292. package/dist/suite/compile.js.map +1 -1
  293. package/dist/suite/lint.js +21 -3
  294. package/dist/suite/lint.js.map +1 -1
  295. package/dist/suite/pom.js +26 -4
  296. package/dist/suite/pom.js.map +1 -1
  297. package/dist/suite/testcase.js +6 -4
  298. package/dist/suite/testcase.js.map +1 -1
  299. package/dist/testSuite/exporter.js +6 -2
  300. package/dist/testSuite/exporter.js.map +1 -1
  301. package/dist/testSuite/generator.js +31 -6
  302. package/dist/testSuite/generator.js.map +1 -1
  303. package/dist/testSuite/issueLinks.js.map +1 -1
  304. package/dist/testSuite/lint.js +1 -1
  305. package/dist/testSuite/lint.js.map +1 -1
  306. package/dist/testSuite/merge.js +8 -2
  307. package/dist/testSuite/merge.js.map +1 -1
  308. package/dist/testSuite/schema.js +16 -11
  309. package/dist/testSuite/schema.js.map +1 -1
  310. package/dist/testSuite/store.js +9 -1
  311. package/dist/testSuite/store.js.map +1 -1
  312. package/dist/tools/act.js +107 -43
  313. package/dist/tools/act.js.map +1 -1
  314. package/dist/tools/agent.js +123 -25
  315. package/dist/tools/agent.js.map +1 -1
  316. package/dist/tools/appControl.js +16 -3
  317. package/dist/tools/appControl.js.map +1 -1
  318. package/dist/tools/appMap.js +331 -63
  319. package/dist/tools/appMap.js.map +1 -1
  320. package/dist/tools/assertVisual.js +12 -2
  321. package/dist/tools/assertVisual.js.map +1 -1
  322. package/dist/tools/automationGenerate.js +276 -241
  323. package/dist/tools/automationGenerate.js.map +1 -1
  324. package/dist/tools/build.js +92 -41
  325. package/dist/tools/build.js.map +1 -1
  326. package/dist/tools/bundletool.js +139 -28
  327. package/dist/tools/bundletool.js.map +1 -1
  328. package/dist/tools/capabilities.js +45 -71
  329. package/dist/tools/capabilities.js.map +1 -1
  330. package/dist/tools/clearOverlay.js +45 -8
  331. package/dist/tools/clearOverlay.js.map +1 -1
  332. package/dist/tools/detectContext.js +1 -1
  333. package/dist/tools/detectContext.js.map +1 -1
  334. package/dist/tools/device.js +44 -7
  335. package/dist/tools/device.js.map +1 -1
  336. package/dist/tools/doctor.js +38 -15
  337. package/dist/tools/doctor.js.map +1 -1
  338. package/dist/tools/explore.js +96 -22
  339. package/dist/tools/explore.js.map +1 -1
  340. package/dist/tools/featureTesting.js +153 -114
  341. package/dist/tools/featureTesting.js.map +1 -1
  342. package/dist/tools/firstRun.js +95 -60
  343. package/dist/tools/firstRun.js.map +1 -1
  344. package/dist/tools/flow.js +236 -101
  345. package/dist/tools/flow.js.map +1 -1
  346. package/dist/tools/flowGenerate.js +51 -47
  347. package/dist/tools/flowGenerate.js.map +1 -1
  348. package/dist/tools/flowRepair.js +24 -4
  349. package/dist/tools/flowRepair.js.map +1 -1
  350. package/dist/tools/generate.js +236 -0
  351. package/dist/tools/generate.js.map +1 -0
  352. package/dist/tools/getArtifact.js +21 -3
  353. package/dist/tools/getArtifact.js.map +1 -1
  354. package/dist/tools/health.js +3 -1
  355. package/dist/tools/health.js.map +1 -1
  356. package/dist/tools/history.js +40 -10
  357. package/dist/tools/history.js.map +1 -1
  358. package/dist/tools/ios.js +157 -25
  359. package/dist/tools/ios.js.map +1 -1
  360. package/dist/tools/issues.js +19 -150
  361. package/dist/tools/issues.js.map +1 -1
  362. package/dist/tools/jobs.js +23 -4
  363. package/dist/tools/jobs.js.map +1 -1
  364. package/dist/tools/locator.js +36 -8
  365. package/dist/tools/locator.js.map +1 -1
  366. package/dist/tools/metro.js +61 -16
  367. package/dist/tools/metro.js.map +1 -1
  368. package/dist/tools/mobileAudit.js +67 -15
  369. package/dist/tools/mobileAudit.js.map +1 -1
  370. package/dist/tools/network.js +6 -1
  371. package/dist/tools/network.js.map +1 -1
  372. package/dist/tools/note.js +20 -6
  373. package/dist/tools/note.js.map +1 -1
  374. package/dist/tools/permissions.js +31 -6
  375. package/dist/tools/permissions.js.map +1 -1
  376. package/dist/tools/plan.js +5 -2
  377. package/dist/tools/plan.js.map +1 -1
  378. package/dist/tools/prepareIosTarget.js +31 -8
  379. package/dist/tools/prepareIosTarget.js.map +1 -1
  380. package/dist/tools/prepareTarget.js +97 -18
  381. package/dist/tools/prepareTarget.js.map +1 -1
  382. package/dist/tools/report.js +24 -5
  383. package/dist/tools/report.js.map +1 -1
  384. package/dist/tools/resolveArtifact.js +9 -5
  385. package/dist/tools/resolveArtifact.js.map +1 -1
  386. package/dist/tools/resolveTarget.js +11 -2
  387. package/dist/tools/resolveTarget.js.map +1 -1
  388. package/dist/tools/screenInfo.js +8 -2
  389. package/dist/tools/screenInfo.js.map +1 -1
  390. package/dist/tools/screenRecord.js +74 -11
  391. package/dist/tools/screenRecord.js.map +1 -1
  392. package/dist/tools/screenshot.js +23 -6
  393. package/dist/tools/screenshot.js.map +1 -1
  394. package/dist/tools/seed.js +38 -6
  395. package/dist/tools/seed.js.map +1 -1
  396. package/dist/tools/smoke.js +16 -3
  397. package/dist/tools/smoke.js.map +1 -1
  398. package/dist/tools/snapshot.js +59 -6
  399. package/dist/tools/snapshot.js.map +1 -1
  400. package/dist/tools/startSession.js +54 -9
  401. package/dist/tools/startSession.js.map +1 -1
  402. package/dist/tools/state.js +62 -15
  403. package/dist/tools/state.js.map +1 -1
  404. package/dist/tools/suite.js +350 -298
  405. package/dist/tools/suite.js.map +1 -1
  406. package/dist/tools/testSuite.js +94 -28
  407. package/dist/tools/testSuite.js.map +1 -1
  408. package/dist/tools/testThis.js +30 -793
  409. package/dist/tools/testThis.js.map +1 -1
  410. package/dist/tools/visual.js +124 -18
  411. package/dist/tools/visual.js.map +1 -1
  412. package/dist/tools/visualText.js +51 -6
  413. package/dist/tools/visualText.js.map +1 -1
  414. package/dist/tools/wait.js +18 -3
  415. package/dist/tools/wait.js.map +1 -1
  416. package/dist/tools/wda.js +157 -29
  417. package/dist/tools/wda.js.map +1 -1
  418. package/dist/version.js +17 -49
  419. package/dist/version.js.map +1 -1
  420. package/dist/visual/ocr.js +12 -2
  421. package/dist/visual/ocr.js.map +1 -1
  422. package/dist/visual/provider.js +7 -3
  423. package/dist/visual/provider.js.map +1 -1
  424. package/docs/mcp-server.md +44 -4
  425. package/docs/tools.md +42 -100
  426. package/package.json +14 -5
  427. package/dist/appMap/diff.js +0 -60
  428. package/dist/appMap/diff.js.map +0 -1
  429. package/dist/automation/maestroIr.js +0 -282
  430. package/dist/automation/maestroIr.js.map +0 -1
  431. package/dist/interop/maestro.js +0 -151
  432. package/dist/interop/maestro.js.map +0 -1
  433. package/dist/tools/idling.js +0 -104
  434. package/dist/tools/idling.js.map +0 -1
  435. package/dist/tools/inputCapabilities.js +0 -30
  436. package/dist/tools/inputCapabilities.js.map +0 -1
  437. package/dist/tools/maestro.js +0 -78
  438. package/dist/tools/maestro.js.map +0 -1
@@ -0,0 +1,430 @@
1
+ // qa_test_this plan-phase resolution (roadmap §3.1) — the cheap, side-effect-free half of the
2
+ // orchestration state machine. Resolves the session/project, finds (or plans a build for) an
3
+ // artifact, picks a target, and returns an ordered plan with the EXACT next tool call to make —
4
+ // or a typed blocker / one concise NeedsInput question. Execute/interactive modes are dispatched
5
+ // to runExecuteMode (./execute.js).
6
+ import { qaOk, qaError } from '../../lib/result.js';
7
+ import { qaFail } from '../../oracle/failures.js';
8
+ import { qaNeedsInput, NeedsInput } from '../../lib/needsInput.js';
9
+ import { scanProject } from '../../context/scan.js';
10
+ import { findMobileApps, classifyDiscovery } from '../../context/findApps.js';
11
+ import { resolveGoalFlags } from '../goal.js';
12
+ import { resolveArtifact } from '../../artifacts/resolve.js';
13
+ import { buildPlan } from '../../build/plan.js';
14
+ import { adbDevices, listAvds, which } from '../../lib/android.js';
15
+ import { simctlAvailable, listSimulators } from '../../lib/simctl.js';
16
+ import { checkWda } from '../../lib/wda.js';
17
+ import { loadWdaConfig } from '../../lib/wdaConfig.js';
18
+ import { planTarget } from '../../core/targetPlan.js';
19
+ import { universalApkCachePath } from '../../artifacts/bundletool.js';
20
+ import { ensurePrelaunchAppMap } from '../../appMap/prelaunch.js';
21
+ import { log } from '../../lib/logger.js';
22
+ import { selToPlatform, isAndroidEmulatorSerial } from './types.js';
23
+ import { runExecuteMode } from './execute.js';
24
+ export async function handleTestThis(server, sessions, input) {
25
+ const { sessionId, projectRoot, mode, goal, goalText, fastSmoke, platform, device, preferRealDevice, allowOutsideRoot, buildIfNeeded, generateSuite, explore, stopOnNeedsInput, waitForCompletion, timeoutMs, consentId, approve, } = input;
26
+ // Goal routing (Milestone C): the goal sets orchestration FLAGS only; explicit booleans win.
27
+ // Default policy = "leave behind automation when possible" (fastSmoke opts out).
28
+ const goalFlags = resolveGoalFlags(goal, { explore, generateSuite, stopOnNeedsInput }, { fastSmoke });
29
+ // ---- resolve / create session ----
30
+ let session = sessionId ? sessions.get(sessionId) : undefined;
31
+ if (sessionId && !session) {
32
+ return qaError({
33
+ what: `Unknown sessionId "${sessionId}"`,
34
+ changedState: false,
35
+ retrySafe: true,
36
+ nextSteps: ['Omit sessionId to create one, or pass a valid session.'],
37
+ });
38
+ }
39
+ if (!session) {
40
+ const { resolveProjectRoot } = await import('../../context/projectRoot.js');
41
+ const resolved = await resolveProjectRoot(server, projectRoot);
42
+ if (!resolved.root)
43
+ return qaError({
44
+ what: 'Could not resolve a project root',
45
+ changedState: false,
46
+ retrySafe: true,
47
+ nextSteps: ['Pass projectRoot="/abs/path".'],
48
+ clientHint: resolved.hint,
49
+ });
50
+ session = sessions.create(resolved.root, undefined, {});
51
+ }
52
+ let root = session.root;
53
+ const wa = (note) => sessions.addWorkaround(session, note);
54
+ // ---- 1. project scan ----
55
+ let scan = await scanProject(root);
56
+ // What Swipium has actually tried before any pre-execute question/blocker (review item 5):
57
+ // concrete steps, not just the workaround log. Grows as resolution proceeds.
58
+ const preAttempted = [`scanned project root (framework=${scan.framework})`];
59
+ // ---- 1b. low-context app discovery (§3.1/§3.7): the root may be a monorepo or a parent
60
+ // directory rather than the app itself. Discover candidates and either adopt the one
61
+ // strong candidate (recording a workaround) or ask ONE disambiguation question. ----
62
+ if (scan.framework === 'unknown') {
63
+ const disc = findMobileApps(root);
64
+ preAttempted.push(`ran low-context app discovery (searched ${disc.searchedLocations.length} location(s), found ${disc.candidates.length} candidate(s))`);
65
+ const cls = classifyDiscovery(disc);
66
+ if (cls.decision === 'adopt' && cls.chosen) {
67
+ wa(`root is not itself a mobile app — discovered one candidate (${cls.chosen.framework}) at ${cls.chosen.rel}; proceeding with it`);
68
+ root = cls.chosen.path;
69
+ session.root = root; // adopt the app subdir as the effective project root
70
+ sessions.persist(session);
71
+ scan = await scanProject(root);
72
+ }
73
+ else if (cls.decision === 'disambiguate') {
74
+ return qaNeedsInput(NeedsInput.monorepoTarget(cls.choices.map((c) => c.path)), {
75
+ sessionId: session.id,
76
+ state: 'needs_input',
77
+ attempted: [...preAttempted, `identified ${cls.choices.length} plausible app targets — cannot pick safely`],
78
+ candidates: cls.choices
79
+ .slice(0, 6)
80
+ .map((c) => ({ path: c.path, rel: c.rel, framework: c.framework, score: c.score, reasons: c.reasons })),
81
+ });
82
+ }
83
+ else {
84
+ const empty = scan.readiness === 'blocked' && scan.missing.some((m) => /empty/i.test(m));
85
+ return qaFail(empty ? 'PROJECT_ROOT_EMPTY' : 'NOT_MOBILE_PROJECT', {
86
+ what: `No supported mobile project at ${root}`,
87
+ nextSteps: [
88
+ `Searched: ${disc.searchedLocations.slice(0, 8).join('; ') || '(root only)'}`,
89
+ 'Pass projectRoot="/abs/path/to/app" pointing at the app directory.',
90
+ ],
91
+ extra: { sessionId: session.id, scan, searchedLocations: disc.searchedLocations, state: 'blocked' },
92
+ });
93
+ }
94
+ }
95
+ else if (scan.monorepo) {
96
+ // The root is itself an app but also a monorepo: surface other sibling apps for disambiguation
97
+ // only when there are genuinely multiple recognized targets to choose between.
98
+ const disc = findMobileApps(root);
99
+ preAttempted.push(`detected a monorepo at the root; ran app discovery (${disc.candidates.length} candidate(s))`);
100
+ const others = disc.candidates.filter((c) => c.path !== root);
101
+ if (others.length >= 1) {
102
+ return qaNeedsInput(NeedsInput.monorepoTarget([root, ...others.map((c) => c.path)]), {
103
+ sessionId: session.id,
104
+ state: 'needs_input',
105
+ attempted: [...preAttempted, `the root app plus ${others.length} sibling app(s) are all plausible targets`],
106
+ candidates: disc.candidates
107
+ .slice(0, 6)
108
+ .map((c) => ({ path: c.path, rel: c.rel, framework: c.framework, score: c.score, reasons: c.reasons })),
109
+ });
110
+ }
111
+ wa('monorepo detected — proceeding with the resolved root; pass projectRoot/target to disambiguate if the wrong app is chosen');
112
+ }
113
+ // ---- 1c. pre-launch app map (Vision Gap Fix 1): load or build the durable STATIC app map
114
+ // BEFORE prepare/smoke so first-run decisions, exploration seeding, automation readiness,
115
+ // and the report are informed by the map at the time they are made — and so the map still
116
+ // exists when no device/artifact is available (every blocker below carries appMapUri). ----
117
+ let prelaunchMap;
118
+ let appMapUri;
119
+ try {
120
+ const at = new Date().toISOString();
121
+ const pre = ensurePrelaunchAppMap(root, {
122
+ at,
123
+ appIdentityHints: {
124
+ androidPackage: scan.framework === 'native-android' || scan.framework === 'expo' || scan.framework === 'bare-react-native' ? scan.appId : null,
125
+ iosBundleId: scan.framework === 'native-ios' ? scan.appId : null,
126
+ },
127
+ });
128
+ prelaunchMap = pre.map;
129
+ appMapUri = pre.appMapUri;
130
+ preAttempted.push(`${pre.rescanned ? 'built' : 'loaded'} static app map (${pre.reason}; ${pre.map.staticTopology.screens.length} static screen(s)) → ${pre.appMapUri}`);
131
+ if (pre.rescanned)
132
+ wa(`built static app map before launch (${pre.map.staticTopology.screens.length} screen(s)) — durable map drives first-run/exploration/report`);
133
+ }
134
+ catch (e) {
135
+ log('warn', 'test_this pre-launch app map failed', { err: String(e) });
136
+ }
137
+ const buildPref = buildIfNeeded !== false;
138
+ const steps = [];
139
+ // ---- 2. artifact ----
140
+ const art = await resolveArtifact({ projectRoot: root, platform: platform ?? 'any', allowOutsideRoot });
141
+ let artifactPlatform = art.best?.platform;
142
+ let needBuild = false;
143
+ if (art.failureCode === 'ARTIFACT_OUTSIDE_ROOT_REQUIRES_APPROVAL') {
144
+ const outside = art.candidates.find((c) => c.outsideRoot);
145
+ return qaNeedsInput(NeedsInput.artifactOutsideRoot(outside?.path ?? '(outside root)'), {
146
+ sessionId: session.id,
147
+ state: 'needs_input',
148
+ attempted: [...preAttempted, 'resolved candidate artifacts — the best one is outside the project root'],
149
+ candidates: art.candidates.slice(0, 3),
150
+ });
151
+ }
152
+ const isAab = art.best?.type === 'aab';
153
+ if (art.best) {
154
+ steps.push({ tool: '(resolved)', why: `Using ${art.best.type.toUpperCase()} ${art.best.path}`, status: 'satisfied' });
155
+ if (isAab) {
156
+ // Honest (P0.2): an .aab is not installable — it must be converted first.
157
+ wa('only a .aab is present; qa_test_this will convert it to an installable universal APK with bundletool');
158
+ steps.push({
159
+ tool: 'qa_test_this',
160
+ why: 'Convert the .aab to an installable universal APK before install',
161
+ args: { sessionId: session.id },
162
+ status: 'pending',
163
+ });
164
+ }
165
+ }
166
+ else {
167
+ // No artifact. Build from source if possible (effective-before-exhaustive, §2.1).
168
+ const targetPlatform = (platform ??
169
+ artifactPlatform ??
170
+ (scan.framework === 'native-ios' ? 'ios' : 'android'));
171
+ if (buildPref) {
172
+ const bp = await buildPlan({ projectRoot: root, platform: targetPlatform });
173
+ if (!bp.failureCode && bp.build && bp.toolchainOk) {
174
+ needBuild = true;
175
+ artifactPlatform = targetPlatform;
176
+ const expoAndroidLocalRun = scan.framework === 'expo' && targetPlatform === 'android';
177
+ wa(expoAndroidLocalRun
178
+ ? `no prebuilt APK - Expo Android local run selected (${bp.build.command}); first run can take several minutes, later JS/TS-only work should reuse Metro/dev-build caches`
179
+ : `no prebuilt artifact - will build ${targetPlatform} from source (${bp.build.command})`);
180
+ steps.push({
181
+ tool: 'qa_test_this',
182
+ why: expoAndroidLocalRun
183
+ ? 'No reusable APK/dev build found; run Expo Android local build/install/Metro path'
184
+ : `No artifact found; build ${targetPlatform} from source before install`,
185
+ args: { sessionId: session.id },
186
+ status: 'pending',
187
+ produces: ['artifact.path', 'artifact.appId'],
188
+ });
189
+ }
190
+ else {
191
+ return qaFail(bp.failureCode ?? 'NO_BUILD_ARTIFACT', {
192
+ what: `No artifact found under ${root}, and a build is not currently possible`,
193
+ nextSteps: [
194
+ ...(bp.missingToolchain.length ? [`Install: ${bp.missingToolchain.join(', ')}`] : []),
195
+ ...bp.notes,
196
+ `Searched: ${art.searchedLocations.slice(0, 6).join('; ')}`,
197
+ ...(appMapUri ? [`Static app map is still available: qa_app_map_read { projectRoot:"${root}" }`] : []),
198
+ ],
199
+ extra: { sessionId: session.id, buildPlan: bp, searchedLocations: art.searchedLocations, appMapUri, state: 'blocked' },
200
+ });
201
+ }
202
+ }
203
+ else {
204
+ return qaFail('NO_BUILD_ARTIFACT', {
205
+ what: `No artifact found under ${root}`,
206
+ nextSteps: [
207
+ 'Build the app with your normal build command, or pass an explicit artifact path.',
208
+ `Searched: ${art.searchedLocations.slice(0, 6).join('; ')}`,
209
+ ...(appMapUri ? [`Static app map is still available: qa_app_map_read { projectRoot:"${root}" }`] : []),
210
+ ],
211
+ extra: { sessionId: session.id, searchedLocations: art.searchedLocations, appMapUri, state: 'blocked' },
212
+ });
213
+ }
214
+ }
215
+ // ---- 3. target ----
216
+ // Public v1 is simulator-only. Real-device-only artifacts and explicit real-device requests
217
+ // are blocked instead of silently routing to non-v1 behavior.
218
+ const iosArtifactRealOnly = !!art.best &&
219
+ art.best.platform === 'ios' &&
220
+ Array.isArray(art.best.installableOn) &&
221
+ art.best.installableOn.length > 0 &&
222
+ art.best.installableOn.every((t) => t === 'ios-real');
223
+ if (preferRealDevice || iosArtifactRealOnly) {
224
+ return qaFail('BACKEND_UNSUPPORTED', {
225
+ what: 'Swipium 1.0.0 supports Android Emulator and iOS Simulator targets only.',
226
+ nextSteps: [
227
+ 'Use an Android emulator build or an iOS Simulator .app for v1.',
228
+ 'Real-device workflows are outside the public v1 scope.',
229
+ ],
230
+ extra: { sessionId: session.id, appMapUri, state: 'blocked' },
231
+ });
232
+ }
233
+ const [adbPresent, simPresent] = await Promise.all([which('adb'), simctlAvailable()]);
234
+ const [onlineAll, avds, sims] = await Promise.all([
235
+ adbPresent ? adbDevices() : Promise.resolve([]),
236
+ adbPresent ? listAvds() : Promise.resolve([]),
237
+ simPresent ? listSimulators() : Promise.resolve([]),
238
+ ]);
239
+ const online = onlineAll.filter(isAndroidEmulatorSerial);
240
+ if (device && onlineAll.includes(device) && !isAndroidEmulatorSerial(device)) {
241
+ return qaFail('BACKEND_UNSUPPORTED', {
242
+ what: `Android target "${device}" appears to be a real device. Swipium 1.0.0 supports Android Emulator only.`,
243
+ nextSteps: ['Start or create an Android Emulator, then retry without a real-device serial.'],
244
+ extra: { sessionId: session.id, appMapUri, state: 'blocked' },
245
+ });
246
+ }
247
+ const tInputs = {
248
+ requestedPlatform: platform,
249
+ requestedDevice: device,
250
+ preferRealDevice: false,
251
+ artifactPlatform,
252
+ artifactInstallTargets: art.best?.installableOn,
253
+ android: { online, avds },
254
+ ios: {
255
+ bootedSimulators: sims.filter((s) => s.state === 'Booted').map((s) => ({ udid: s.udid, name: s.name })),
256
+ availableSimulators: sims.filter((s) => s.state !== 'Booted').map((s) => ({ udid: s.udid, name: s.name })),
257
+ realDevices: [],
258
+ },
259
+ };
260
+ const target = planTarget(tInputs);
261
+ if (target.blocked) {
262
+ return qaFail(target.blocked.failureCode, {
263
+ what: target.blocked.detail,
264
+ extra: { sessionId: session.id, targetPlan: target, workaroundsAttempted: session.workarounds, appMapUri, state: 'blocked' },
265
+ });
266
+ }
267
+ if (target.willBoot)
268
+ wa(`no online ${selToPlatform[target.selected]} target — will boot ${target.bootTarget}`);
269
+ const isAndroid = selToPlatform[target.selected] === 'android';
270
+ const isIosReal = false;
271
+ const requiresStructuredIos = !isAndroid &&
272
+ !isIosReal &&
273
+ (goalFlags.explore || goalFlags.generateSuite || goalFlags.goal === 'test_login' || goalFlags.goal === 'create_automation_suite');
274
+ if (requiresStructuredIos) {
275
+ const wdaConfig = loadWdaConfig(root);
276
+ const wda = await checkWda(wdaConfig.url, 1500);
277
+ if (!wda.reachable || !wda.ready) {
278
+ return qaFail('WDA_UNREACHABLE', {
279
+ what: `iOS ${goalFlags.goal} requires a structured WebDriverAgent backend, but WDA is not ready at ${wdaConfig.url}`,
280
+ nextSteps: [
281
+ 'Run qa_wda { action:"doctor" } to inspect WDA setup.',
282
+ 'Run qa_wda { action:"build" } and qa_wda { action:"start" }, or attach an external WDA URL.',
283
+ ...(appMapUri ? [`Static app map is still available: qa_app_map_read { projectRoot:"${root}" }`] : []),
284
+ ],
285
+ extra: {
286
+ sessionId: session.id,
287
+ state: 'blocked',
288
+ goal: goalFlags.goal,
289
+ target,
290
+ wda: { config: { url: wdaConfig.url, mode: wdaConfig.mode, derivedDataPath: wdaConfig.derivedDataPath }, status: wda },
291
+ appMapUri,
292
+ },
293
+ });
294
+ }
295
+ }
296
+ // ---- 4. auth (be effective: proceed pre-login; surface the question as optional) ----
297
+ let optionalQuestion;
298
+ if (scan.likelyAuth) {
299
+ wa('app likely has a login — will test pre-login coverage; authenticated flows are blocked until credentials are provided');
300
+ optionalQuestion = NeedsInput.credentials('Authenticated workflows need a test account.');
301
+ }
302
+ // ---- 5. assemble the ordered plan ----
303
+ // Effective installable artifact path: a converted universal APK for an .aab, else the artifact.
304
+ const effectiveApk = art.best ? (isAab ? universalApkCachePath(root, art.best.path) : art.best.path) : undefined;
305
+ // Milestone E: when a build is pending, the artifact does not exist yet — use SYMBOLIC refs
306
+ // (${artifact.path}/${artifact.appId}) and mark the dependency, never `undefined` args.
307
+ const prepArgs = { sessionId: session.id };
308
+ if (isAndroid) {
309
+ prepArgs.apk = needBuild ? '${artifact.path}' : effectiveApk;
310
+ if (target.device)
311
+ prepArgs.device = target.device;
312
+ if (target.willBoot && target.bootTarget)
313
+ prepArgs.avd = target.bootTarget;
314
+ }
315
+ else {
316
+ prepArgs.app = needBuild ? '${artifact.path}' : art.best?.path;
317
+ prepArgs.bundleId = needBuild ? '${artifact.appId}' : (art.best?.appId ?? undefined);
318
+ prepArgs.simulator = target.device;
319
+ prepArgs.attachWda = 'auto';
320
+ if (target.device)
321
+ prepArgs.device = target.device;
322
+ }
323
+ if (isAndroid && scan.metroNeed === 'likely')
324
+ wa('debug RN/Expo build likely needs Metro/dev server serving before launch');
325
+ steps.push({
326
+ tool: isAndroid ? 'qa_prepare_target' : 'qa_prepare_ios_target',
327
+ why: `Install + launch on ${target.selected}`,
328
+ args: prepArgs,
329
+ status: 'pending',
330
+ ...(needBuild ? { requires: ['artifact.path', 'artifact.appId'] } : {}),
331
+ });
332
+ steps.push({
333
+ tool: 'qa_smoke',
334
+ why: 'Run a guardrail/smoke pass and capture evidence',
335
+ args: { sessionId: session.id, profile: scan.recommendedProfile },
336
+ status: 'pending',
337
+ });
338
+ steps.push({
339
+ tool: 'qa_report',
340
+ why: 'Summarize what was tested/blocked with evidence',
341
+ args: { sessionId: session.id },
342
+ status: 'pending',
343
+ });
344
+ steps.push({
345
+ tool: 'qa_generate',
346
+ why: 'Optional: turn this run into a durable POM suite',
347
+ args: { sessionId: session.id, target: 'suite' },
348
+ status: 'pending',
349
+ });
350
+ const nextAction = steps.find((s) => s.status === 'pending') ?? null;
351
+ const state = 'ready';
352
+ // Choice explanations for the uniform envelope (Dev 2 owns the source data; Dev 1 the shape).
353
+ const artifactChoice = art.best
354
+ ? {
355
+ path: art.best.path,
356
+ why: `${art.best.type.toUpperCase()} selected${art.best.buildType ? ` (${art.best.buildType})` : ''}`,
357
+ alternatives: art.candidates
358
+ .filter((c) => c.path !== art.best.path)
359
+ .slice(0, 4)
360
+ .map((c) => c.path),
361
+ }
362
+ : needBuild
363
+ ? { why: 'No prebuilt artifact — building from source', alternatives: [] }
364
+ : null;
365
+ const targetChoice = target.selected
366
+ ? { target: `${target.selected}${target.device ? ` (${target.device})` : ''}`, why: target.reason, alternatives: [] }
367
+ : null;
368
+ // ---- EXECUTE / INTERACTIVE modes (P0.1): actually run the path as a job ----
369
+ if (mode === 'execute' || mode === 'interactive') {
370
+ return runExecuteMode(server, sessions, session, {
371
+ mode,
372
+ scan,
373
+ art,
374
+ target,
375
+ isAndroid,
376
+ isIosReal,
377
+ isAab,
378
+ needBuild,
379
+ effectiveApk,
380
+ platform,
381
+ goal: goalFlags.goal,
382
+ goalText,
383
+ releaseGate: goalFlags.releaseGate,
384
+ requiredOutputs: goalFlags.requiredOutputs,
385
+ generateSuite: goalFlags.generateSuite,
386
+ explore: goalFlags.explore,
387
+ stopOnNeedsInput: goalFlags.stopOnNeedsInput,
388
+ artifactChoice,
389
+ targetChoice,
390
+ waitForCompletion: !!waitForCompletion,
391
+ timeoutMs,
392
+ consentId,
393
+ approve,
394
+ optionalQuestion,
395
+ workaroundLog: () => session.workarounds,
396
+ prelaunchMap,
397
+ appMapUri,
398
+ });
399
+ }
400
+ const summary = `🚀 test-this plan for ${root} (framework=${scan.framework}, session ${session.id})\n` +
401
+ `target: ${target.selected}${target.device ? ` (${target.device})` : ''} — ${target.reason}\n` +
402
+ (art.best
403
+ ? `artifact: ${art.best.type.toUpperCase()} ${art.best.path}`
404
+ : `artifact: none — ${needBuild ? 'will build from source' : 'blocked'}`) +
405
+ '\n' +
406
+ `plan:\n${steps.map((s, i) => ` ${i + 1}. [${s.status === 'satisfied' ? '✓' : ' '}] ${s.tool} — ${s.why}`).join('\n')}\n` +
407
+ (nextAction ? `→ next: call ${nextAction.tool} ${JSON.stringify(nextAction.args ?? {})}\n` : '') +
408
+ (session.workarounds.length ? `workarounds: ${session.workarounds.length} (see workaroundsAttempted)\n` : '') +
409
+ (optionalQuestion ? `note: ${optionalQuestion.question}` : '');
410
+ return qaOk({
411
+ sessionId: session.id,
412
+ state,
413
+ goal: goalFlags.goal,
414
+ framework: scan.framework,
415
+ appMapUri,
416
+ appIdentity: prelaunchMap?.appIdentity,
417
+ target,
418
+ targetChoice,
419
+ artifact: art.best ?? null,
420
+ artifactChoice,
421
+ needBuild,
422
+ recommendedProfile: scan.recommendedProfile,
423
+ plan: steps,
424
+ nextAction,
425
+ workaroundsAttempted: session.workarounds,
426
+ optionalQuestion: optionalQuestion ?? null,
427
+ searchedLocations: art.best ? undefined : art.searchedLocations,
428
+ }, summary);
429
+ }
430
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/orchestration/testThis/plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ // qa_test_this terminal-state assembly — every terminal state (completed OR blocked) generates a
2
+ // report artifact (Milestone B) and lands the uniform TerminalEnvelope on the job result, so the
3
+ // outcome is summarizable from structured output without log parsing.
4
+ import { buildTerminalEnvelope, typedBlockerFromCode } from '../envelope.js';
5
+ import { generateSessionReport } from '../../services/report.js';
6
+ import { startProgress } from '../../session/progress.js';
7
+ import { log } from '../../lib/logger.js';
8
+ /** Every terminal state — completed OR blocked — generates a report artifact (Milestone B). */
9
+ export function createFinisher(ctx) {
10
+ const { sessions, session, job, a, attempted, artifacts, upd } = ctx;
11
+ return async (state, failureCode, summary, extra = {}) => {
12
+ if (a.testThisPlanMutation) {
13
+ sessions.recordMutation(session, {
14
+ tool: 'qa_test_this',
15
+ action: 'test_this_plan',
16
+ risk: a.testThisPlanMutation.risk,
17
+ target: a.testThisPlanMutation.affects,
18
+ consent: a.mutationConsent,
19
+ status: state === 'completed' ? 'executed' : 'blocked',
20
+ detail: failureCode,
21
+ });
22
+ }
23
+ const reportProg = startProgress(sessions, session, job, 'reporting', { statusText: 'Generating the session report.' });
24
+ let reportUri;
25
+ let manifestUri;
26
+ let appVerdict;
27
+ let coverageVerdict;
28
+ let toolVerdict;
29
+ const suiteForReport = ctx.getSuiteForReport();
30
+ const suiteOpt = suiteForReport
31
+ ? {
32
+ generated: !suiteForReport.skipped,
33
+ skippedReason: suiteForReport.skippedReason,
34
+ name: suiteForReport.name,
35
+ written: suiteForReport.written,
36
+ compiledFlows: suiteForReport.compiledFlows,
37
+ suiteRunnable: suiteForReport.suiteRunnable,
38
+ readinessLabels: suiteForReport.readinessLabels,
39
+ }
40
+ : undefined;
41
+ try {
42
+ const r = await generateSessionReport(sessions, session, {
43
+ format: 'summary',
44
+ includeCurrentDump: true,
45
+ suite: suiteOpt,
46
+ });
47
+ reportUri = r.reportUri;
48
+ manifestUri = r.manifestUri;
49
+ if (!artifacts.includes(reportUri))
50
+ artifacts.push(reportUri);
51
+ appVerdict = r.report.appVerdict;
52
+ coverageVerdict = r.report.coverageVerdict;
53
+ toolVerdict = r.report.toolVerdict;
54
+ }
55
+ catch (e) {
56
+ log('warn', 'test_this report generation failed', { err: String(e) });
57
+ }
58
+ reportProg.done('Report ready.');
59
+ const native = session.findings.some((f) => f.layer === 'native' && f.severity === 'high') ? 'error' : 'OK';
60
+ const app = session.findings.some((f) => f.layer === 'app' && f.severity === 'high')
61
+ ? 'error'
62
+ : session.findings.some((f) => f.layer === 'app' && f.severity === 'medium')
63
+ ? 'degraded'
64
+ : 'OK';
65
+ // The report already exists — point the agent AT it (fetch/open), not back at qa_report.
66
+ const nextRecommendedAction = state === 'completed'
67
+ ? reportUri
68
+ ? {
69
+ tool: 'qa_get_artifact',
70
+ args: { uri: reportUri },
71
+ why: `Open the generated report (${reportUri})`,
72
+ }
73
+ : { tool: 'qa_report', args: { sessionId: session.id }, why: 'Generate the report' }
74
+ : { tool: 'qa_explain_blocker', args: { failureCode: failureCode ?? 'UNKNOWN' }, why: 'Understand the blocker and how to fix it' };
75
+ // Uniform terminal envelope (Milestone B): summarizable from structured output, no log parsing.
76
+ const envelope = buildTerminalEnvelope({
77
+ state,
78
+ sessionId: session.id,
79
+ jobId: job.jobId,
80
+ summary,
81
+ attempted,
82
+ workaroundsAttempted: session.workarounds,
83
+ artifactChoice: a.artifactChoice,
84
+ targetChoice: a.targetChoice,
85
+ verdicts: {
86
+ ...(appVerdict ? { app: appVerdict } : {}),
87
+ ...(coverageVerdict ? { coverage: coverageVerdict } : {}),
88
+ ...(toolVerdict ? { tool: toolVerdict } : {}),
89
+ },
90
+ blockers: state === 'completed' || !failureCode ? [] : [typedBlockerFromCode(failureCode)],
91
+ reportUri: reportUri ?? null,
92
+ nextRecommendedAction,
93
+ });
94
+ upd({
95
+ status: state === 'completed' ? 'done' : 'failed',
96
+ progress: state,
97
+ result: {
98
+ ...envelope,
99
+ // Pre-launch static app map URI is present in EVERY terminal state — including blocked (Fix 1).
100
+ appMapUri: a.appMapUri,
101
+ goal: a.goal,
102
+ requiredOutputs: a.requiredOutputs,
103
+ releaseGateRequested: a.releaseGate,
104
+ failureCode,
105
+ artifacts,
106
+ manifestUri,
107
+ health: { native, app },
108
+ inputsProvided: session.inputs.map((i) => i.varName),
109
+ notes: session.notes.length,
110
+ findings: session.findings.length,
111
+ ...extra,
112
+ },
113
+ resultText: summary + (reportUri ? `\nreport: ${reportUri}` : ''),
114
+ endedAt: Date.now(),
115
+ });
116
+ };
117
+ }
118
+ //# sourceMappingURL=terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../src/orchestration/testThis/terminal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ // Shared types for the qa_test_this orchestration state machine (split out of
2
+ // src/tools/testThis.ts). Pure declarations + tiny helpers — no side effects.
3
+ export const selToPlatform = {
4
+ 'android-emulator': 'android',
5
+ 'android-real': 'android',
6
+ 'ios-simulator': 'ios',
7
+ 'ios-real': 'ios',
8
+ };
9
+ export function isAndroidEmulatorSerial(serial) {
10
+ return /^emulator-\d+/.test(serial);
11
+ }
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/orchestration/testThis/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8EAA8E;AAyB9E,MAAM,CAAC,MAAM,aAAa,GAA2C;IACnE,kBAAkB,EAAE,SAAS;IAC7B,cAAc,EAAE,SAAS;IACzB,eAAe,EAAE,KAAK;IACtB,UAAU,EAAE,KAAK;CAClB,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,MAAc;IACpD,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/plan/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/plan/plan.ts"],"names":[],"mappings":"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"}