e2e 0.15.1 → 0.16.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 (1019) hide show
  1. package/README.md +51 -24
  2. package/dist/.build.json +1 -1
  3. package/dist/agent/act-validation.d.ts +10 -1
  4. package/dist/agent/act-validation.js +48 -1
  5. package/dist/agent/act.d.ts +1 -2
  6. package/dist/agent/act.js +25 -8
  7. package/dist/agent/action-dispatcher.d.ts +0 -1
  8. package/dist/agent/action-dispatcher.js +0 -1
  9. package/dist/agent/action-names.d.ts +0 -1
  10. package/dist/agent/action-names.js +0 -1
  11. package/dist/agent/actions.d.ts +0 -1
  12. package/dist/agent/actions.js +0 -1
  13. package/dist/agent/agent-brand.d.ts +0 -1
  14. package/dist/agent/agent-brand.js +0 -1
  15. package/dist/agent/ai-sdk.d.ts +7 -1
  16. package/dist/agent/ai-sdk.js +11 -1
  17. package/dist/agent/call-options.d.ts +0 -1
  18. package/dist/agent/call-options.js +0 -1
  19. package/dist/agent/default-agent.d.ts +0 -1
  20. package/dist/agent/default-agent.js +0 -1
  21. package/dist/agent/derived.d.ts +0 -1
  22. package/dist/agent/derived.js +0 -1
  23. package/dist/agent/error.d.ts +16 -4
  24. package/dist/agent/error.js +25 -7
  25. package/dist/agent/executor.d.ts +0 -1
  26. package/dist/agent/executor.js +0 -1
  27. package/dist/agent/index.d.ts +0 -1
  28. package/dist/agent/index.js +0 -1
  29. package/dist/agent/interactive-step.d.ts +0 -1
  30. package/dist/agent/interactive-step.js +0 -1
  31. package/dist/agent/invocation.d.ts +0 -1
  32. package/dist/agent/invocation.js +10 -5
  33. package/dist/agent/ledger.d.ts +0 -1
  34. package/dist/agent/ledger.js +0 -1
  35. package/dist/agent/loop-guards.d.ts +0 -1
  36. package/dist/agent/loop-guards.js +0 -1
  37. package/dist/agent/model/adapter.d.ts +0 -1
  38. package/dist/agent/model/adapter.js +0 -1
  39. package/dist/agent/model/overflow.d.ts +0 -1
  40. package/dist/agent/model/overflow.js +0 -1
  41. package/dist/agent/model/provider-hints.d.ts +0 -1
  42. package/dist/agent/model/provider-hints.js +0 -1
  43. package/dist/agent/model/schema.d.ts +0 -1
  44. package/dist/agent/model/schema.js +0 -1
  45. package/dist/agent/model/sdk.d.ts +0 -1
  46. package/dist/agent/model/sdk.js +0 -1
  47. package/dist/agent/model/stall.d.ts +0 -1
  48. package/dist/agent/model/stall.js +0 -1
  49. package/dist/agent/model/tool-choice.d.ts +24 -2
  50. package/dist/agent/model/tool-choice.js +27 -2
  51. package/dist/agent/observation-budget.d.ts +0 -1
  52. package/dist/agent/observation-budget.js +0 -1
  53. package/dist/agent/observation-feed.d.ts +0 -1
  54. package/dist/agent/observation-feed.js +0 -1
  55. package/dist/agent/observation.d.ts +0 -1
  56. package/dist/agent/observation.js +0 -1
  57. package/dist/agent/operation-queue.d.ts +0 -1
  58. package/dist/agent/operation-queue.js +0 -1
  59. package/dist/agent/phases.d.ts +0 -1
  60. package/dist/agent/phases.js +0 -1
  61. package/dist/agent/pixels.d.ts +0 -1
  62. package/dist/agent/pixels.js +0 -1
  63. package/dist/agent/point-tap.d.ts +0 -1
  64. package/dist/agent/point-tap.js +0 -1
  65. package/dist/agent/primitives.d.ts +6 -1
  66. package/dist/agent/primitives.js +4 -2
  67. package/dist/agent/prompts.d.ts +0 -1
  68. package/dist/agent/prompts.js +0 -1
  69. package/dist/agent/protocol.d.ts +0 -1
  70. package/dist/agent/protocol.js +0 -1
  71. package/dist/agent/public.d.ts +0 -1
  72. package/dist/agent/public.js +0 -1
  73. package/dist/agent/reading.d.ts +0 -1
  74. package/dist/agent/reading.js +0 -1
  75. package/dist/agent/replay.d.ts +0 -1
  76. package/dist/agent/replay.js +0 -1
  77. package/dist/agent/screen-update.d.ts +0 -1
  78. package/dist/agent/screen-update.js +0 -1
  79. package/dist/agent/scroll-target.d.ts +0 -1
  80. package/dist/agent/scroll-target.js +0 -1
  81. package/dist/agent/secrets.d.ts +0 -1
  82. package/dist/agent/secrets.js +0 -1
  83. package/dist/agent/settle-policy.d.ts +0 -1
  84. package/dist/agent/settle-policy.js +0 -1
  85. package/dist/agent/step-accounting.d.ts +0 -1
  86. package/dist/agent/step-accounting.js +0 -1
  87. package/dist/agent/step-cache.d.ts +14 -4
  88. package/dist/agent/step-cache.js +13 -4
  89. package/dist/agent/tool-loop.d.ts +0 -1
  90. package/dist/agent/tool-loop.js +62 -10
  91. package/dist/agent/tool-output.d.ts +0 -1
  92. package/dist/agent/tool-output.js +0 -1
  93. package/dist/agent/tool.d.ts +0 -1
  94. package/dist/agent/tool.js +0 -1
  95. package/dist/agent/transcript-compaction.d.ts +0 -1
  96. package/dist/agent/transcript-compaction.js +0 -1
  97. package/dist/agent/upload-paths.d.ts +0 -1
  98. package/dist/agent/upload-paths.js +0 -1
  99. package/dist/agent/usage.d.ts +0 -1
  100. package/dist/agent/usage.js +0 -1
  101. package/dist/cache/anchors.d.ts +0 -1
  102. package/dist/cache/anchors.js +0 -1
  103. package/dist/cache/context.d.ts +19 -7
  104. package/dist/cache/context.js +15 -22
  105. package/dist/cache/decide.d.ts +0 -1
  106. package/dist/cache/decide.js +0 -1
  107. package/dist/cache/identity.d.ts +0 -1
  108. package/dist/cache/identity.js +0 -1
  109. package/dist/cache/recorder.d.ts +0 -1
  110. package/dist/cache/recorder.js +0 -1
  111. package/dist/cache/relocate.d.ts +0 -1
  112. package/dist/cache/relocate.js +0 -1
  113. package/dist/cache/route.d.ts +0 -1
  114. package/dist/cache/route.js +0 -1
  115. package/dist/cache/store.d.ts +0 -1
  116. package/dist/cache/store.js +0 -1
  117. package/dist/cache/template.d.ts +0 -1
  118. package/dist/cache/template.js +0 -1
  119. package/dist/cache/trace.d.ts +0 -1
  120. package/dist/cache/trace.js +0 -1
  121. package/dist/cli/bin.d.ts +0 -1
  122. package/dist/cli/bin.js +0 -1
  123. package/dist/cli/cache.d.ts +0 -1
  124. package/dist/cli/cache.js +0 -1
  125. package/dist/cli/docs-url.d.ts +0 -1
  126. package/dist/cli/docs-url.js +0 -1
  127. package/dist/cli/feedback.d.ts +0 -1
  128. package/dist/cli/feedback.js +0 -1
  129. package/dist/cli/guide.d.ts +0 -1
  130. package/dist/cli/guide.js +0 -1
  131. package/dist/cli/index.d.ts +0 -1
  132. package/dist/cli/index.js +2 -3
  133. package/dist/cli/init/agent-skill.d.ts +0 -1
  134. package/dist/cli/init/agent-skill.js +0 -1
  135. package/dist/cli/init/engines.d.ts +0 -1
  136. package/dist/cli/init/engines.js +0 -1
  137. package/dist/cli/init/gateways.d.ts +0 -1
  138. package/dist/cli/init/gateways.js +0 -1
  139. package/dist/cli/init/mcp-config.d.ts +0 -1
  140. package/dist/cli/init/mcp-config.js +0 -1
  141. package/dist/cli/init/package.d.ts +0 -1
  142. package/dist/cli/init/package.js +0 -1
  143. package/dist/cli/init/scaffold.d.ts +1 -1
  144. package/dist/cli/init/scaffold.js +2 -2
  145. package/dist/cli/init/sibling-versions.json +1 -1
  146. package/dist/cli/init/versions.d.ts +0 -1
  147. package/dist/cli/init/versions.js +0 -1
  148. package/dist/cli/init.d.ts +0 -1
  149. package/dist/cli/init.js +0 -1
  150. package/dist/cli/mcp.d.ts +9 -2
  151. package/dist/cli/mcp.js +14 -2
  152. package/dist/cli/signals.d.ts +0 -1
  153. package/dist/cli/signals.js +0 -1
  154. package/dist/cli/skill.d.ts +0 -1
  155. package/dist/cli/skill.js +0 -1
  156. package/dist/cli/telemetry.d.ts +0 -1
  157. package/dist/cli/telemetry.js +1 -2
  158. package/dist/cli/wordmark.d.ts +0 -1
  159. package/dist/cli/wordmark.js +0 -1
  160. package/dist/collect/collect.d.ts +0 -1
  161. package/dist/collect/collect.js +3 -2
  162. package/dist/collect/registry.d.ts +6 -3
  163. package/dist/collect/registry.js +31 -14
  164. package/dist/collect/select.d.ts +0 -1
  165. package/dist/collect/select.js +0 -1
  166. package/dist/config/agent.d.ts +0 -1
  167. package/dist/config/agent.js +0 -1
  168. package/dist/config/app.d.ts +0 -1
  169. package/dist/config/app.js +0 -1
  170. package/dist/config/command.d.ts +0 -1
  171. package/dist/config/command.js +0 -1
  172. package/dist/config/diagnose.d.ts +0 -1
  173. package/dist/config/diagnose.js +0 -1
  174. package/dist/config/esm-hooks.d.ts +0 -1
  175. package/dist/config/esm-hooks.js +0 -1
  176. package/dist/config/load.d.ts +0 -1
  177. package/dist/config/load.js +0 -1
  178. package/dist/config/resolve.d.ts +0 -1
  179. package/dist/config/resolve.js +0 -1
  180. package/dist/config/secrets.d.ts +0 -1
  181. package/dist/config/secrets.js +0 -1
  182. package/dist/config/targets.d.ts +0 -1
  183. package/dist/config/targets.js +0 -1
  184. package/dist/config/validate.d.ts +0 -1
  185. package/dist/config/validate.js +0 -1
  186. package/dist/engine/contract.d.ts +0 -1
  187. package/dist/engine/contract.js +0 -1
  188. package/dist/engine/index.d.ts +1 -2
  189. package/dist/engine/index.js +4 -4
  190. package/dist/engine/manifest.d.ts +0 -1
  191. package/dist/engine/manifest.js +0 -1
  192. package/dist/engine/recording.d.ts +0 -1
  193. package/dist/engine/recording.js +0 -1
  194. package/dist/engine/resolve.d.ts +0 -1
  195. package/dist/engine/resolve.js +0 -1
  196. package/dist/engine/session.d.ts +0 -1
  197. package/dist/engine/session.js +0 -1
  198. package/dist/engine/surface.d.ts +0 -1
  199. package/dist/engine/surface.js +0 -1
  200. package/dist/engine/timing.d.ts +0 -1
  201. package/dist/engine/timing.js +0 -1
  202. package/dist/expect/async.d.ts +0 -1
  203. package/dist/expect/async.js +99 -58
  204. package/dist/expect/attempt.d.ts +0 -1
  205. package/dist/expect/attempt.js +0 -1
  206. package/dist/expect/index.d.ts +0 -1
  207. package/dist/expect/index.js +0 -1
  208. package/dist/expect/poll.d.ts +0 -1
  209. package/dist/expect/poll.js +0 -1
  210. package/dist/expect/soft.d.ts +0 -1
  211. package/dist/expect/soft.js +0 -1
  212. package/dist/expect/values.d.ts +0 -1
  213. package/dist/expect/values.js +1 -2
  214. package/dist/explore/body.d.ts +0 -1
  215. package/dist/explore/body.js +0 -1
  216. package/dist/explore/executor.d.ts +0 -1
  217. package/dist/explore/executor.js +0 -1
  218. package/dist/explore/index.d.ts +0 -1
  219. package/dist/explore/index.js +16 -2
  220. package/dist/explore/plan.d.ts +0 -1
  221. package/dist/explore/plan.js +0 -1
  222. package/dist/explore/progress.d.ts +0 -1
  223. package/dist/explore/progress.js +0 -1
  224. package/dist/explore/state.d.ts +0 -1
  225. package/dist/explore/state.js +0 -1
  226. package/dist/index.d.ts +0 -1
  227. package/dist/index.js +0 -1
  228. package/dist/internal/ai-trace.d.ts +0 -1
  229. package/dist/internal/ai-trace.js +0 -1
  230. package/dist/internal/atomic-write.d.ts +0 -1
  231. package/dist/internal/atomic-write.js +0 -1
  232. package/dist/internal/brands.d.ts +0 -1
  233. package/dist/internal/brands.js +0 -1
  234. package/dist/internal/debug.d.ts +0 -1
  235. package/dist/internal/debug.js +0 -1
  236. package/dist/internal/env.d.ts +0 -1
  237. package/dist/internal/env.js +0 -1
  238. package/dist/internal/errors.d.ts +0 -1
  239. package/dist/internal/errors.js +0 -1
  240. package/dist/internal/geometry.d.ts +0 -1
  241. package/dist/internal/geometry.js +0 -1
  242. package/dist/internal/git.d.ts +0 -1
  243. package/dist/internal/git.js +0 -1
  244. package/dist/internal/globs.d.ts +0 -1
  245. package/dist/internal/globs.js +0 -1
  246. package/dist/internal/ids.d.ts +0 -1
  247. package/dist/internal/ids.js +0 -1
  248. package/dist/internal/json-value.d.ts +0 -1
  249. package/dist/internal/json-value.js +0 -1
  250. package/dist/internal/keys.d.ts +0 -1
  251. package/dist/internal/keys.js +0 -1
  252. package/dist/internal/node-version.d.ts +0 -1
  253. package/dist/internal/node-version.js +0 -1
  254. package/dist/internal/objects.d.ts +0 -1
  255. package/dist/internal/objects.js +0 -1
  256. package/dist/internal/options.d.ts +0 -1
  257. package/dist/internal/options.js +0 -1
  258. package/dist/internal/package-manager.d.ts +0 -1
  259. package/dist/internal/package-manager.js +0 -1
  260. package/dist/internal/package-version.d.ts +0 -1
  261. package/dist/internal/package-version.js +0 -1
  262. package/dist/internal/paths.d.ts +0 -1
  263. package/dist/internal/paths.js +0 -1
  264. package/dist/internal/realm-slot.d.ts +0 -1
  265. package/dist/internal/realm-slot.js +0 -1
  266. package/dist/internal/recording-modes.d.ts +0 -1
  267. package/dist/internal/recording-modes.js +0 -1
  268. package/dist/internal/redact.d.ts +0 -1
  269. package/dist/internal/redact.js +0 -1
  270. package/dist/internal/regexp.d.ts +0 -1
  271. package/dist/internal/regexp.js +0 -1
  272. package/dist/internal/roles.d.ts +0 -1
  273. package/dist/internal/roles.js +0 -1
  274. package/dist/internal/skip.d.ts +0 -1
  275. package/dist/internal/skip.js +0 -1
  276. package/dist/internal/source.d.ts +0 -1
  277. package/dist/internal/source.js +0 -1
  278. package/dist/internal/standard-schema.d.ts +0 -1
  279. package/dist/internal/standard-schema.js +0 -1
  280. package/dist/internal/suggest.d.ts +0 -1
  281. package/dist/internal/suggest.js +0 -1
  282. package/dist/internal/text.d.ts +8 -1
  283. package/dist/internal/text.js +13 -2
  284. package/dist/internal/time.d.ts +0 -1
  285. package/dist/internal/time.js +0 -1
  286. package/dist/internal/urls.d.ts +0 -1
  287. package/dist/internal/urls.js +0 -1
  288. package/dist/internal/vcs.d.ts +0 -1
  289. package/dist/internal/vcs.js +0 -1
  290. package/dist/internal/zip.d.ts +0 -1
  291. package/dist/internal/zip.js +0 -1
  292. package/dist/locator/engine.d.ts +0 -1
  293. package/dist/locator/engine.js +0 -1
  294. package/dist/locator/expression.d.ts +0 -1
  295. package/dist/locator/expression.js +0 -1
  296. package/dist/locator/screen.d.ts +0 -1
  297. package/dist/locator/screen.js +0 -1
  298. package/dist/mcp/catalog.d.ts +4 -1
  299. package/dist/mcp/catalog.js +2 -3
  300. package/dist/mcp/config.d.ts +0 -1
  301. package/dist/mcp/config.js +0 -1
  302. package/dist/mcp/recording.d.ts +0 -1
  303. package/dist/mcp/recording.js +0 -1
  304. package/dist/mcp/server.d.ts +8 -1
  305. package/dist/mcp/server.js +8 -5
  306. package/dist/mcp/session.d.ts +4 -2
  307. package/dist/mcp/session.js +43 -21
  308. package/dist/mcp/sessions.d.ts +2 -1
  309. package/dist/mcp/sessions.js +5 -2
  310. package/dist/mcp/tools.d.ts +7 -6
  311. package/dist/mcp/tools.js +36 -11
  312. package/dist/mcp/usage.d.ts +61 -0
  313. package/dist/mcp/usage.js +73 -0
  314. package/dist/oauth/callback-server.d.ts +0 -1
  315. package/dist/oauth/callback-server.js +0 -1
  316. package/dist/oauth/chatgpt.d.ts +0 -1
  317. package/dist/oauth/chatgpt.js +0 -1
  318. package/dist/oauth/cli.d.ts +0 -1
  319. package/dist/oauth/cli.js +0 -1
  320. package/dist/oauth/copilot.d.ts +0 -1
  321. package/dist/oauth/copilot.js +0 -1
  322. package/dist/oauth/device-code.d.ts +0 -1
  323. package/dist/oauth/device-code.js +0 -1
  324. package/dist/oauth/errors.d.ts +0 -1
  325. package/dist/oauth/errors.js +0 -1
  326. package/dist/oauth/fetch.d.ts +0 -1
  327. package/dist/oauth/fetch.js +0 -1
  328. package/dist/oauth/grok.d.ts +0 -1
  329. package/dist/oauth/grok.js +0 -1
  330. package/dist/oauth/jwt.d.ts +0 -1
  331. package/dist/oauth/jwt.js +0 -1
  332. package/dist/oauth/login.d.ts +0 -1
  333. package/dist/oauth/login.js +0 -1
  334. package/dist/oauth/models.d.ts +0 -1
  335. package/dist/oauth/models.js +0 -1
  336. package/dist/oauth/pkce.d.ts +0 -1
  337. package/dist/oauth/pkce.js +0 -1
  338. package/dist/oauth/providers/github-copilot.d.ts +0 -1
  339. package/dist/oauth/providers/github-copilot.js +10 -3
  340. package/dist/oauth/providers/openai.d.ts +0 -1
  341. package/dist/oauth/providers/openai.js +1 -2
  342. package/dist/oauth/providers/xai.d.ts +0 -1
  343. package/dist/oauth/providers/xai.js +0 -1
  344. package/dist/oauth/providers.d.ts +0 -1
  345. package/dist/oauth/providers.js +0 -1
  346. package/dist/oauth/sse.d.ts +0 -1
  347. package/dist/oauth/sse.js +0 -1
  348. package/dist/oauth/store.d.ts +0 -1
  349. package/dist/oauth/store.js +0 -1
  350. package/dist/oauth/token-endpoint.d.ts +0 -1
  351. package/dist/oauth/token-endpoint.js +0 -1
  352. package/dist/oauth/types.d.ts +0 -1
  353. package/dist/oauth/types.js +0 -1
  354. package/dist/params.d.ts +0 -1
  355. package/dist/params.js +0 -1
  356. package/dist/report/build.d.ts +0 -1
  357. package/dist/report/build.js +0 -1
  358. package/dist/report/builtin.d.ts +0 -1
  359. package/dist/report/builtin.js +0 -1
  360. package/dist/report/code-frame.d.ts +0 -1
  361. package/dist/report/code-frame.js +0 -1
  362. package/dist/report/debug-steps.d.ts +0 -1
  363. package/dist/report/debug-steps.js +0 -1
  364. package/dist/report/explore-text.d.ts +0 -1
  365. package/dist/report/explore-text.js +0 -1
  366. package/dist/report/failure-text.d.ts +0 -1
  367. package/dist/report/failure-text.js +0 -1
  368. package/dist/report/format.d.ts +0 -1
  369. package/dist/report/format.js +0 -1
  370. package/dist/report/json.d.ts +0 -1
  371. package/dist/report/json.js +0 -1
  372. package/dist/report/junit.d.ts +0 -1
  373. package/dist/report/junit.js +0 -1
  374. package/dist/report/list-explore.d.ts +0 -1
  375. package/dist/report/list-explore.js +0 -1
  376. package/dist/report/list-model.d.ts +0 -1
  377. package/dist/report/list-model.js +0 -1
  378. package/dist/report/list-steps.d.ts +0 -1
  379. package/dist/report/list-steps.js +0 -1
  380. package/dist/report/list.d.ts +0 -1
  381. package/dist/report/list.js +0 -1
  382. package/dist/report/live-window.d.ts +0 -1
  383. package/dist/report/live-window.js +0 -1
  384. package/dist/report/markdown-text.d.ts +0 -1
  385. package/dist/report/markdown-text.js +0 -1
  386. package/dist/report/markdown.d.ts +0 -1
  387. package/dist/report/markdown.js +0 -1
  388. package/dist/report/outcome.d.ts +0 -1
  389. package/dist/report/outcome.js +0 -1
  390. package/dist/report/repeats.d.ts +0 -1
  391. package/dist/report/repeats.js +0 -1
  392. package/dist/report/running-tree.d.ts +0 -1
  393. package/dist/report/running-tree.js +0 -1
  394. package/dist/report/write.d.ts +0 -1
  395. package/dist/report/write.js +0 -1
  396. package/dist/run/app-ports.d.ts +0 -1
  397. package/dist/run/app-ports.js +0 -1
  398. package/dist/run/artifacts.d.ts +0 -1
  399. package/dist/run/artifacts.js +0 -1
  400. package/dist/run/budget.d.ts +0 -1
  401. package/dist/run/budget.js +0 -1
  402. package/dist/run/declared-processes.d.ts +0 -1
  403. package/dist/run/declared-processes.js +0 -1
  404. package/dist/run/events.d.ts +0 -1
  405. package/dist/run/events.js +0 -1
  406. package/dist/run/execute.d.ts +0 -1
  407. package/dist/run/execute.js +27 -13
  408. package/dist/run/extended-fixtures.d.ts +0 -1
  409. package/dist/run/extended-fixtures.js +0 -1
  410. package/dist/run/failure-evidence.d.ts +0 -1
  411. package/dist/run/failure-evidence.js +0 -1
  412. package/dist/run/fixture-recording.d.ts +0 -1
  413. package/dist/run/fixture-recording.js +0 -1
  414. package/dist/run/fixtures.d.ts +0 -1
  415. package/dist/run/fixtures.js +0 -1
  416. package/dist/run/in-process.d.ts +0 -1
  417. package/dist/run/in-process.js +0 -1
  418. package/dist/run/last-run.d.ts +0 -1
  419. package/dist/run/last-run.js +0 -1
  420. package/dist/run/managed-process.d.ts +0 -1
  421. package/dist/run/managed-process.js +0 -1
  422. package/dist/run/output.d.ts +0 -1
  423. package/dist/run/output.js +0 -1
  424. package/dist/run/process-pool.d.ts +0 -1
  425. package/dist/run/process-pool.js +0 -1
  426. package/dist/run/provision.d.ts +0 -1
  427. package/dist/run/provision.js +0 -1
  428. package/dist/run/realm.d.ts +2 -1
  429. package/dist/run/realm.js +1 -2
  430. package/dist/run/records.d.ts +0 -1
  431. package/dist/run/records.js +0 -1
  432. package/dist/run/retry.d.ts +0 -1
  433. package/dist/run/retry.js +0 -1
  434. package/dist/run/runner.d.ts +2 -1
  435. package/dist/run/runner.js +1 -2
  436. package/dist/run/scheduler.d.ts +0 -1
  437. package/dist/run/scheduler.js +0 -1
  438. package/dist/run/secrecy.d.ts +15 -1
  439. package/dist/run/secrecy.js +27 -2
  440. package/dist/run/serial.d.ts +0 -1
  441. package/dist/run/serial.js +0 -1
  442. package/dist/run/sessions.d.ts +0 -1
  443. package/dist/run/sessions.js +0 -1
  444. package/dist/run/standalone.d.ts +0 -1
  445. package/dist/run/standalone.js +3 -3
  446. package/dist/run/steps.d.ts +2 -3
  447. package/dist/run/steps.js +4 -2
  448. package/dist/run/trace-redaction.d.ts +0 -1
  449. package/dist/run/trace-redaction.js +0 -1
  450. package/dist/run/unit-runner.d.ts +0 -1
  451. package/dist/run/unit-runner.js +0 -1
  452. package/dist/run/units.d.ts +0 -1
  453. package/dist/run/units.js +0 -1
  454. package/dist/run/worker/entry.d.ts +0 -1
  455. package/dist/run/worker/entry.js +2 -3
  456. package/dist/run/worker/handle.d.ts +0 -1
  457. package/dist/run/worker/handle.js +0 -1
  458. package/dist/run/worker/protocol.d.ts +0 -1
  459. package/dist/run/worker/protocol.js +0 -1
  460. package/dist/run/worker/session.d.ts +0 -1
  461. package/dist/run/worker/session.js +0 -1
  462. package/dist/run/worker-models.d.ts +0 -1
  463. package/dist/run/worker-models.js +0 -1
  464. package/dist/secrets.d.ts +0 -1
  465. package/dist/secrets.js +0 -1
  466. package/dist/telemetry/checkout.d.ts +0 -1
  467. package/dist/telemetry/checkout.js +0 -1
  468. package/dist/telemetry/environment.d.ts +0 -1
  469. package/dist/telemetry/environment.js +0 -1
  470. package/dist/telemetry/events.d.ts +26 -10
  471. package/dist/telemetry/events.js +107 -13
  472. package/dist/telemetry/failure-kind.d.ts +0 -1
  473. package/dist/telemetry/failure-kind.js +0 -1
  474. package/dist/telemetry/posthog.d.ts +0 -1
  475. package/dist/telemetry/posthog.js +0 -1
  476. package/dist/telemetry/project.d.ts +0 -1
  477. package/dist/telemetry/project.js +0 -1
  478. package/dist/telemetry/store.d.ts +0 -1
  479. package/dist/telemetry/store.js +0 -1
  480. package/dist/telemetry/telemetry.d.ts +19 -8
  481. package/dist/telemetry/telemetry.js +26 -9
  482. package/dist/telemetry/token.d.ts +0 -1
  483. package/dist/telemetry/token.js +0 -1
  484. package/dist/types.d.ts +26 -24
  485. package/dist/types.js +0 -1
  486. package/docs/agent-steps.mdx +126 -0
  487. package/docs/agents.mdx +217 -0
  488. package/docs/api-testing.mdx +65 -0
  489. package/docs/authentication.mdx +345 -0
  490. package/docs/browser.mdx +440 -0
  491. package/docs/bug-bash.mdx +90 -0
  492. package/docs/cache.mdx +306 -0
  493. package/docs/ci.mdx +210 -0
  494. package/docs/coding-agents.mdx +183 -0
  495. package/docs/debugging.mdx +291 -0
  496. package/docs/executors.mdx +243 -0
  497. package/docs/explore.mdx +174 -0
  498. package/docs/github.mdx +184 -0
  499. package/docs/index.mdx +82 -0
  500. package/docs/integrations/eas.mdx +216 -0
  501. package/docs/integrations/index.mdx +24 -0
  502. package/docs/integrations/kernel.mdx +163 -0
  503. package/docs/migrate/cypress.mdx +124 -0
  504. package/docs/migrate/detox.mdx +140 -0
  505. package/docs/migrate/maestro.mdx +229 -0
  506. package/docs/migrate/playwright.mdx +430 -0
  507. package/docs/migrate/selenium.mdx +110 -0
  508. package/docs/mobile-ci.mdx +567 -0
  509. package/docs/mobile.mdx +595 -0
  510. package/docs/models.mdx +241 -0
  511. package/docs/quickstart.mdx +260 -0
  512. package/docs/reference/agent.mdx +524 -0
  513. package/docs/reference/app.mdx +72 -0
  514. package/docs/reference/cli.mdx +819 -0
  515. package/docs/reference/config.mdx +986 -0
  516. package/docs/reference/engine.mdx +1363 -0
  517. package/docs/reference/environment.mdx +113 -0
  518. package/docs/reference/errors.mdx +143 -0
  519. package/docs/reference/expect.mdx +546 -0
  520. package/docs/reference/mcp.mdx +205 -0
  521. package/docs/reference/mobile.mdx +522 -0
  522. package/docs/reference/reporters.mdx +216 -0
  523. package/docs/reference/screen.mdx +688 -0
  524. package/docs/reference/test.mdx +449 -0
  525. package/docs/reference/web.mdx +615 -0
  526. package/docs/security.mdx +308 -0
  527. package/docs/starting-your-app.mdx +231 -0
  528. package/docs/subscriptions.mdx +166 -0
  529. package/docs/telemetry.mdx +227 -0
  530. package/docs/tools.mdx +150 -0
  531. package/docs/viewports.mdx +146 -0
  532. package/docs/writing-an-engine.mdx +316 -0
  533. package/docs/writing-tests.mdx +256 -0
  534. package/package.json +5 -3
  535. package/skills/e2e/SKILL.md +4 -1
  536. package/skills/e2e/references/agent.md +3 -1
  537. package/skills/e2e/references/mcp.md +3 -0
  538. package/skills/e2e/references/setup.md +19 -4
  539. package/skills/e2e/references/writing-tests.md +11 -0
  540. package/dist/agent/act-validation.d.ts.map +0 -1
  541. package/dist/agent/act-validation.js.map +0 -1
  542. package/dist/agent/act.d.ts.map +0 -1
  543. package/dist/agent/act.js.map +0 -1
  544. package/dist/agent/action-dispatcher.d.ts.map +0 -1
  545. package/dist/agent/action-dispatcher.js.map +0 -1
  546. package/dist/agent/action-names.d.ts.map +0 -1
  547. package/dist/agent/action-names.js.map +0 -1
  548. package/dist/agent/actions.d.ts.map +0 -1
  549. package/dist/agent/actions.js.map +0 -1
  550. package/dist/agent/agent-brand.d.ts.map +0 -1
  551. package/dist/agent/agent-brand.js.map +0 -1
  552. package/dist/agent/ai-sdk.d.ts.map +0 -1
  553. package/dist/agent/ai-sdk.js.map +0 -1
  554. package/dist/agent/call-options.d.ts.map +0 -1
  555. package/dist/agent/call-options.js.map +0 -1
  556. package/dist/agent/default-agent.d.ts.map +0 -1
  557. package/dist/agent/default-agent.js.map +0 -1
  558. package/dist/agent/derived.d.ts.map +0 -1
  559. package/dist/agent/derived.js.map +0 -1
  560. package/dist/agent/error.d.ts.map +0 -1
  561. package/dist/agent/error.js.map +0 -1
  562. package/dist/agent/executor.d.ts.map +0 -1
  563. package/dist/agent/executor.js.map +0 -1
  564. package/dist/agent/index.d.ts.map +0 -1
  565. package/dist/agent/index.js.map +0 -1
  566. package/dist/agent/interactive-step.d.ts.map +0 -1
  567. package/dist/agent/interactive-step.js.map +0 -1
  568. package/dist/agent/invocation.d.ts.map +0 -1
  569. package/dist/agent/invocation.js.map +0 -1
  570. package/dist/agent/ledger.d.ts.map +0 -1
  571. package/dist/agent/ledger.js.map +0 -1
  572. package/dist/agent/loop-guards.d.ts.map +0 -1
  573. package/dist/agent/loop-guards.js.map +0 -1
  574. package/dist/agent/model/adapter.d.ts.map +0 -1
  575. package/dist/agent/model/adapter.js.map +0 -1
  576. package/dist/agent/model/overflow.d.ts.map +0 -1
  577. package/dist/agent/model/overflow.js.map +0 -1
  578. package/dist/agent/model/provider-hints.d.ts.map +0 -1
  579. package/dist/agent/model/provider-hints.js.map +0 -1
  580. package/dist/agent/model/schema.d.ts.map +0 -1
  581. package/dist/agent/model/schema.js.map +0 -1
  582. package/dist/agent/model/sdk.d.ts.map +0 -1
  583. package/dist/agent/model/sdk.js.map +0 -1
  584. package/dist/agent/model/stall.d.ts.map +0 -1
  585. package/dist/agent/model/stall.js.map +0 -1
  586. package/dist/agent/model/tool-choice.d.ts.map +0 -1
  587. package/dist/agent/model/tool-choice.js.map +0 -1
  588. package/dist/agent/observation-budget.d.ts.map +0 -1
  589. package/dist/agent/observation-budget.js.map +0 -1
  590. package/dist/agent/observation-feed.d.ts.map +0 -1
  591. package/dist/agent/observation-feed.js.map +0 -1
  592. package/dist/agent/observation.d.ts.map +0 -1
  593. package/dist/agent/observation.js.map +0 -1
  594. package/dist/agent/operation-queue.d.ts.map +0 -1
  595. package/dist/agent/operation-queue.js.map +0 -1
  596. package/dist/agent/phases.d.ts.map +0 -1
  597. package/dist/agent/phases.js.map +0 -1
  598. package/dist/agent/pixels.d.ts.map +0 -1
  599. package/dist/agent/pixels.js.map +0 -1
  600. package/dist/agent/point-tap.d.ts.map +0 -1
  601. package/dist/agent/point-tap.js.map +0 -1
  602. package/dist/agent/primitives.d.ts.map +0 -1
  603. package/dist/agent/primitives.js.map +0 -1
  604. package/dist/agent/prompts.d.ts.map +0 -1
  605. package/dist/agent/prompts.js.map +0 -1
  606. package/dist/agent/protocol.d.ts.map +0 -1
  607. package/dist/agent/protocol.js.map +0 -1
  608. package/dist/agent/public.d.ts.map +0 -1
  609. package/dist/agent/public.js.map +0 -1
  610. package/dist/agent/reading.d.ts.map +0 -1
  611. package/dist/agent/reading.js.map +0 -1
  612. package/dist/agent/replay.d.ts.map +0 -1
  613. package/dist/agent/replay.js.map +0 -1
  614. package/dist/agent/screen-update.d.ts.map +0 -1
  615. package/dist/agent/screen-update.js.map +0 -1
  616. package/dist/agent/scroll-target.d.ts.map +0 -1
  617. package/dist/agent/scroll-target.js.map +0 -1
  618. package/dist/agent/secrets.d.ts.map +0 -1
  619. package/dist/agent/secrets.js.map +0 -1
  620. package/dist/agent/settle-policy.d.ts.map +0 -1
  621. package/dist/agent/settle-policy.js.map +0 -1
  622. package/dist/agent/step-accounting.d.ts.map +0 -1
  623. package/dist/agent/step-accounting.js.map +0 -1
  624. package/dist/agent/step-cache.d.ts.map +0 -1
  625. package/dist/agent/step-cache.js.map +0 -1
  626. package/dist/agent/tool-loop.d.ts.map +0 -1
  627. package/dist/agent/tool-loop.js.map +0 -1
  628. package/dist/agent/tool-output.d.ts.map +0 -1
  629. package/dist/agent/tool-output.js.map +0 -1
  630. package/dist/agent/tool.d.ts.map +0 -1
  631. package/dist/agent/tool.js.map +0 -1
  632. package/dist/agent/transcript-compaction.d.ts.map +0 -1
  633. package/dist/agent/transcript-compaction.js.map +0 -1
  634. package/dist/agent/upload-paths.d.ts.map +0 -1
  635. package/dist/agent/upload-paths.js.map +0 -1
  636. package/dist/agent/usage.d.ts.map +0 -1
  637. package/dist/agent/usage.js.map +0 -1
  638. package/dist/cache/anchors.d.ts.map +0 -1
  639. package/dist/cache/anchors.js.map +0 -1
  640. package/dist/cache/context.d.ts.map +0 -1
  641. package/dist/cache/context.js.map +0 -1
  642. package/dist/cache/decide.d.ts.map +0 -1
  643. package/dist/cache/decide.js.map +0 -1
  644. package/dist/cache/identity.d.ts.map +0 -1
  645. package/dist/cache/identity.js.map +0 -1
  646. package/dist/cache/recorder.d.ts.map +0 -1
  647. package/dist/cache/recorder.js.map +0 -1
  648. package/dist/cache/relocate.d.ts.map +0 -1
  649. package/dist/cache/relocate.js.map +0 -1
  650. package/dist/cache/route.d.ts.map +0 -1
  651. package/dist/cache/route.js.map +0 -1
  652. package/dist/cache/store.d.ts.map +0 -1
  653. package/dist/cache/store.js.map +0 -1
  654. package/dist/cache/template.d.ts.map +0 -1
  655. package/dist/cache/template.js.map +0 -1
  656. package/dist/cache/trace.d.ts.map +0 -1
  657. package/dist/cache/trace.js.map +0 -1
  658. package/dist/cli/bin.d.ts.map +0 -1
  659. package/dist/cli/bin.js.map +0 -1
  660. package/dist/cli/cache.d.ts.map +0 -1
  661. package/dist/cli/cache.js.map +0 -1
  662. package/dist/cli/docs-url.d.ts.map +0 -1
  663. package/dist/cli/docs-url.js.map +0 -1
  664. package/dist/cli/feedback.d.ts.map +0 -1
  665. package/dist/cli/feedback.js.map +0 -1
  666. package/dist/cli/guide.d.ts.map +0 -1
  667. package/dist/cli/guide.js.map +0 -1
  668. package/dist/cli/index.d.ts.map +0 -1
  669. package/dist/cli/index.js.map +0 -1
  670. package/dist/cli/init/agent-skill.d.ts.map +0 -1
  671. package/dist/cli/init/agent-skill.js.map +0 -1
  672. package/dist/cli/init/engines.d.ts.map +0 -1
  673. package/dist/cli/init/engines.js.map +0 -1
  674. package/dist/cli/init/gateways.d.ts.map +0 -1
  675. package/dist/cli/init/gateways.js.map +0 -1
  676. package/dist/cli/init/mcp-config.d.ts.map +0 -1
  677. package/dist/cli/init/mcp-config.js.map +0 -1
  678. package/dist/cli/init/package.d.ts.map +0 -1
  679. package/dist/cli/init/package.js.map +0 -1
  680. package/dist/cli/init/scaffold.d.ts.map +0 -1
  681. package/dist/cli/init/scaffold.js.map +0 -1
  682. package/dist/cli/init/versions.d.ts.map +0 -1
  683. package/dist/cli/init/versions.js.map +0 -1
  684. package/dist/cli/init.d.ts.map +0 -1
  685. package/dist/cli/init.js.map +0 -1
  686. package/dist/cli/mcp.d.ts.map +0 -1
  687. package/dist/cli/mcp.js.map +0 -1
  688. package/dist/cli/signals.d.ts.map +0 -1
  689. package/dist/cli/signals.js.map +0 -1
  690. package/dist/cli/skill.d.ts.map +0 -1
  691. package/dist/cli/skill.js.map +0 -1
  692. package/dist/cli/telemetry.d.ts.map +0 -1
  693. package/dist/cli/telemetry.js.map +0 -1
  694. package/dist/cli/wordmark.d.ts.map +0 -1
  695. package/dist/cli/wordmark.js.map +0 -1
  696. package/dist/collect/collect.d.ts.map +0 -1
  697. package/dist/collect/collect.js.map +0 -1
  698. package/dist/collect/registry.d.ts.map +0 -1
  699. package/dist/collect/registry.js.map +0 -1
  700. package/dist/collect/select.d.ts.map +0 -1
  701. package/dist/collect/select.js.map +0 -1
  702. package/dist/config/agent.d.ts.map +0 -1
  703. package/dist/config/agent.js.map +0 -1
  704. package/dist/config/app.d.ts.map +0 -1
  705. package/dist/config/app.js.map +0 -1
  706. package/dist/config/command.d.ts.map +0 -1
  707. package/dist/config/command.js.map +0 -1
  708. package/dist/config/diagnose.d.ts.map +0 -1
  709. package/dist/config/diagnose.js.map +0 -1
  710. package/dist/config/esm-hooks.d.ts.map +0 -1
  711. package/dist/config/esm-hooks.js.map +0 -1
  712. package/dist/config/load.d.ts.map +0 -1
  713. package/dist/config/load.js.map +0 -1
  714. package/dist/config/resolve.d.ts.map +0 -1
  715. package/dist/config/resolve.js.map +0 -1
  716. package/dist/config/secrets.d.ts.map +0 -1
  717. package/dist/config/secrets.js.map +0 -1
  718. package/dist/config/targets.d.ts.map +0 -1
  719. package/dist/config/targets.js.map +0 -1
  720. package/dist/config/validate.d.ts.map +0 -1
  721. package/dist/config/validate.js.map +0 -1
  722. package/dist/engine/contract.d.ts.map +0 -1
  723. package/dist/engine/contract.js.map +0 -1
  724. package/dist/engine/index.d.ts.map +0 -1
  725. package/dist/engine/index.js.map +0 -1
  726. package/dist/engine/manifest.d.ts.map +0 -1
  727. package/dist/engine/manifest.js.map +0 -1
  728. package/dist/engine/recording.d.ts.map +0 -1
  729. package/dist/engine/recording.js.map +0 -1
  730. package/dist/engine/resolve.d.ts.map +0 -1
  731. package/dist/engine/resolve.js.map +0 -1
  732. package/dist/engine/session.d.ts.map +0 -1
  733. package/dist/engine/session.js.map +0 -1
  734. package/dist/engine/surface.d.ts.map +0 -1
  735. package/dist/engine/surface.js.map +0 -1
  736. package/dist/engine/timing.d.ts.map +0 -1
  737. package/dist/engine/timing.js.map +0 -1
  738. package/dist/expect/async.d.ts.map +0 -1
  739. package/dist/expect/async.js.map +0 -1
  740. package/dist/expect/attempt.d.ts.map +0 -1
  741. package/dist/expect/attempt.js.map +0 -1
  742. package/dist/expect/index.d.ts.map +0 -1
  743. package/dist/expect/index.js.map +0 -1
  744. package/dist/expect/poll.d.ts.map +0 -1
  745. package/dist/expect/poll.js.map +0 -1
  746. package/dist/expect/soft.d.ts.map +0 -1
  747. package/dist/expect/soft.js.map +0 -1
  748. package/dist/expect/values.d.ts.map +0 -1
  749. package/dist/expect/values.js.map +0 -1
  750. package/dist/explore/body.d.ts.map +0 -1
  751. package/dist/explore/body.js.map +0 -1
  752. package/dist/explore/executor.d.ts.map +0 -1
  753. package/dist/explore/executor.js.map +0 -1
  754. package/dist/explore/index.d.ts.map +0 -1
  755. package/dist/explore/index.js.map +0 -1
  756. package/dist/explore/plan.d.ts.map +0 -1
  757. package/dist/explore/plan.js.map +0 -1
  758. package/dist/explore/progress.d.ts.map +0 -1
  759. package/dist/explore/progress.js.map +0 -1
  760. package/dist/explore/state.d.ts.map +0 -1
  761. package/dist/explore/state.js.map +0 -1
  762. package/dist/index.d.ts.map +0 -1
  763. package/dist/index.js.map +0 -1
  764. package/dist/internal/ai-trace.d.ts.map +0 -1
  765. package/dist/internal/ai-trace.js.map +0 -1
  766. package/dist/internal/atomic-write.d.ts.map +0 -1
  767. package/dist/internal/atomic-write.js.map +0 -1
  768. package/dist/internal/brands.d.ts.map +0 -1
  769. package/dist/internal/brands.js.map +0 -1
  770. package/dist/internal/debug.d.ts.map +0 -1
  771. package/dist/internal/debug.js.map +0 -1
  772. package/dist/internal/env.d.ts.map +0 -1
  773. package/dist/internal/env.js.map +0 -1
  774. package/dist/internal/errors.d.ts.map +0 -1
  775. package/dist/internal/errors.js.map +0 -1
  776. package/dist/internal/geometry.d.ts.map +0 -1
  777. package/dist/internal/geometry.js.map +0 -1
  778. package/dist/internal/git.d.ts.map +0 -1
  779. package/dist/internal/git.js.map +0 -1
  780. package/dist/internal/globs.d.ts.map +0 -1
  781. package/dist/internal/globs.js.map +0 -1
  782. package/dist/internal/ids.d.ts.map +0 -1
  783. package/dist/internal/ids.js.map +0 -1
  784. package/dist/internal/json-value.d.ts.map +0 -1
  785. package/dist/internal/json-value.js.map +0 -1
  786. package/dist/internal/keys.d.ts.map +0 -1
  787. package/dist/internal/keys.js.map +0 -1
  788. package/dist/internal/node-version.d.ts.map +0 -1
  789. package/dist/internal/node-version.js.map +0 -1
  790. package/dist/internal/objects.d.ts.map +0 -1
  791. package/dist/internal/objects.js.map +0 -1
  792. package/dist/internal/options.d.ts.map +0 -1
  793. package/dist/internal/options.js.map +0 -1
  794. package/dist/internal/package-manager.d.ts.map +0 -1
  795. package/dist/internal/package-manager.js.map +0 -1
  796. package/dist/internal/package-version.d.ts.map +0 -1
  797. package/dist/internal/package-version.js.map +0 -1
  798. package/dist/internal/paths.d.ts.map +0 -1
  799. package/dist/internal/paths.js.map +0 -1
  800. package/dist/internal/realm-slot.d.ts.map +0 -1
  801. package/dist/internal/realm-slot.js.map +0 -1
  802. package/dist/internal/recording-modes.d.ts.map +0 -1
  803. package/dist/internal/recording-modes.js.map +0 -1
  804. package/dist/internal/redact.d.ts.map +0 -1
  805. package/dist/internal/redact.js.map +0 -1
  806. package/dist/internal/regexp.d.ts.map +0 -1
  807. package/dist/internal/regexp.js.map +0 -1
  808. package/dist/internal/roles.d.ts.map +0 -1
  809. package/dist/internal/roles.js.map +0 -1
  810. package/dist/internal/skip.d.ts.map +0 -1
  811. package/dist/internal/skip.js.map +0 -1
  812. package/dist/internal/source.d.ts.map +0 -1
  813. package/dist/internal/source.js.map +0 -1
  814. package/dist/internal/standard-schema.d.ts.map +0 -1
  815. package/dist/internal/standard-schema.js.map +0 -1
  816. package/dist/internal/suggest.d.ts.map +0 -1
  817. package/dist/internal/suggest.js.map +0 -1
  818. package/dist/internal/text.d.ts.map +0 -1
  819. package/dist/internal/text.js.map +0 -1
  820. package/dist/internal/time.d.ts.map +0 -1
  821. package/dist/internal/time.js.map +0 -1
  822. package/dist/internal/urls.d.ts.map +0 -1
  823. package/dist/internal/urls.js.map +0 -1
  824. package/dist/internal/vcs.d.ts.map +0 -1
  825. package/dist/internal/vcs.js.map +0 -1
  826. package/dist/internal/zip.d.ts.map +0 -1
  827. package/dist/internal/zip.js.map +0 -1
  828. package/dist/locator/engine.d.ts.map +0 -1
  829. package/dist/locator/engine.js.map +0 -1
  830. package/dist/locator/expression.d.ts.map +0 -1
  831. package/dist/locator/expression.js.map +0 -1
  832. package/dist/locator/screen.d.ts.map +0 -1
  833. package/dist/locator/screen.js.map +0 -1
  834. package/dist/mcp/catalog.d.ts.map +0 -1
  835. package/dist/mcp/catalog.js.map +0 -1
  836. package/dist/mcp/config.d.ts.map +0 -1
  837. package/dist/mcp/config.js.map +0 -1
  838. package/dist/mcp/recording.d.ts.map +0 -1
  839. package/dist/mcp/recording.js.map +0 -1
  840. package/dist/mcp/server.d.ts.map +0 -1
  841. package/dist/mcp/server.js.map +0 -1
  842. package/dist/mcp/session.d.ts.map +0 -1
  843. package/dist/mcp/session.js.map +0 -1
  844. package/dist/mcp/sessions.d.ts.map +0 -1
  845. package/dist/mcp/sessions.js.map +0 -1
  846. package/dist/mcp/tools.d.ts.map +0 -1
  847. package/dist/mcp/tools.js.map +0 -1
  848. package/dist/oauth/callback-server.d.ts.map +0 -1
  849. package/dist/oauth/callback-server.js.map +0 -1
  850. package/dist/oauth/chatgpt.d.ts.map +0 -1
  851. package/dist/oauth/chatgpt.js.map +0 -1
  852. package/dist/oauth/cli.d.ts.map +0 -1
  853. package/dist/oauth/cli.js.map +0 -1
  854. package/dist/oauth/copilot.d.ts.map +0 -1
  855. package/dist/oauth/copilot.js.map +0 -1
  856. package/dist/oauth/device-code.d.ts.map +0 -1
  857. package/dist/oauth/device-code.js.map +0 -1
  858. package/dist/oauth/errors.d.ts.map +0 -1
  859. package/dist/oauth/errors.js.map +0 -1
  860. package/dist/oauth/fetch.d.ts.map +0 -1
  861. package/dist/oauth/fetch.js.map +0 -1
  862. package/dist/oauth/grok.d.ts.map +0 -1
  863. package/dist/oauth/grok.js.map +0 -1
  864. package/dist/oauth/jwt.d.ts.map +0 -1
  865. package/dist/oauth/jwt.js.map +0 -1
  866. package/dist/oauth/login.d.ts.map +0 -1
  867. package/dist/oauth/login.js.map +0 -1
  868. package/dist/oauth/models.d.ts.map +0 -1
  869. package/dist/oauth/models.js.map +0 -1
  870. package/dist/oauth/pkce.d.ts.map +0 -1
  871. package/dist/oauth/pkce.js.map +0 -1
  872. package/dist/oauth/providers/github-copilot.d.ts.map +0 -1
  873. package/dist/oauth/providers/github-copilot.js.map +0 -1
  874. package/dist/oauth/providers/openai.d.ts.map +0 -1
  875. package/dist/oauth/providers/openai.js.map +0 -1
  876. package/dist/oauth/providers/xai.d.ts.map +0 -1
  877. package/dist/oauth/providers/xai.js.map +0 -1
  878. package/dist/oauth/providers.d.ts.map +0 -1
  879. package/dist/oauth/providers.js.map +0 -1
  880. package/dist/oauth/sse.d.ts.map +0 -1
  881. package/dist/oauth/sse.js.map +0 -1
  882. package/dist/oauth/store.d.ts.map +0 -1
  883. package/dist/oauth/store.js.map +0 -1
  884. package/dist/oauth/token-endpoint.d.ts.map +0 -1
  885. package/dist/oauth/token-endpoint.js.map +0 -1
  886. package/dist/oauth/types.d.ts.map +0 -1
  887. package/dist/oauth/types.js.map +0 -1
  888. package/dist/params.d.ts.map +0 -1
  889. package/dist/params.js.map +0 -1
  890. package/dist/report/build.d.ts.map +0 -1
  891. package/dist/report/build.js.map +0 -1
  892. package/dist/report/builtin.d.ts.map +0 -1
  893. package/dist/report/builtin.js.map +0 -1
  894. package/dist/report/code-frame.d.ts.map +0 -1
  895. package/dist/report/code-frame.js.map +0 -1
  896. package/dist/report/debug-steps.d.ts.map +0 -1
  897. package/dist/report/debug-steps.js.map +0 -1
  898. package/dist/report/explore-text.d.ts.map +0 -1
  899. package/dist/report/explore-text.js.map +0 -1
  900. package/dist/report/failure-text.d.ts.map +0 -1
  901. package/dist/report/failure-text.js.map +0 -1
  902. package/dist/report/format.d.ts.map +0 -1
  903. package/dist/report/format.js.map +0 -1
  904. package/dist/report/json.d.ts.map +0 -1
  905. package/dist/report/json.js.map +0 -1
  906. package/dist/report/junit.d.ts.map +0 -1
  907. package/dist/report/junit.js.map +0 -1
  908. package/dist/report/list-explore.d.ts.map +0 -1
  909. package/dist/report/list-explore.js.map +0 -1
  910. package/dist/report/list-model.d.ts.map +0 -1
  911. package/dist/report/list-model.js.map +0 -1
  912. package/dist/report/list-steps.d.ts.map +0 -1
  913. package/dist/report/list-steps.js.map +0 -1
  914. package/dist/report/list.d.ts.map +0 -1
  915. package/dist/report/list.js.map +0 -1
  916. package/dist/report/live-window.d.ts.map +0 -1
  917. package/dist/report/live-window.js.map +0 -1
  918. package/dist/report/markdown-text.d.ts.map +0 -1
  919. package/dist/report/markdown-text.js.map +0 -1
  920. package/dist/report/markdown.d.ts.map +0 -1
  921. package/dist/report/markdown.js.map +0 -1
  922. package/dist/report/outcome.d.ts.map +0 -1
  923. package/dist/report/outcome.js.map +0 -1
  924. package/dist/report/repeats.d.ts.map +0 -1
  925. package/dist/report/repeats.js.map +0 -1
  926. package/dist/report/running-tree.d.ts.map +0 -1
  927. package/dist/report/running-tree.js.map +0 -1
  928. package/dist/report/write.d.ts.map +0 -1
  929. package/dist/report/write.js.map +0 -1
  930. package/dist/run/app-ports.d.ts.map +0 -1
  931. package/dist/run/app-ports.js.map +0 -1
  932. package/dist/run/artifacts.d.ts.map +0 -1
  933. package/dist/run/artifacts.js.map +0 -1
  934. package/dist/run/budget.d.ts.map +0 -1
  935. package/dist/run/budget.js.map +0 -1
  936. package/dist/run/declared-processes.d.ts.map +0 -1
  937. package/dist/run/declared-processes.js.map +0 -1
  938. package/dist/run/events.d.ts.map +0 -1
  939. package/dist/run/events.js.map +0 -1
  940. package/dist/run/execute.d.ts.map +0 -1
  941. package/dist/run/execute.js.map +0 -1
  942. package/dist/run/extended-fixtures.d.ts.map +0 -1
  943. package/dist/run/extended-fixtures.js.map +0 -1
  944. package/dist/run/failure-evidence.d.ts.map +0 -1
  945. package/dist/run/failure-evidence.js.map +0 -1
  946. package/dist/run/fixture-recording.d.ts.map +0 -1
  947. package/dist/run/fixture-recording.js.map +0 -1
  948. package/dist/run/fixtures.d.ts.map +0 -1
  949. package/dist/run/fixtures.js.map +0 -1
  950. package/dist/run/in-process.d.ts.map +0 -1
  951. package/dist/run/in-process.js.map +0 -1
  952. package/dist/run/last-run.d.ts.map +0 -1
  953. package/dist/run/last-run.js.map +0 -1
  954. package/dist/run/managed-process.d.ts.map +0 -1
  955. package/dist/run/managed-process.js.map +0 -1
  956. package/dist/run/output.d.ts.map +0 -1
  957. package/dist/run/output.js.map +0 -1
  958. package/dist/run/process-pool.d.ts.map +0 -1
  959. package/dist/run/process-pool.js.map +0 -1
  960. package/dist/run/provision.d.ts.map +0 -1
  961. package/dist/run/provision.js.map +0 -1
  962. package/dist/run/realm.d.ts.map +0 -1
  963. package/dist/run/realm.js.map +0 -1
  964. package/dist/run/records.d.ts.map +0 -1
  965. package/dist/run/records.js.map +0 -1
  966. package/dist/run/retry.d.ts.map +0 -1
  967. package/dist/run/retry.js.map +0 -1
  968. package/dist/run/runner.d.ts.map +0 -1
  969. package/dist/run/runner.js.map +0 -1
  970. package/dist/run/scheduler.d.ts.map +0 -1
  971. package/dist/run/scheduler.js.map +0 -1
  972. package/dist/run/secrecy.d.ts.map +0 -1
  973. package/dist/run/secrecy.js.map +0 -1
  974. package/dist/run/serial.d.ts.map +0 -1
  975. package/dist/run/serial.js.map +0 -1
  976. package/dist/run/sessions.d.ts.map +0 -1
  977. package/dist/run/sessions.js.map +0 -1
  978. package/dist/run/standalone.d.ts.map +0 -1
  979. package/dist/run/standalone.js.map +0 -1
  980. package/dist/run/steps.d.ts.map +0 -1
  981. package/dist/run/steps.js.map +0 -1
  982. package/dist/run/trace-redaction.d.ts.map +0 -1
  983. package/dist/run/trace-redaction.js.map +0 -1
  984. package/dist/run/unit-runner.d.ts.map +0 -1
  985. package/dist/run/unit-runner.js.map +0 -1
  986. package/dist/run/units.d.ts.map +0 -1
  987. package/dist/run/units.js.map +0 -1
  988. package/dist/run/worker/entry.d.ts.map +0 -1
  989. package/dist/run/worker/entry.js.map +0 -1
  990. package/dist/run/worker/handle.d.ts.map +0 -1
  991. package/dist/run/worker/handle.js.map +0 -1
  992. package/dist/run/worker/protocol.d.ts.map +0 -1
  993. package/dist/run/worker/protocol.js.map +0 -1
  994. package/dist/run/worker/session.d.ts.map +0 -1
  995. package/dist/run/worker/session.js.map +0 -1
  996. package/dist/run/worker-models.d.ts.map +0 -1
  997. package/dist/run/worker-models.js.map +0 -1
  998. package/dist/secrets.d.ts.map +0 -1
  999. package/dist/secrets.js.map +0 -1
  1000. package/dist/telemetry/checkout.d.ts.map +0 -1
  1001. package/dist/telemetry/checkout.js.map +0 -1
  1002. package/dist/telemetry/environment.d.ts.map +0 -1
  1003. package/dist/telemetry/environment.js.map +0 -1
  1004. package/dist/telemetry/events.d.ts.map +0 -1
  1005. package/dist/telemetry/events.js.map +0 -1
  1006. package/dist/telemetry/failure-kind.d.ts.map +0 -1
  1007. package/dist/telemetry/failure-kind.js.map +0 -1
  1008. package/dist/telemetry/posthog.d.ts.map +0 -1
  1009. package/dist/telemetry/posthog.js.map +0 -1
  1010. package/dist/telemetry/project.d.ts.map +0 -1
  1011. package/dist/telemetry/project.js.map +0 -1
  1012. package/dist/telemetry/store.d.ts.map +0 -1
  1013. package/dist/telemetry/store.js.map +0 -1
  1014. package/dist/telemetry/telemetry.d.ts.map +0 -1
  1015. package/dist/telemetry/telemetry.js.map +0 -1
  1016. package/dist/telemetry/token.d.ts.map +0 -1
  1017. package/dist/telemetry/token.js.map +0 -1
  1018. package/dist/types.d.ts.map +0 -1
  1019. package/dist/types.js.map +0 -1
@@ -1,16 +1,18 @@
1
1
  /**
2
2
  * The events e2e sends, built from facts the CLI already holds. Every
3
3
  * property is a count, a duration, a version, or a short token. The builders
4
- * copy no title, file, URL, instruction, message, or stack out of the report;
5
- * the one look at a message, in `failure-kind.ts`, yields a token from a
6
- * closed list.
7
- * The names a project declares for its engines, platforms, and model pass
8
- * through when they are plain tokens, so a homegrown engine counts as itself;
9
- * a name shaped like a path, a URL, or a sentence folds to `other`, and an
10
- * error code that is not an upper-case token, the shape of every runner
11
- * code, folds to `OTHER`. The unit tests hold the payload to that promise.
4
+ * copy no title, file, URL, instruction, message, or stack out of the report,
5
+ * the config, or an MCP session; the one look at a message, in
6
+ * `failure-kind.ts`, yields a token from a closed list.
7
+ * The names a project declares for its engines, platforms, and model, and the
8
+ * name an MCP client gives itself, pass through when they are plain tokens,
9
+ * so a homegrown engine counts as itself; a name shaped like a path, a URL,
10
+ * or a sentence folds to `other`, and an error code that is not an upper-case
11
+ * token, the shape of every runner code, folds to `OTHER`. The unit tests
12
+ * hold the payload to that promise.
12
13
  */
13
- import { GRAMMAR_ACTION_NAMES, PROJECT_TOOL_EVENT_PREFIX } from '../agent/action-names.js';
14
+ import { GRAMMAR_ACTION_NAMES, GRAMMAR_TOOL_NAMES, PROJECT_TOOL_EVENT_PREFIX } from '../agent/action-names.js';
15
+ import { modelLabel } from '../config/agent.js';
14
16
  import { STEP_KINDS } from '../run/steps.js';
15
17
  import { failureKind } from './failure-kind.js';
16
18
  import { errorCodeToken, plainToken } from './token.js';
@@ -20,6 +22,8 @@ export const EVENT_CLI_SESSION = 'e2e_cli_session';
20
22
  export const EVENT_RUN_COMPLETED = 'e2e_run_completed';
21
23
  /** One per `e2e init`, however it ended: what was chosen and whether anything was written. */
22
24
  export const EVENT_INIT_COMPLETED = 'e2e_init_completed';
25
+ /** One per `open_session` an `e2e mcp` server served, sent when the session closes or its open fails. */
26
+ export const EVENT_MCP_SESSION = 'e2e_mcp_session';
23
27
  /** The session's error code for a flag or argument commander rejected; no runner code exists for it. */
24
28
  export const USAGE_ERROR_CODE = 'CLI_USAGE';
25
29
  const SEMVER = /^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/u;
@@ -80,6 +84,10 @@ function engineLabel(engine) {
80
84
  function unique(values) {
81
85
  return [...new Set(values)].toSorted();
82
86
  }
87
+ /** Counts keyed in sorted order, so equal counts serialize equally. */
88
+ function sortedCounts(counts) {
89
+ return Object.fromEntries([...counts].toSorted());
90
+ }
83
91
  /** Every scope the run recorded, across plain results and serial groups. */
84
92
  function* scopes(report) {
85
93
  for (const result of report.run.results)
@@ -117,7 +125,7 @@ function agentActions(steps) {
117
125
  counts.set(name, (counts.get(name) ?? 0) + 1);
118
126
  }
119
127
  }
120
- return Object.fromEntries([...counts].toSorted());
128
+ return sortedCounts(counts);
121
129
  }
122
130
  /** Whether anyone priced the model calls: a gateway that did, nobody, or no calls to price. */
123
131
  function costSource(usage, modelCalls) {
@@ -129,7 +137,50 @@ function durationMs(startedAt, finishedAt) {
129
137
  const duration = Date.parse(finishedAt) - Date.parse(startedAt);
130
138
  return Number.isFinite(duration) ? Math.max(0, duration) : null;
131
139
  }
132
- export function runCompletedEvent(report, flags) {
140
+ /**
141
+ * Which config features a run used: counts, booleans, and the runner's own
142
+ * option ids, never a name, a path, or a value the project wrote.
143
+ */
144
+ function configFeatures(config) {
145
+ const agents = [...config.agents.values()];
146
+ return {
147
+ config_workers: config.workers,
148
+ config_retries: config.retries,
149
+ config_agents: config.agents.size,
150
+ config_custom_executor: agents.some((agent) => agent.executor !== undefined),
151
+ config_separate_judge: agents.some((agent) => agent.judge !== undefined && (agent.model === undefined || modelLabel(agent.judge) !== modelLabel(agent.model))),
152
+ config_project_tools: new Set(agents.flatMap((agent) => Object.keys(agent.tools))).size,
153
+ config_credentials: config.credentials.size,
154
+ config_secrets: config.secrets.size,
155
+ config_cache_mode: config.cache.mode,
156
+ config_cache_store: config.cache.store === undefined ? 'file' : 'custom',
157
+ config_cache_strict: config.cache.strict !== false,
158
+ config_reporters: unique(config.reporters),
159
+ config_custom_reporters: config.customReporters.length,
160
+ config_artifact_store: config.artifactStore !== undefined,
161
+ config_trace_modes: unique(config.targets.map((target) => target.trace.mode)),
162
+ config_video_modes: unique(config.targets.map((target) => target.video.mode)),
163
+ config_app_commands: config.targets.filter((target) => target.app.command !== undefined).length,
164
+ config_environments: unique(config.targets.map((target) => target.app.environment)),
165
+ };
166
+ }
167
+ const EXPLORE_STEP_STATUSES = ['passed', 'failed', 'blocked', 'exhausted'];
168
+ const SEVERITIES = [1, 2, 3, 4, 5];
169
+ /** What `e2e explore` was given and found, by count: never the goal, a step's charter, or a finding's words. */
170
+ function exploreProperties(explore) {
171
+ return {
172
+ explore_ended: explore.ended,
173
+ explore_max_steps: explore.budgets.maxSteps,
174
+ explore_timeout_ms: explore.budgets.timeoutMs,
175
+ explore_steps: explore.steps.length,
176
+ ...Object.fromEntries(EXPLORE_STEP_STATUSES.map((status) => [`explore_steps_${status}`, explore.steps.filter((step) => step.status === status).length])),
177
+ explore_assessed: explore.summary !== undefined,
178
+ explore_issues: explore.findings.filter((finding) => finding.kind === 'issue').length,
179
+ explore_warnings: explore.findings.filter((finding) => finding.kind === 'warning').length,
180
+ explore_findings_by_severity: Object.fromEntries(SEVERITIES.map((severity) => [String(severity), explore.findings.filter((finding) => finding.severity === severity).length])),
181
+ };
182
+ }
183
+ export function runCompletedEvent(report, context) {
133
184
  const { run } = report;
134
185
  const recorded = [...scopes(report)];
135
186
  const steps = recorded.flatMap((scope) => scope.steps ?? []);
@@ -144,10 +195,11 @@ export function runCompletedEvent(report, flags) {
144
195
  name: EVENT_RUN_COMPLETED,
145
196
  at: run.finishedAt,
146
197
  properties: {
198
+ command: context.command,
147
199
  status: run.status,
148
200
  exit_code: run.exitCode,
149
201
  duration_ms: durationMs(run.startedAt, run.finishedAt),
150
- flags: [...flags],
202
+ flags: [...context.flags],
151
203
  tests_discovered: run.summary.discovered,
152
204
  tests_selected: run.summary.selected,
153
205
  tests_executed: run.summary.executed,
@@ -180,7 +232,49 @@ export function runCompletedEvent(report, flags) {
180
232
  primary_error_code: primary === undefined ? null : errorCodeToken(primary.code),
181
233
  error_codes: unique(errors.map((error) => errorCodeToken(error.code))).slice(0, MAX_ERROR_CODES),
182
234
  error_kinds: unique(errors.flatMap(failureKind)).slice(0, MAX_ERROR_CODES),
235
+ // A run whose config never loaded has no features to report.
236
+ ...(context.config === undefined ? {} : configFeatures(context.config)),
237
+ ...(run.explore === undefined ? {} : exploreProperties(run.explore)),
238
+ },
239
+ };
240
+ }
241
+ /**
242
+ * The catalog tools an MCP session serves itself, by name: the grammar and
243
+ * the session's own (`createSessionCatalog`). A project's tools arrive
244
+ * counted together; any name outside this set folds to `other`.
245
+ */
246
+ const SESSION_TOOLS = new Set([...GRAMMAR_TOOL_NAMES, 'locate', 'start_recording', 'stop_recording']);
247
+ /** One MCP session: the client, the target's platform and engine, how it ended, and its calls by the runner's tool names. */
248
+ export function mcpSessionEvent(summary, client) {
249
+ const calls = new Map();
250
+ for (const [name, count] of summary.toolCalls) {
251
+ const key = SESSION_TOOLS.has(name) ? name : 'other';
252
+ calls.set(key, (calls.get(key) ?? 0) + count);
253
+ }
254
+ if (summary.projectToolCalls > 0)
255
+ calls.set('tool', summary.projectToolCalls);
256
+ const codes = new Map();
257
+ for (const [code, count] of summary.errorCodes) {
258
+ const key = errorCodeToken(code);
259
+ codes.set(key, (codes.get(key) ?? 0) + count);
260
+ }
261
+ return {
262
+ name: EVENT_MCP_SESSION,
263
+ properties: {
264
+ client: client === undefined ? null : plainToken(client.name),
265
+ client_version: client === undefined ? null : plainToken(client.version),
266
+ outcome: summary.outcome,
267
+ ended_by: summary.endedBy ?? null,
268
+ error_code: summary.openErrorCode === undefined ? null : errorCodeToken(summary.openErrorCode),
269
+ platform: summary.platform === undefined ? null : plainToken(summary.platform),
270
+ engine: summary.engine === undefined ? null : engineLabel(summary.engine),
271
+ headed: summary.headed,
272
+ duration_ms: Math.max(0, Math.round(summary.durationMs)),
273
+ sessions_open: summary.concurrent,
274
+ calls_total: [...calls.values()].reduce((total, count) => total + count, 0),
275
+ calls_failed: summary.failedCalls,
276
+ calls: sortedCounts(calls),
277
+ error_codes: sortedCounts(new Map([...codes].toSorted().slice(0, MAX_ERROR_CODES))),
183
278
  },
184
279
  };
185
280
  }
186
- //# sourceMappingURL=events.js.map
@@ -13,4 +13,3 @@
13
13
  import type { ReportError } from '../report/build.ts';
14
14
  /** `CODE:kind` for an error whose code only says where it surfaced; nothing for every other code. */
15
15
  export declare function failureKind(error: ReportError): string[];
16
- //# sourceMappingURL=failure-kind.d.ts.map
@@ -41,4 +41,3 @@ export function failureKind(error) {
41
41
  const kind = FAILURE_KINDS.find(([, pattern]) => pattern.test(error.message))?.[0] ?? 'other';
42
42
  return [`${error.code}:${kind}`];
43
43
  }
44
- //# sourceMappingURL=failure-kind.js.map
@@ -30,4 +30,3 @@ export interface PostBatchOptions {
30
30
  }
31
31
  /** Sends the batch; resolves to whether PostHog accepted it. */
32
32
  export declare function postBatch(events: readonly PostHogEvent[], options: PostBatchOptions): Promise<boolean>;
33
- //# sourceMappingURL=posthog.d.ts.map
@@ -26,4 +26,3 @@ export async function postBatch(events, options) {
26
26
  return false;
27
27
  }
28
28
  }
29
- //# sourceMappingURL=posthog.js.map
@@ -15,4 +15,3 @@
15
15
  * working directory is not a project.
16
16
  */
17
17
  export declare function anonymousProjectId(projectRoot: string, salt: string | undefined): Promise<string | undefined>;
18
- //# sourceMappingURL=project.d.ts.map
@@ -39,4 +39,3 @@ export async function anonymousProjectId(projectRoot, salt) {
39
39
  return undefined;
40
40
  return sha256Hex(`path\n${salt}\n${projectRoot}`);
41
41
  }
42
- //# sourceMappingURL=project.js.map
@@ -55,4 +55,3 @@ export declare class TelemetryStore {
55
55
  markNotified(version: number, at: string): void;
56
56
  private write;
57
57
  }
58
- //# sourceMappingURL=store.d.ts.map
@@ -163,4 +163,3 @@ export class TelemetryStore {
163
163
  }
164
164
  }
165
165
  }
166
- //# sourceMappingURL=store.js.map
@@ -4,8 +4,10 @@
4
4
  * One instance lives for one CLI invocation. Commands hand it events; at the
5
5
  * end of the invocation `flush` sends them in a single bounded request, so a
6
6
  * command never waits on telemetry for more than the flush budget and never
7
- * fails because of it. Telemetry is a CLI concern only: the runner never
8
- * constructs this class.
7
+ * fails because of it. A long-lived command (`e2e mcp`) sends what it has
8
+ * queued as it goes with `sendQueued`, so a client that kills it loses only
9
+ * what was still in progress. Telemetry is a CLI concern only: the runner
10
+ * never constructs this class.
9
11
  *
10
12
  * Off means off at every step. `E2E_TELEMETRY_DISABLED`, `DO_NOT_TRACK`, a
11
13
  * source checkout of the repository, an `e2e telemetry disable`, or a
@@ -26,7 +28,7 @@
26
28
  import { type TelemetryEvent } from './events.ts';
27
29
  import { anonymousProjectId } from './project.ts';
28
30
  /** Bumped when what is collected changes enough that the notice must show again. */
29
- export declare const NOTICE_VERSION = 2;
31
+ export declare const NOTICE_VERSION = 3;
30
32
  export type TelemetryDisabledBy = 'E2E_TELEMETRY_DISABLED' | 'DO_NOT_TRACK' | 'checkout' | 'preference' | 'store';
31
33
  export interface TelemetryOptions {
32
34
  /** The e2e version, sent with every event. */
@@ -66,6 +68,8 @@ export declare class Telemetry {
66
68
  private command;
67
69
  private failure;
68
70
  private exitCode;
71
+ /** Sends `sendQueued` started that have not settled; the flush waits for them. */
72
+ private readonly sending;
69
73
  constructor(options: TelemetryOptions);
70
74
  /** Opened on first use, so `--version` and `--help` never touch the disk; undefined when the file cannot exist. */
71
75
  private store;
@@ -117,11 +121,18 @@ export declare class Telemetry {
117
121
  /** The session event, first in the batch; absent for an invocation that never reached a command. */
118
122
  private sessionEvent;
119
123
  /**
120
- * Sends everything queued in one request, or prints it under debug. One
121
- * deadline covers the project lookup still running and the request; a
122
- * lost batch is the accepted cost of a command that never waits on
123
- * telemetry.
124
+ * Sends everything queued in one request, or prints it under debug, and
125
+ * waits for the sends `sendQueued` started. One deadline covers the
126
+ * project lookup still running and the request; a lost batch is the
127
+ * accepted cost of a command that never waits on telemetry.
124
128
  */
125
129
  flush(maxWaitMs?: number): Promise<void>;
130
+ /**
131
+ * Sends what is queued now, without the session event, which only the
132
+ * flush at the end can complete. For a command that runs until its client
133
+ * goes away; the caller need not wait, the flush does.
134
+ */
135
+ sendQueued(maxWaitMs?: number): Promise<void>;
136
+ /** Sends `events` in one bounded request, or prints them under debug; nothing when off. */
137
+ private send;
126
138
  }
127
- //# sourceMappingURL=telemetry.d.ts.map
@@ -4,8 +4,10 @@
4
4
  * One instance lives for one CLI invocation. Commands hand it events; at the
5
5
  * end of the invocation `flush` sends them in a single bounded request, so a
6
6
  * command never waits on telemetry for more than the flush budget and never
7
- * fails because of it. Telemetry is a CLI concern only: the runner never
8
- * constructs this class.
7
+ * fails because of it. A long-lived command (`e2e mcp`) sends what it has
8
+ * queued as it goes with `sendQueued`, so a client that kills it loses only
9
+ * what was still in progress. Telemetry is a CLI concern only: the runner
10
+ * never constructs this class.
9
11
  *
10
12
  * Off means off at every step. `E2E_TELEMETRY_DISABLED`, `DO_NOT_TRACK`, a
11
13
  * source checkout of the repository, an `e2e telemetry disable`, or a
@@ -34,13 +36,13 @@ import { postBatch } from './posthog.js';
34
36
  import { anonymousProjectId } from './project.js';
35
37
  import { preferencesPath, TelemetryStore, telemetryConfigDir } from './store.js';
36
38
  /** Bumped when what is collected changes enough that the notice must show again. */
37
- export const NOTICE_VERSION = 2;
39
+ export const NOTICE_VERSION = 3;
38
40
  /** The longest a flush may hold the process; the project lookup and the request share it. */
39
41
  const DEFAULT_FLUSH_MS = 2_000;
40
42
  /** The one-time notice: what is collected, and the two ways out. */
41
43
  function noticeText() {
42
44
  return [
43
- `${picocolors.bold('e2e collects anonymous usage telemetry')} to improve the framework: the command, the versions, the OS, and run counts. Never test names, app data, or credentials.`,
45
+ `${picocolors.bold('e2e collects anonymous usage telemetry')} to improve the framework: the command, the versions, the OS, and summaries of runs and MCP sessions. Never test names, app data, or credentials.`,
44
46
  `Opt out with ${picocolors.cyan('e2e telemetry disable')} or ${picocolors.cyan('E2E_TELEMETRY_DISABLED=1')}. What is sent: ${picocolors.underline(`${DOCS_URL}/telemetry`)}`,
45
47
  '',
46
48
  '',
@@ -74,6 +76,8 @@ export class Telemetry {
74
76
  command;
75
77
  failure;
76
78
  exitCode;
79
+ /** Sends `sendQueued` started that have not settled; the flush waits for them. */
80
+ sending = new Set();
77
81
  constructor(options) {
78
82
  this.version = options.version;
79
83
  this.env = options.env ?? process.env;
@@ -200,14 +204,28 @@ export class Telemetry {
200
204
  return [cliSessionEvent(this.command.name, this.command.flags, ended)];
201
205
  }
202
206
  /**
203
- * Sends everything queued in one request, or prints it under debug. One
204
- * deadline covers the project lookup still running and the request; a
205
- * lost batch is the accepted cost of a command that never waits on
206
- * telemetry.
207
+ * Sends everything queued in one request, or prints it under debug, and
208
+ * waits for the sends `sendQueued` started. One deadline covers the
209
+ * project lookup still running and the request; a lost batch is the
210
+ * accepted cost of a command that never waits on telemetry.
207
211
  */
208
212
  async flush(maxWaitMs = DEFAULT_FLUSH_MS) {
209
213
  const events = [...this.sessionEvent(), ...this.queue.splice(0)];
210
214
  this.command = undefined;
215
+ await Promise.all([this.send(events, maxWaitMs), ...this.sending]);
216
+ }
217
+ /**
218
+ * Sends what is queued now, without the session event, which only the
219
+ * flush at the end can complete. For a command that runs until its client
220
+ * goes away; the caller need not wait, the flush does.
221
+ */
222
+ sendQueued(maxWaitMs = DEFAULT_FLUSH_MS) {
223
+ const sending = this.send(this.queue.splice(0), maxWaitMs).finally(() => this.sending.delete(sending));
224
+ this.sending.add(sending);
225
+ return sending;
226
+ }
227
+ /** Sends `events` in one bounded request, or prints them under debug; nothing when off. */
228
+ async send(events, maxWaitMs) {
211
229
  if (events.length === 0)
212
230
  return;
213
231
  // A choice saved from another process while this command ran wins over the snapshot taken at its start.
@@ -250,4 +268,3 @@ export class Telemetry {
250
268
  await postBatch(items, { signal: deadline, fetch: this.fetchImpl });
251
269
  }
252
270
  }
253
- //# sourceMappingURL=telemetry.js.map
@@ -9,4 +9,3 @@
9
9
  export declare function plainToken(value: string): string;
10
10
  /** A runner error code as it is, `OTHER` for a code shaped like a project's own. */
11
11
  export declare function errorCodeToken(code: string): string;
12
- //# sourceMappingURL=token.d.ts.map
@@ -15,4 +15,3 @@ export function plainToken(value) {
15
15
  export function errorCodeToken(code) {
16
16
  return ERROR_CODE.test(code) ? code : 'OTHER';
17
17
  }
18
- //# sourceMappingURL=token.js.map
package/dist/types.d.ts CHANGED
@@ -585,31 +585,39 @@ export interface TestAPI<Fixtures = TestFixtures> {
585
585
  /** Registers a suite-instance teardown hook. */
586
586
  afterAll(fn: SuiteHookFn): void;
587
587
  }
588
+ /**
589
+ * The locator matchers. An option a matcher does not take, or a flag that is
590
+ * not a boolean, is `INVALID_ARGUMENT` before the first read.
591
+ */
588
592
  export interface AsyncExpectation {
589
593
  /** Inverts the matcher. A negated matcher passes after 1000 ms of continuous truth. */
590
594
  readonly not: AsyncExpectation;
591
- /** Waits for visibility. */
595
+ /** Waits for visibility; `visible: false` waits for hidden or absent state, as `toBeHidden`. */
592
596
  toBeVisible(options?: {
597
+ visible?: boolean;
593
598
  timeout?: number;
594
599
  }): Promise<void>;
595
600
  /** Waits for hidden or absent state. */
596
601
  toBeHidden(options?: {
597
602
  timeout?: number;
598
603
  }): Promise<void>;
599
- /** Waits for one match to exist, visible or not. */
604
+ /** Waits for one match to exist, visible or not; `attached: false` waits for none. */
600
605
  toBeAttached(options?: {
606
+ attached?: boolean;
601
607
  timeout?: number;
602
608
  }): Promise<void>;
603
- /** Waits for enabled state. */
609
+ /** Waits for enabled state; `enabled: false` waits for disabled state. */
604
610
  toBeEnabled(options?: {
611
+ enabled?: boolean;
605
612
  timeout?: number;
606
613
  }): Promise<void>;
607
614
  /** Waits for disabled state. */
608
615
  toBeDisabled(options?: {
609
616
  timeout?: number;
610
617
  }): Promise<void>;
611
- /** Waits for checked state. */
618
+ /** Waits for checked state; `checked: false` waits for unchecked state. */
612
619
  toBeChecked(options?: {
620
+ checked?: boolean;
613
621
  timeout?: number;
614
622
  }): Promise<void>;
615
623
  /** Waits for selected state. */
@@ -625,19 +633,11 @@ export interface AsyncExpectation {
625
633
  timeout?: number;
626
634
  }): Promise<void>;
627
635
  /** Waits for exact normalized text; a list waits for exactly that many matches, each with its entry's text, in order. */
628
- toHaveText(expected: TextMatch, options?: {
629
- timeout?: number;
630
- }): Promise<void>;
631
- toHaveText(expected: readonly TextMatch[], options?: {
632
- timeout?: number;
633
- }): Promise<void>;
636
+ toHaveText(expected: TextMatch, options?: TextMatcherOptions): Promise<void>;
637
+ toHaveText(expected: readonly TextMatch[], options?: TextMatcherOptions): Promise<void>;
634
638
  /** Waits for contained normalized text; a list waits for each entry to be contained by a distinct match, in order, extra matches allowed. */
635
- toContainText(expected: TextMatch, options?: {
636
- timeout?: number;
637
- }): Promise<void>;
638
- toContainText(expected: readonly TextMatch[], options?: {
639
- timeout?: number;
640
- }): Promise<void>;
639
+ toContainText(expected: TextMatch, options?: TextMatcherOptions): Promise<void>;
640
+ toContainText(expected: readonly TextMatch[], options?: TextMatcherOptions): Promise<void>;
641
641
  /** Waits for a form control's value, compared as it is. */
642
642
  toHaveValue(expected: TextMatch, options?: {
643
643
  timeout?: number;
@@ -646,17 +646,20 @@ export interface AsyncExpectation {
646
646
  toHaveAttribute(name: string, options?: {
647
647
  timeout?: number;
648
648
  }): Promise<void>;
649
- toHaveAttribute(name: string, value: TextMatch, options?: {
650
- timeout?: number;
651
- }): Promise<void>;
649
+ toHaveAttribute(name: string, value: TextMatch, options?: TextMatcherOptions): Promise<void>;
652
650
  /** Waits for an exact match count. */
653
651
  toHaveCount(expected: number, options?: {
654
652
  timeout?: number;
655
653
  }): Promise<void>;
656
654
  /** Waits for an accessible name. */
657
- toHaveAccessibleName(expected: TextMatch, options?: {
658
- timeout?: number;
659
- }): Promise<void>;
655
+ toHaveAccessibleName(expected: TextMatch, options?: TextMatcherOptions): Promise<void>;
656
+ }
657
+ /** Options of a locator matcher that compares text. */
658
+ export interface TextMatcherOptions {
659
+ /** Compares a string case-insensitively; on a RegExp, `true` adds the `i` flag and `false` removes it. */
660
+ ignoreCase?: boolean;
661
+ /** Assertion budget in milliseconds. */
662
+ timeout?: number;
660
663
  }
661
664
  /**
662
665
  * An object that carries its own expectation surface, so `expect(object)`
@@ -700,7 +703,7 @@ export interface ValueExpectation<T> {
700
703
  toBeNull(): void;
701
704
  /** Requires undefined. */
702
705
  toBeUndefined(): void;
703
- /** Requires a non-nullish value. */
706
+ /** Requires any value but undefined; null passes. */
704
707
  toBeDefined(): void;
705
708
  /** Requires a `length` property equal to `expected`: a string, an array, or anything array-like. */
706
709
  toHaveLength(expected: number): void;
@@ -1313,4 +1316,3 @@ export interface E2EConfig {
1313
1316
  */
1314
1317
  secrets?: Readonly<Record<string, SecretConfig>>;
1315
1318
  }
1316
- //# sourceMappingURL=types.d.ts.map
package/dist/types.js CHANGED
@@ -3,4 +3,3 @@
3
3
  * `tests/types/sdk-types.ts` pins the parts that are easy to loosen by accident.
4
4
  */
5
5
  export {};
6
- //# sourceMappingURL=types.js.map
@@ -0,0 +1,126 @@
1
+ ---
2
+ title: How agent steps work
3
+ description: What the model sees, what it may do, how a step ends, and what it costs.
4
+ ---
5
+
6
+ An agent step is one `agent.act`, `agent.assert`, `agent.waitFor`, or
7
+ `agent.extract` call. The model reads the screen, asks for actions, and ends
8
+ the step with a verdict. The runner performs each action it allows and
9
+ records the result. Every step has a deadline and a model-call budget.
10
+
11
+ ## Two sides of the contract
12
+
13
+ The runner handles redaction, action authorization, budgets, secrets, and
14
+ reporting. The executor decides which actions to request and returns a
15
+ verdict. The built-in agent is the executor unless an agents entry sets
16
+ `executor`. [Custom executors](/executors) get the same redacted observations
17
+ and checked action methods.
18
+
19
+ ## What the model sees
20
+
21
+ For `act`, the opening prompt includes the instruction, params, completed
22
+ steps, and a redacted text snapshot of the screen's roles, names, text, and
23
+ states. It excludes raw HTML, cookies, headers, and environment values.
24
+ Password fields are masked. Configured secret values found on screen are
25
+ replaced with `<secret:name>`.
26
+
27
+ After an action, the model receives the changes to the screen. If most of
28
+ the screen changed, it receives a new full snapshot. Node ids remain stable
29
+ while their elements exist. A failed action also returns the current screen
30
+ so the model can choose what to do next.
31
+
32
+ Judgments from `assert`, `waitFor`, and `extract` see the instruction and
33
+ current screen. They do not see completed steps or the acting agent's
34
+ summaries. You can configure a separate [judge model](/models#a-judge-of-its-own).
35
+
36
+ Use `vision: true` to include a masked screenshot or `vision: 'only'` to
37
+ judge the screenshot alone; the [agent reference](/reference/agent#vision)
38
+ lists the modes. No screenshot reaches the model
39
+ [after a secret fill](/security#screenshots-after-a-secret-fill).
40
+
41
+ ## What the model may do
42
+
43
+ The agent receives tools supported by the target's engine, such as `tap`,
44
+ `type`, `press`, `select`, `scroll`, and `navigate`. A step with declared
45
+ credentials can also receive `type_secret`.
46
+
47
+ Keyboard-capable engines support typing and key presses into the focused
48
+ control. Pixel tools let the agent request a screenshot and act at a point
49
+ when the text snapshot cannot describe a control. See the
50
+ [tool reference](/reference/agent#pixel-tools-screenshot-and-the-point-verbs).
51
+
52
+ The runner checks each built-in action and counts it against the budget.
53
+ A targeted action has a maximum timeout of 15 seconds. Secret fills also
54
+ require a declared secret and a compatible field.
55
+ [Project tools](/tools) add your own operations with declared budgets and
56
+ platform support.
57
+
58
+ The loop detects repeated calls and cycles. After three consecutive failed
59
+ actions, it asks the model to change approach; after five, it asks for a
60
+ verdict. It also requests a verdict as the budget or deadline approaches.
61
+
62
+ ## How a step ends
63
+
64
+ An agent step returns one of three verdicts:
65
+
66
+ - `passed`: the screen provides evidence that the step succeeded.
67
+ - `failed`: the required condition is false or cannot be established.
68
+ Insufficient evidence produces `ASSERTION_INCONCLUSIVE`.
69
+ - `blocked`: a prerequisite, environment problem, or execution limit
70
+ prevented a product verdict. The error code determines the exit code.
71
+
72
+ An error code belongs to `failed` or `blocked` only. When the built-in
73
+ agent's model concludes `passed` with one, the code is dropped, the step
74
+ passes, and the turn's outcome notes the dropped code. A
75
+ [custom executor](/executors) that returns one is refused with
76
+ `MODEL_OUTPUT_INVALID`.
77
+
78
+ | Blocked by | Codes | Exit |
79
+ | --- | --- | ---: |
80
+ | A credential the app rejected, or one that is not configured | `AUTH_CREDENTIAL_INVALID`, `AUTH_CREDENTIAL_UNAVAILABLE` | 2 |
81
+ | An environment that is down | `ENVIRONMENT_UNAVAILABLE` | 3 |
82
+ | Seed data or a prerequisite outside the product that is not there | `SEED_DATA_MISSING`, `TEST_SETUP_FAILED` | 2 |
83
+ | A budget or the clock | `STEP_BUDGET_EXHAUSTED`, `STEP_TIMEOUT` | 1 |
84
+ | An interaction the toolset cannot perform | `AUTOMATION_UNSUPPORTED` | 1 |
85
+
86
+ The [errors reference](/reference/errors#agenterror) lists every code a
87
+ verdict can carry.
88
+
89
+ ## Cost
90
+
91
+ Every call has a model-call budget and a default timeout, listed under
92
+ [budgets](/reference/agent#budgets). Exceeding a budget raises
93
+ `STEP_BUDGET_EXHAUSTED`; reaching the deadline raises `STEP_TIMEOUT`. What
94
+ drives the cost:
95
+
96
+ - `assert` and `extract` make one judgment, plus one repair call if the
97
+ model's answer is malformed. An `extract` whose data is not on screen
98
+ fails with `ASSERTION_INCONCLUSIVE` rather than returning a placeholder.
99
+ - `waitFor` skips model calls while the screen is unchanged.
100
+ - Screenshots add input tokens on every call that carries them. `act` asks
101
+ for one only when the text snapshot is not enough.
102
+ - The [replay cache](/cache) reruns passing `act` steps without model calls.
103
+
104
+ Use `expect` for exact checks and keep each `act` focused on one goal. When
105
+ the provider supports prompt caching, `--debug` shows the cached share of
106
+ input tokens per step. Under a
107
+ [custom executor](/executors#what-the-executor-handles), `assert` runs with
108
+ the `act` budgets.
109
+
110
+ ## Where secrets go
111
+
112
+ For a `Secret` param, the model receives only its name and purpose. The
113
+ runner checks the field the model picked, then fills the value itself.
114
+ The value never enters prompts, transcripts, reports, or AI traces. See the
115
+ [security model](/security#secrets) for what else changes after a fill.
116
+
117
+ ## Next
118
+
119
+ <CardGroup cols={2}>
120
+ <Card title="Project tools" icon="wrench" href="/tools">
121
+ Extend the vocabulary with your own tools.
122
+ </Card>
123
+ <Card title="Custom executors" icon="gears" href="/executors">
124
+ Keep the loop with your prompt, or replace it entirely.
125
+ </Card>
126
+ </CardGroup>