e2e 0.15.2 → 0.17.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 (1024) hide show
  1. package/dist/.build.json +1 -1
  2. package/dist/agent/act-validation.d.ts +10 -1
  3. package/dist/agent/act-validation.js +48 -1
  4. package/dist/agent/act.d.ts +1 -2
  5. package/dist/agent/act.js +29 -9
  6. package/dist/agent/action-dispatcher.d.ts +0 -1
  7. package/dist/agent/action-dispatcher.js +4 -6
  8. package/dist/agent/action-names.d.ts +0 -1
  9. package/dist/agent/action-names.js +0 -1
  10. package/dist/agent/actions.d.ts +32 -24
  11. package/dist/agent/actions.js +38 -25
  12. package/dist/agent/agent-brand.d.ts +0 -1
  13. package/dist/agent/agent-brand.js +0 -1
  14. package/dist/agent/ai-sdk.d.ts +7 -1
  15. package/dist/agent/ai-sdk.js +11 -1
  16. package/dist/agent/call-options.d.ts +0 -1
  17. package/dist/agent/call-options.js +0 -1
  18. package/dist/agent/default-agent.d.ts +0 -1
  19. package/dist/agent/default-agent.js +0 -1
  20. package/dist/agent/derived.d.ts +0 -1
  21. package/dist/agent/derived.js +0 -1
  22. package/dist/agent/error.d.ts +0 -1
  23. package/dist/agent/error.js +0 -1
  24. package/dist/agent/executor.d.ts +0 -1
  25. package/dist/agent/executor.js +0 -1
  26. package/dist/agent/index.d.ts +0 -1
  27. package/dist/agent/index.js +0 -1
  28. package/dist/agent/interactive-step.d.ts +0 -1
  29. package/dist/agent/interactive-step.js +0 -1
  30. package/dist/agent/invocation.d.ts +0 -1
  31. package/dist/agent/invocation.js +10 -5
  32. package/dist/agent/ledger.d.ts +0 -1
  33. package/dist/agent/ledger.js +0 -1
  34. package/dist/agent/loop-guards.d.ts +0 -1
  35. package/dist/agent/loop-guards.js +0 -1
  36. package/dist/agent/model/adapter.d.ts +0 -1
  37. package/dist/agent/model/adapter.js +0 -1
  38. package/dist/agent/model/overflow.d.ts +0 -1
  39. package/dist/agent/model/overflow.js +0 -1
  40. package/dist/agent/model/provider-hints.d.ts +0 -1
  41. package/dist/agent/model/provider-hints.js +0 -1
  42. package/dist/agent/model/schema.d.ts +0 -1
  43. package/dist/agent/model/schema.js +0 -1
  44. package/dist/agent/model/sdk.d.ts +0 -1
  45. package/dist/agent/model/sdk.js +2 -1
  46. package/dist/agent/model/stall.d.ts +0 -1
  47. package/dist/agent/model/stall.js +0 -1
  48. package/dist/agent/model/tool-choice.d.ts +0 -1
  49. package/dist/agent/model/tool-choice.js +0 -1
  50. package/dist/agent/observation-budget.d.ts +0 -1
  51. package/dist/agent/observation-budget.js +0 -1
  52. package/dist/agent/observation-feed.d.ts +5 -7
  53. package/dist/agent/observation-feed.js +5 -8
  54. package/dist/agent/observation.d.ts +40 -12
  55. package/dist/agent/observation.js +109 -60
  56. package/dist/agent/operation-queue.d.ts +0 -1
  57. package/dist/agent/operation-queue.js +0 -1
  58. package/dist/agent/phases.d.ts +0 -1
  59. package/dist/agent/phases.js +0 -1
  60. package/dist/agent/pixels.d.ts +0 -1
  61. package/dist/agent/pixels.js +0 -1
  62. package/dist/agent/point-tap.d.ts +8 -9
  63. package/dist/agent/point-tap.js +1 -2
  64. package/dist/agent/primitives.d.ts +6 -1
  65. package/dist/agent/primitives.js +4 -2
  66. package/dist/agent/prompts.d.ts +0 -1
  67. package/dist/agent/prompts.js +0 -1
  68. package/dist/agent/protocol.d.ts +0 -1
  69. package/dist/agent/protocol.js +0 -1
  70. package/dist/agent/public.d.ts +0 -1
  71. package/dist/agent/public.js +0 -1
  72. package/dist/agent/reading.d.ts +0 -1
  73. package/dist/agent/reading.js +0 -1
  74. package/dist/agent/replay.d.ts +19 -9
  75. package/dist/agent/replay.js +11 -15
  76. package/dist/agent/screen-update.d.ts +0 -1
  77. package/dist/agent/screen-update.js +0 -1
  78. package/dist/agent/scroll-target.d.ts +2 -4
  79. package/dist/agent/scroll-target.js +0 -1
  80. package/dist/agent/secrets.d.ts +0 -1
  81. package/dist/agent/secrets.js +0 -1
  82. package/dist/agent/settle-policy.d.ts +0 -1
  83. package/dist/agent/settle-policy.js +0 -1
  84. package/dist/agent/step-accounting.d.ts +0 -1
  85. package/dist/agent/step-accounting.js +0 -1
  86. package/dist/agent/step-cache.d.ts +41 -15
  87. package/dist/agent/step-cache.js +147 -63
  88. package/dist/agent/tool-loop.d.ts +0 -1
  89. package/dist/agent/tool-loop.js +2 -1
  90. package/dist/agent/tool-output.d.ts +0 -1
  91. package/dist/agent/tool-output.js +0 -1
  92. package/dist/agent/tool.d.ts +0 -1
  93. package/dist/agent/tool.js +0 -1
  94. package/dist/agent/transcript-compaction.d.ts +0 -1
  95. package/dist/agent/transcript-compaction.js +0 -1
  96. package/dist/agent/upload-paths.d.ts +0 -1
  97. package/dist/agent/upload-paths.js +0 -1
  98. package/dist/agent/usage.d.ts +0 -1
  99. package/dist/agent/usage.js +0 -1
  100. package/dist/cache/anchors.d.ts +72 -24
  101. package/dist/cache/anchors.js +233 -61
  102. package/dist/cache/context.d.ts +25 -15
  103. package/dist/cache/context.js +50 -9
  104. package/dist/cache/decide.d.ts +2 -3
  105. package/dist/cache/decide.js +4 -7
  106. package/dist/cache/identity.d.ts +18 -5
  107. package/dist/cache/identity.js +9 -5
  108. package/dist/cache/recorder.d.ts +15 -2
  109. package/dist/cache/recorder.js +36 -24
  110. package/dist/cache/rekeyed.d.ts +46 -0
  111. package/dist/cache/rekeyed.js +89 -0
  112. package/dist/cache/relocate.d.ts +14 -15
  113. package/dist/cache/relocate.js +33 -26
  114. package/dist/cache/route.d.ts +32 -34
  115. package/dist/cache/route.js +94 -51
  116. package/dist/cache/store.d.ts +6 -1
  117. package/dist/cache/store.js +21 -2
  118. package/dist/cache/template.d.ts +0 -1
  119. package/dist/cache/template.js +0 -1
  120. package/dist/cache/trace.d.ts +53 -15
  121. package/dist/cache/trace.js +70 -29
  122. package/dist/cli/bin.d.ts +0 -1
  123. package/dist/cli/bin.js +0 -1
  124. package/dist/cli/cache.d.ts +0 -1
  125. package/dist/cli/cache.js +0 -1
  126. package/dist/cli/docs-url.d.ts +0 -1
  127. package/dist/cli/docs-url.js +0 -1
  128. package/dist/cli/feedback.d.ts +0 -1
  129. package/dist/cli/feedback.js +0 -1
  130. package/dist/cli/guide.d.ts +0 -1
  131. package/dist/cli/guide.js +0 -1
  132. package/dist/cli/index.d.ts +0 -1
  133. package/dist/cli/index.js +10 -11
  134. package/dist/cli/init/agent-skill.d.ts +0 -1
  135. package/dist/cli/init/agent-skill.js +0 -1
  136. package/dist/cli/init/engines.d.ts +1 -4
  137. package/dist/cli/init/engines.js +2 -3
  138. package/dist/cli/init/gateways.d.ts +1 -2
  139. package/dist/cli/init/gateways.js +11 -2
  140. package/dist/cli/init/mcp-config.d.ts +0 -1
  141. package/dist/cli/init/mcp-config.js +0 -1
  142. package/dist/cli/init/package.d.ts +0 -1
  143. package/dist/cli/init/package.js +0 -1
  144. package/dist/cli/init/scaffold.d.ts +0 -1
  145. package/dist/cli/init/scaffold.js +0 -1
  146. package/dist/cli/init/sibling-versions.json +1 -1
  147. package/dist/cli/init/versions.d.ts +0 -9
  148. package/dist/cli/init/versions.js +1 -11
  149. package/dist/cli/init.d.ts +0 -1
  150. package/dist/cli/init.js +0 -1
  151. package/dist/cli/mcp.d.ts +9 -2
  152. package/dist/cli/mcp.js +14 -2
  153. package/dist/cli/signals.d.ts +0 -1
  154. package/dist/cli/signals.js +0 -1
  155. package/dist/cli/skill.d.ts +0 -1
  156. package/dist/cli/skill.js +0 -1
  157. package/dist/cli/telemetry.d.ts +0 -1
  158. package/dist/cli/telemetry.js +1 -2
  159. package/dist/cli/wordmark.d.ts +0 -1
  160. package/dist/cli/wordmark.js +0 -1
  161. package/dist/collect/collect.d.ts +0 -1
  162. package/dist/collect/collect.js +3 -2
  163. package/dist/collect/registry.d.ts +6 -3
  164. package/dist/collect/registry.js +31 -14
  165. package/dist/collect/select.d.ts +0 -1
  166. package/dist/collect/select.js +0 -1
  167. package/dist/config/agent.d.ts +0 -1
  168. package/dist/config/agent.js +0 -1
  169. package/dist/config/app.d.ts +0 -1
  170. package/dist/config/app.js +0 -1
  171. package/dist/config/command.d.ts +0 -1
  172. package/dist/config/command.js +0 -1
  173. package/dist/config/diagnose.d.ts +0 -1
  174. package/dist/config/diagnose.js +0 -1
  175. package/dist/config/esm-hooks.d.ts +0 -1
  176. package/dist/config/esm-hooks.js +0 -1
  177. package/dist/config/load.d.ts +0 -1
  178. package/dist/config/load.js +0 -1
  179. package/dist/config/resolve.d.ts +1 -1
  180. package/dist/config/resolve.js +33 -2
  181. package/dist/config/secrets.d.ts +0 -1
  182. package/dist/config/secrets.js +0 -1
  183. package/dist/config/targets.d.ts +0 -1
  184. package/dist/config/targets.js +0 -1
  185. package/dist/config/validate.d.ts +0 -1
  186. package/dist/config/validate.js +0 -1
  187. package/dist/engine/contract.d.ts +0 -1
  188. package/dist/engine/contract.js +0 -1
  189. package/dist/engine/index.d.ts +3 -4
  190. package/dist/engine/index.js +4 -4
  191. package/dist/engine/manifest.d.ts +0 -1
  192. package/dist/engine/manifest.js +0 -1
  193. package/dist/engine/recording.d.ts +0 -1
  194. package/dist/engine/recording.js +0 -1
  195. package/dist/engine/resolve.d.ts +0 -1
  196. package/dist/engine/resolve.js +0 -1
  197. package/dist/engine/session.d.ts +0 -1
  198. package/dist/engine/session.js +0 -1
  199. package/dist/engine/surface.d.ts +0 -1
  200. package/dist/engine/surface.js +0 -1
  201. package/dist/engine/timing.d.ts +0 -1
  202. package/dist/engine/timing.js +0 -1
  203. package/dist/expect/async.d.ts +0 -1
  204. package/dist/expect/async.js +101 -59
  205. package/dist/expect/attempt.d.ts +0 -1
  206. package/dist/expect/attempt.js +0 -1
  207. package/dist/expect/index.d.ts +0 -1
  208. package/dist/expect/index.js +0 -1
  209. package/dist/expect/poll-scope.d.ts +52 -0
  210. package/dist/expect/poll-scope.js +113 -0
  211. package/dist/expect/poll.d.ts +0 -1
  212. package/dist/expect/poll.js +31 -5
  213. package/dist/expect/soft.d.ts +0 -1
  214. package/dist/expect/soft.js +0 -1
  215. package/dist/expect/values.d.ts +0 -1
  216. package/dist/expect/values.js +11 -5
  217. package/dist/explore/body.d.ts +0 -1
  218. package/dist/explore/body.js +0 -1
  219. package/dist/explore/executor.d.ts +0 -1
  220. package/dist/explore/executor.js +0 -1
  221. package/dist/explore/index.d.ts +0 -1
  222. package/dist/explore/index.js +16 -2
  223. package/dist/explore/plan.d.ts +0 -1
  224. package/dist/explore/plan.js +0 -1
  225. package/dist/explore/progress.d.ts +0 -1
  226. package/dist/explore/progress.js +0 -1
  227. package/dist/explore/state.d.ts +0 -1
  228. package/dist/explore/state.js +0 -1
  229. package/dist/index.d.ts +0 -1
  230. package/dist/index.js +0 -1
  231. package/dist/internal/abandoned.d.ts +11 -0
  232. package/dist/internal/abandoned.js +23 -0
  233. package/dist/internal/ai-trace.d.ts +0 -1
  234. package/dist/internal/ai-trace.js +0 -1
  235. package/dist/internal/atomic-write.d.ts +0 -1
  236. package/dist/internal/atomic-write.js +0 -1
  237. package/dist/internal/brands.d.ts +2 -1
  238. package/dist/internal/brands.js +2 -1
  239. package/dist/internal/client-identity.d.ts +9 -0
  240. package/dist/internal/client-identity.js +14 -0
  241. package/dist/internal/debug.d.ts +0 -1
  242. package/dist/internal/debug.js +0 -1
  243. package/dist/internal/env.d.ts +0 -1
  244. package/dist/internal/env.js +0 -1
  245. package/dist/internal/errors.d.ts +0 -1
  246. package/dist/internal/errors.js +0 -1
  247. package/dist/internal/geometry.d.ts +0 -1
  248. package/dist/internal/geometry.js +0 -1
  249. package/dist/internal/git.d.ts +0 -1
  250. package/dist/internal/git.js +0 -1
  251. package/dist/internal/globs.d.ts +0 -1
  252. package/dist/internal/globs.js +0 -1
  253. package/dist/internal/ids.d.ts +0 -1
  254. package/dist/internal/ids.js +0 -1
  255. package/dist/internal/json-value.d.ts +0 -1
  256. package/dist/internal/json-value.js +0 -1
  257. package/dist/internal/keys.d.ts +0 -1
  258. package/dist/internal/keys.js +0 -1
  259. package/dist/internal/node-version.d.ts +0 -1
  260. package/dist/internal/node-version.js +0 -1
  261. package/dist/internal/objects.d.ts +0 -1
  262. package/dist/internal/objects.js +0 -1
  263. package/dist/internal/options.d.ts +0 -1
  264. package/dist/internal/options.js +0 -1
  265. package/dist/internal/package-manager.d.ts +0 -1
  266. package/dist/internal/package-manager.js +0 -1
  267. package/dist/internal/package-version.d.ts +0 -1
  268. package/dist/internal/package-version.js +0 -1
  269. package/dist/internal/paths.d.ts +0 -1
  270. package/dist/internal/paths.js +0 -1
  271. package/dist/internal/realm-slot.d.ts +0 -1
  272. package/dist/internal/realm-slot.js +0 -1
  273. package/dist/internal/recording-modes.d.ts +0 -1
  274. package/dist/internal/recording-modes.js +0 -1
  275. package/dist/internal/redact.d.ts +7 -5
  276. package/dist/internal/redact.js +116 -24
  277. package/dist/internal/regexp.d.ts +0 -1
  278. package/dist/internal/regexp.js +0 -1
  279. package/dist/internal/roles.d.ts +0 -1
  280. package/dist/internal/roles.js +0 -1
  281. package/dist/internal/skip.d.ts +0 -1
  282. package/dist/internal/skip.js +0 -1
  283. package/dist/internal/source.d.ts +0 -1
  284. package/dist/internal/source.js +0 -1
  285. package/dist/internal/standard-schema.d.ts +0 -1
  286. package/dist/internal/standard-schema.js +0 -1
  287. package/dist/internal/suggest.d.ts +0 -1
  288. package/dist/internal/suggest.js +0 -1
  289. package/dist/internal/text.d.ts +8 -1
  290. package/dist/internal/text.js +13 -2
  291. package/dist/internal/time.d.ts +6 -1
  292. package/dist/internal/time.js +25 -14
  293. package/dist/internal/urls.d.ts +9 -6
  294. package/dist/internal/urls.js +19 -11
  295. package/dist/internal/vcs.d.ts +0 -1
  296. package/dist/internal/vcs.js +0 -1
  297. package/dist/internal/zip.d.ts +0 -1
  298. package/dist/internal/zip.js +0 -1
  299. package/dist/locator/engine.d.ts +12 -3
  300. package/dist/locator/engine.js +8 -4
  301. package/dist/locator/expression.d.ts +0 -1
  302. package/dist/locator/expression.js +0 -1
  303. package/dist/locator/screen.d.ts +0 -1
  304. package/dist/locator/screen.js +28 -5
  305. package/dist/mcp/catalog.d.ts +7 -3
  306. package/dist/mcp/catalog.js +8 -9
  307. package/dist/mcp/config.d.ts +0 -1
  308. package/dist/mcp/config.js +0 -1
  309. package/dist/mcp/recording.d.ts +0 -1
  310. package/dist/mcp/recording.js +0 -1
  311. package/dist/mcp/server.d.ts +8 -1
  312. package/dist/mcp/server.js +8 -5
  313. package/dist/mcp/session.d.ts +4 -2
  314. package/dist/mcp/session.js +44 -22
  315. package/dist/mcp/sessions.d.ts +2 -1
  316. package/dist/mcp/sessions.js +5 -2
  317. package/dist/mcp/tools.d.ts +7 -6
  318. package/dist/mcp/tools.js +36 -11
  319. package/dist/mcp/usage.d.ts +61 -0
  320. package/dist/mcp/usage.js +73 -0
  321. package/dist/oauth/callback-server.d.ts +0 -1
  322. package/dist/oauth/callback-server.js +0 -1
  323. package/dist/oauth/chatgpt.d.ts +0 -1
  324. package/dist/oauth/chatgpt.js +3 -24
  325. package/dist/oauth/cli.d.ts +0 -1
  326. package/dist/oauth/cli.js +1 -1
  327. package/dist/oauth/copilot.d.ts +5 -5
  328. package/dist/oauth/copilot.js +80 -8
  329. package/dist/oauth/device-code.d.ts +0 -1
  330. package/dist/oauth/device-code.js +0 -1
  331. package/dist/oauth/errors.d.ts +0 -1
  332. package/dist/oauth/errors.js +0 -1
  333. package/dist/oauth/fetch.d.ts +0 -1
  334. package/dist/oauth/fetch.js +0 -1
  335. package/dist/oauth/grok.d.ts +0 -1
  336. package/dist/oauth/grok.js +2 -2
  337. package/dist/oauth/jwt.d.ts +0 -1
  338. package/dist/oauth/jwt.js +0 -1
  339. package/dist/oauth/login.d.ts +0 -1
  340. package/dist/oauth/login.js +0 -1
  341. package/dist/oauth/models.d.ts +0 -1
  342. package/dist/oauth/models.js +2 -2
  343. package/dist/oauth/opencode-console.d.ts +10 -0
  344. package/dist/oauth/opencode-console.js +133 -0
  345. package/dist/oauth/pkce.d.ts +0 -1
  346. package/dist/oauth/pkce.js +0 -1
  347. package/dist/oauth/providers/github-copilot.d.ts +12 -1
  348. package/dist/oauth/providers/github-copilot.js +80 -19
  349. package/dist/oauth/providers/openai.d.ts +0 -1
  350. package/dist/oauth/providers/openai.js +1 -2
  351. package/dist/oauth/providers/opencode-console.d.ts +31 -0
  352. package/dist/oauth/providers/opencode-console.js +148 -0
  353. package/dist/oauth/providers/xai.d.ts +0 -1
  354. package/dist/oauth/providers/xai.js +0 -1
  355. package/dist/oauth/providers.d.ts +2 -7
  356. package/dist/oauth/providers.js +3 -8
  357. package/dist/oauth/responses.d.ts +9 -0
  358. package/dist/oauth/responses.js +23 -0
  359. package/dist/oauth/sse.d.ts +0 -1
  360. package/dist/oauth/sse.js +0 -1
  361. package/dist/oauth/store.d.ts +0 -1
  362. package/dist/oauth/store.js +0 -1
  363. package/dist/oauth/token-endpoint.d.ts +0 -1
  364. package/dist/oauth/token-endpoint.js +0 -1
  365. package/dist/oauth/types.d.ts +0 -1
  366. package/dist/oauth/types.js +0 -1
  367. package/dist/params.d.ts +0 -1
  368. package/dist/params.js +0 -1
  369. package/dist/report/build.d.ts +26 -1
  370. package/dist/report/build.js +16 -9
  371. package/dist/report/builtin.d.ts +0 -1
  372. package/dist/report/builtin.js +0 -1
  373. package/dist/report/code-frame.d.ts +0 -1
  374. package/dist/report/code-frame.js +0 -1
  375. package/dist/report/debug-steps.d.ts +0 -1
  376. package/dist/report/debug-steps.js +0 -1
  377. package/dist/report/explore-text.d.ts +0 -1
  378. package/dist/report/explore-text.js +0 -1
  379. package/dist/report/failure-text.d.ts +6 -2
  380. package/dist/report/failure-text.js +14 -5
  381. package/dist/report/format.d.ts +10 -6
  382. package/dist/report/format.js +12 -6
  383. package/dist/report/json.d.ts +0 -1
  384. package/dist/report/json.js +0 -1
  385. package/dist/report/junit.d.ts +0 -1
  386. package/dist/report/junit.js +11 -13
  387. package/dist/report/list-explore.d.ts +0 -1
  388. package/dist/report/list-explore.js +0 -1
  389. package/dist/report/list-model.d.ts +0 -1
  390. package/dist/report/list-model.js +0 -1
  391. package/dist/report/list-steps.d.ts +0 -1
  392. package/dist/report/list-steps.js +0 -1
  393. package/dist/report/list.d.ts +1 -1
  394. package/dist/report/list.js +38 -19
  395. package/dist/report/live-window.d.ts +0 -1
  396. package/dist/report/live-window.js +0 -1
  397. package/dist/report/markdown-text.d.ts +0 -1
  398. package/dist/report/markdown-text.js +0 -1
  399. package/dist/report/markdown.d.ts +1 -2
  400. package/dist/report/markdown.js +37 -15
  401. package/dist/report/outcome.d.ts +0 -1
  402. package/dist/report/outcome.js +0 -1
  403. package/dist/report/repeats.d.ts +6 -2
  404. package/dist/report/repeats.js +12 -4
  405. package/dist/report/running-tree.d.ts +0 -1
  406. package/dist/report/running-tree.js +0 -1
  407. package/dist/report/write.d.ts +0 -1
  408. package/dist/report/write.js +0 -1
  409. package/dist/run/app-ports.d.ts +0 -1
  410. package/dist/run/app-ports.js +0 -1
  411. package/dist/run/artifacts.d.ts +18 -1
  412. package/dist/run/artifacts.js +68 -2
  413. package/dist/run/budget.d.ts +0 -1
  414. package/dist/run/budget.js +0 -1
  415. package/dist/run/declared-processes.d.ts +0 -1
  416. package/dist/run/declared-processes.js +0 -1
  417. package/dist/run/events.d.ts +0 -1
  418. package/dist/run/events.js +0 -1
  419. package/dist/run/execute.d.ts +9 -1
  420. package/dist/run/execute.js +55 -29
  421. package/dist/run/extended-fixtures.d.ts +0 -1
  422. package/dist/run/extended-fixtures.js +6 -3
  423. package/dist/run/failure-evidence.d.ts +0 -1
  424. package/dist/run/failure-evidence.js +4 -3
  425. package/dist/run/fixture-recording.d.ts +0 -1
  426. package/dist/run/fixture-recording.js +0 -1
  427. package/dist/run/fixtures.d.ts +0 -1
  428. package/dist/run/fixtures.js +6 -9
  429. package/dist/run/in-process.d.ts +2 -1
  430. package/dist/run/in-process.js +1 -1
  431. package/dist/run/last-run.d.ts +42 -9
  432. package/dist/run/last-run.js +121 -15
  433. package/dist/run/managed-process.d.ts +0 -1
  434. package/dist/run/managed-process.js +0 -1
  435. package/dist/run/output.d.ts +0 -1
  436. package/dist/run/output.js +0 -1
  437. package/dist/run/process-pool.d.ts +0 -1
  438. package/dist/run/process-pool.js +0 -1
  439. package/dist/run/provision.d.ts +0 -1
  440. package/dist/run/provision.js +0 -1
  441. package/dist/run/realm.d.ts +6 -2
  442. package/dist/run/realm.js +21 -8
  443. package/dist/run/records.d.ts +16 -1
  444. package/dist/run/records.js +26 -1
  445. package/dist/run/retry.d.ts +3 -2
  446. package/dist/run/retry.js +4 -3
  447. package/dist/run/runner.d.ts +3 -2
  448. package/dist/run/runner.js +70 -32
  449. package/dist/run/scheduler.d.ts +0 -1
  450. package/dist/run/scheduler.js +0 -1
  451. package/dist/run/secrecy.d.ts +15 -1
  452. package/dist/run/secrecy.js +27 -2
  453. package/dist/run/serial.d.ts +2 -1
  454. package/dist/run/serial.js +8 -6
  455. package/dist/run/sessions.d.ts +0 -1
  456. package/dist/run/sessions.js +0 -1
  457. package/dist/run/standalone.d.ts +0 -1
  458. package/dist/run/standalone.js +3 -3
  459. package/dist/run/steps.d.ts +2 -9
  460. package/dist/run/steps.js +7 -22
  461. package/dist/run/trace-redaction.d.ts +0 -1
  462. package/dist/run/trace-redaction.js +0 -1
  463. package/dist/run/unit-runner.d.ts +0 -1
  464. package/dist/run/unit-runner.js +0 -1
  465. package/dist/run/units.d.ts +0 -1
  466. package/dist/run/units.js +0 -1
  467. package/dist/run/worker/entry.d.ts +0 -1
  468. package/dist/run/worker/entry.js +7 -7
  469. package/dist/run/worker/handle.d.ts +0 -1
  470. package/dist/run/worker/handle.js +0 -1
  471. package/dist/run/worker/protocol.d.ts +2 -1
  472. package/dist/run/worker/protocol.js +0 -1
  473. package/dist/run/worker/session.d.ts +2 -1
  474. package/dist/run/worker/session.js +1 -1
  475. package/dist/run/worker-models.d.ts +0 -1
  476. package/dist/run/worker-models.js +0 -1
  477. package/dist/secrets.d.ts +0 -1
  478. package/dist/secrets.js +0 -1
  479. package/dist/telemetry/checkout.d.ts +0 -1
  480. package/dist/telemetry/checkout.js +0 -1
  481. package/dist/telemetry/environment.d.ts +0 -1
  482. package/dist/telemetry/environment.js +0 -1
  483. package/dist/telemetry/events.d.ts +26 -10
  484. package/dist/telemetry/events.js +108 -13
  485. package/dist/telemetry/failure-kind.d.ts +0 -1
  486. package/dist/telemetry/failure-kind.js +0 -1
  487. package/dist/telemetry/posthog.d.ts +0 -1
  488. package/dist/telemetry/posthog.js +0 -1
  489. package/dist/telemetry/project.d.ts +0 -1
  490. package/dist/telemetry/project.js +0 -1
  491. package/dist/telemetry/store.d.ts +0 -1
  492. package/dist/telemetry/store.js +0 -1
  493. package/dist/telemetry/telemetry.d.ts +19 -8
  494. package/dist/telemetry/telemetry.js +26 -9
  495. package/dist/telemetry/token.d.ts +0 -1
  496. package/dist/telemetry/token.js +0 -1
  497. package/dist/types.d.ts +34 -26
  498. package/dist/types.js +0 -1
  499. package/docs/agents.mdx +6 -3
  500. package/docs/assertions.mdx +94 -0
  501. package/docs/authentication.mdx +3 -1
  502. package/docs/browser.mdx +42 -6
  503. package/docs/cache.mdx +64 -18
  504. package/docs/ci.mdx +11 -7
  505. package/docs/debugging.mdx +6 -3
  506. package/docs/executors.mdx +5 -3
  507. package/docs/github.mdx +12 -4
  508. package/docs/{writing-tests.mdx → goals.mdx} +21 -101
  509. package/docs/index.mdx +4 -4
  510. package/docs/integrations/kernel.mdx +1 -1
  511. package/docs/locators.mdx +64 -0
  512. package/docs/migrate/cypress.mdx +2 -2
  513. package/docs/migrate/maestro.mdx +2 -2
  514. package/docs/migrate/playwright.mdx +22 -16
  515. package/docs/migrate/selenium.mdx +2 -2
  516. package/docs/mobile.mdx +61 -4
  517. package/docs/models.mdx +53 -7
  518. package/docs/physical-devices.mdx +76 -0
  519. package/docs/quickstart.mdx +4 -3
  520. package/docs/reference/app.mdx +1 -1
  521. package/docs/reference/cli.mdx +30 -11
  522. package/docs/reference/config.mdx +25 -7
  523. package/docs/reference/engine.mdx +4 -3
  524. package/docs/reference/environment.mdx +8 -1
  525. package/docs/reference/errors.mdx +5 -5
  526. package/docs/reference/expect.mdx +79 -24
  527. package/docs/reference/mcp.mdx +3 -0
  528. package/docs/reference/mobile.mdx +23 -13
  529. package/docs/reference/reporters.mdx +8 -2
  530. package/docs/reference/screen.mdx +30 -7
  531. package/docs/reference/test.mdx +11 -4
  532. package/docs/reference/web.mdx +131 -23
  533. package/docs/security.mdx +45 -19
  534. package/docs/subscriptions.mdx +97 -9
  535. package/docs/telemetry.mdx +48 -6
  536. package/package.json +18 -4
  537. package/schema/report-v1.schema.json +14 -1
  538. package/skills/e2e/SKILL.md +2 -2
  539. package/skills/e2e/references/agent.md +22 -11
  540. package/skills/e2e/references/debugging.md +4 -4
  541. package/skills/e2e/references/mcp.md +3 -0
  542. package/skills/e2e/references/running.md +13 -8
  543. package/skills/e2e/references/setup.md +42 -15
  544. package/skills/e2e/references/writing-tests.md +43 -15
  545. package/dist/agent/act-validation.d.ts.map +0 -1
  546. package/dist/agent/act-validation.js.map +0 -1
  547. package/dist/agent/act.d.ts.map +0 -1
  548. package/dist/agent/act.js.map +0 -1
  549. package/dist/agent/action-dispatcher.d.ts.map +0 -1
  550. package/dist/agent/action-dispatcher.js.map +0 -1
  551. package/dist/agent/action-names.d.ts.map +0 -1
  552. package/dist/agent/action-names.js.map +0 -1
  553. package/dist/agent/actions.d.ts.map +0 -1
  554. package/dist/agent/actions.js.map +0 -1
  555. package/dist/agent/agent-brand.d.ts.map +0 -1
  556. package/dist/agent/agent-brand.js.map +0 -1
  557. package/dist/agent/ai-sdk.d.ts.map +0 -1
  558. package/dist/agent/ai-sdk.js.map +0 -1
  559. package/dist/agent/call-options.d.ts.map +0 -1
  560. package/dist/agent/call-options.js.map +0 -1
  561. package/dist/agent/default-agent.d.ts.map +0 -1
  562. package/dist/agent/default-agent.js.map +0 -1
  563. package/dist/agent/derived.d.ts.map +0 -1
  564. package/dist/agent/derived.js.map +0 -1
  565. package/dist/agent/error.d.ts.map +0 -1
  566. package/dist/agent/error.js.map +0 -1
  567. package/dist/agent/executor.d.ts.map +0 -1
  568. package/dist/agent/executor.js.map +0 -1
  569. package/dist/agent/index.d.ts.map +0 -1
  570. package/dist/agent/index.js.map +0 -1
  571. package/dist/agent/interactive-step.d.ts.map +0 -1
  572. package/dist/agent/interactive-step.js.map +0 -1
  573. package/dist/agent/invocation.d.ts.map +0 -1
  574. package/dist/agent/invocation.js.map +0 -1
  575. package/dist/agent/ledger.d.ts.map +0 -1
  576. package/dist/agent/ledger.js.map +0 -1
  577. package/dist/agent/loop-guards.d.ts.map +0 -1
  578. package/dist/agent/loop-guards.js.map +0 -1
  579. package/dist/agent/model/adapter.d.ts.map +0 -1
  580. package/dist/agent/model/adapter.js.map +0 -1
  581. package/dist/agent/model/overflow.d.ts.map +0 -1
  582. package/dist/agent/model/overflow.js.map +0 -1
  583. package/dist/agent/model/provider-hints.d.ts.map +0 -1
  584. package/dist/agent/model/provider-hints.js.map +0 -1
  585. package/dist/agent/model/schema.d.ts.map +0 -1
  586. package/dist/agent/model/schema.js.map +0 -1
  587. package/dist/agent/model/sdk.d.ts.map +0 -1
  588. package/dist/agent/model/sdk.js.map +0 -1
  589. package/dist/agent/model/stall.d.ts.map +0 -1
  590. package/dist/agent/model/stall.js.map +0 -1
  591. package/dist/agent/model/tool-choice.d.ts.map +0 -1
  592. package/dist/agent/model/tool-choice.js.map +0 -1
  593. package/dist/agent/observation-budget.d.ts.map +0 -1
  594. package/dist/agent/observation-budget.js.map +0 -1
  595. package/dist/agent/observation-feed.d.ts.map +0 -1
  596. package/dist/agent/observation-feed.js.map +0 -1
  597. package/dist/agent/observation.d.ts.map +0 -1
  598. package/dist/agent/observation.js.map +0 -1
  599. package/dist/agent/operation-queue.d.ts.map +0 -1
  600. package/dist/agent/operation-queue.js.map +0 -1
  601. package/dist/agent/phases.d.ts.map +0 -1
  602. package/dist/agent/phases.js.map +0 -1
  603. package/dist/agent/pixels.d.ts.map +0 -1
  604. package/dist/agent/pixels.js.map +0 -1
  605. package/dist/agent/point-tap.d.ts.map +0 -1
  606. package/dist/agent/point-tap.js.map +0 -1
  607. package/dist/agent/primitives.d.ts.map +0 -1
  608. package/dist/agent/primitives.js.map +0 -1
  609. package/dist/agent/prompts.d.ts.map +0 -1
  610. package/dist/agent/prompts.js.map +0 -1
  611. package/dist/agent/protocol.d.ts.map +0 -1
  612. package/dist/agent/protocol.js.map +0 -1
  613. package/dist/agent/public.d.ts.map +0 -1
  614. package/dist/agent/public.js.map +0 -1
  615. package/dist/agent/reading.d.ts.map +0 -1
  616. package/dist/agent/reading.js.map +0 -1
  617. package/dist/agent/replay.d.ts.map +0 -1
  618. package/dist/agent/replay.js.map +0 -1
  619. package/dist/agent/screen-update.d.ts.map +0 -1
  620. package/dist/agent/screen-update.js.map +0 -1
  621. package/dist/agent/scroll-target.d.ts.map +0 -1
  622. package/dist/agent/scroll-target.js.map +0 -1
  623. package/dist/agent/secrets.d.ts.map +0 -1
  624. package/dist/agent/secrets.js.map +0 -1
  625. package/dist/agent/settle-policy.d.ts.map +0 -1
  626. package/dist/agent/settle-policy.js.map +0 -1
  627. package/dist/agent/step-accounting.d.ts.map +0 -1
  628. package/dist/agent/step-accounting.js.map +0 -1
  629. package/dist/agent/step-cache.d.ts.map +0 -1
  630. package/dist/agent/step-cache.js.map +0 -1
  631. package/dist/agent/tool-loop.d.ts.map +0 -1
  632. package/dist/agent/tool-loop.js.map +0 -1
  633. package/dist/agent/tool-output.d.ts.map +0 -1
  634. package/dist/agent/tool-output.js.map +0 -1
  635. package/dist/agent/tool.d.ts.map +0 -1
  636. package/dist/agent/tool.js.map +0 -1
  637. package/dist/agent/transcript-compaction.d.ts.map +0 -1
  638. package/dist/agent/transcript-compaction.js.map +0 -1
  639. package/dist/agent/upload-paths.d.ts.map +0 -1
  640. package/dist/agent/upload-paths.js.map +0 -1
  641. package/dist/agent/usage.d.ts.map +0 -1
  642. package/dist/agent/usage.js.map +0 -1
  643. package/dist/cache/anchors.d.ts.map +0 -1
  644. package/dist/cache/anchors.js.map +0 -1
  645. package/dist/cache/context.d.ts.map +0 -1
  646. package/dist/cache/context.js.map +0 -1
  647. package/dist/cache/decide.d.ts.map +0 -1
  648. package/dist/cache/decide.js.map +0 -1
  649. package/dist/cache/identity.d.ts.map +0 -1
  650. package/dist/cache/identity.js.map +0 -1
  651. package/dist/cache/recorder.d.ts.map +0 -1
  652. package/dist/cache/recorder.js.map +0 -1
  653. package/dist/cache/relocate.d.ts.map +0 -1
  654. package/dist/cache/relocate.js.map +0 -1
  655. package/dist/cache/route.d.ts.map +0 -1
  656. package/dist/cache/route.js.map +0 -1
  657. package/dist/cache/store.d.ts.map +0 -1
  658. package/dist/cache/store.js.map +0 -1
  659. package/dist/cache/template.d.ts.map +0 -1
  660. package/dist/cache/template.js.map +0 -1
  661. package/dist/cache/trace.d.ts.map +0 -1
  662. package/dist/cache/trace.js.map +0 -1
  663. package/dist/cli/bin.d.ts.map +0 -1
  664. package/dist/cli/bin.js.map +0 -1
  665. package/dist/cli/cache.d.ts.map +0 -1
  666. package/dist/cli/cache.js.map +0 -1
  667. package/dist/cli/docs-url.d.ts.map +0 -1
  668. package/dist/cli/docs-url.js.map +0 -1
  669. package/dist/cli/feedback.d.ts.map +0 -1
  670. package/dist/cli/feedback.js.map +0 -1
  671. package/dist/cli/guide.d.ts.map +0 -1
  672. package/dist/cli/guide.js.map +0 -1
  673. package/dist/cli/index.d.ts.map +0 -1
  674. package/dist/cli/index.js.map +0 -1
  675. package/dist/cli/init/agent-skill.d.ts.map +0 -1
  676. package/dist/cli/init/agent-skill.js.map +0 -1
  677. package/dist/cli/init/engines.d.ts.map +0 -1
  678. package/dist/cli/init/engines.js.map +0 -1
  679. package/dist/cli/init/gateways.d.ts.map +0 -1
  680. package/dist/cli/init/gateways.js.map +0 -1
  681. package/dist/cli/init/mcp-config.d.ts.map +0 -1
  682. package/dist/cli/init/mcp-config.js.map +0 -1
  683. package/dist/cli/init/package.d.ts.map +0 -1
  684. package/dist/cli/init/package.js.map +0 -1
  685. package/dist/cli/init/scaffold.d.ts.map +0 -1
  686. package/dist/cli/init/scaffold.js.map +0 -1
  687. package/dist/cli/init/versions.d.ts.map +0 -1
  688. package/dist/cli/init/versions.js.map +0 -1
  689. package/dist/cli/init.d.ts.map +0 -1
  690. package/dist/cli/init.js.map +0 -1
  691. package/dist/cli/mcp.d.ts.map +0 -1
  692. package/dist/cli/mcp.js.map +0 -1
  693. package/dist/cli/signals.d.ts.map +0 -1
  694. package/dist/cli/signals.js.map +0 -1
  695. package/dist/cli/skill.d.ts.map +0 -1
  696. package/dist/cli/skill.js.map +0 -1
  697. package/dist/cli/telemetry.d.ts.map +0 -1
  698. package/dist/cli/telemetry.js.map +0 -1
  699. package/dist/cli/wordmark.d.ts.map +0 -1
  700. package/dist/cli/wordmark.js.map +0 -1
  701. package/dist/collect/collect.d.ts.map +0 -1
  702. package/dist/collect/collect.js.map +0 -1
  703. package/dist/collect/registry.d.ts.map +0 -1
  704. package/dist/collect/registry.js.map +0 -1
  705. package/dist/collect/select.d.ts.map +0 -1
  706. package/dist/collect/select.js.map +0 -1
  707. package/dist/config/agent.d.ts.map +0 -1
  708. package/dist/config/agent.js.map +0 -1
  709. package/dist/config/app.d.ts.map +0 -1
  710. package/dist/config/app.js.map +0 -1
  711. package/dist/config/command.d.ts.map +0 -1
  712. package/dist/config/command.js.map +0 -1
  713. package/dist/config/diagnose.d.ts.map +0 -1
  714. package/dist/config/diagnose.js.map +0 -1
  715. package/dist/config/esm-hooks.d.ts.map +0 -1
  716. package/dist/config/esm-hooks.js.map +0 -1
  717. package/dist/config/load.d.ts.map +0 -1
  718. package/dist/config/load.js.map +0 -1
  719. package/dist/config/resolve.d.ts.map +0 -1
  720. package/dist/config/resolve.js.map +0 -1
  721. package/dist/config/secrets.d.ts.map +0 -1
  722. package/dist/config/secrets.js.map +0 -1
  723. package/dist/config/targets.d.ts.map +0 -1
  724. package/dist/config/targets.js.map +0 -1
  725. package/dist/config/validate.d.ts.map +0 -1
  726. package/dist/config/validate.js.map +0 -1
  727. package/dist/engine/contract.d.ts.map +0 -1
  728. package/dist/engine/contract.js.map +0 -1
  729. package/dist/engine/index.d.ts.map +0 -1
  730. package/dist/engine/index.js.map +0 -1
  731. package/dist/engine/manifest.d.ts.map +0 -1
  732. package/dist/engine/manifest.js.map +0 -1
  733. package/dist/engine/recording.d.ts.map +0 -1
  734. package/dist/engine/recording.js.map +0 -1
  735. package/dist/engine/resolve.d.ts.map +0 -1
  736. package/dist/engine/resolve.js.map +0 -1
  737. package/dist/engine/session.d.ts.map +0 -1
  738. package/dist/engine/session.js.map +0 -1
  739. package/dist/engine/surface.d.ts.map +0 -1
  740. package/dist/engine/surface.js.map +0 -1
  741. package/dist/engine/timing.d.ts.map +0 -1
  742. package/dist/engine/timing.js.map +0 -1
  743. package/dist/expect/async.d.ts.map +0 -1
  744. package/dist/expect/async.js.map +0 -1
  745. package/dist/expect/attempt.d.ts.map +0 -1
  746. package/dist/expect/attempt.js.map +0 -1
  747. package/dist/expect/index.d.ts.map +0 -1
  748. package/dist/expect/index.js.map +0 -1
  749. package/dist/expect/poll.d.ts.map +0 -1
  750. package/dist/expect/poll.js.map +0 -1
  751. package/dist/expect/soft.d.ts.map +0 -1
  752. package/dist/expect/soft.js.map +0 -1
  753. package/dist/expect/values.d.ts.map +0 -1
  754. package/dist/expect/values.js.map +0 -1
  755. package/dist/explore/body.d.ts.map +0 -1
  756. package/dist/explore/body.js.map +0 -1
  757. package/dist/explore/executor.d.ts.map +0 -1
  758. package/dist/explore/executor.js.map +0 -1
  759. package/dist/explore/index.d.ts.map +0 -1
  760. package/dist/explore/index.js.map +0 -1
  761. package/dist/explore/plan.d.ts.map +0 -1
  762. package/dist/explore/plan.js.map +0 -1
  763. package/dist/explore/progress.d.ts.map +0 -1
  764. package/dist/explore/progress.js.map +0 -1
  765. package/dist/explore/state.d.ts.map +0 -1
  766. package/dist/explore/state.js.map +0 -1
  767. package/dist/index.d.ts.map +0 -1
  768. package/dist/index.js.map +0 -1
  769. package/dist/internal/ai-trace.d.ts.map +0 -1
  770. package/dist/internal/ai-trace.js.map +0 -1
  771. package/dist/internal/atomic-write.d.ts.map +0 -1
  772. package/dist/internal/atomic-write.js.map +0 -1
  773. package/dist/internal/brands.d.ts.map +0 -1
  774. package/dist/internal/brands.js.map +0 -1
  775. package/dist/internal/debug.d.ts.map +0 -1
  776. package/dist/internal/debug.js.map +0 -1
  777. package/dist/internal/env.d.ts.map +0 -1
  778. package/dist/internal/env.js.map +0 -1
  779. package/dist/internal/errors.d.ts.map +0 -1
  780. package/dist/internal/errors.js.map +0 -1
  781. package/dist/internal/geometry.d.ts.map +0 -1
  782. package/dist/internal/geometry.js.map +0 -1
  783. package/dist/internal/git.d.ts.map +0 -1
  784. package/dist/internal/git.js.map +0 -1
  785. package/dist/internal/globs.d.ts.map +0 -1
  786. package/dist/internal/globs.js.map +0 -1
  787. package/dist/internal/ids.d.ts.map +0 -1
  788. package/dist/internal/ids.js.map +0 -1
  789. package/dist/internal/json-value.d.ts.map +0 -1
  790. package/dist/internal/json-value.js.map +0 -1
  791. package/dist/internal/keys.d.ts.map +0 -1
  792. package/dist/internal/keys.js.map +0 -1
  793. package/dist/internal/node-version.d.ts.map +0 -1
  794. package/dist/internal/node-version.js.map +0 -1
  795. package/dist/internal/objects.d.ts.map +0 -1
  796. package/dist/internal/objects.js.map +0 -1
  797. package/dist/internal/options.d.ts.map +0 -1
  798. package/dist/internal/options.js.map +0 -1
  799. package/dist/internal/package-manager.d.ts.map +0 -1
  800. package/dist/internal/package-manager.js.map +0 -1
  801. package/dist/internal/package-version.d.ts.map +0 -1
  802. package/dist/internal/package-version.js.map +0 -1
  803. package/dist/internal/paths.d.ts.map +0 -1
  804. package/dist/internal/paths.js.map +0 -1
  805. package/dist/internal/realm-slot.d.ts.map +0 -1
  806. package/dist/internal/realm-slot.js.map +0 -1
  807. package/dist/internal/recording-modes.d.ts.map +0 -1
  808. package/dist/internal/recording-modes.js.map +0 -1
  809. package/dist/internal/redact.d.ts.map +0 -1
  810. package/dist/internal/redact.js.map +0 -1
  811. package/dist/internal/regexp.d.ts.map +0 -1
  812. package/dist/internal/regexp.js.map +0 -1
  813. package/dist/internal/roles.d.ts.map +0 -1
  814. package/dist/internal/roles.js.map +0 -1
  815. package/dist/internal/skip.d.ts.map +0 -1
  816. package/dist/internal/skip.js.map +0 -1
  817. package/dist/internal/source.d.ts.map +0 -1
  818. package/dist/internal/source.js.map +0 -1
  819. package/dist/internal/standard-schema.d.ts.map +0 -1
  820. package/dist/internal/standard-schema.js.map +0 -1
  821. package/dist/internal/suggest.d.ts.map +0 -1
  822. package/dist/internal/suggest.js.map +0 -1
  823. package/dist/internal/text.d.ts.map +0 -1
  824. package/dist/internal/text.js.map +0 -1
  825. package/dist/internal/time.d.ts.map +0 -1
  826. package/dist/internal/time.js.map +0 -1
  827. package/dist/internal/urls.d.ts.map +0 -1
  828. package/dist/internal/urls.js.map +0 -1
  829. package/dist/internal/vcs.d.ts.map +0 -1
  830. package/dist/internal/vcs.js.map +0 -1
  831. package/dist/internal/zip.d.ts.map +0 -1
  832. package/dist/internal/zip.js.map +0 -1
  833. package/dist/locator/engine.d.ts.map +0 -1
  834. package/dist/locator/engine.js.map +0 -1
  835. package/dist/locator/expression.d.ts.map +0 -1
  836. package/dist/locator/expression.js.map +0 -1
  837. package/dist/locator/screen.d.ts.map +0 -1
  838. package/dist/locator/screen.js.map +0 -1
  839. package/dist/mcp/catalog.d.ts.map +0 -1
  840. package/dist/mcp/catalog.js.map +0 -1
  841. package/dist/mcp/config.d.ts.map +0 -1
  842. package/dist/mcp/config.js.map +0 -1
  843. package/dist/mcp/recording.d.ts.map +0 -1
  844. package/dist/mcp/recording.js.map +0 -1
  845. package/dist/mcp/server.d.ts.map +0 -1
  846. package/dist/mcp/server.js.map +0 -1
  847. package/dist/mcp/session.d.ts.map +0 -1
  848. package/dist/mcp/session.js.map +0 -1
  849. package/dist/mcp/sessions.d.ts.map +0 -1
  850. package/dist/mcp/sessions.js.map +0 -1
  851. package/dist/mcp/tools.d.ts.map +0 -1
  852. package/dist/mcp/tools.js.map +0 -1
  853. package/dist/oauth/callback-server.d.ts.map +0 -1
  854. package/dist/oauth/callback-server.js.map +0 -1
  855. package/dist/oauth/chatgpt.d.ts.map +0 -1
  856. package/dist/oauth/chatgpt.js.map +0 -1
  857. package/dist/oauth/cli.d.ts.map +0 -1
  858. package/dist/oauth/cli.js.map +0 -1
  859. package/dist/oauth/copilot.d.ts.map +0 -1
  860. package/dist/oauth/copilot.js.map +0 -1
  861. package/dist/oauth/device-code.d.ts.map +0 -1
  862. package/dist/oauth/device-code.js.map +0 -1
  863. package/dist/oauth/errors.d.ts.map +0 -1
  864. package/dist/oauth/errors.js.map +0 -1
  865. package/dist/oauth/fetch.d.ts.map +0 -1
  866. package/dist/oauth/fetch.js.map +0 -1
  867. package/dist/oauth/grok.d.ts.map +0 -1
  868. package/dist/oauth/grok.js.map +0 -1
  869. package/dist/oauth/jwt.d.ts.map +0 -1
  870. package/dist/oauth/jwt.js.map +0 -1
  871. package/dist/oauth/login.d.ts.map +0 -1
  872. package/dist/oauth/login.js.map +0 -1
  873. package/dist/oauth/models.d.ts.map +0 -1
  874. package/dist/oauth/models.js.map +0 -1
  875. package/dist/oauth/pkce.d.ts.map +0 -1
  876. package/dist/oauth/pkce.js.map +0 -1
  877. package/dist/oauth/providers/github-copilot.d.ts.map +0 -1
  878. package/dist/oauth/providers/github-copilot.js.map +0 -1
  879. package/dist/oauth/providers/openai.d.ts.map +0 -1
  880. package/dist/oauth/providers/openai.js.map +0 -1
  881. package/dist/oauth/providers/xai.d.ts.map +0 -1
  882. package/dist/oauth/providers/xai.js.map +0 -1
  883. package/dist/oauth/providers.d.ts.map +0 -1
  884. package/dist/oauth/providers.js.map +0 -1
  885. package/dist/oauth/sse.d.ts.map +0 -1
  886. package/dist/oauth/sse.js.map +0 -1
  887. package/dist/oauth/store.d.ts.map +0 -1
  888. package/dist/oauth/store.js.map +0 -1
  889. package/dist/oauth/token-endpoint.d.ts.map +0 -1
  890. package/dist/oauth/token-endpoint.js.map +0 -1
  891. package/dist/oauth/types.d.ts.map +0 -1
  892. package/dist/oauth/types.js.map +0 -1
  893. package/dist/params.d.ts.map +0 -1
  894. package/dist/params.js.map +0 -1
  895. package/dist/report/build.d.ts.map +0 -1
  896. package/dist/report/build.js.map +0 -1
  897. package/dist/report/builtin.d.ts.map +0 -1
  898. package/dist/report/builtin.js.map +0 -1
  899. package/dist/report/code-frame.d.ts.map +0 -1
  900. package/dist/report/code-frame.js.map +0 -1
  901. package/dist/report/debug-steps.d.ts.map +0 -1
  902. package/dist/report/debug-steps.js.map +0 -1
  903. package/dist/report/explore-text.d.ts.map +0 -1
  904. package/dist/report/explore-text.js.map +0 -1
  905. package/dist/report/failure-text.d.ts.map +0 -1
  906. package/dist/report/failure-text.js.map +0 -1
  907. package/dist/report/format.d.ts.map +0 -1
  908. package/dist/report/format.js.map +0 -1
  909. package/dist/report/json.d.ts.map +0 -1
  910. package/dist/report/json.js.map +0 -1
  911. package/dist/report/junit.d.ts.map +0 -1
  912. package/dist/report/junit.js.map +0 -1
  913. package/dist/report/list-explore.d.ts.map +0 -1
  914. package/dist/report/list-explore.js.map +0 -1
  915. package/dist/report/list-model.d.ts.map +0 -1
  916. package/dist/report/list-model.js.map +0 -1
  917. package/dist/report/list-steps.d.ts.map +0 -1
  918. package/dist/report/list-steps.js.map +0 -1
  919. package/dist/report/list.d.ts.map +0 -1
  920. package/dist/report/list.js.map +0 -1
  921. package/dist/report/live-window.d.ts.map +0 -1
  922. package/dist/report/live-window.js.map +0 -1
  923. package/dist/report/markdown-text.d.ts.map +0 -1
  924. package/dist/report/markdown-text.js.map +0 -1
  925. package/dist/report/markdown.d.ts.map +0 -1
  926. package/dist/report/markdown.js.map +0 -1
  927. package/dist/report/outcome.d.ts.map +0 -1
  928. package/dist/report/outcome.js.map +0 -1
  929. package/dist/report/repeats.d.ts.map +0 -1
  930. package/dist/report/repeats.js.map +0 -1
  931. package/dist/report/running-tree.d.ts.map +0 -1
  932. package/dist/report/running-tree.js.map +0 -1
  933. package/dist/report/write.d.ts.map +0 -1
  934. package/dist/report/write.js.map +0 -1
  935. package/dist/run/app-ports.d.ts.map +0 -1
  936. package/dist/run/app-ports.js.map +0 -1
  937. package/dist/run/artifacts.d.ts.map +0 -1
  938. package/dist/run/artifacts.js.map +0 -1
  939. package/dist/run/budget.d.ts.map +0 -1
  940. package/dist/run/budget.js.map +0 -1
  941. package/dist/run/declared-processes.d.ts.map +0 -1
  942. package/dist/run/declared-processes.js.map +0 -1
  943. package/dist/run/events.d.ts.map +0 -1
  944. package/dist/run/events.js.map +0 -1
  945. package/dist/run/execute.d.ts.map +0 -1
  946. package/dist/run/execute.js.map +0 -1
  947. package/dist/run/extended-fixtures.d.ts.map +0 -1
  948. package/dist/run/extended-fixtures.js.map +0 -1
  949. package/dist/run/failure-evidence.d.ts.map +0 -1
  950. package/dist/run/failure-evidence.js.map +0 -1
  951. package/dist/run/fixture-recording.d.ts.map +0 -1
  952. package/dist/run/fixture-recording.js.map +0 -1
  953. package/dist/run/fixtures.d.ts.map +0 -1
  954. package/dist/run/fixtures.js.map +0 -1
  955. package/dist/run/in-process.d.ts.map +0 -1
  956. package/dist/run/in-process.js.map +0 -1
  957. package/dist/run/last-run.d.ts.map +0 -1
  958. package/dist/run/last-run.js.map +0 -1
  959. package/dist/run/managed-process.d.ts.map +0 -1
  960. package/dist/run/managed-process.js.map +0 -1
  961. package/dist/run/output.d.ts.map +0 -1
  962. package/dist/run/output.js.map +0 -1
  963. package/dist/run/process-pool.d.ts.map +0 -1
  964. package/dist/run/process-pool.js.map +0 -1
  965. package/dist/run/provision.d.ts.map +0 -1
  966. package/dist/run/provision.js.map +0 -1
  967. package/dist/run/realm.d.ts.map +0 -1
  968. package/dist/run/realm.js.map +0 -1
  969. package/dist/run/records.d.ts.map +0 -1
  970. package/dist/run/records.js.map +0 -1
  971. package/dist/run/retry.d.ts.map +0 -1
  972. package/dist/run/retry.js.map +0 -1
  973. package/dist/run/runner.d.ts.map +0 -1
  974. package/dist/run/runner.js.map +0 -1
  975. package/dist/run/scheduler.d.ts.map +0 -1
  976. package/dist/run/scheduler.js.map +0 -1
  977. package/dist/run/secrecy.d.ts.map +0 -1
  978. package/dist/run/secrecy.js.map +0 -1
  979. package/dist/run/serial.d.ts.map +0 -1
  980. package/dist/run/serial.js.map +0 -1
  981. package/dist/run/sessions.d.ts.map +0 -1
  982. package/dist/run/sessions.js.map +0 -1
  983. package/dist/run/standalone.d.ts.map +0 -1
  984. package/dist/run/standalone.js.map +0 -1
  985. package/dist/run/steps.d.ts.map +0 -1
  986. package/dist/run/steps.js.map +0 -1
  987. package/dist/run/trace-redaction.d.ts.map +0 -1
  988. package/dist/run/trace-redaction.js.map +0 -1
  989. package/dist/run/unit-runner.d.ts.map +0 -1
  990. package/dist/run/unit-runner.js.map +0 -1
  991. package/dist/run/units.d.ts.map +0 -1
  992. package/dist/run/units.js.map +0 -1
  993. package/dist/run/worker/entry.d.ts.map +0 -1
  994. package/dist/run/worker/entry.js.map +0 -1
  995. package/dist/run/worker/handle.d.ts.map +0 -1
  996. package/dist/run/worker/handle.js.map +0 -1
  997. package/dist/run/worker/protocol.d.ts.map +0 -1
  998. package/dist/run/worker/protocol.js.map +0 -1
  999. package/dist/run/worker/session.d.ts.map +0 -1
  1000. package/dist/run/worker/session.js.map +0 -1
  1001. package/dist/run/worker-models.d.ts.map +0 -1
  1002. package/dist/run/worker-models.js.map +0 -1
  1003. package/dist/secrets.d.ts.map +0 -1
  1004. package/dist/secrets.js.map +0 -1
  1005. package/dist/telemetry/checkout.d.ts.map +0 -1
  1006. package/dist/telemetry/checkout.js.map +0 -1
  1007. package/dist/telemetry/environment.d.ts.map +0 -1
  1008. package/dist/telemetry/environment.js.map +0 -1
  1009. package/dist/telemetry/events.d.ts.map +0 -1
  1010. package/dist/telemetry/events.js.map +0 -1
  1011. package/dist/telemetry/failure-kind.d.ts.map +0 -1
  1012. package/dist/telemetry/failure-kind.js.map +0 -1
  1013. package/dist/telemetry/posthog.d.ts.map +0 -1
  1014. package/dist/telemetry/posthog.js.map +0 -1
  1015. package/dist/telemetry/project.d.ts.map +0 -1
  1016. package/dist/telemetry/project.js.map +0 -1
  1017. package/dist/telemetry/store.d.ts.map +0 -1
  1018. package/dist/telemetry/store.js.map +0 -1
  1019. package/dist/telemetry/telemetry.d.ts.map +0 -1
  1020. package/dist/telemetry/telemetry.js.map +0 -1
  1021. package/dist/telemetry/token.d.ts.map +0 -1
  1022. package/dist/telemetry/token.js.map +0 -1
  1023. package/dist/types.d.ts.map +0 -1
  1024. package/dist/types.js.map +0 -1
@@ -264,15 +264,36 @@ export interface ReportUsage {
264
264
  maxActionStepsInStep: number;
265
265
  estimatedCostUsd?: number;
266
266
  }
267
+ /**
268
+ * The run's counts by result. `passed`, `failed` (timed out included),
269
+ * `interrupted`, `flaky`, and `skipped` count selected results only and add
270
+ * up to `selected`; `discovered` minus `selected` is what the selection left
271
+ * out.
272
+ */
267
273
  export interface ReportSummary {
268
274
  discovered: number;
269
275
  selected: number;
270
276
  executed: number;
271
277
  passed: number;
272
278
  failed: number;
279
+ /** Stopped by the run (a signal, `--max-failures`, a run-level error) before reaching a verdict; never counted as failed. */
280
+ interrupted: number;
273
281
  flaky: number;
274
282
  skipped: number;
275
283
  }
284
+ /**
285
+ * What earlier runs left unresolved that a `--last-failed` rerun did not run
286
+ * again, because another filter left it out: the results as those runs
287
+ * reported them, the serial groups their members' attempts live on, and the
288
+ * suite hook failures whose scope still holds a carried test. The next
289
+ * `--last-failed` selects these tests too, so a test that never ran again
290
+ * stays owed until it does.
291
+ */
292
+ export interface ReportCarried {
293
+ results: readonly ReportResult[];
294
+ serialGroups: readonly ReportSerialGroup[];
295
+ errors: readonly ReportError[];
296
+ }
276
297
  export interface Report1Document {
277
298
  schemaVersion: 'report-1';
278
299
  run: {
@@ -309,6 +330,11 @@ export interface Report1Document {
309
330
  summary: ReportSummary;
310
331
  limits: ReportLimits;
311
332
  usage: ReportUsage;
333
+ /**
334
+ * Present on a `--last-failed` rerun that left out a test an earlier run
335
+ * did not pass. Not part of this run's status, exit code, or summary.
336
+ */
337
+ carried?: ReportCarried | undefined;
312
338
  /** Present on an `e2e explore` run only. */
313
339
  explore?: ReportExplore | undefined;
314
340
  };
@@ -316,4 +342,3 @@ export interface Report1Document {
316
342
  /** Builds the complete report-1 document. */
317
343
  export declare function buildReport(options: BuildReportOptions): Report1Document;
318
344
  export {};
319
- //# sourceMappingURL=build.d.ts.map
@@ -8,6 +8,7 @@ import { resultId, timestamp } from '../internal/ids.js';
8
8
  import { obj } from '../internal/objects.js';
9
9
  import { packageVersion } from '../internal/package-version.js';
10
10
  import { projectRelativePath } from '../internal/source.js';
11
+ import { someSkippedAfterFailure } from '../run/records.js';
11
12
  /**
12
13
  * What a target's engine declaration says about it: the one description the
13
14
  * runner grades against and the report records. A target without an engine is
@@ -155,20 +156,22 @@ function serializeTarget(config, target, provenance) {
155
156
  ...(provenance ?? describeTarget(target)),
156
157
  };
157
158
  }
158
- /** Computes report-1 summary counts from results. */
159
+ /** Computes report-1 summary counts from results; the status counts are over the selected ones. */
159
160
  function computeSummary(results) {
160
161
  let selected = 0;
161
162
  let executed = 0;
162
163
  let passed = 0;
163
164
  let failed = 0;
165
+ let interrupted = 0;
164
166
  let flaky = 0;
165
167
  let skipped = 0;
166
168
  for (const result of results) {
167
- if (result.selected)
168
- selected += 1;
169
169
  if (result.attempts.length > 0 || (result.serialGroupId !== undefined && result.status !== 'skipped')) {
170
170
  executed += 1;
171
171
  }
172
+ if (!result.selected)
173
+ continue;
174
+ selected += 1;
172
175
  switch (result.status) {
173
176
  case 'passed':
174
177
  passed += 1;
@@ -178,15 +181,17 @@ function computeSummary(results) {
178
181
  break;
179
182
  case 'failed':
180
183
  case 'timed-out':
181
- case 'interrupted':
182
184
  failed += 1;
183
185
  break;
186
+ case 'interrupted':
187
+ interrupted += 1;
188
+ break;
184
189
  case 'skipped':
185
190
  skipped += 1;
186
191
  break;
187
192
  }
188
193
  }
189
- return { discovered: results.length, selected, executed, passed, failed, flaky, skipped };
194
+ return { discovered: results.length, selected, executed, passed, failed, interrupted, flaky, skipped };
190
195
  }
191
196
  /**
192
197
  * A run is `blocked` — not failed — when it did not pass and *every*
@@ -195,14 +200,17 @@ function computeSummary(results) {
195
200
  * nothing contradicts that. One genuine failure keeps the run failed, and so
196
201
  * does any run-level error (a launch that never came up, a cleanup or report
197
202
  * write that failed): it is its own fact about the run, not a blocked step,
198
- * and it must stay visible to a host reading the status. Derivation requires
203
+ * and it must stay visible to a host reading the status. So does a skip after
204
+ * a failure under `failOnSkippedFailure`. Derivation requires
199
205
  * positive evidence, never absence of it.
200
206
  */
201
- function deriveRunStatus(status, results, serialGroups, runErrors) {
207
+ function deriveRunStatus(status, results, serialGroups, runErrors, failOnSkippedFailure) {
202
208
  if (status !== 'failed' && status !== 'error')
203
209
  return status;
204
210
  if (runErrors.length > 0)
205
211
  return status;
212
+ if (failOnSkippedFailure && someSkippedAfterFailure(results, serialGroups))
213
+ return status;
206
214
  // Serial members carry no attempts of their own; their failing error lives
207
215
  // on the group's last attempt (or its failing member).
208
216
  const groupCode = new Map();
@@ -320,7 +328,7 @@ export function buildReport(options) {
320
328
  name: 'e2e',
321
329
  version: packageVersion(import.meta.url, '../../package.json', '0.0.0'),
322
330
  },
323
- status: deriveRunStatus(options.status, options.results, options.serialGroups, options.runErrors),
331
+ status: deriveRunStatus(options.status, options.results, options.serialGroups, options.runErrors, config?.failOnSkippedFailure === true),
324
332
  exitCode: options.exitCode,
325
333
  startedAt: options.startedAt,
326
334
  finishedAt: timestamp(),
@@ -368,4 +376,3 @@ function compareSerialGroups(a, b, targetIndex) {
368
376
  return a.declarationIndex - b.declarationIndex;
369
377
  return (targetIndex.get(a.targetId) ?? 0) - (targetIndex.get(b.targetId) ?? 0);
370
378
  }
371
- //# sourceMappingURL=build.js.map
@@ -11,4 +11,3 @@ export declare const BUILTIN_REPORTERS: readonly ["list", "json", "junit", "mark
11
11
  export declare const BUILTIN_REPORTER_LIST: string;
12
12
  export declare const STATELESS_REPORTERS: Record<Exclude<BuiltinReporter, 'list'>, Reporter>;
13
13
  export declare function isBuiltinReporter(value: string): value is BuiltinReporter;
14
- //# sourceMappingURL=builtin.d.ts.map
@@ -19,4 +19,3 @@ export const STATELESS_REPORTERS = {
19
19
  export function isBuiltinReporter(value) {
20
20
  return BUILTIN_REPORTERS.includes(value);
21
21
  }
22
- //# sourceMappingURL=builtin.js.map
@@ -11,4 +11,3 @@ export { userFrame, type StackFrame };
11
11
  * column caret, gutter-numbered like vitest (` 28| code`).
12
12
  */
13
13
  export declare function codeFrame(frame: StackFrame, pc: Colors): string[];
14
- //# sourceMappingURL=code-frame.d.ts.map
@@ -44,4 +44,3 @@ export function codeFrame(frame, pc) {
44
44
  }
45
45
  return rows;
46
46
  }
47
- //# sourceMappingURL=code-frame.js.map
@@ -11,4 +11,3 @@ import type { ResultRecord, SerialGroupRecord } from '../run/records.ts';
11
11
  * the empty string when the run performed no agent steps.
12
12
  */
13
13
  export declare function agentStepTable(results: readonly ResultRecord[], serialGroups: readonly SerialGroupRecord[]): string;
14
- //# sourceMappingURL=debug-steps.d.ts.map
@@ -98,4 +98,3 @@ function formatUsd(value) {
98
98
  const trimmed = value.toFixed(digits).replace(/(\.\d*?)0+$/, '$1').replace(/\.$/, '');
99
99
  return `$${trimmed}`;
100
100
  }
101
- //# sourceMappingURL=debug-steps.js.map
@@ -14,4 +14,3 @@ export declare function stepCountParts(steps: readonly ReportExploreStep[]): {
14
14
  readonly status: ReportExploreStep['status'];
15
15
  readonly text: string;
16
16
  }[];
17
- //# sourceMappingURL=explore-text.d.ts.map
@@ -34,4 +34,3 @@ export function stepCountParts(steps) {
34
34
  ...(counts.blocked > 0 ? [{ status: 'blocked', text: `${counts.blocked} blocked` }] : []),
35
35
  ];
36
36
  }
37
- //# sourceMappingURL=explore-text.js.map
@@ -34,7 +34,12 @@ export declare function detailLines(error: ReportError | undefined): string[];
34
34
  * called with, which reads as code.
35
35
  */
36
36
  export declare function stepLabel(step: ReportStep, max?: number): string;
37
- /** The attempt whose story a block tells: a flaky test's last failure, otherwise the final one. */
37
+ /**
38
+ * The attempt whose story a block tells: a flaky test's last failure; for a
39
+ * failed or timed-out test, the last attempt that reached that verdict, so a
40
+ * retry the run interrupted (or a serial member that retry never reached)
41
+ * tells nothing; otherwise the final one.
42
+ */
38
43
  export declare function toldAttempt(result: ReportResult, final: Outcome): AttemptView;
39
44
  /** A step that did not pass. */
40
45
  export type FailedStep = ReportStep & {
@@ -68,4 +73,3 @@ export declare function evidenceOf(told: AttemptView): ReportArtifact[];
68
73
  /** Renders one failed or flaky result as its own markdown page. */
69
74
  export declare function renderFailurePage(report: Report1Document, result: ReportResult, final: Outcome, options?: FailurePageOptions): string;
70
75
  export {};
71
- //# sourceMappingURL=failure-text.d.ts.map
@@ -69,9 +69,19 @@ function screenUrl(url) {
69
69
  return url;
70
70
  }
71
71
  }
72
- /** The attempt whose story a block tells: a flaky test's last failure, otherwise the final one. */
72
+ /**
73
+ * The attempt whose story a block tells: a flaky test's last failure; for a
74
+ * failed or timed-out test, the last attempt that reached that verdict, so a
75
+ * retry the run interrupted (or a serial member that retry never reached)
76
+ * tells nothing; otherwise the final one.
77
+ */
73
78
  export function toldAttempt(result, final) {
74
- return result.status === 'flaky' ? (final.lastFailed ?? final.final) : final.final;
79
+ if (result.status === 'flaky')
80
+ return final.lastFailed ?? final.final;
81
+ if (result.status === 'failed' || result.status === 'timed-out') {
82
+ return final.attempts.findLast((attempt) => attempt.status === 'failed' || attempt.status === 'timed-out') ?? final.final;
83
+ }
84
+ return final.final;
75
85
  }
76
86
  /** The step a failure happened at: the first that did not pass, with its position. */
77
87
  export function failedStepOf(steps) {
@@ -87,9 +97,9 @@ export function failedStepOf(steps) {
87
97
  */
88
98
  export function attemptsLine(result, final) {
89
99
  // An attempt that recorded nothing for this test (a serial group that never
90
- // reached the member) says nothing about how the test fails.
100
+ // reached the member), or one the run interrupted, says nothing about how the test fails.
91
101
  const failed = final.attempts
92
- .filter((attempt) => attempt.status !== 'passed' && attempt.status !== 'skipped' && (attempt.error !== undefined || attempt.steps.length > 0))
102
+ .filter((attempt) => attempt.status !== 'passed' && attempt.status !== 'skipped' && attempt.status !== 'interrupted' && (attempt.error !== undefined || attempt.steps.length > 0))
93
103
  .map((attempt) => ({
94
104
  code: cell(attempt.error?.code ?? attempt.status, 128),
95
105
  step: failedStepOf(attempt.steps)?.index,
@@ -297,4 +307,3 @@ export function renderFailurePage(report, result, final, options = {}) {
297
307
  lines.push(`<sub>e2e ${cell(run.runner.version, MAX_ID_CHARS)} · run ${code(run.id, MAX_ID_CHARS)} · the whole run is in \`report.json\`</sub>`);
298
308
  return `${lines.join('\n')}\n`;
299
309
  }
300
- //# sourceMappingURL=failure-text.js.map
@@ -58,20 +58,25 @@ export declare function rule(text: string, align: 'center' | 'right'): {
58
58
  export interface Counters {
59
59
  passed: number;
60
60
  failed: number;
61
+ interrupted: number;
61
62
  flaky: number;
62
63
  skipped: number;
63
64
  total: number;
64
65
  }
65
66
  export declare function emptyCounters(): Counters;
66
- /** The counter a result status lands in: every non-success status is a failure. */
67
- export declare function statusBucket(status: ResultStatus): 'passed' | 'failed' | 'flaky' | 'skipped';
67
+ /**
68
+ * The counter a result status lands in. A timeout is a failure; an
69
+ * interrupted test was stopped by the run, not by its own verdict, so it
70
+ * counts on its own.
71
+ */
72
+ export declare function statusBucket(status: ResultStatus): 'passed' | 'failed' | 'interrupted' | 'flaky' | 'skipped';
68
73
  /** Counts results by bucket; `total` is the number of items. */
69
74
  export declare function tally(items: readonly {
70
75
  readonly status: ResultStatus;
71
76
  }[]): Counters;
72
- /** A file's outcome from its tests: failed if any did, skipped if all did, else passed. */
73
- export declare function fileOutcome(counters: Counters): 'passed' | 'failed' | 'skipped';
74
- /** `2 failed | 10 passed | 1 flaky (13)` in vitest's colors and order. */
77
+ /** A file's outcome from its tests: failed if any did, else interrupted if any was, skipped if all were, else passed. */
78
+ export declare function fileOutcome(counters: Counters): 'passed' | 'failed' | 'interrupted' | 'skipped';
79
+ /** `2 failed | 1 interrupted | 10 passed | 1 flaky (14)` in vitest's colors and order. */
75
80
  export declare function stateString(pc: Colors, counters: Counters): string;
76
81
  export interface AiUsage {
77
82
  calls: number;
@@ -156,4 +161,3 @@ export declare function fitColumns(text: string, columns: number): string;
156
161
  * `repeat`, which the renderers may still be handed.
157
162
  */
158
163
  export declare function repeatSuffix(repeat: number | undefined): string;
159
- //# sourceMappingURL=format.d.ts.map
@@ -96,11 +96,15 @@ export function rule(text, align) {
96
96
  return { before: LONG_DASH.repeat(before), after: LONG_DASH.repeat(after) };
97
97
  }
98
98
  export function emptyCounters() {
99
- return { passed: 0, failed: 0, flaky: 0, skipped: 0, total: 0 };
99
+ return { passed: 0, failed: 0, interrupted: 0, flaky: 0, skipped: 0, total: 0 };
100
100
  }
101
- /** The counter a result status lands in: every non-success status is a failure. */
101
+ /**
102
+ * The counter a result status lands in. A timeout is a failure; an
103
+ * interrupted test was stopped by the run, not by its own verdict, so it
104
+ * counts on its own.
105
+ */
102
106
  export function statusBucket(status) {
103
- return status === 'passed' || status === 'flaky' || status === 'skipped' ? status : 'failed';
107
+ return status === 'timed-out' ? 'failed' : status;
104
108
  }
105
109
  /** Counts results by bucket; `total` is the number of items. */
106
110
  export function tally(items) {
@@ -111,18 +115,21 @@ export function tally(items) {
111
115
  }
112
116
  return counters;
113
117
  }
114
- /** A file's outcome from its tests: failed if any did, skipped if all did, else passed. */
118
+ /** A file's outcome from its tests: failed if any did, else interrupted if any was, skipped if all were, else passed. */
115
119
  export function fileOutcome(counters) {
116
120
  if (counters.failed > 0)
117
121
  return 'failed';
122
+ if (counters.interrupted > 0)
123
+ return 'interrupted';
118
124
  if (counters.total > 0 && counters.skipped === counters.total)
119
125
  return 'skipped';
120
126
  return 'passed';
121
127
  }
122
- /** `2 failed | 10 passed | 1 flaky (13)` in vitest's colors and order. */
128
+ /** `2 failed | 1 interrupted | 10 passed | 1 flaky (14)` in vitest's colors and order. */
123
129
  export function stateString(pc, counters) {
124
130
  const parts = [
125
131
  counters.failed > 0 ? pc.bold(pc.red(`${counters.failed} failed`)) : undefined,
132
+ counters.interrupted > 0 ? pc.bold(pc.yellow(`${counters.interrupted} interrupted`)) : undefined,
126
133
  pc.bold(pc.green(`${counters.passed} passed`)),
127
134
  counters.flaky > 0 ? pc.yellow(`${counters.flaky} flaky`) : undefined,
128
135
  counters.skipped > 0 ? pc.gray(`${counters.skipped} skipped`) : undefined,
@@ -423,4 +430,3 @@ export function fitColumns(text, columns) {
423
430
  export function repeatSuffix(repeat) {
424
431
  return repeat === undefined || repeat === 0 ? '' : ` (repeat #${repeat})`;
425
432
  }
426
- //# sourceMappingURL=format.js.map
@@ -1,4 +1,3 @@
1
1
  /** The built-in `json` reporter: the report document to stdout, and nothing else there. */
2
2
  import type { Reporter } from '../types.ts';
3
3
  export declare const jsonReporter: Reporter;
4
- //# sourceMappingURL=json.d.ts.map
@@ -5,4 +5,3 @@ export const jsonReporter = {
5
5
  process.stdout.write(`${JSON.stringify(run.report, null, 2)}\n`);
6
6
  },
7
7
  };
8
- //# sourceMappingURL=json.js.map
@@ -13,4 +13,3 @@ export declare function renderJunitReport(report: Report1Document): string;
13
13
  * beside `report.json`, for CI test summaries.
14
14
  */
15
15
  export declare const junitReporter: import("../types.ts").Reporter;
16
- //# sourceMappingURL=junit.d.ts.map
@@ -1,6 +1,7 @@
1
1
  /** JUnit XML reporter: the report-1 document as `.e2e/junit.xml`. */
2
2
  import { sanitizeText } from '../internal/errors.js';
3
3
  import { repeatSuffix } from './format.js';
4
+ import { toldAttempt } from './failure-text.js';
4
5
  import { outcome } from './outcome.js';
5
6
  import { fileReporter } from './write.js';
6
7
  /**
@@ -60,11 +61,9 @@ function addCounts(total, part) {
60
61
  total.skipped += part.skipped;
61
62
  total.timeMs += part.timeMs;
62
63
  }
63
- /** `<failure>` for a product verdict, `<error>` for anything that prevented one. */
64
- function verdictElement(error, status) {
65
- if (error !== undefined)
66
- return error.category === 'test' ? 'failure' : 'error';
67
- return status === 'interrupted' ? 'error' : 'failure';
64
+ /** `<failure>` for a product verdict, `<error>` for anything else that prevented one. */
65
+ function verdictElement(error) {
66
+ return error === undefined || error.category === 'test' ? 'failure' : 'error';
68
67
  }
69
68
  function errorBody(error) {
70
69
  const phase = error.phase === undefined ? '' : ` (${error.phase})`;
@@ -93,18 +92,18 @@ function renderResult(result, groups) {
93
92
  };
94
93
  }
95
94
  case 'skipped':
95
+ case 'interrupted': {
96
+ // JUnit has no interrupted outcome; a test the run stopped reached no verdict, so it reads as skipped with why.
97
+ const message = result.status === 'skipped' ? (result.skip?.reason ?? 'skipped') : `interrupted: ${final.final.error?.message ?? 'the run was stopped'}`;
96
98
  return {
97
- lines: [
98
- `${open}>`,
99
- ` <skipped ${attributes({ message: result.skip?.reason ?? 'skipped' })}/>`,
100
- '</testcase>',
101
- ],
99
+ lines: [`${open}>`, ` <skipped ${attributes({ message })}/>`, '</testcase>'],
102
100
  outcome: 'skipped',
103
101
  durationMs: final.durationMs,
104
102
  };
103
+ }
105
104
  default: {
106
- const element = verdictElement(final.final.error, result.status);
107
- const error = final.final.error;
105
+ const error = toldAttempt(result, final).error;
106
+ const element = verdictElement(error);
108
107
  const message = error?.message ?? result.status;
109
108
  const type = error?.code ?? result.status;
110
109
  const body = error === undefined ? result.status : errorBody(error);
@@ -190,4 +189,3 @@ export function renderJunitReport(report) {
190
189
  * beside `report.json`, for CI test summaries.
191
190
  */
192
191
  export const junitReporter = fileReporter('junit', 'JUnit', 'junit.xml', (run) => renderJunitReport(run.report));
193
- //# sourceMappingURL=junit.js.map
@@ -106,4 +106,3 @@ export declare class ExploreView {
106
106
  private banner;
107
107
  }
108
108
  export {};
109
- //# sourceMappingURL=list-explore.d.ts.map
@@ -366,4 +366,3 @@ function wrap(text, width) {
366
366
  }
367
367
  return lines;
368
368
  }
369
- //# sourceMappingURL=list-explore.js.map
@@ -91,4 +91,3 @@ export interface SetupInFlight {
91
91
  readonly subject: string;
92
92
  readonly startedMs: number;
93
93
  }
94
- //# sourceMappingURL=list-model.d.ts.map
@@ -7,4 +7,3 @@
7
7
  export function isShownEvent(event) {
8
8
  return event.kind === 'model' || event.kind === 'engine';
9
9
  }
10
- //# sourceMappingURL=list-model.js.map
@@ -28,4 +28,3 @@ export declare function stepLine(pc: Colors, step: FinishedStep, options?: StepL
28
28
  export declare function eventLine(pc: Colors, event: ShownEvent, options?: {
29
29
  maxWidth?: number;
30
30
  }): string;
31
- //# sourceMappingURL=list-steps.d.ts.map
@@ -82,4 +82,3 @@ function reasoningExcerpt(reasoning, headWidth, maxWidth) {
82
82
  return undefined;
83
83
  return fitColumns(collapseText(reasoning), room);
84
84
  }
85
- //# sourceMappingURL=list-steps.js.map
@@ -49,6 +49,7 @@ export declare class ListReporter implements Reporter {
49
49
  /** Whether a live window paints; without one, finished steps stream permanently. */
50
50
  private readonly live;
51
51
  private readonly failures;
52
+ private readonly skippedFailures;
52
53
  /** Every finished test's run, for the `Repeats` summary of a `--repeat-each` run. */
53
54
  private readonly runs;
54
55
  /**
@@ -257,4 +258,3 @@ export declare class ListReporter implements Reporter {
257
258
  rows(rows: ReporterSummary): void;
258
259
  private runFinished;
259
260
  }
260
- //# sourceMappingURL=list.d.ts.map
@@ -8,6 +8,7 @@
8
8
  import path from 'node:path';
9
9
  import picocolors from 'picocolors';
10
10
  import { packageVersion } from '../internal/package-version.js';
11
+ import { failureBeforeSkip } from '../run/records.js';
11
12
  import { codeFrame, userFrame } from './code-frame.js';
12
13
  import { addCacheTally, addModelTally, addUsage, aiSegment, bounded, cacheText, durationText, fitColumns, emptyCacheTally, emptyCounters, emptyUsage, F_CHECK, F_CROSS, F_POINTER, fileOutcome, formatClock, formatTime, modelsText, padTitle, rule, stateString, statusBucket, stepsCacheTally, repeatSuffix, stepsModelTally, stepsUsage, sumUsage, tally, terminalColumns, usageText, } from './format.js';
13
14
  import { ExploreView } from './list-explore.js';
@@ -43,14 +44,16 @@ function pairKey(testId, agent, target, repeat) {
43
44
  /** Details of an ordinary result: summed over its attempts, the error from the last. */
44
45
  function attemptDetails(attempts) {
45
46
  const steps = attempts.map((attempt) => attempt.steps);
47
+ // A retry the run interrupted tells nothing; the failure before it is the verdict.
48
+ const told = attempts.findLast((attempt) => attempt.status !== 'interrupted') ?? attempts.at(-1);
46
49
  return {
47
50
  durationMs: attempts.reduce((total, attempt) => total + attempt.durationMs, 0),
48
51
  usage: stepsUsage(steps),
49
52
  models: stepsModelTally(steps),
50
53
  cache: stepsCacheTally(steps),
51
- error: attempts[attempts.length - 1]?.error,
54
+ error: told?.error,
52
55
  videos: videoPaths(attempts),
53
- ...failureOf(attempts[attempts.length - 1]),
56
+ ...failureOf(told),
54
57
  };
55
58
  }
56
59
  /** The failure evidence of one attempt, and the path of the screen text it points at. */
@@ -85,7 +88,7 @@ function serialMemberDetails(group, testId) {
85
88
  attempt,
86
89
  member: attempt.members.find((member) => member.testId === testId),
87
90
  }));
88
- const last = runs[runs.length - 1];
91
+ const last = runs.findLast((run) => run.attempt.status !== 'interrupted') ?? runs.at(-1);
89
92
  const own = last?.member;
90
93
  const neverRan = own === undefined || own.status === 'skipped';
91
94
  const steps = runs.map((run) => run.member?.steps ?? []);
@@ -135,6 +138,7 @@ export class ListReporter {
135
138
  /** Whether a live window paints; without one, finished steps stream permanently. */
136
139
  live;
137
140
  failures = [];
141
+ skippedFailures = [];
138
142
  /** Every finished test's run, for the `Repeats` summary of a `--repeat-each` run. */
139
143
  runs = [];
140
144
  /**
@@ -550,15 +554,17 @@ export class ListReporter {
550
554
  const steps = this.pairs.get(key)?.steps ?? [];
551
555
  this.pairs.delete(key);
552
556
  const group = this.group(result.test.file, result.target.name);
557
+ // Read before `detailsOf` releases the result's serial group.
558
+ const skippedAfter = failureBeforeSkip(result, (id) => this.pendingSerial.get(id)?.group);
553
559
  const { durationMs, usage, models, cache, error, videos, failure, screenPath } = this.detailsOf(result);
554
560
  addUsage(this.runUsage, usage);
555
561
  addModelTally(this.runModels, models);
556
562
  addCacheTally(this.runCache, cache);
557
563
  const title = this.titledAs(result.test.titlePath.join(' > '), result.agent, result.repeat);
558
564
  if (this.explore !== undefined) {
559
- // The exploration's verdict is its findings; any other error is a failure of its own.
565
+ // The exploration's verdict is its findings; any other error is a failure of its own, unless the run stopped it.
560
566
  this.explore.result(result.attempts.flatMap((attempt) => attempt.artifacts));
561
- if (error !== undefined && !this.explore.isVerdict(error)) {
567
+ if (error !== undefined && result.status !== 'interrupted' && !this.explore.isVerdict(error)) {
562
568
  this.failures.push({ group, title, status: result.status, error, videos, failure, screenPath });
563
569
  }
564
570
  this.window.redraw();
@@ -584,6 +590,9 @@ export class ListReporter {
584
590
  if (statusBucket(result.status) === 'failed') {
585
591
  this.failures.push({ group, title, status: result.status, error, videos, failure, screenPath });
586
592
  }
593
+ if (skippedAfter !== undefined) {
594
+ this.skippedFailures.push({ group, title, status: result.status, error: skippedAfter.error, videos, ...failureOf(skippedAfter) });
595
+ }
587
596
  if (group.planned !== undefined && group.lines.length >= group.planned)
588
597
  this.printGroup(group);
589
598
  this.window.redraw();
@@ -623,12 +632,15 @@ export class ListReporter {
623
632
  const outcome = fileOutcome(counts);
624
633
  const symbol = outcome === 'failed'
625
634
  ? pc.red(F_POINTER)
626
- : outcome === 'skipped'
627
- ? pc.dim(pc.gray(F_DOWN))
628
- : pc.green(F_CHECK);
635
+ : outcome === 'interrupted'
636
+ ? pc.yellow(F_POINTER)
637
+ : outcome === 'skipped'
638
+ ? pc.dim(pc.gray(F_DOWN))
639
+ : pc.green(F_CHECK);
629
640
  const state = [
630
641
  pc.dim(`${counts.total} test${counts.total === 1 ? '' : 's'}`),
631
642
  counts.failed > 0 ? pc.red(`${counts.failed} failed`) : undefined,
643
+ counts.interrupted > 0 ? pc.yellow(`${counts.interrupted} interrupted`) : undefined,
632
644
  counts.flaky > 0 ? pc.yellow(`${counts.flaky} flaky`) : undefined,
633
645
  counts.skipped > 0 ? pc.yellow(`${counts.skipped} skipped`) : undefined,
634
646
  ]
@@ -647,6 +659,7 @@ export class ListReporter {
647
659
  parts.push(pc.dim(ai));
648
660
  this.print(parts.join(' '));
649
661
  const verbose = counts.failed > 0 ||
662
+ counts.interrupted > 0 ||
650
663
  counts.flaky > 0 ||
651
664
  this.groups.size === 1 ||
652
665
  (this.live && group.lines.some((line) => line.steps.length > 0));
@@ -678,6 +691,8 @@ export class ListReporter {
678
691
  : pc.dim(pc.gray(` [${line.skipReason}]`));
679
692
  return [` ${pc.dim(pc.gray(F_DOWN))} ${line.title}${reason}`];
680
693
  }
694
+ case 'interrupted':
695
+ return [` ${pc.yellow(F_CROSS)} ${line.title} ${pc.yellow('(interrupted)')} ${duration}${ai}`];
681
696
  default: {
682
697
  const status = line.status === 'failed' ? '' : pc.red(` (${line.status})`);
683
698
  const rows = [` ${pc.red(`${F_CROSS} ${line.title}`)}${status} ${duration}${ai}`];
@@ -716,6 +731,9 @@ export class ListReporter {
716
731
  rows.push(padTitle(pc, 'Cache') + cache);
717
732
  if (final)
718
733
  rows.push(...this.repeatRows());
734
+ if (this.skippedFailures.length > 0) {
735
+ rows.push(padTitle(pc, 'Warnings') + pc.yellow(`${this.skippedFailures.length} skipped after failure`));
736
+ }
719
737
  if (this.errors.length > 0) {
720
738
  const count = this.errors.length;
721
739
  rows.push(padTitle(pc, 'Errors') + pc.bold(pc.red(`${count} error${count === 1 ? '' : 's'}`)));
@@ -736,11 +754,12 @@ export class ListReporter {
736
754
  const groups = repeatGroups(this.runs, (entry) => entry);
737
755
  if (groups.length === 0)
738
756
  return [];
739
- const unstable = groups.filter((group) => group.passed < group.runs.length);
757
+ // A test is listed when it missed a run: a flake first, then one the run cut short.
758
+ const missed = groups.filter((group) => group.passed < group.runs.length).toSorted((a, b) => Number(b.unstable) - Number(a.unstable));
740
759
  const summary = repeatSummary(groups);
741
760
  return [
742
- padTitle(pc, 'Repeats') + (unstable.length === 0 ? pc.green(summary) : pc.yellow(summary)),
743
- ...unstable.map((group) => `${padTitle(pc, '')}${pc.yellow(F_CROSS)} ${group.label} ${pc.dim(repeatLine(group))}`),
761
+ padTitle(pc, 'Repeats') + (missed.some((group) => group.unstable) ? pc.yellow(summary) : pc.green(summary)),
762
+ ...missed.map((group) => `${padTitle(pc, '')}${group.unstable ? pc.yellow(F_CROSS) : pc.dim(pc.gray(F_DOWN))} ${group.label} ${pc.dim(repeatLine(group))}`),
744
763
  ];
745
764
  }
746
765
  /** A zero counter's label: the plain text, or the interrupt when that is why nothing is counted. */
@@ -808,15 +827,15 @@ export class ListReporter {
808
827
  this.print(line);
809
828
  }
810
829
  /** vitest's `Failed Tests` section: a banner, then each failure with its code frame. */
811
- printFailures() {
830
+ printFailures(heading, failures) {
812
831
  const { pc } = this;
813
- if (this.failures.length === 0)
832
+ if (failures.length === 0)
814
833
  return;
815
834
  this.print('');
816
- this.print(this.errorBanner(`Failed Tests ${this.failures.length}`));
835
+ this.print(this.errorBanner(`${heading} ${failures.length}`));
817
836
  this.print('');
818
- this.failures.forEach(({ group, title, status, error, videos, failure, screenPath }, index) => {
819
- this.print(`${pc.bold(pc.bgRed(' FAIL '))} ${this.badge(group.target)} ${bounded(group.file)}${this.separator}${title}`);
837
+ failures.forEach(({ group, title, status, error, videos, failure, screenPath }, index) => {
838
+ this.print(`${pc.bold(pc.bgRed(status === 'skipped' ? ' SKIP ' : ' FAIL '))} ${this.badge(group.target)} ${bounded(group.file)}${this.separator}${title}`);
820
839
  if (error === undefined) {
821
840
  this.print(pc.red(`${pc.bold(status)}: no error was recorded`));
822
841
  }
@@ -829,7 +848,7 @@ export class ListReporter {
829
848
  }
830
849
  this.printEvidence(failure, screenPath);
831
850
  this.printVideos(videos);
832
- const marker = `[${index + 1}/${this.failures.length}]`;
851
+ const marker = `[${index + 1}/${failures.length}]`;
833
852
  const { before, after } = rule(marker, 'right');
834
853
  this.print('');
835
854
  this.print(pc.red(pc.dim(`${before}${marker}${after}`)));
@@ -925,7 +944,8 @@ export class ListReporter {
925
944
  this.printGroup(group);
926
945
  }
927
946
  this.printExplore();
928
- this.printFailures();
947
+ this.printFailures('Failed Tests', this.failures);
948
+ this.printFailures('Skipped After Failure', this.skippedFailures);
929
949
  this.printErrors();
930
950
  this.print('');
931
951
  for (const row of this.summaryRows(true))
@@ -959,4 +979,3 @@ function setupWording(step) {
959
979
  return { verb: 'starting', subject: bounded(step.label), done: 'ready' };
960
980
  }
961
981
  }
962
- //# sourceMappingURL=list.js.map
@@ -50,4 +50,3 @@ export declare class LiveWindow {
50
50
  */
51
51
  stop(): void;
52
52
  }
53
- //# sourceMappingURL=live-window.d.ts.map