swipium 1.5.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 (498) hide show
  1. package/CHANGELOG.md +171 -0
  2. package/README.md +173 -280
  3. package/THREAT_MODEL.md +223 -47
  4. package/dist/appMap/automationLink.js +30 -27
  5. package/dist/appMap/automationLink.js.map +1 -1
  6. package/dist/appMap/build.js +47 -21
  7. package/dist/appMap/build.js.map +1 -1
  8. package/dist/appMap/codeIndex.js +2 -2
  9. package/dist/appMap/codeIndex.js.map +1 -1
  10. package/dist/appMap/featureIndex.js +3 -3
  11. package/dist/appMap/featureIndex.js.map +1 -1
  12. package/dist/appMap/featureModel.js +2 -2
  13. package/dist/appMap/featureModel.js.map +1 -1
  14. package/dist/appMap/firstRunApply.js +2 -2
  15. package/dist/appMap/firstRunApply.js.map +1 -1
  16. package/dist/appMap/issues.js +10 -10
  17. package/dist/appMap/issues.js.map +1 -1
  18. package/dist/appMap/migrations.js +5 -5
  19. package/dist/appMap/migrations.js.map +1 -1
  20. package/dist/appMap/prelaunch.js +2 -2
  21. package/dist/appMap/prelaunch.js.map +1 -1
  22. package/dist/appMap/projectRegistry.js +77 -11
  23. package/dist/appMap/projectRegistry.js.map +1 -1
  24. package/dist/appMap/provenance.js +2 -2
  25. package/dist/appMap/provenance.js.map +1 -1
  26. package/dist/appMap/query.js +2 -2
  27. package/dist/appMap/query.js.map +1 -1
  28. package/dist/appMap/runtimeMerge.js +3 -3
  29. package/dist/appMap/runtimeMerge.js.map +1 -1
  30. package/dist/appMap/schema.js +1 -1
  31. package/dist/appMap/schema.js.map +1 -1
  32. package/dist/appMap/screenMatch.js +1 -1
  33. package/dist/appMap/screenMatch.js.map +1 -1
  34. package/dist/appMap/staticScan.js +17 -17
  35. package/dist/appMap/staticScan.js.map +1 -1
  36. package/dist/appMap/store.js +55 -7
  37. package/dist/appMap/store.js.map +1 -1
  38. package/dist/appMap/tsAstScan.js +3 -3
  39. package/dist/appMap/tsAstScan.js.map +1 -1
  40. package/dist/artifacts/bundletool.js +5 -5
  41. package/dist/artifacts/bundletool.js.map +1 -1
  42. package/dist/artifacts/resolve.js +10 -10
  43. package/dist/artifacts/resolve.js.map +1 -1
  44. package/dist/automation/capabilities.js +3 -3
  45. package/dist/automation/capabilities.js.map +1 -1
  46. package/dist/automation/gestures.js +1 -1
  47. package/dist/automation/gestures.js.map +1 -1
  48. package/dist/automation/plan.js +7 -7
  49. package/dist/automation/plan.js.map +1 -1
  50. package/dist/automation/report.js +3 -3
  51. package/dist/automation/report.js.map +1 -1
  52. package/dist/automation/selectors.js +14 -25
  53. package/dist/automation/selectors.js.map +1 -1
  54. package/dist/automation/types.js +1 -1
  55. package/dist/automation/types.js.map +1 -1
  56. package/dist/automation/waits.js +5 -5
  57. package/dist/automation/waits.js.map +1 -1
  58. package/dist/automation/webview.js +2 -2
  59. package/dist/automation/webview.js.map +1 -1
  60. package/dist/automationGen/appiumModel.js +13 -7
  61. package/dist/automationGen/appiumModel.js.map +1 -1
  62. package/dist/automationGen/ciEmitter.js +5 -5
  63. package/dist/automationGen/ciEmitter.js.map +1 -1
  64. package/dist/automationGen/identifiers.js +224 -0
  65. package/dist/automationGen/identifiers.js.map +1 -0
  66. package/dist/automationGen/jsEmitter.js +265 -106
  67. package/dist/automationGen/jsEmitter.js.map +1 -1
  68. package/dist/automationGen/packagePatch.js +2 -2
  69. package/dist/automationGen/packagePatch.js.map +1 -1
  70. package/dist/automationGen/platformResolve.js +36 -0
  71. package/dist/automationGen/platformResolve.js.map +1 -0
  72. package/dist/automationGen/projectProfile.js +71 -26
  73. package/dist/automationGen/projectProfile.js.map +1 -1
  74. package/dist/automationGen/pythonEmitter.js +276 -105
  75. package/dist/automationGen/pythonEmitter.js.map +1 -1
  76. package/dist/automationGen/readmeEmitter.js +7 -6
  77. package/dist/automationGen/readmeEmitter.js.map +1 -1
  78. package/dist/{tools/automationGenerate.js → automationGen/run.js} +72 -113
  79. package/dist/automationGen/run.js.map +1 -0
  80. package/dist/automationGen/suitePlan.js +6 -4
  81. package/dist/automationGen/suitePlan.js.map +1 -1
  82. package/dist/automationGen/validation.js +20 -8
  83. package/dist/automationGen/validation.js.map +1 -1
  84. package/dist/build/parseBuildLog.js +2 -2
  85. package/dist/build/parseBuildLog.js.map +1 -1
  86. package/dist/build/plan.js +7 -7
  87. package/dist/build/plan.js.map +1 -1
  88. package/dist/ci/preflight.js +13 -4
  89. package/dist/ci/preflight.js.map +1 -1
  90. package/dist/cli/gc.js +74 -0
  91. package/dist/cli/gc.js.map +1 -0
  92. package/dist/cli/init.js +217 -26
  93. package/dist/cli/init.js.map +1 -1
  94. package/dist/cli/main.js +50 -0
  95. package/dist/cli/main.js.map +1 -0
  96. package/dist/cli/report.js +218 -0
  97. package/dist/cli/report.js.map +1 -0
  98. package/dist/cli/scan.js +35 -14
  99. package/dist/cli/scan.js.map +1 -1
  100. package/dist/cli/suite.js +6 -6
  101. package/dist/cli/suite.js.map +1 -1
  102. package/dist/cli/verify.js +7 -7
  103. package/dist/cli/verify.js.map +1 -1
  104. package/dist/consent/consent.js +162 -5
  105. package/dist/consent/consent.js.map +1 -1
  106. package/dist/context/detect.js +45 -14
  107. package/dist/context/detect.js.map +1 -1
  108. package/dist/context/findApps.js +6 -6
  109. package/dist/context/findApps.js.map +1 -1
  110. package/dist/context/projectRoot.js +174 -19
  111. package/dist/context/projectRoot.js.map +1 -1
  112. package/dist/context/scan.js +1 -1
  113. package/dist/context/scan.js.map +1 -1
  114. package/dist/core/capabilityGroups.js +90 -0
  115. package/dist/core/capabilityGroups.js.map +1 -0
  116. package/dist/core/target.js +3 -3
  117. package/dist/core/target.js.map +1 -1
  118. package/dist/core/targetPlan.js +65 -62
  119. package/dist/core/targetPlan.js.map +1 -1
  120. package/dist/drivers/DirectDriver.js +300 -36
  121. package/dist/drivers/DirectDriver.js.map +1 -1
  122. package/dist/drivers/SimctlDriver.js +120 -7
  123. package/dist/drivers/SimctlDriver.js.map +1 -1
  124. package/dist/drivers/WdaDriver.js +350 -50
  125. package/dist/drivers/WdaDriver.js.map +1 -1
  126. package/dist/explore/candidates.js +2 -2
  127. package/dist/explore/candidates.js.map +1 -1
  128. package/dist/explore/graph.js +5 -5
  129. package/dist/explore/graph.js.map +1 -1
  130. package/dist/explore/policy.js +5 -5
  131. package/dist/explore/policy.js.map +1 -1
  132. package/dist/explore/runner.js +301 -284
  133. package/dist/explore/runner.js.map +1 -1
  134. package/dist/explore/signatures.js +1 -1
  135. package/dist/featureTesting/executionBootstrap.js +29 -30
  136. package/dist/featureTesting/executionBootstrap.js.map +1 -1
  137. package/dist/featureTesting/featureMap.js +2 -2
  138. package/dist/featureTesting/featureMap.js.map +1 -1
  139. package/dist/featureTesting/featureScope.js +12 -12
  140. package/dist/featureTesting/featureScope.js.map +1 -1
  141. package/dist/featureTesting/mapFeatureScope.js +7 -7
  142. package/dist/featureTesting/mapFeatureScope.js.map +1 -1
  143. package/dist/featureTesting/objectiveModel.js +10 -10
  144. package/dist/featureTesting/objectiveModel.js.map +1 -1
  145. package/dist/featureTesting/resultMerge.js +6 -6
  146. package/dist/featureTesting/resultMerge.js.map +1 -1
  147. package/dist/featureTesting/sources.js +4 -4
  148. package/dist/featureTesting/sources.js.map +1 -1
  149. package/dist/featureTesting/suiteBridge.js +1 -1
  150. package/dist/featureTesting/suiteBridge.js.map +1 -1
  151. package/dist/featureTesting/synonyms.js +1 -1
  152. package/dist/featureTesting/synonyms.js.map +1 -1
  153. package/dist/featureTesting/testCaseFactory.js +11 -11
  154. package/dist/featureTesting/testCaseFactory.js.map +1 -1
  155. package/dist/featureTesting/testPlan.js +3 -3
  156. package/dist/featureTesting/testPlan.js.map +1 -1
  157. package/dist/firstRun/authStateMachine.js +1 -1
  158. package/dist/firstRun/authStateMachine.js.map +1 -1
  159. package/dist/firstRun/classifyScreen.js +5 -5
  160. package/dist/firstRun/classifyScreen.js.map +1 -1
  161. package/dist/firstRun/firstRunPlanner.js +11 -11
  162. package/dist/firstRun/firstRunPlanner.js.map +1 -1
  163. package/dist/firstRun/firstRunRunner.js +8 -8
  164. package/dist/firstRun/firstRunRunner.js.map +1 -1
  165. package/dist/firstRun/generatedDataPolicy.js +9 -9
  166. package/dist/firstRun/generatedDataPolicy.js.map +1 -1
  167. package/dist/firstRun/inputPlanner.js +5 -5
  168. package/dist/firstRun/inputPlanner.js.map +1 -1
  169. package/dist/firstRun/onboardingStateMachine.js +1 -1
  170. package/dist/firstRun/onboardingStateMachine.js.map +1 -1
  171. package/dist/firstRun/paywallPolicy.js +3 -3
  172. package/dist/firstRun/paywallPolicy.js.map +1 -1
  173. package/dist/firstRun/types.js +1 -1
  174. package/dist/firstRun/types.js.map +1 -1
  175. package/dist/fixtures/catalog.js +33 -3
  176. package/dist/fixtures/catalog.js.map +1 -1
  177. package/dist/fixtures/load.js +50 -0
  178. package/dist/fixtures/load.js.map +1 -0
  179. package/dist/flows/discover.js +2 -2
  180. package/dist/flows/discover.js.map +1 -1
  181. package/dist/flows/generate.js +20 -10
  182. package/dist/flows/generate.js.map +1 -1
  183. package/dist/flows/pack.js +3 -3
  184. package/dist/flows/pack.js.map +1 -1
  185. package/dist/flows/paths.js +57 -0
  186. package/dist/flows/paths.js.map +1 -0
  187. package/dist/flows/repair.js +111 -23
  188. package/dist/flows/repair.js.map +1 -1
  189. package/dist/flows/run.js +153 -57
  190. package/dist/flows/run.js.map +1 -1
  191. package/dist/flows/schema.js +50 -5
  192. package/dist/flows/schema.js.map +1 -1
  193. package/dist/flows/seedExec.js +4 -4
  194. package/dist/flows/seedExec.js.map +1 -1
  195. package/dist/flows/templates.js +5 -5
  196. package/dist/index.js +50 -8
  197. package/dist/index.js.map +1 -1
  198. package/dist/issues/classify.js +16 -16
  199. package/dist/issues/classify.js.map +1 -1
  200. package/dist/issues/fingerprint.js +24 -4
  201. package/dist/issues/fingerprint.js.map +1 -1
  202. package/dist/issues/index.js +94 -31
  203. package/dist/issues/index.js.map +1 -1
  204. package/dist/issues/metrics.js +4 -4
  205. package/dist/issues/metrics.js.map +1 -1
  206. package/dist/issues/recurrence.js +35 -8
  207. package/dist/issues/recurrence.js.map +1 -1
  208. package/dist/issues/report.js +4 -4
  209. package/dist/issues/report.js.map +1 -1
  210. package/dist/issues/reportBridge.js +4 -4
  211. package/dist/issues/reportBridge.js.map +1 -1
  212. package/dist/issues/schema.js +2 -2
  213. package/dist/issues/schema.js.map +1 -1
  214. package/dist/issues/sourceRevision.js +2 -2
  215. package/dist/issues/sourceRevision.js.map +1 -1
  216. package/dist/issues/store.js +110 -32
  217. package/dist/issues/store.js.map +1 -1
  218. package/dist/lib/abortScope.js +48 -0
  219. package/dist/lib/abortScope.js.map +1 -0
  220. package/dist/lib/android.js +75 -7
  221. package/dist/lib/android.js.map +1 -1
  222. package/dist/lib/coordSpace.js +1 -1
  223. package/dist/lib/coordSpace.js.map +1 -1
  224. package/dist/lib/device.js +32 -7
  225. package/dist/lib/device.js.map +1 -1
  226. package/dist/lib/gestures.js +141 -0
  227. package/dist/lib/gestures.js.map +1 -0
  228. package/dist/lib/gitignore.js +4 -3
  229. package/dist/lib/gitignore.js.map +1 -1
  230. package/dist/lib/image.js +1 -1
  231. package/dist/lib/image.js.map +1 -1
  232. package/dist/lib/lockfile.js +370 -31
  233. package/dist/lib/lockfile.js.map +1 -1
  234. package/dist/lib/needsInput.js +3 -3
  235. package/dist/lib/needsInput.js.map +1 -1
  236. package/dist/lib/png.js +2 -2
  237. package/dist/lib/png.js.map +1 -1
  238. package/dist/lib/redact.js +170 -9
  239. package/dist/lib/redact.js.map +1 -1
  240. package/dist/lib/result.js +79 -10
  241. package/dist/lib/result.js.map +1 -1
  242. package/dist/lib/schemaHash.js +3 -3
  243. package/dist/lib/schemaHash.js.map +1 -1
  244. package/dist/lib/sensitive.js +3 -2
  245. package/dist/lib/sensitive.js.map +1 -1
  246. package/dist/lib/simctl.js +3 -3
  247. package/dist/lib/simctl.js.map +1 -1
  248. package/dist/lib/spawn.js +52 -10
  249. package/dist/lib/spawn.js.map +1 -1
  250. package/dist/lib/toolAnnotations.js +114 -0
  251. package/dist/lib/toolAnnotations.js.map +1 -0
  252. package/dist/lib/wda.js +294 -15
  253. package/dist/lib/wda.js.map +1 -1
  254. package/dist/mobileAudit/checks.js +12 -12
  255. package/dist/mobileAudit/checks.js.map +1 -1
  256. package/dist/mobileAudit/evidence.js +4 -4
  257. package/dist/mobileAudit/evidence.js.map +1 -1
  258. package/dist/mobileAudit/profiles.js +1 -1
  259. package/dist/mobileAudit/profiles.js.map +1 -1
  260. package/dist/mobileAudit/results.js +3 -3
  261. package/dist/mobileAudit/results.js.map +1 -1
  262. package/dist/mobileAudit/runner.js +72 -18
  263. package/dist/mobileAudit/runner.js.map +1 -1
  264. package/dist/oracle/auth.js +1 -1
  265. package/dist/oracle/auth.js.map +1 -1
  266. package/dist/oracle/failures.js +219 -36
  267. package/dist/oracle/failures.js.map +1 -1
  268. package/dist/oracle/health.js +63 -17
  269. package/dist/oracle/health.js.map +1 -1
  270. package/dist/oracle/locator.js +13 -13
  271. package/dist/oracle/locator.js.map +1 -1
  272. package/dist/oracle/record.js +3 -3
  273. package/dist/oracle/record.js.map +1 -1
  274. package/dist/orchestration/envelope.js +2 -2
  275. package/dist/orchestration/envelope.js.map +1 -1
  276. package/dist/orchestration/goal.js +4 -4
  277. package/dist/orchestration/goal.js.map +1 -1
  278. package/dist/orchestration/testThis/execute.js +62 -21
  279. package/dist/orchestration/testThis/execute.js.map +1 -1
  280. package/dist/orchestration/testThis/pipeline.js +119 -30
  281. package/dist/orchestration/testThis/pipeline.js.map +1 -1
  282. package/dist/orchestration/testThis/plan.js +162 -73
  283. package/dist/orchestration/testThis/plan.js.map +1 -1
  284. package/dist/orchestration/testThis/sessionIntent.js +72 -0
  285. package/dist/orchestration/testThis/sessionIntent.js.map +1 -0
  286. package/dist/orchestration/testThis/terminal.js +34 -16
  287. package/dist/orchestration/testThis/terminal.js.map +1 -1
  288. package/dist/orchestration/testThis/types.js +1 -1
  289. package/dist/orchestration/testThis/types.js.map +1 -1
  290. package/dist/plan/plan.js +9 -9
  291. package/dist/plan/plan.js.map +1 -1
  292. package/dist/prompts/index.js +22 -22
  293. package/dist/prompts/index.js.map +1 -1
  294. package/dist/report/export.js +392 -37
  295. package/dist/report/export.js.map +1 -1
  296. package/dist/report/findingsDedupe.js +41 -0
  297. package/dist/report/findingsDedupe.js.map +1 -0
  298. package/dist/report/policy.js +7 -4
  299. package/dist/report/policy.js.map +1 -1
  300. package/dist/report/qaLevel.js +8 -8
  301. package/dist/report/qaLevel.js.map +1 -1
  302. package/dist/report/sarifSources.js +160 -0
  303. package/dist/report/sarifSources.js.map +1 -0
  304. package/dist/report/summary.js +2 -2
  305. package/dist/report/summary.js.map +1 -1
  306. package/dist/report/testCatalog.js +4 -4
  307. package/dist/report/testCatalog.js.map +1 -1
  308. package/dist/report/toolHealth.js +124 -0
  309. package/dist/report/toolHealth.js.map +1 -0
  310. package/dist/server.js +472 -45
  311. package/dist/server.js.map +1 -1
  312. package/dist/services/automationGenerate.js +8 -2
  313. package/dist/services/automationGenerate.js.map +1 -1
  314. package/dist/services/build.js +2 -2
  315. package/dist/services/build.js.map +1 -1
  316. package/dist/{tools → services}/flowGenerate.js +29 -13
  317. package/dist/services/flowGenerate.js.map +1 -0
  318. package/dist/services/preflight.js +4 -4
  319. package/dist/services/preflight.js.map +1 -1
  320. package/dist/services/prepareAndroid.js +46 -8
  321. package/dist/services/prepareAndroid.js.map +1 -1
  322. package/dist/services/prepareIos.js +24 -9
  323. package/dist/services/prepareIos.js.map +1 -1
  324. package/dist/services/report.js +100 -45
  325. package/dist/services/report.js.map +1 -1
  326. package/dist/services/smoke.js +32 -16
  327. package/dist/services/smoke.js.map +1 -1
  328. package/dist/services/suiteGenerate.js +28 -3
  329. package/dist/services/suiteGenerate.js.map +1 -1
  330. package/dist/services/testSuiteKnowledge.js +40 -27
  331. package/dist/services/testSuiteKnowledge.js.map +1 -1
  332. package/dist/session/attach.js +270 -6
  333. package/dist/session/attach.js.map +1 -1
  334. package/dist/session/processRegistry.js +317 -48
  335. package/dist/session/processRegistry.js.map +1 -1
  336. package/dist/session/progress.js +1 -1
  337. package/dist/session/retention.js +201 -0
  338. package/dist/session/retention.js.map +1 -0
  339. package/dist/session/store.js +275 -48
  340. package/dist/session/store.js.map +1 -1
  341. package/dist/snapshot/overlays.js +53 -8
  342. package/dist/snapshot/overlays.js.map +1 -1
  343. package/dist/snapshot/parse.js +28 -4
  344. package/dist/snapshot/parse.js.map +1 -1
  345. package/dist/snapshot/present.js +11 -5
  346. package/dist/snapshot/present.js.map +1 -1
  347. package/dist/snapshot/settle.js +39 -9
  348. package/dist/snapshot/settle.js.map +1 -1
  349. package/dist/state/consent.js +99 -0
  350. package/dist/state/consent.js.map +1 -0
  351. package/dist/state/profile.js +46 -2
  352. package/dist/state/profile.js.map +1 -1
  353. package/dist/suite/compile.js +9 -5
  354. package/dist/suite/compile.js.map +1 -1
  355. package/dist/suite/lint.js +4 -4
  356. package/dist/suite/lint.js.map +1 -1
  357. package/dist/suite/pom.js +50 -41
  358. package/dist/suite/pom.js.map +1 -1
  359. package/dist/suite/secretGuard.js +266 -0
  360. package/dist/suite/secretGuard.js.map +1 -0
  361. package/dist/suite/testcase.js +9 -7
  362. package/dist/suite/testcase.js.map +1 -1
  363. package/dist/testSuite/exporter.js +4 -4
  364. package/dist/testSuite/exporter.js.map +1 -1
  365. package/dist/testSuite/generator.js +13 -9
  366. package/dist/testSuite/generator.js.map +1 -1
  367. package/dist/testSuite/history.js +1 -1
  368. package/dist/testSuite/history.js.map +1 -1
  369. package/dist/testSuite/issueLinks.js +3 -3
  370. package/dist/testSuite/issueLinks.js.map +1 -1
  371. package/dist/testSuite/lint.js +4 -4
  372. package/dist/testSuite/lint.js.map +1 -1
  373. package/dist/testSuite/merge.js +5 -5
  374. package/dist/testSuite/merge.js.map +1 -1
  375. package/dist/testSuite/schema.js +5 -5
  376. package/dist/testSuite/schema.js.map +1 -1
  377. package/dist/testSuite/store.js +3 -3
  378. package/dist/testSuite/store.js.map +1 -1
  379. package/dist/testSuite/traceability.js +2 -2
  380. package/dist/testSuite/traceability.js.map +1 -1
  381. package/dist/tools/act.js +794 -164
  382. package/dist/tools/act.js.map +1 -1
  383. package/dist/tools/agent.js +451 -128
  384. package/dist/tools/agent.js.map +1 -1
  385. package/dist/tools/appControl.js +69 -19
  386. package/dist/tools/appControl.js.map +1 -1
  387. package/dist/tools/appMap.js +188 -130
  388. package/dist/tools/appMap.js.map +1 -1
  389. package/dist/tools/build.js +32 -42
  390. package/dist/tools/build.js.map +1 -1
  391. package/dist/tools/bundletool.js +21 -31
  392. package/dist/tools/bundletool.js.map +1 -1
  393. package/dist/tools/clearOverlay.js +55 -12
  394. package/dist/tools/clearOverlay.js.map +1 -1
  395. package/dist/tools/device.js +76 -24
  396. package/dist/tools/device.js.map +1 -1
  397. package/dist/tools/doctor.js +68 -28
  398. package/dist/tools/doctor.js.map +1 -1
  399. package/dist/tools/explore.js +41 -47
  400. package/dist/tools/explore.js.map +1 -1
  401. package/dist/tools/featureTesting.js +31 -48
  402. package/dist/tools/featureTesting.js.map +1 -1
  403. package/dist/tools/firstRun.js +34 -41
  404. package/dist/tools/firstRun.js.map +1 -1
  405. package/dist/tools/flow.js +183 -103
  406. package/dist/tools/flow.js.map +1 -1
  407. package/dist/tools/flowRepair.js +25 -13
  408. package/dist/tools/flowRepair.js.map +1 -1
  409. package/dist/tools/generate.js +52 -89
  410. package/dist/tools/generate.js.map +1 -1
  411. package/dist/tools/getArtifact.js +16 -5
  412. package/dist/tools/getArtifact.js.map +1 -1
  413. package/dist/tools/health.js +15 -12
  414. package/dist/tools/health.js.map +1 -1
  415. package/dist/tools/ios.js +45 -223
  416. package/dist/tools/ios.js.map +1 -1
  417. package/dist/tools/issues.js +251 -35
  418. package/dist/tools/issues.js.map +1 -1
  419. package/dist/tools/jobs.js +41 -16
  420. package/dist/tools/jobs.js.map +1 -1
  421. package/dist/tools/metro.js +36 -35
  422. package/dist/tools/metro.js.map +1 -1
  423. package/dist/tools/mobileAudit.js +50 -45
  424. package/dist/tools/mobileAudit.js.map +1 -1
  425. package/dist/tools/network.js +31 -14
  426. package/dist/tools/network.js.map +1 -1
  427. package/dist/tools/note.js +26 -26
  428. package/dist/tools/note.js.map +1 -1
  429. package/dist/tools/prepareIosTarget.js +10 -16
  430. package/dist/tools/prepareIosTarget.js.map +1 -1
  431. package/dist/tools/prepareTarget.js +117 -50
  432. package/dist/tools/prepareTarget.js.map +1 -1
  433. package/dist/tools/report.js +11 -22
  434. package/dist/tools/report.js.map +1 -1
  435. package/dist/tools/resolveArtifact.js +11 -15
  436. package/dist/tools/resolveArtifact.js.map +1 -1
  437. package/dist/tools/resolveTarget.js +78 -24
  438. package/dist/tools/resolveTarget.js.map +1 -1
  439. package/dist/tools/screenRecord.js +23 -21
  440. package/dist/tools/screenRecord.js.map +1 -1
  441. package/dist/tools/screenshot.js +23 -16
  442. package/dist/tools/screenshot.js.map +1 -1
  443. package/dist/tools/smoke.js +20 -16
  444. package/dist/tools/smoke.js.map +1 -1
  445. package/dist/tools/snapshot.js +155 -118
  446. package/dist/tools/snapshot.js.map +1 -1
  447. package/dist/tools/startSession.js +104 -116
  448. package/dist/tools/startSession.js.map +1 -1
  449. package/dist/tools/suite.js +72 -43
  450. package/dist/tools/suite.js.map +1 -1
  451. package/dist/tools/testSuite.js +30 -20
  452. package/dist/tools/testSuite.js.map +1 -1
  453. package/dist/tools/testThis.js +24 -28
  454. package/dist/tools/testThis.js.map +1 -1
  455. package/dist/tools/visual.js +686 -210
  456. package/dist/tools/visual.js.map +1 -1
  457. package/dist/tools/wait.js +9 -38
  458. package/dist/tools/wait.js.map +1 -1
  459. package/dist/tools/wda.js +187 -57
  460. package/dist/tools/wda.js.map +1 -1
  461. package/dist/version.js +31 -22
  462. package/dist/version.js.map +1 -1
  463. package/dist/visual/ocr.js +53 -6
  464. package/dist/visual/ocr.js.map +1 -1
  465. package/dist/visual/provider.js +80 -12
  466. package/dist/visual/provider.js.map +1 -1
  467. package/docs/README.md +24 -10
  468. package/docs/ci-reports.md +328 -0
  469. package/docs/concepts.md +227 -0
  470. package/docs/flows.md +153 -0
  471. package/docs/mcp-server.md +194 -128
  472. package/docs/physical-devices.md +84 -0
  473. package/docs/tools.md +812 -152
  474. package/package.json +3 -2
  475. package/dist/tools/assertVisual.js +0 -84
  476. package/dist/tools/assertVisual.js.map +0 -1
  477. package/dist/tools/automationGenerate.js.map +0 -1
  478. package/dist/tools/capabilities.js +0 -179
  479. package/dist/tools/capabilities.js.map +0 -1
  480. package/dist/tools/detectContext.js +0 -41
  481. package/dist/tools/detectContext.js.map +0 -1
  482. package/dist/tools/flowGenerate.js.map +0 -1
  483. package/dist/tools/history.js +0 -86
  484. package/dist/tools/history.js.map +0 -1
  485. package/dist/tools/locator.js +0 -85
  486. package/dist/tools/locator.js.map +0 -1
  487. package/dist/tools/permissions.js +0 -174
  488. package/dist/tools/permissions.js.map +0 -1
  489. package/dist/tools/plan.js +0 -52
  490. package/dist/tools/plan.js.map +0 -1
  491. package/dist/tools/screenInfo.js +0 -76
  492. package/dist/tools/screenInfo.js.map +0 -1
  493. package/dist/tools/seed.js +0 -133
  494. package/dist/tools/seed.js.map +0 -1
  495. package/dist/tools/state.js +0 -217
  496. package/dist/tools/state.js.map +0 -1
  497. package/dist/tools/visualText.js +0 -106
  498. package/dist/tools/visualText.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/tools/network.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/tools/network.ts"],"names":[],"mappings":"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"}
@@ -1,43 +1,39 @@
1
- // qa_note — record a structured test outcome (Phase 2.2). Lets the agent state explicitly
1
+ // qa_note: record a structured test outcome (Phase 2.2). Lets the agent state explicitly
2
2
  // that a workflow passed / failed / was blocked / skipped / not-applicable, with the reason,
3
3
  // missing precondition, required state, and recommended setup. This is how a report
4
- // distinguishes a real app bug from "no saved flight existed to delete" — so missing test
4
+ // distinguishes a real app bug from "no saved flight existed to delete", so missing test
5
5
  // data and intentional skips stop being mislabeled as failures.
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
  const OUTCOMES = ['pass', 'fail', 'blocked', 'skipped', 'not_applicable'];
9
9
  const CATEGORIES = ['app_bug', 'mcp_limitation', 'missing_test_data', 'intentionally_skipped', 'destructive_refused', 'other'];
10
+ /** Default category for an uncategorized note: a failure is an app bug (app-owned, medium in the
11
+ * issue ledger); other outcomes stay uncategorized. */
12
+ export function defaultNoteCategory(outcome) {
13
+ return outcome === 'fail' ? 'app_bug' : undefined;
14
+ }
10
15
  export function registerNote(server, sessions) {
11
16
  server.registerTool('qa_note', {
12
17
  title: 'Record a test outcome',
13
- description: 'Record a STRUCTURED test outcome for one workflow so the report is honest about what was and was not verified. Use outcome="blocked" with a missingPrecondition (e.g. "no saved flight exists") instead of reporting a false failure; "not_applicable" when the workflow does not apply; "skipped" when intentionally not run. Set category to classify (app_bug | mcp_limitation | missing_test_data | intentionally_skipped | destructive_refused | other). Attach artifactUris (screenshots/dumps) as evidence.',
18
+ description: 'Record a structured outcome for one workflow so the report is honest about what was verified. Use outcome:"blocked" ' +
19
+ 'with missingPrecondition instead of a false failure; category (why) is independent of outcome. Attach evidence in ' +
20
+ 'artifactUris; for a screenshot-verified check use qa_visual mode:"assert".',
14
21
  inputSchema: {
15
22
  sessionId: z.string(),
16
- workflow: z.string().describe('the workflow/test this outcome is about, e.g. "Delete saved flight"'),
17
- outcome: z.enum(OUTCOMES).describe('WHAT happened (independent of category).'),
18
- category: z
19
- .enum(CATEGORIES)
20
- .optional()
21
- .describe('WHY / classification — an INDEPENDENT axis from outcome (e.g. a not_applicable outcome may be category=intentionally_skipped). The report cross-tabs the two; they are not folded together.'),
23
+ workflow: z.string().describe('e.g. "Delete saved flight"'),
24
+ outcome: z.enum(OUTCOMES),
25
+ category: z.enum(CATEGORIES).optional().describe('Default for outcome:"fail" is app_bug; use mcp_limitation for tool problems.'),
22
26
  reason: z.string().optional(),
23
- missingPrecondition: z.string().optional().describe('what state was required but absent, e.g. "no saved flight exists"'),
24
- requiredState: z.string().optional().describe('the state the test needs, e.g. "at least one saved flight"'),
25
- recommendedSetup: z.string().optional().describe('how to satisfy the precondition next time'),
27
+ missingPrecondition: z.string().optional().describe('e.g. "no saved flight exists"'),
28
+ requiredState: z.string().optional(),
29
+ recommendedSetup: z.string().optional(),
26
30
  artifactUris: z.array(z.string()).optional(),
27
- verifiedVisually: z
28
- .boolean()
29
- .optional()
30
- .describe('pass was confirmed from a screenshot (animated/map/canvas screen with no structured tree) — counts as a real pass, not a weak one. Attach the screenshot in artifactUris.'),
31
+ verifiedVisually: z.boolean().optional().describe('The pass was confirmed from an attached screenshot.'),
31
32
  },
32
33
  }, async ({ sessionId, workflow, outcome, category, reason, missingPrecondition, requiredState, recommendedSetup, artifactUris, verifiedVisually, }) => {
33
34
  const session = sessions.get(sessionId);
34
35
  if (!session) {
35
- return qaError({
36
- what: `Unknown sessionId ${sessionId}`,
37
- changedState: false,
38
- retrySafe: true,
39
- nextSteps: ['Call qa_start_session first.'],
40
- });
36
+ return unknownSessionError(sessionId);
41
37
  }
42
38
  // A visual-only pass should carry its evidence so the report isn't taking it on faith.
43
39
  if (verifiedVisually && outcome === 'pass' && !(artifactUris && artifactUris.length)) {
@@ -49,7 +45,7 @@ export function registerNote(server, sessions) {
49
45
  });
50
46
  }
51
47
  // A "blocked" outcome with no explanation is exactly the unhelpful case this tool exists
52
- // to prevent — nudge for the precondition.
48
+ // to prevent. Nudge for the precondition.
53
49
  if (outcome === 'blocked' && !missingPrecondition && !reason) {
54
50
  return qaError({
55
51
  what: 'A "blocked" outcome needs a missingPrecondition or reason so the report is actionable.',
@@ -62,11 +58,15 @@ export function registerNote(server, sessions) {
62
58
  // so a blocked outcome carries the setup guidance the agent already declared (P1.4).
63
59
  const fx = session.fixtures.find((f) => f.name.toLowerCase() === workflow.toLowerCase() ||
64
60
  (missingPrecondition && f.name.toLowerCase() === missingPrecondition.toLowerCase()));
61
+ // A failing note with no category is an app finding by default: left uncategorized, the
62
+ // issue-ledger bridge would triage it as a low-severity Swipium `mcp_limitation`. Agents
63
+ // mark tool problems explicitly with category:"mcp_limitation".
64
+ const effectiveCategory = category ?? defaultNoteCategory(outcome);
65
65
  sessions.addNote(session, {
66
66
  at: Date.now(),
67
67
  workflow,
68
68
  outcome: outcome,
69
- category: category,
69
+ category: effectiveCategory,
70
70
  reason,
71
71
  missingPrecondition: missingPrecondition ?? fx?.requiredState,
72
72
  requiredState: requiredState ?? fx?.requiredState,
@@ -75,7 +75,7 @@ export function registerNote(server, sessions) {
75
75
  verifiedVisually,
76
76
  });
77
77
  const tally = session.notes.reduce((a, n) => ((a[n.outcome] = (a[n.outcome] ?? 0) + 1), a), {});
78
- return qaOk({ recorded: { workflow, outcome, category }, tally }, `noted: "${workflow}" → ${outcome}${category ? ` (${category})` : ''}${missingPrecondition ? ` — missing: ${missingPrecondition}` : ''}\ntally: ${Object.entries(tally)
78
+ return qaOk({ recorded: { workflow, outcome, category: effectiveCategory }, tally }, `noted: "${workflow}" > ${outcome}${effectiveCategory ? ` (${effectiveCategory}${category ? '' : ', default for a failing note'})` : ''}${missingPrecondition ? `, missing: ${missingPrecondition}` : ''}\ntally: ${Object.entries(tally)
79
79
  .map(([k, v]) => `${k}=${v}`)
80
80
  .join(' ')}`);
81
81
  });
@@ -1 +1 @@
1
- {"version":3,"file":"note.js","sourceRoot":"","sources":["../../src/tools/note.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,6FAA6F;AAC7F,oFAAoF;AACpF,0FAA0F;AAC1F,gEAAgE;AAEhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAU,CAAC;AACnF,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,OAAO,CAAU,CAAC;AAExI,MAAM,UAAU,YAAY,CAAC,MAAiB,EAAE,QAAsB;IACpE,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,ofAAof;QACtf,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;YACpG,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YAC9E,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,UAAU,CAAC;iBAChB,QAAQ,EAAE;iBACV,QAAQ,CACP,6LAA6L,CAC9L;YACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC7B,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;YACxH,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;YAC3G,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;YAC7F,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;YAC5C,gBAAgB,EAAE,CAAC;iBAChB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,2KAA2K,CAC5K;SACJ;KACF,EACD,KAAK,EAAE,EACL,SAAS,EACT,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,MAAM,EACN,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,GACjB,EAAE,EAAE;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,qBAAqB,SAAS,EAAE;gBACtC,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,CAAC,8BAA8B,CAAC;aAC5C,CAAC,CAAC;QACL,CAAC;QACD,uFAAuF;QACvF,IAAI,gBAAgB,IAAI,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YACrF,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,0EAA0E;gBAChF,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,CAAC,wFAAwF,CAAC;aACtG,CAAC,CAAC;QACL,CAAC;QACD,yFAAyF;QACzF,2CAA2C;QAC3C,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7D,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,wFAAwF;gBAC9F,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,CAAC,yFAAyF,CAAC;aACvG,CAAC,CAAC;QACL,CAAC;QACD,wFAAwF;QACxF,qFAAqF;QACrF,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE;YAC/C,CAAC,mBAAmB,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,mBAAmB,CAAC,WAAW,EAAE,CAAC,CACtF,CAAC;QACF,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;YACxB,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;YACd,QAAQ;YACR,OAAO,EAAE,OAAsB;YAC/B,QAAQ,EAAE,QAAoC;YAC9C,MAAM;YACN,mBAAmB,EAAE,mBAAmB,IAAI,EAAE,EAAE,aAAa;YAC7D,aAAa,EAAE,aAAa,IAAI,EAAE,EAAE,aAAa;YACjD,gBAAgB,EAAE,gBAAgB,IAAI,EAAE,EAAE,gBAAgB;YAC1D,YAAY;YACZ,gBAAgB;SACjB,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAyB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxH,OAAO,IAAI,CACT,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EACpD,WAAW,QAAQ,OAAO,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,eAAe,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,MAAM,CAAC,OAAO,CAC9J,KAAK,CACN;aACE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;aAC5B,IAAI,CAAC,GAAG,CAAC,EAAE,CACf,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"note.js","sourceRoot":"","sources":["../../src/tools/note.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,15 @@
1
- // qa_prepare_ios_target (hardening P0.3) — one high-level iOS prepare: boot simulator → install
2
- // .app → launch bundle → verify → report WDA/visual mode. The cross-platform counterpart to
1
+ // qa_prepare_ios_target (hardening P0.3): one high-level iOS prepare: boot simulator > install
2
+ // .app > launch bundle > verify > report WDA/visual mode. The cross-platform counterpart to
3
3
  // qa_prepare_target's Android path, so qa_test_this can complete iOS first-runs end-to-end.
4
4
  import { z } from 'zod';
5
5
  import { isAbsolute, join } from 'node:path';
6
6
  import { existsSync, readFileSync, statSync } from 'node:fs';
7
7
  import { createHash } from 'node:crypto';
8
- import { qaOk, qaError } from '../lib/result.js';
8
+ import { qaOk, unknownSessionError } from '../lib/result.js';
9
9
  import { qaFail } from '../oracle/failures.js';
10
10
  import { requireConsent, consumeConsent } from '../consent/consent.js';
11
11
  import { prepareIos } from '../services/prepareIos.js';
12
- /** A .app is a directory — hash a stable signature (Info.plist) for consent binding. */
12
+ /** A .app is a directory, so hash a stable signature (Info.plist) for consent binding. */
13
13
  function appSignature(appPath) {
14
14
  try {
15
15
  const plist = join(appPath, 'Info.plist');
@@ -31,15 +31,14 @@ function externalToRoot(session, appPath) {
31
31
  export function registerPrepareIosTarget(server, sessions) {
32
32
  server.registerTool('qa_prepare_ios_target', {
33
33
  title: 'Prepare an iOS simulator target',
34
- description: 'High-level iOS simulator prepare: pick + boot a simulator, install a simulator .app (consent-gated), launch its bundle id, verify foreground, and report whether structured automation (WDA) is available or it is honestly visual-only. Refuses a .ipa on the simulator (real-device only). attachWda: auto (use WDA if reachable, else visual) | required (fail if no WDA) | skip (visual-only). Returns typed blockers (IPA_NEEDS_REAL_DEVICE, IOS_SIMULATOR_APP_MISSING, SIMULATOR_BOOT_FAILED, WDA_UNREACHABLE).',
34
+ description: 'Prepare an iOS Simulator: pick + boot, install a simulator .app (consent-gated), launch the bundle id, verify ' +
35
+ 'foreground, and report whether WDA structured automation is available or it is visual-only. A .ipa is refused ' +
36
+ '(IPA_NEEDS_REAL_DEVICE). attachWda: auto | required | skip.',
35
37
  inputSchema: {
36
38
  sessionId: z.string(),
37
39
  app: z.string().optional().describe('Simulator .app path (absolute or project-relative).'),
38
40
  bundleId: z.string().optional(),
39
- device: z
40
- .string()
41
- .optional()
42
- .describe('Simulator UDID or name substring to prepare (same selector param name as the other tools).'),
41
+ device: z.string().optional().describe('Simulator UDID or name substring.'),
43
42
  launch: z.boolean().optional(),
44
43
  attachWda: z.enum(['auto', 'required', 'skip']).optional(),
45
44
  consentId: z.string().optional(),
@@ -48,13 +47,8 @@ export function registerPrepareIosTarget(server, sessions) {
48
47
  }, async ({ sessionId, app, bundleId, device, launch, attachWda, consentId, approve }) => {
49
48
  const session = sessions.get(sessionId);
50
49
  if (!session)
51
- return qaError({
52
- what: `Unknown sessionId "${sessionId}"`,
53
- changedState: false,
54
- retrySafe: true,
55
- nextSteps: ['Call qa_start_session first.'],
56
- });
57
- // Installing app code is privileged → consent (mirrors qa_ios install).
50
+ return unknownSessionError(sessionId);
51
+ // Installing app code is privileged, so consent (mirrors qa_ios install).
58
52
  let mutationConsent;
59
53
  let installAffects;
60
54
  if (app) {
@@ -1 +1 @@
1
- {"version":3,"file":"prepareIosTarget.js","sourceRoot":"","sources":["../../src/tools/prepareIosTarget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prepareIosTarget.js","sourceRoot":"","sources":["../../src/tools/prepareIosTarget.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,36 @@
1
- // qa_prepare_target — get the app running on a device.
1
+ // qa_prepare_target: get the app running on a device.
2
2
  //
3
3
  // Fast path (device online + app installed + !force): run synchronously, return the result.
4
4
  // Long-op path (needs emulator boot or an install): create a JOB, run async, return a
5
- // `jobId` immediately (poll with qa_job_status) — so client tool-call timeouts don't hit
5
+ // `jobId` immediately (poll with qa_job_status), so client tool-call timeouts don't hit
6
6
  // the slow paths (review #2). Interactive consent (boot, external-APK) is resolved
7
7
  // synchronously BEFORE the job is kicked off.
8
8
  import { z } from 'zod';
9
- import { readFileSync } from 'node:fs';
10
- import { sep } from 'node:path';
9
+ import { readFileSync, realpathSync } from 'node:fs';
10
+ import { isAbsolute, relative, resolve } from 'node:path';
11
11
  import { createHash } from 'node:crypto';
12
- import { qaOk, qaError } from '../lib/result.js';
12
+ import { qaOk, qaError, invalidArgumentError, isInvalidArgumentError, unknownSessionError } from '../lib/result.js';
13
13
  import { requireConsent, consumeConsent } from '../consent/consent.js';
14
14
  import { listAvds, resolveApk, apkPackageId } from '../lib/android.js';
15
- import { DirectDriver } from '../drivers/DirectDriver.js';
15
+ import { DirectDriver, assertAndroidAppId } from '../drivers/DirectDriver.js';
16
16
  import { detectFramework } from '../context/detect.js';
17
17
  import { metroReadiness, reverseSet } from '../lib/metroState.js';
18
- import { resolveDevice, bindDevice } from '../session/attach.js';
18
+ import { resolveDevice, bindDevice, verifiedEmulatorSerials } from '../session/attach.js';
19
19
  import { prepareAndroid } from '../services/prepareAndroid.js';
20
- /** RN/Expo debug builds load JS from Metro; launching before Metro is SERVING → RedBox. */
20
+ import { planTarget } from '../core/targetPlan.js';
21
+ import { runWithSignal } from '../lib/abortScope.js';
22
+ /** RN/Expo debug builds load JS from Metro; launching before Metro is SERVING > RedBox. */
21
23
  function needsMetro(root) {
22
24
  const fw = detectFramework(root);
23
25
  return fw === 'expo' || fw === 'bare-react-native';
24
26
  }
25
- function isAndroidEmulatorSerial(serial) {
26
- return /^emulator-\d+/.test(serial);
27
- }
28
27
  export function registerPrepareTarget(server, sessions) {
29
28
  server.registerTool('qa_prepare_target', {
30
29
  title: 'Prepare a target device + app',
31
- description: 'Orchestrate device→Metro→install→launch in the correct order, with a SINGLE combined consent for any privileged steps (boot, external-APK). Resolves/boots a device (binds the single online one automatically; asks if >1), sets adb reverse for RN/Expo, gates launch on Metro SERVING, installs the APK if needed, launches, verifies. Long ops return a jobId. Flags: bindOnly (bind/boot + reverse, no install/launch — use to break a setup deadlock); allowLaunchWithoutMetro (risky override); headless.',
30
+ description: 'Prepare an Android Emulator target in order: device > Metro > install > launch, with one combined consent for ' +
31
+ 'privileged steps (boot, install). Binds the single online device (asks if several), sets adb reverse for RN/Expo, ' +
32
+ 'waits for Metro to serve, installs if needed, launches, verifies. Long operations return a jobId. bindOnly binds/boots ' +
33
+ 'without install/launch.',
32
34
  inputSchema: {
33
35
  sessionId: z.string(),
34
36
  apk: z.string().optional(),
@@ -36,30 +38,19 @@ export function registerPrepareTarget(server, sessions) {
36
38
  avd: z.string().optional(),
37
39
  device: z.string().optional().describe('Target serial; required when >1 device is online.'),
38
40
  force: z.boolean().optional(),
39
- headless: z.boolean().optional().describe('If Swipium boots an AVD: headless (default true) or visible window (false).'),
40
- bindOnly: z
41
- .boolean()
42
- .optional()
43
- .describe('Bind/boot the device + set adb reverse, but do NOT install or launch. Safe way to break a device/Metro setup deadlock.'),
44
- allowLaunchWithoutMetro: z
45
- .boolean()
46
- .optional()
47
- .describe('Risky: launch a debug RN/Expo build even if Metro is not serving (may RedBox).'),
41
+ headless: z.boolean().optional().describe('Boot the AVD headless (default true).'),
42
+ bindOnly: z.boolean().optional().describe('Bind/boot + adb reverse only (breaks a device/Metro deadlock).'),
43
+ allowLaunchWithoutMetro: z.boolean().optional().describe('Launch a debug RN/Expo build without Metro (may RedBox).'),
48
44
  consentId: z.string().optional(),
49
45
  approve: z.boolean().optional(),
50
46
  },
51
47
  }, async ({ sessionId, apk, appId, avd, device, force, headless, bindOnly, allowLaunchWithoutMetro, consentId, approve }) => {
52
48
  const session = sessions.get(sessionId);
53
49
  if (!session) {
54
- return qaError({
55
- what: `Unknown sessionId "${sessionId}"`,
56
- changedState: false,
57
- retrySafe: true,
58
- nextSteps: ['Call qa_start_session first.'],
59
- });
50
+ return unknownSessionError(sessionId);
60
51
  }
61
52
  const rnDebug = needsMetro(session.root);
62
- // ---- appId (+apk if needed for detection) — not needed for bindOnly ----
53
+ // ---- appId (+apk if needed for detection); not needed for bindOnly ----
63
54
  let resolvedAppId = appId;
64
55
  let apkPath = apk;
65
56
  if (!bindOnly && !resolvedAppId) {
@@ -81,6 +72,18 @@ export function registerPrepareTarget(server, sessions) {
81
72
  nextSteps: ['Pass appId explicitly.'],
82
73
  });
83
74
  }
75
+ // Single entry-point validation: a malformed app id (explicit or APK-derived) is a typed
76
+ // caller error here, not a raw driver throw later (app ids reach `adb shell`).
77
+ if (resolvedAppId !== undefined) {
78
+ try {
79
+ assertAndroidAppId(resolvedAppId);
80
+ }
81
+ catch (e) {
82
+ if (isInvalidArgumentError(e))
83
+ return invalidArgumentError(e, ['Pass a valid Android application id, e.g. appId="com.example.app".']);
84
+ throw e;
85
+ }
86
+ }
84
87
  // ---- device resolution (centralized; binds single online, asks on >1) ----
85
88
  const res = await resolveDevice(session, device);
86
89
  if (device && !res.effective) {
@@ -91,29 +94,51 @@ export function registerPrepareTarget(server, sessions) {
91
94
  nextSteps: [`Online: ${res.available.join(', ') || '(none)'}`],
92
95
  });
93
96
  }
94
- if (res.effective && !isAndroidEmulatorSerial(res.effective)) {
95
- return qaError({
96
- what: `Android target "${res.effective}" appears to be a real device. Swipium 1.0.0 supports Android Emulator only.`,
97
- changedState: false,
98
- retrySafe: true,
99
- failureCode: 'BACKEND_UNSUPPORTED',
100
- nextSteps: ['Start or create an Android Emulator, then retry with its emulator serial.'],
101
- });
97
+ if (res.effective) {
98
+ // Same policy + wording as qa_test_this's target planner (src/core/targetPlan.ts): a physical
99
+ // device is refused with PHYSICAL_DEVICE_UNSUPPORTED, not a generic backend error.
100
+ const refusal = await physicalDeviceRefusalFor(res.effective);
101
+ if (refusal) {
102
+ return qaError({
103
+ what: refusal.what,
104
+ changedState: false,
105
+ retrySafe: false,
106
+ failureCode: 'PHYSICAL_DEVICE_UNSUPPORTED',
107
+ nextSteps: [
108
+ 'Start or create an Android Emulator, then retry with its emulator serial (see docs/physical-devices.md).',
109
+ 'For iOS, use qa_prepare_ios_target with a simulator.',
110
+ ],
111
+ });
112
+ }
102
113
  }
103
114
  if (res.needSelection) {
104
115
  return qaError({
105
- what: 'Multiple devices online — choose one',
116
+ what: 'Multiple devices online, choose one',
106
117
  changedState: false,
107
118
  retrySafe: true,
119
+ failureCode: 'MULTIPLE_DEVICES',
108
120
  nextSteps: [`Re-call with device="<serial>". Online: ${res.available.join(', ')}`],
109
121
  });
110
122
  }
111
123
  const needBoot = !res.effective;
112
124
  // ---- external-APK detection (needs the file hash for the plan consent) ----
125
+ // Containment is checked on REAL paths: `<root>/../../x.apk` or a symlink out of the root is external.
113
126
  let externalApk;
114
- if (!bindOnly && apkPath && !apkPath.startsWith(session.root + sep)) {
127
+ if (!bindOnly && apkPath && !apkWithinRoot(apkPath, session.root)) {
115
128
  externalApk = { path: apkPath, sha256: createHash('sha256').update(readFileSync(apkPath)).digest('hex') };
116
129
  }
130
+ // ---- install detection: EVERY install is consent-gated (like iOS), in-root APKs included
131
+ // (risk low). Only an already-installed app on a live emulator skips the prompt. ----
132
+ let installNeeded = false;
133
+ if (!bindOnly) {
134
+ if (needBoot)
135
+ installNeeded = true;
136
+ else if (res.effective) {
137
+ const probe = new DirectDriver();
138
+ probe.useDevice(res.effective);
139
+ installNeeded = !!force || !(await probe.isInstalled(resolvedAppId).catch(() => false));
140
+ }
141
+ }
117
142
  // ---- COMBINED plan consent (Phase 2.1): all privileged steps approved at once,
118
143
  // so boot + external-APK don't ping-pong across calls. ----
119
144
  const hl = headless ?? true;
@@ -124,20 +149,30 @@ export function registerPrepareTarget(server, sessions) {
124
149
  what: 'No device online and no AVD to boot',
125
150
  changedState: false,
126
151
  retrySafe: true,
127
- nextSteps: ['Create an AVD (see qa_doctor), or start a device, then retry.'],
152
+ nextSteps: [
153
+ 'Create an AVD: Android Studio > Device Manager > Create device, or `avdmanager create avd -n Pixel_7 -k "system-images;android-34;google_apis;arm64-v8a" -d pixel_7`.',
154
+ 'Or start an Android emulator yourself, then retry (physical devices are out of scope).',
155
+ ],
128
156
  });
129
157
  }
130
158
  const plan = [
131
159
  needBoot ? `boot_emulator(${bootTarget}${hl ? ',headless' : ',windowed'})` : null,
132
160
  rnDebug ? 'set_metro_reverse' : null,
133
- externalApk ? `install_external_apk(${externalApk.sha256.slice(0, 12)}…)` : !bindOnly ? 'install_if_needed' : null,
161
+ externalApk
162
+ ? `install_external_apk(${externalApk.sha256.slice(0, 12)}…)`
163
+ : installNeeded
164
+ ? 'install_apk'
165
+ : !bindOnly
166
+ ? 'install_if_needed'
167
+ : null,
134
168
  bindOnly ? 'bind_only' : 'launch_app',
135
169
  ].filter(Boolean);
136
- const privileged = needBoot || !!externalApk;
170
+ const privileged = needBoot || !!externalApk || installNeeded;
137
171
  const planAffects = {
138
172
  plan,
139
173
  boot: needBoot ? { avd: bootTarget, headless: hl } : null,
140
174
  externalApkSha256: externalApk?.sha256 ?? null,
175
+ install: installNeeded ? { appId: resolvedAppId ?? null, apk: apkPath ?? null } : null,
141
176
  };
142
177
  let mutationConsent;
143
178
  let preparePlanMutation;
@@ -158,7 +193,9 @@ export function registerPrepareTarget(server, sessions) {
158
193
  : '',
159
194
  externalApk
160
195
  ? `• install EXTERNAL apk (outside project root), sha256 ${externalApk.sha256.slice(0, 16)}…: adb install -r -g ${externalApk.path}`
161
- : '',
196
+ : installNeeded
197
+ ? `• install ${resolvedAppId ?? 'the app'} from ${apkPath ?? '(resolved APK)'}: adb install -r -g ${apkPath ?? '<apk>'}`
198
+ : '',
162
199
  ]
163
200
  .filter(Boolean)
164
201
  .join('\n');
@@ -167,7 +204,7 @@ export function registerPrepareTarget(server, sessions) {
167
204
  risk: externalApk ? 'medium' : 'low',
168
205
  exactCommand: lines,
169
206
  affects: planAffects,
170
- explain: `This prepare needs ${privileged ? 'these privileged steps' : 'no consent'} (approved together so they don't re-prompt):\n${lines}\nPlan: ${plan.join(' → ')}`,
207
+ explain: `This prepare needs ${privileged ? 'these privileged steps' : 'no consent'} (approved together so they don't re-prompt):\n${lines}\nPlan: ${plan.join(' > ')}`,
171
208
  });
172
209
  }
173
210
  mutationConsent = { required: true, consentId, approved: true, payloadHash: externalApk?.sha256 };
@@ -201,12 +238,12 @@ export function registerPrepareTarget(server, sessions) {
201
238
  if (bindOnly) {
202
239
  const rd = await metroReadiness(serial);
203
240
  sessions.persist(session);
204
- return qaOk({ device: serial, bound: true, metro: rd }, `Bound ${serial}.${rnDebug ? ` Metro: serving=${rd.serving} reverse=${rd.reverseSet} ready=${rd.ready}.` : ''} (bindOnly — no install/launch)`);
241
+ return qaOk({ device: serial, bound: true, metro: rd }, `Bound ${serial}.${rnDebug ? ` Metro: serving=${rd.serving} reverse=${rd.reverseSet} ready=${rd.ready}.` : ''} (bindOnly, no install/launch)`);
205
242
  }
206
243
  const installed = await driver.isInstalled(resolvedAppId);
207
244
  if (installed && !force) {
208
245
  // Launch gate (Phase 2.1, P1.5): refuse only if Metro is NOT SERVING. A missing
209
- // reverse is not fatal — emulators reach the host via 10.0.2.2 — so serving is the
246
+ // reverse is not fatal (emulators reach the host via 10.0.2.2), so serving is the
210
247
  // real signal. allowLaunchWithoutMetro overrides.
211
248
  if (rnDebug && !allowLaunchWithoutMetro) {
212
249
  const rd = await metroReadiness(serial);
@@ -223,7 +260,7 @@ export function registerPrepareTarget(server, sessions) {
223
260
  }
224
261
  }
225
262
  if (rnDebug && allowLaunchWithoutMetro)
226
- sessions.addEnvChange(session, 'OVERRIDE allowLaunchWithoutMetro — launched without confirmed Metro readiness');
263
+ sessions.addEnvChange(session, 'OVERRIDE allowLaunchWithoutMetro: launched without confirmed Metro readiness');
227
264
  sessions.milestone(session, 'app_launch_start');
228
265
  await driver.launchApp(resolvedAppId);
229
266
  await new Promise((r) => setTimeout(r, 2500));
@@ -259,7 +296,7 @@ export function registerPrepareTarget(server, sessions) {
259
296
  launchedWithoutMetro: !!(rnDebug && allowLaunchWithoutMetro) || undefined,
260
297
  }, `${launchedOk ? '✅' : '⚠️'} ${resolvedAppId} on ${serial} (already present); foreground=${foreground}.`);
261
298
  }
262
- // install needed → JOB
299
+ // install needed > JOB
263
300
  return startJob(sessions, session, driver, {
264
301
  needBoot: false,
265
302
  serial,
@@ -273,7 +310,7 @@ export function registerPrepareTarget(server, sessions) {
273
310
  preparePlanMutation,
274
311
  });
275
312
  }
276
- // ---- BOOT path → JOB (consent already granted via the plan) ----
313
+ // ---- BOOT path > JOB (consent already granted via the plan) ----
277
314
  const driver = new DirectDriver();
278
315
  return startJob(sessions, session, driver, {
279
316
  needBoot: true,
@@ -293,12 +330,13 @@ export function registerPrepareTarget(server, sessions) {
293
330
  }
294
331
  function startJob(sessions, session, driver, a) {
295
332
  const job = sessions.createJob(session, a.needBoot ? 'boot+install' : 'install');
296
- void runHeavy(sessions, session, driver, job, a);
333
+ // Driver calls inside the job inherit the job's cancellation signal (abortScope), never a
334
+ // mutable slot on the shared driver that a concurrent qa_snapshot/qa_act could swap.
335
+ void runWithSignal(sessions.abortSignal(session, job.jobId), () => runHeavy(sessions, session, driver, job, a));
297
336
  return qaOk({ jobId: job.jobId, status: 'running', kind: job.kind }, `Started ${job.kind} as job ${job.jobId}. Poll with qa_job_status { sessionId:"${session.id}", jobId:"${job.jobId}" }.`);
298
337
  }
299
338
  async function runHeavy(sessions, session, driver, job, a) {
300
339
  const signal = sessions.abortSignal(session, job.jobId);
301
- driver.setSignal(signal); // cancel kills in-flight adb children (install/dump/etc.)
302
340
  const upd = (patch) => {
303
341
  sessions.updateJobIfRunning(session, job, patch);
304
342
  };
@@ -333,4 +371,33 @@ async function runHeavy(sessions, session, driver, job, a) {
333
371
  }
334
372
  upd({ status: 'done', progress: 'done', result: res.result, resultText: res.resultText, endedAt: Date.now() });
335
373
  }
374
+ function realOr(p) {
375
+ try {
376
+ return realpathSync(p);
377
+ }
378
+ catch {
379
+ return resolve(p);
380
+ }
381
+ }
382
+ /** Whether an APK path lies inside the project root, compared on normalized real paths. */
383
+ export function apkWithinRoot(apkPath, root) {
384
+ const rel = relative(realOr(root), realOr(resolve(root, apkPath)));
385
+ return rel === '' || (!rel.startsWith('..') && !isAbsolute(rel));
386
+ }
387
+ /** Physical-device refusal for an online adb serial, delegated to the shared target planner so
388
+ * qa_prepare_target and qa_test_this classify serials identically. Null when it is an emulator
389
+ * (by serial pattern or by device properties). */
390
+ export async function physicalDeviceRefusalFor(serial) {
391
+ // Property-verified emulators (localhost:5555, Genymotion) are accepted like `emulator-N`
392
+ // serials: the same getprop probe qa_test_this / qa_resolve_target / auto-attach use.
393
+ const emulators = await verifiedEmulatorSerials([serial]);
394
+ const plan = planTarget({
395
+ requestedDevice: serial,
396
+ android: { online: [serial], avds: [], emulators },
397
+ ios: { bootedSimulators: [], availableSimulators: [] },
398
+ });
399
+ if (plan.blocked?.failureCode !== 'PHYSICAL_DEVICE_UNSUPPORTED')
400
+ return null;
401
+ return { what: plan.reason };
402
+ }
336
403
  //# sourceMappingURL=prepareTarget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prepareTarget.js","sourceRoot":"","sources":["../../src/tools/prepareTarget.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,4FAA4F;AAC5F,sFAAsF;AACtF,yFAAyF;AACzF,mFAAmF;AACnF,8CAA8C;AAE9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,2FAA2F;AAC3F,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,mBAAmB,CAAC;AACrD,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAc;IAC7C,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,QAAsB;IAC7E,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,+BAA+B;QACtC,WAAW,EACT,kfAAkf;QACpf,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YAC3F,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YAC7B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;YACxH,QAAQ,EAAE,CAAC;iBACR,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,wHAAwH,CACzH;YACH,uBAAuB,EAAE,CAAC;iBACvB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,gFAAgF,CAAC;YAC7F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAChC;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,uBAAuB,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QACvH,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,sBAAsB,SAAS,GAAG;gBACxC,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,CAAC,8BAA8B,CAAC;aAC5C,CAAC,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEzC,2EAA2E;QAC3E,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,OAAO,GAAuB,GAAG,CAAC;QACtC,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC,CAAC,CAAC,GAAG;gBACR,OAAO,OAAO,CAAC;oBACb,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,wBAAwB;oBACzC,YAAY,EAAE,KAAK;oBACnB,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,CAAC,uGAAuG,CAAC;iBACrH,CAAC,CAAC;YACL,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC;YAChB,aAAa,GAAG,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,SAAS,CAAC;YAC3D,IAAI,CAAC,aAAa;gBAChB,OAAO,OAAO,CAAC;oBACb,IAAI,EAAE,gDAAgD;oBACtD,YAAY,EAAE,KAAK;oBACnB,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,CAAC,wBAAwB,CAAC;iBACtC,CAAC,CAAC;QACP,CAAC;QAED,6EAA6E;QAC7E,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,WAAW,MAAM,iBAAiB;gBACxC,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,CAAC,WAAW,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;aAC/D,CAAC,CAAC;QACL,CAAC;QACD,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7D,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,mBAAmB,GAAG,CAAC,SAAS,8EAA8E;gBACpH,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,qBAAqB;gBAClC,SAAS,EAAE,CAAC,2EAA2E,CAAC;aACzF,CAAC,CAAC;QACL,CAAC;QACD,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;YACtB,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,sCAAsC;gBAC5C,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,CAAC,2CAA2C,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;aACnF,CAAC,CAAC;QACL,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;QAEhC,8EAA8E;QAC9E,IAAI,WAAyD,CAAC;QAC9D,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACpE,WAAW,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5G,CAAC;QAED,iFAAiF;QACjF,iEAAiE;QACjE,MAAM,EAAE,GAAG,QAAQ,IAAI,IAAI,CAAC;QAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,MAAM,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,qCAAqC;gBAC3C,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,CAAC,+DAA+D,CAAC;aAC7E,CAAC,CAAC;QACL,CAAC;QACD,MAAM,IAAI,GAAG;YACX,QAAQ,CAAC,CAAC,CAAC,iBAAiB,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI;YACjF,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI;YACpC,WAAW,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI;YAClH,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;SACtC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;QAC9B,MAAM,UAAU,GAAG,QAAQ,IAAI,CAAC,CAAC,WAAW,CAAC;QAC7C,MAAM,WAAW,GAAG;YAClB,IAAI;YACJ,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;YACzD,iBAAiB,EAAE,WAAW,EAAE,MAAM,IAAI,IAAI;SAC/C,CAAC;QACF,IAAI,eAA6C,CAAC;QAClD,IAAI,mBAAqD,CAAC;QAC1D,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YAClG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE;oBAC/B,IAAI,EAAE,mBAAmB;oBACzB,MAAM,EAAE,cAAc;oBACtB,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;oBACpC,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE;oBAC9E,MAAM,EAAE,WAAW;iBACpB,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG;oBACZ,QAAQ;wBACN,CAAC,CAAC,oBAAoB,UAAU,MAAM,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,oBAAoB,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE;wBAC3H,CAAC,CAAC,EAAE;oBACN,WAAW;wBACT,CAAC,CAAC,yDAAyD,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,wBAAwB,WAAW,CAAC,IAAI,EAAE;wBACpI,CAAC,CAAC,EAAE;iBACP;qBACE,MAAM,CAAC,OAAO,CAAC;qBACf,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO,cAAc,CAAC;oBACpB,MAAM,EAAE,cAAc;oBACtB,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;oBACpC,YAAY,EAAE,KAAK;oBACnB,OAAO,EAAE,WAAW;oBACpB,OAAO,EAAE,sBAAsB,UAAU,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,YAAY,kDAAkD,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;iBACxK,CAAC,CAAC;YACL,CAAC;YACD,eAAe,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;YAClG,mBAAmB,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;YAChG,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE;gBAC/B,IAAI,EAAE,mBAAmB;gBACzB,MAAM,EAAE,cAAc;gBACtB,IAAI,EAAE,mBAAmB,CAAC,IAAI;gBAC9B,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;YACH,IAAI,WAAW;gBAAE,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,0CAA0C,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACjI,CAAC;QAED,2EAA2E;QAC3E,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC;YAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,iDAAiD;YAC7F,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACjD,gFAAgF;YAChF,IAAI,OAAO,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;oBAC/B,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC;gBAC7D,CAAC;gBAAC,MAAM,CAAC;oBACP,iBAAiB;gBACnB,CAAC;YACH,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;gBACxC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC1B,OAAO,IAAI,CACT,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAC1C,SAAS,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,OAAO,YAAY,EAAE,CAAC,UAAU,UAAU,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,iCAAiC,CAC/I,CAAC;YACJ,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,aAAc,CAAC,CAAC;YAC3D,IAAI,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;gBACxB,gFAAgF;gBAChF,mFAAmF;gBACnF,kDAAkD;gBAClD,IAAI,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBACxC,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;oBACxC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;wBAChB,OAAO,OAAO,CAAC;4BACb,IAAI,EAAE,uEAAuE,EAAE,CAAC,SAAS,YAAY,EAAE,CAAC,UAAU,YAAY,EAAE,CAAC,OAAO,4DAA4D;4BACpM,YAAY,EAAE,KAAK;4BACnB,SAAS,EAAE,IAAI;4BACf,SAAS,EAAE;gCACT,wFAAwF;gCACxF,gHAAgH;6BACjH;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,IAAI,OAAO,IAAI,uBAAuB;oBACpC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,+EAA+E,CAAC,CAAC;gBAClH,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;gBAChD,MAAM,MAAM,CAAC,SAAS,CAAC,aAAc,CAAC,CAAC;gBACvC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC9C,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;gBAClD,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;gBAC9C,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC;gBAC9B,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC1B,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,aAAc,CAAC,CAAC;gBACzD,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE;oBAC/B,IAAI,EAAE,mBAAmB;oBACzB,MAAM,EAAE,YAAY;oBACpB,IAAI,EAAE,KAAK;oBACX,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE;oBAC5D,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;oBAC5C,MAAM,EAAE,UAAU;iBACnB,CAAC,CAAC;gBACH,IAAI,mBAAmB,EAAE,CAAC;oBACxB,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE;wBAC/B,IAAI,EAAE,mBAAmB;wBACzB,MAAM,EAAE,cAAc;wBACtB,IAAI,EAAE,mBAAmB,CAAC,IAAI;wBAC9B,MAAM,EAAE,mBAAmB,CAAC,OAAO;wBACnC,OAAO,EAAE,eAAe;wBACxB,MAAM,EAAE,UAAU;qBACnB,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,IAAI,CACT;oBACE,MAAM,EAAE,MAAM;oBACd,KAAK,EAAE,aAAa;oBACpB,SAAS,EAAE,iBAAiB;oBAC5B,UAAU;oBACV,UAAU;oBACV,oBAAoB,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,uBAAuB,CAAC,IAAI,SAAS;iBAC1E,EACD,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,aAAa,OAAO,MAAM,kCAAkC,UAAU,GAAG,CACxG,CAAC;YACJ,CAAC;YACD,uBAAuB;YACvB,OAAO,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;gBACzC,QAAQ,EAAE,KAAK;gBACf,MAAM;gBACN,aAAa,EAAE,aAAc;gBAC7B,OAAO;gBACP,GAAG;gBACH,KAAK;gBACL,OAAO;gBACP,uBAAuB,EAAE,CAAC,CAAC,uBAAuB;gBAClD,eAAe;gBACf,mBAAmB;aACpB,CAAC,CAAC;QACL,CAAC;QAED,mEAAmE;QACnE,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;YACzC,QAAQ,EAAE,IAAI;YACd,UAAU;YACV,aAAa,EAAE,aAAc;YAC7B,OAAO;YACP,GAAG;YACH,KAAK;YACL,QAAQ,EAAE,EAAE;YACZ,OAAO;YACP,uBAAuB,EAAE,CAAC,CAAC,uBAAuB;YAClD,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,eAAe;YACf,mBAAmB;SACpB,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC;AAkBD,SAAS,QAAQ,CAAC,QAAsB,EAAE,OAAgB,EAAE,MAAoB,EAAE,CAAY;IAC5F,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACjF,KAAK,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACjD,OAAO,IAAI,CACT,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EACvD,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,KAAK,0CAA0C,OAAO,CAAC,EAAE,aAAa,GAAG,CAAC,KAAK,MAAM,CACxH,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,QAAsB,EAAE,OAAgB,EAAE,MAAoB,EAAE,GAAc,EAAE,CAAY;IAClH,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,0DAA0D;IACpF,MAAM,GAAG,GAAG,CAAC,KAAyB,EAAQ,EAAE;QAC9C,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC;IACF,uFAAuF;IACvF,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACpH,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,CAAC,8DAA8D;IACvF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,IAAI,CAAC,CAAC,mBAAmB,EAAE,CAAC;YAC1B,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE;gBAC/B,IAAI,EAAE,mBAAmB;gBACzB,MAAM,EAAE,cAAc;gBACtB,IAAI,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAAI;gBAChC,MAAM,EAAE,CAAC,CAAC,mBAAmB,CAAC,OAAO;gBACrC,OAAO,EAAE,CAAC,CAAC,eAAe;gBAC1B,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,WAAW,IAAI,gBAAgB;aACzD,CAAC,CAAC;QACL,CAAC;QACD,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACrF,OAAO;IACT,CAAC;IACD,IAAI,CAAC,CAAC,mBAAmB,EAAE,CAAC;QAC1B,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE;YAC/B,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,cAAc;YACtB,IAAI,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAAI;YAChC,MAAM,EAAE,CAAC,CAAC,mBAAmB,CAAC,OAAO;YACrC,OAAO,EAAE,CAAC,CAAC,eAAe;YAC1B,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;IACL,CAAC;IACD,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACjH,CAAC"}
1
+ {"version":3,"file":"prepareTarget.js","sourceRoot":"","sources":["../../src/tools/prepareTarget.ts"],"names":[],"mappings":"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"}