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
@@ -0,0 +1,52 @@
1
+ /** Which phase of a test owns an `expect.poll`, so one left running fails that phase and nothing later. */
2
+ import { TestError } from '../internal/errors.ts';
3
+ /**
4
+ * The polls one phase started: a test body with its fixtures and
5
+ * `beforeEach` hooks, one teardown, or one suite hook. A poll is not a step
6
+ * and records nothing; what the scope adds is that a poll the phase did not
7
+ * await ends with the phase instead of failing whatever runs when it times out.
8
+ */
9
+ export declare class PollScope {
10
+ private readonly owner;
11
+ private readonly running;
12
+ private closed;
13
+ /** `owner` completes "... returned before", as in `the test body`. */
14
+ constructor(owner: string);
15
+ /**
16
+ * Runs one poll, owned by this scope until it settles. `work` receives the
17
+ * signal that cancels it when the scope closes first. A poll started after
18
+ * the scope closed, by work its phase left running (a body past its
19
+ * timeout), is cancelled before its first read: it belongs to no phase
20
+ * that could still fail, and must not fail the one running now.
21
+ */
22
+ track<T>(label: string, stack: string | undefined, work: (signal: AbortSignal) => Promise<T>): Promise<T>;
23
+ /**
24
+ * Ends the scope when its phase has returned: every poll still running is
25
+ * cancelled and its later rejection observed. Returns the error naming
26
+ * them, at the line of the first, or nothing when every poll had settled.
27
+ * A caller whose phase was cut short (a timeout, a throw) may drop the
28
+ * error: the phase may have been awaiting the poll. Closing twice returns
29
+ * nothing the second time.
30
+ */
31
+ close(): TestError | undefined;
32
+ private cancel;
33
+ }
34
+ /**
35
+ * Runs `run` with `scope` owning every poll it starts, however deep in its
36
+ * async work and however long that work outlives the phase: a poll belongs
37
+ * to the phase that started it, never to the one running when it is called.
38
+ */
39
+ export declare function runInPollScope<T>(scope: PollScope, run: () => T): T;
40
+ /** One lineage of async work whose polls go to the scope current where it started, until `handOver`. */
41
+ export interface PollLineage {
42
+ run<T>(run: () => T): T;
43
+ /** Sends the lineage's polls from now on to the scope current at this call. */
44
+ handOver(): void;
45
+ }
46
+ /**
47
+ * A lineage for work that spans two phases, a fixture: its setup runs in the
48
+ * body's phase, and the rest of its function after `use` is its teardown's.
49
+ */
50
+ export declare function pollLineage(): PollLineage;
51
+ /** The scope a poll started here belongs to, or undefined outside any phase (a standalone script). */
52
+ export declare function currentPollScope(): PollScope | undefined;
@@ -0,0 +1,113 @@
1
+ /** Which phase of a test owns an `expect.poll`, so one left running fails that phase and nothing later. */
2
+ import { AsyncLocalStorage } from 'node:async_hooks';
3
+ import { markAbandonedRejection, relocateStack } from '../internal/abandoned.js';
4
+ import { pollScopesBrand } from '../internal/brands.js';
5
+ import { TestError, withHint } from '../internal/errors.js';
6
+ import { realmSlot } from '../internal/realm-slot.js';
7
+ /**
8
+ * The polls one phase started: a test body with its fixtures and
9
+ * `beforeEach` hooks, one teardown, or one suite hook. A poll is not a step
10
+ * and records nothing; what the scope adds is that a poll the phase did not
11
+ * await ends with the phase instead of failing whatever runs when it times out.
12
+ */
13
+ export class PollScope {
14
+ owner;
15
+ running = new Set();
16
+ closed = false;
17
+ /** `owner` completes "... returned before", as in `the test body`. */
18
+ constructor(owner) {
19
+ this.owner = owner;
20
+ }
21
+ /**
22
+ * Runs one poll, owned by this scope until it settles. `work` receives the
23
+ * signal that cancels it when the scope closes first. A poll started after
24
+ * the scope closed, by work its phase left running (a body past its
25
+ * timeout), is cancelled before its first read: it belongs to no phase
26
+ * that could still fail, and must not fail the one running now.
27
+ */
28
+ track(label, stack, work) {
29
+ const poll = { label, stack, controller: new AbortController(), promise: Promise.resolve(), abandoned: false };
30
+ if (this.closed)
31
+ this.cancel(poll);
32
+ const promise = (async () => {
33
+ try {
34
+ return await work(poll.controller.signal);
35
+ }
36
+ catch (cause) {
37
+ if (poll.abandoned)
38
+ markAbandonedRejection(cause);
39
+ throw cause;
40
+ }
41
+ finally {
42
+ this.running.delete(poll);
43
+ }
44
+ })();
45
+ poll.promise = promise;
46
+ if (poll.abandoned)
47
+ promise.catch(() => undefined);
48
+ else
49
+ this.running.add(poll);
50
+ return promise;
51
+ }
52
+ /**
53
+ * Ends the scope when its phase has returned: every poll still running is
54
+ * cancelled and its later rejection observed. Returns the error naming
55
+ * them, at the line of the first, or nothing when every poll had settled.
56
+ * A caller whose phase was cut short (a timeout, a throw) may drop the
57
+ * error: the phase may have been awaiting the poll. Closing twice returns
58
+ * nothing the second time.
59
+ */
60
+ close() {
61
+ this.closed = true;
62
+ const polls = [...this.running];
63
+ const [first] = polls;
64
+ if (first === undefined)
65
+ return undefined;
66
+ for (const poll of polls)
67
+ this.cancel(poll);
68
+ const more = polls.length > 1 ? ` and ${polls.length - 1} more` : '';
69
+ const error = new TestError('STEP_NOT_AWAITED', withHint(`${this.owner} returned before ${first.label}${more} finished`, 'put `await` in front of every expect.poll call'));
70
+ relocateStack(error, first.stack);
71
+ return error;
72
+ }
73
+ cancel(poll) {
74
+ this.running.delete(poll);
75
+ poll.abandoned = true;
76
+ poll.promise.catch(() => undefined);
77
+ poll.controller.abort();
78
+ }
79
+ }
80
+ const storage = new AsyncLocalStorage();
81
+ const scopes = { current: () => storage.getStore()?.scope };
82
+ const slot = realmSlot(pollScopesBrand);
83
+ /** Runs `run` in the lineage `owner` names, publishing the runner's context for a test module's `expect`. */
84
+ function enter(owner, run) {
85
+ if (slot.get(globalThis) !== scopes)
86
+ slot.set(globalThis, scopes);
87
+ return storage.run(owner, run);
88
+ }
89
+ /**
90
+ * Runs `run` with `scope` owning every poll it starts, however deep in its
91
+ * async work and however long that work outlives the phase: a poll belongs
92
+ * to the phase that started it, never to the one running when it is called.
93
+ */
94
+ export function runInPollScope(scope, run) {
95
+ return enter({ scope }, run);
96
+ }
97
+ /**
98
+ * A lineage for work that spans two phases, a fixture: its setup runs in the
99
+ * body's phase, and the rest of its function after `use` is its teardown's.
100
+ */
101
+ export function pollLineage() {
102
+ const owner = { scope: scopes.current() };
103
+ return {
104
+ run: (run) => enter(owner, run),
105
+ handOver: () => {
106
+ owner.scope = scopes.current();
107
+ },
108
+ };
109
+ }
110
+ /** The scope a poll started here belongs to, or undefined outside any phase (a standalone script). */
111
+ export function currentPollScope() {
112
+ return slot.get(globalThis)?.current();
113
+ }
@@ -2,4 +2,3 @@
2
2
  import type { PollExpectation, PollOptions } from '../types.ts';
3
3
  /** Re-reads `read` until the chosen value matcher holds or `options.timeout` passes. */
4
4
  export declare function createPollExpectation<T>(read: () => T | Promise<T>, options?: PollOptions): PollExpectation<T>;
5
- //# sourceMappingURL=poll.d.ts.map
@@ -2,9 +2,12 @@
2
2
  import { ConfigurationError, E2EError, TestError } from '../internal/errors.js';
3
3
  import { Deadline, POLL_INTERVAL_MS, sleep, withAbort, withTimeout } from '../internal/time.js';
4
4
  import { currentAttempt } from './attempt.js';
5
+ import { currentPollScope } from './poll-scope.js';
5
6
  import { createValueExpectation } from './values.js';
6
7
  /** Outside an attempt (a standalone script) there is no config to read `assertionTimeout` from. */
7
8
  const DEFAULT_TIMEOUT_MS = 5000;
9
+ /** Frames kept for the line a poll was called on; the user's line is a few frames up. */
10
+ const CALL_STACK_FRAMES = 20;
8
11
  /** `satisfies` keeps this list equal to the ValueExpectation matcher set. */
9
12
  const MATCHERS = {
10
13
  toBe: true,
@@ -46,7 +49,21 @@ function sample(read, deadline, signal) {
46
49
  const bounded = withTimeout((async () => read())(), deadline.remaining(), () => new ReadHung());
47
50
  return signal === undefined ? bounded : withAbort(bounded, signal, () => new ReadAborted());
48
51
  }
49
- async function pollMatcher(read, options, negated, name, args) {
52
+ /** The stack at a poll's call, for the error that names it when its phase did not await it. */
53
+ function callStack() {
54
+ const limit = Error.stackTraceLimit;
55
+ Error.stackTraceLimit = CALL_STACK_FRAMES;
56
+ try {
57
+ return new Error().stack;
58
+ }
59
+ finally {
60
+ Error.stackTraceLimit = limit;
61
+ }
62
+ }
63
+ function matcherLabel(negated, name) {
64
+ return `expect.poll(...).${negated ? 'not.' : ''}${name}(...)`;
65
+ }
66
+ async function pollMatcher(read, options, negated, name, args, scopeSignal) {
50
67
  const attempt = currentAttempt();
51
68
  const timeout = options.timeout ?? attempt?.assertionTimeout ?? DEFAULT_TIMEOUT_MS;
52
69
  const interval = options.interval ?? POLL_INTERVAL_MS;
@@ -57,9 +74,14 @@ async function pollMatcher(read, options, negated, name, args) {
57
74
  // the moment the attempt is cancelled, so a timed-out test never keeps
58
75
  // reading through teardown.
59
76
  const deadline = attempt === undefined ? own : Deadline.min(own, attempt.budget.deadline);
60
- const signal = attempt?.budget.signal;
77
+ // The phase that started the poll cancels it when it returns without
78
+ // awaiting it, so the poll can never fail whatever runs after.
79
+ const signals = [attempt?.budget.signal, scopeSignal].filter((signal) => signal !== undefined);
80
+ const signal = signals.length === 0 ? undefined : AbortSignal.any(signals);
61
81
  let last;
62
82
  while (!deadline.expired()) {
83
+ if (signal?.aborted === true)
84
+ throw cancelled();
63
85
  let value;
64
86
  try {
65
87
  value = await sample(read, deadline, signal);
@@ -89,7 +111,7 @@ async function pollMatcher(read, options, negated, name, args) {
89
111
  ? `timed out after ${timeout} ms`
90
112
  : `stopped at the attempt deadline after ${Date.now() - startedAt} ms`;
91
113
  throw new TestError('ASSERTION_FAILED', [
92
- `expect.poll(...).${negated ? 'not.' : ''}${name}(...) ${ending}`,
114
+ `${matcherLabel(negated, name)} ${ending}`,
93
115
  ...(options.message === undefined ? [] : [options.message]),
94
116
  `last: ${last ?? 'no read completed'}`,
95
117
  ].join('\n'));
@@ -107,7 +129,12 @@ function checkOptions(options) {
107
129
  function build(read, options, negated) {
108
130
  const matchers = Object.fromEntries(Object.keys(MATCHERS).map((name) => [
109
131
  name,
110
- (...args) => pollMatcher(read, options, negated, name, args),
132
+ (...args) => {
133
+ const scope = currentPollScope();
134
+ if (scope === undefined)
135
+ return pollMatcher(read, options, negated, name, args, undefined);
136
+ return scope.track(matcherLabel(negated, name), callStack(), (signal) => pollMatcher(read, options, negated, name, args, signal));
137
+ },
111
138
  ]));
112
139
  return {
113
140
  ...matchers,
@@ -121,4 +148,3 @@ export function createPollExpectation(read, options = {}) {
121
148
  checkOptions(options);
122
149
  return build(read, options, false);
123
150
  }
124
- //# sourceMappingURL=poll.js.map
@@ -28,4 +28,3 @@ export declare class SoftFailures {
28
28
  * attached matchers all go through the one wrapper.
29
29
  */
30
30
  export declare function soften<E extends object>(expectation: E): E;
31
- //# sourceMappingURL=soft.d.ts.map
@@ -85,4 +85,3 @@ export function soften(expectation) {
85
85
  },
86
86
  });
87
87
  }
88
- //# sourceMappingURL=soft.js.map
@@ -1,4 +1,3 @@
1
1
  /** Synchronous plain-value matchers. */
2
2
  import type { ValueExpectation } from '../types.ts';
3
3
  export declare function createValueExpectation<T>(actual: T, message?: string): ValueExpectation<T>;
4
- //# sourceMappingURL=values.d.ts.map
@@ -207,18 +207,24 @@ class ValueExpectationImpl {
207
207
  this.check(holds(actual), () => `expected ${actual} to be ${phrase} ${expected}`, () => `expected ${actual} not to be ${phrase} ${expected}`);
208
208
  }
209
209
  }
210
- /** Walks `keys` into `value`; `present` says whether the whole path resolved. */
210
+ /**
211
+ * Walks `keys` into `value`; `present` says whether the whole path resolved.
212
+ * A primitive on the way is read through its wrapper object, as Jest does,
213
+ * so a string has its `length` and indices; `null` and `undefined` have no
214
+ * properties.
215
+ */
211
216
  function lookup(value, keys) {
212
217
  let current = value;
213
218
  for (const key of keys) {
214
- if ((typeof current !== 'object' && typeof current !== 'function') || current === null || !(key in current)) {
219
+ if (current === null || current === undefined)
215
220
  return { present: false, value: undefined };
216
- }
217
- current = current[key];
221
+ const holder = Object(current);
222
+ if (!(key in holder))
223
+ return { present: false, value: undefined };
224
+ current = holder[key];
218
225
  }
219
226
  return { present: true, value: current };
220
227
  }
221
228
  export function createValueExpectation(actual, message) {
222
229
  return new ValueExpectationImpl(actual, false, message);
223
230
  }
224
- //# sourceMappingURL=values.js.map
@@ -37,4 +37,3 @@ export interface ExploreBodyOptions {
37
37
  }
38
38
  /** Builds the test body for one exploration. */
39
39
  export declare function createExploreBody(options: ExploreBodyOptions): TestFn;
40
- //# sourceMappingURL=body.d.ts.map
@@ -178,4 +178,3 @@ function conclude(state) {
178
178
  throw new AgentError(code !== undefined && BLOCKABLE_CODES.has(code) ? code : 'AUTOMATION_UNSUPPORTED', `exploration could not complete a charter: ${first.summary ?? first.title}`, { blocked: true });
179
179
  }
180
180
  }
181
- //# sourceMappingURL=body.js.map
@@ -31,4 +31,3 @@ export interface ExplorerOptions {
31
31
  export declare function explorerAgent(options: ExplorerOptions): AgentConfig;
32
32
  /** The resolved explorer with the finding tool beside the project's tools. */
33
33
  export declare function withFindingTool(explorer: ResolvedAgentConfig, state: ExploreState): ResolvedAgentConfig;
34
- //# sourceMappingURL=executor.d.ts.map
@@ -98,4 +98,3 @@ function createFindingTool(state) {
98
98
  },
99
99
  }, { mutates: false });
100
100
  }
101
- //# sourceMappingURL=executor.js.map
@@ -76,4 +76,3 @@ export interface ExploreOutcome extends RunOutcome {
76
76
  * as a bad flag is.
77
77
  */
78
78
  export declare function explore(options?: ExploreOptions): Promise<ExploreOutcome>;
79
- //# sourceMappingURL=index.d.ts.map
@@ -15,6 +15,7 @@ import { resolveConfig } from '../config/resolve.js';
15
15
  import { ConfigurationError } from '../internal/errors.js';
16
16
  import { labelSegment } from '../run/artifacts.js';
17
17
  import { run } from '../run/runner.js';
18
+ import { staticSecretLedger } from '../run/secrecy.js';
18
19
  import { createExploreBody } from './body.js';
19
20
  import { explorerAgent, withFindingTool } from './executor.js';
20
21
  import { signedInContext } from './plan.js';
@@ -66,7 +67,7 @@ export async function explore(options = {}) {
66
67
  const agentName = resolved.agentNames[0];
67
68
  if (agentName !== 'default')
68
69
  notice(`exploring with agent "${agentName}"`);
69
- const state = new ExploreState(goal, budgets);
70
+ const state = new ExploreState(redactGoal(goal, resolved.allSecrets), budgets);
70
71
  const explorer = explorerAgent({ state, agentName, entry: raw.agents?.[agentName], resolved: resolved.agent, notice });
71
72
  const resolvedExplorer = resolveAgentConfig(exploreAgentConfig(explorer), `agents.${agentName}`);
72
73
  // Every exploration step calls the model, a custom executor's included,
@@ -121,6 +122,20 @@ function resolveGoal(goal) {
121
122
  }
122
123
  return trimmed;
123
124
  }
125
+ /**
126
+ * The goal with every static secret value it spells out redacted. The goal
127
+ * becomes the test's title, its artifact directory, the report's goal, and
128
+ * model input, so it is redacted once, here, as a test file's titles are at
129
+ * collection. A marker can be longer than the value it replaces, so the
130
+ * ceiling is checked again on what the run will keep.
131
+ */
132
+ function redactGoal(goal, secrets) {
133
+ const redacted = staticSecretLedger(secrets).redact(goal);
134
+ if (redacted.length > MAX_GOAL_CHARS) {
135
+ throw new ConfigurationError('INVALID_CONFIG', `the goal must be at most ${MAX_GOAL_CHARS} characters with its secret values redacted, got ${redacted.length}`);
136
+ }
137
+ return redacted;
138
+ }
124
139
  function resolveBounded(value, bounds, label) {
125
140
  if (value === undefined)
126
141
  return bounds.default;
@@ -204,4 +219,3 @@ function exploreRegistration(state, start) {
204
219
  };
205
220
  return { tests: [test], hooks: [] };
206
221
  }
207
- //# sourceMappingURL=index.js.map
@@ -79,4 +79,3 @@ export declare function repairPlan(answer: PlanAnswer): PlanDecision;
79
79
  /** The planner's instruction: the goal, the record so far, the budget, and how to decide. */
80
80
  export declare function planInstruction(state: ExploreState, request: PlanRequest): string;
81
81
  export {};
82
- //# sourceMappingURL=plan.d.ts.map
@@ -173,4 +173,3 @@ export function planInstruction(state, request) {
173
173
  'Respond with every field present: {"decision": "step", "title": "...", "instruction": "...", "summary": ""} or {"decision": "finish", "title": "", "instruction": "", "summary": "..."}.',
174
174
  ].join('\n');
175
175
  }
176
- //# sourceMappingURL=plan.js.map
@@ -40,4 +40,3 @@ export type ExploreProgress =
40
40
  readonly summary?: string | undefined;
41
41
  };
42
42
  export type ExploreListener = (progress: ExploreProgress) => void;
43
- //# sourceMappingURL=progress.d.ts.map
@@ -6,4 +6,3 @@
6
6
  * report is the record; these are its moments.
7
7
  */
8
8
  export {};
9
- //# sourceMappingURL=progress.js.map
@@ -56,4 +56,3 @@ export declare class ExploreState {
56
56
  * splits a surrogate pair.
57
57
  */
58
58
  export declare function clip(text: string, max: number): string;
59
- //# sourceMappingURL=state.d.ts.map
@@ -161,4 +161,3 @@ export function clip(text, max) {
161
161
  const points = Array.from(trimmed);
162
162
  return points.length <= max ? trimmed : `${points.slice(0, max - 1).join('')}…`;
163
163
  }
164
- //# sourceMappingURL=state.js.map
package/dist/index.d.ts CHANGED
@@ -11,4 +11,3 @@ export type { ExecutorActions, ExecutorAttempt, ExecutorBudgets, ExecutorModelCa
11
11
  export type { StepTurn, VisionDegradation } from './run/steps.ts';
12
12
  export type { RunEvent, RunEventOf, RunExitCode, RunStatus } from './run/events.ts';
13
13
  export type { EngineAppDeclaration } from './engine/index.ts';
14
- //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -7,4 +7,3 @@ export { AgentError, isAgentError } from './agent/error.js';
7
7
  // The markdown page the `markdown` reporter writes, for a reporter that posts
8
8
  // it elsewhere: @e2e-dev/github renders the pull request comment from it.
9
9
  export { renderMarkdownReport } from './report/markdown.js';
10
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,11 @@
1
+ /** Work a test left running when its phase returned: steps and polls nobody awaited. */
2
+ /** Records `cause` as the rejection of work already failed as not awaited. */
3
+ export declare function markAbandonedRejection(cause: unknown): void;
4
+ /**
5
+ * Whether an unhandled rejection is abandoned work's: already recorded as
6
+ * `STEP_NOT_AWAITED`, reaching the process only because the promise the
7
+ * test did not await rejected with it. Such a rejection is not a fault.
8
+ */
9
+ export declare function isAbandonedRejection(cause: unknown): boolean;
10
+ /** Points `error` at the frames of `stack`, keeping its own name and message as the first line. */
11
+ export declare function relocateStack(error: Error, stack: string | undefined): void;
@@ -0,0 +1,23 @@
1
+ /** Work a test left running when its phase returned: steps and polls nobody awaited. */
2
+ /** What abandoned work rejected with. The promise the test holds rejects with the same value, and nobody awaits it. */
3
+ const ABANDONED_REJECTIONS = new WeakSet();
4
+ /** Records `cause` as the rejection of work already failed as not awaited. */
5
+ export function markAbandonedRejection(cause) {
6
+ if (typeof cause === 'object' && cause !== null)
7
+ ABANDONED_REJECTIONS.add(cause);
8
+ }
9
+ /**
10
+ * Whether an unhandled rejection is abandoned work's: already recorded as
11
+ * `STEP_NOT_AWAITED`, reaching the process only because the promise the
12
+ * test did not await rejected with it. Such a rejection is not a fault.
13
+ */
14
+ export function isAbandonedRejection(cause) {
15
+ return typeof cause === 'object' && cause !== null && ABANDONED_REJECTIONS.has(cause);
16
+ }
17
+ /** Points `error` at the frames of `stack`, keeping its own name and message as the first line. */
18
+ export function relocateStack(error, stack) {
19
+ if (stack === undefined)
20
+ return;
21
+ const frames = stack.split('\n').slice(1).join('\n');
22
+ error.stack = `${error.name}: ${error.message}\n${frames}`;
23
+ }
@@ -146,4 +146,3 @@ export declare class AiTraceCollector {
146
146
  }
147
147
  /** JSON with binary views omitted; arbitrary strings and raw tool JSON are preserved. */
148
148
  export declare function stringify(value: unknown): string;
149
- //# sourceMappingURL=ai-trace.d.ts.map
@@ -431,4 +431,3 @@ export function stringify(value) {
431
431
  return current;
432
432
  });
433
433
  }
434
- //# sourceMappingURL=ai-trace.js.map
@@ -14,4 +14,3 @@ export interface AtomicWriteOptions {
14
14
  export declare function writeFileAtomic(filePath: string, content: string | Uint8Array, options?: AtomicWriteOptions): Promise<void>;
15
15
  /** The synchronous twin, for a store that is read and written from synchronous code. */
16
16
  export declare function writeFileAtomicSync(filePath: string, content: string, options?: AtomicWriteOptions): void;
17
- //# sourceMappingURL=atomic-write.d.ts.map
@@ -41,4 +41,3 @@ export function writeFileAtomicSync(filePath, content, options = {}) {
41
41
  throw cause;
42
42
  }
43
43
  }
44
- //# sourceMappingURL=atomic-write.js.map
@@ -9,4 +9,5 @@ export declare const locatorBrand: unique symbol;
9
9
  export declare const expectationBrand: unique symbol;
10
10
  /** Slot on `globalThis` naming the running attempt for `expect.poll`. */
11
11
  export declare const attemptBrand: unique symbol;
12
- //# sourceMappingURL=brands.d.ts.map
12
+ /** Slot on `globalThis` holding the runner's view of which phase owns an `expect.poll`. */
13
+ export declare const pollScopesBrand: unique symbol;
@@ -9,4 +9,5 @@ export const locatorBrand = Symbol.for('e2e.locator');
9
9
  export const expectationBrand = Symbol.for('e2e.expectation.v1');
10
10
  /** Slot on `globalThis` naming the running attempt for `expect.poll`. */
11
11
  export const attemptBrand = Symbol.for('e2e.attempt.v1');
12
- //# sourceMappingURL=brands.js.map
12
+ /** Slot on `globalThis` holding the runner's view of which phase owns an `expect.poll`. */
13
+ export const pollScopesBrand = Symbol.for('e2e.pollScopes.v1');
@@ -0,0 +1,9 @@
1
+ /** How e2e names itself to the vendors it calls. */
2
+ /** `e2e/<version> (<platform>; <arch>)`: what every vendor request identifies as. Never another client's name. */
3
+ export declare const USER_AGENT: string;
4
+ /**
5
+ * Sent with every model call, whichever provider serves it. The AI SDK appends
6
+ * its own user agent after ours; `http-referer` and `x-title` are the app
7
+ * attribution the Vercel AI Gateway and OpenRouter read, and others ignore.
8
+ */
9
+ export declare const MODEL_REQUEST_HEADERS: Readonly<Record<string, string>>;
@@ -0,0 +1,14 @@
1
+ /** How e2e names itself to the vendors it calls. */
2
+ import { packageVersion } from './package-version.js';
3
+ /** `e2e/<version> (<platform>; <arch>)`: what every vendor request identifies as. Never another client's name. */
4
+ export const USER_AGENT = `e2e/${packageVersion(import.meta.url, '../../package.json', '0.0.0')} (${process.platform}; ${process.arch})`;
5
+ /**
6
+ * Sent with every model call, whichever provider serves it. The AI SDK appends
7
+ * its own user agent after ours; `http-referer` and `x-title` are the app
8
+ * attribution the Vercel AI Gateway and OpenRouter read, and others ignore.
9
+ */
10
+ export const MODEL_REQUEST_HEADERS = {
11
+ 'user-agent': USER_AGENT,
12
+ 'http-referer': 'https://tester.army/e2e',
13
+ 'x-title': 'e2e',
14
+ };
@@ -40,4 +40,3 @@ export declare class DebugTrace {
40
40
  export declare function table(title: string, header: readonly string[], rows: readonly (readonly string[])[], empty: string, leftAligned?: ReadonlySet<number>): string;
41
41
  export declare function formatMs(value: number): string;
42
42
  export {};
43
- //# sourceMappingURL=debug.d.ts.map
@@ -99,4 +99,3 @@ export function formatMs(value) {
99
99
  return `${(value / 1000).toFixed(1)}s`;
100
100
  return `${Math.round(value)}ms`;
101
101
  }
102
- //# sourceMappingURL=debug.js.map
@@ -3,4 +3,3 @@
3
3
  export declare function envValue(env: NodeJS.ProcessEnv, name: string): string | undefined;
4
4
  /** True for a set variable that is not blank, `0`, or `false`. */
5
5
  export declare function envFlag(env: NodeJS.ProcessEnv, name: string): boolean;
6
- //# sourceMappingURL=env.d.ts.map
@@ -9,4 +9,3 @@ export function envFlag(env, name) {
9
9
  const value = envValue(env, name)?.trim().toLowerCase();
10
10
  return value !== undefined && value !== '0' && value !== 'false';
11
11
  }
12
- //# sourceMappingURL=env.js.map
@@ -172,4 +172,3 @@ export declare function sanitizeText(text: string): string;
172
172
  /** Truncates a string so its UTF-8 encoding fits maxBytes without splitting a code point. */
173
173
  export declare function truncateUtf8(text: string, maxBytes: number): string;
174
174
  export {};
175
- //# sourceMappingURL=errors.d.ts.map
@@ -342,4 +342,3 @@ export function truncateUtf8(text, maxBytes) {
342
342
  end -= 1;
343
343
  return UTF8_DECODER.decode(bytes.subarray(0, end));
344
344
  }
345
- //# sourceMappingURL=errors.js.map
@@ -28,4 +28,3 @@ export declare function overlapShare(a: Box, b: Box): number;
28
28
  * the main list. 0 for a viewport without area.
29
29
  */
30
30
  export declare function viewportShare(box: Box, viewport: ViewportSize): number;
31
- //# sourceMappingURL=geometry.d.ts.map
@@ -58,4 +58,3 @@ export function viewportShare(box, viewport) {
58
58
  return 0;
59
59
  return clamp((width * height) / (viewport.width * viewport.height), 0, 1);
60
60
  }
61
- //# sourceMappingURL=geometry.js.map
@@ -6,4 +6,3 @@
6
6
  export declare const COMMIT_HASH: RegExp;
7
7
  /** One git command's trimmed stdout; undefined when git is missing, slow, or refuses. */
8
8
  export declare function git(cwd: string, args: readonly string[]): Promise<string | undefined>;
9
- //# sourceMappingURL=git.d.ts.map
@@ -22,4 +22,3 @@ export async function git(cwd, args) {
22
22
  return undefined;
23
23
  }
24
24
  }
25
- //# sourceMappingURL=git.js.map
@@ -66,4 +66,3 @@ export declare function discoverFiles(root: string, patterns: readonly string[])
66
66
  /** Sorts strings by Unicode code point, the order collection is defined in. */
67
67
  export declare function compareCodePoints(a: string, b: string): number;
68
68
  export {};
69
- //# sourceMappingURL=globs.d.ts.map
@@ -234,4 +234,3 @@ export function compareCodePoints(a, b) {
234
234
  }
235
235
  return aPoints.length - bPoints.length;
236
236
  }
237
- //# sourceMappingURL=globs.js.map
@@ -35,4 +35,3 @@ export declare function resultId(test: string, targetId: string, agent: string,
35
35
  export declare function uuidv7(now?: number): string;
36
36
  /** RFC 3339 UTC timestamp with exactly millisecond precision. */
37
37
  export declare function timestamp(date?: Date): string;
38
- //# sourceMappingURL=ids.d.ts.map
@@ -127,4 +127,3 @@ export function uuidv7(now = Date.now()) {
127
127
  export function timestamp(date = new Date()) {
128
128
  return date.toISOString();
129
129
  }
130
- //# sourceMappingURL=ids.js.map
@@ -12,4 +12,3 @@ export interface JsonValueRules {
12
12
  }
13
13
  /** Validates that a value is JSON-safe, throwing a labeled TestError otherwise. */
14
14
  export declare function validateJsonValue(value: unknown, label: string, rules?: JsonValueRules): void;
15
- //# sourceMappingURL=json-value.d.ts.map
@@ -58,4 +58,3 @@ export function validateJsonValue(value, label, rules = {}) {
58
58
  };
59
59
  visit(value);
60
60
  }
61
- //# sourceMappingURL=json-value.js.map