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
package/dist/run/steps.js CHANGED
@@ -1,6 +1,7 @@
1
1
  /** Attempt-scoped step timeline. */
2
2
  import { AsyncLocalStorage } from 'node:async_hooks';
3
3
  import { isAgentError } from '../agent/error.js';
4
+ import { markAbandonedRejection, relocateStack } from '../internal/abandoned.js';
4
5
  import { withAiTraceStep } from '../internal/ai-trace.js';
5
6
  import { classifyError, serializeError, TestError, withHint } from '../internal/errors.js';
6
7
  import { timestamp } from '../internal/ids.js';
@@ -9,16 +10,6 @@ import { sourceLocation } from '../internal/source.js';
9
10
  export const STEP_KINDS = ['agent', 'locator', 'assertion', 'screen', 'app', 'session', 'resource'];
10
11
  /** Frames kept when a step captures where it was called from; the user's line is a few frames up. */
11
12
  const STEP_STACK_FRAMES = 20;
12
- /** What abandoned steps rejected with. The promise the test holds rejects with the same value, and nobody awaits it. */
13
- const ABANDONED_REJECTIONS = new WeakSet();
14
- /**
15
- * Whether an unhandled rejection is an abandoned step's: already recorded as
16
- * `STEP_NOT_AWAITED`, reaching the process only because the promise the
17
- * test did not await rejected with it. Such a rejection is not a fault.
18
- */
19
- export function isAbandonedStepRejection(cause) {
20
- return typeof cause === 'object' && cause !== null && ABANDONED_REJECTIONS.has(cause);
21
- }
22
13
  /**
23
14
  * The stack at a step's start, or nothing without a project root to read it
24
15
  * against. Every step pays the capture, since the failing one is not known
@@ -38,13 +29,6 @@ function stepStack(projectRoot) {
38
29
  Error.stackTraceLimit = limit;
39
30
  }
40
31
  }
41
- /** Points `error` at the frames of `stack`, keeping its own name and message as the first line. */
42
- function relocate(error, stack) {
43
- if (stack === undefined)
44
- return;
45
- const frames = stack.split('\n').slice(1).join('\n');
46
- error.stack = `${error.name}: ${error.message}\n${frames}`;
47
- }
48
32
  /** Characters of a step label an error message quotes before clipping it. */
49
33
  const MAX_QUOTED_LABEL_CHARS = 80;
50
34
  function quoted(label) {
@@ -92,7 +76,10 @@ export class StepRecorder {
92
76
  return this.lastVerified;
93
77
  }
94
78
  /** Runs one public API call as a recorded top-level step. */
95
- run(kind, api, label, body, options = {}) {
79
+ run(kind, api, rawLabel, body, options = {}) {
80
+ // The label is published, reported, and traced as is: a secret the test
81
+ // spelled into an instruction or a locator stops here, once.
82
+ const label = this.redact?.(rawLabel) ?? rawLabel;
96
83
  const index = this.steps.length;
97
84
  const startedAt = timestamp();
98
85
  const stack = stepStack(this.projectRoot);
@@ -134,8 +121,7 @@ export class StepRecorder {
134
121
  }
135
122
  catch (cause) {
136
123
  if (this.abandoned.has(record.id)) {
137
- if (typeof cause === 'object' && cause !== null)
138
- ABANDONED_REJECTIONS.add(cause);
124
+ markAbandonedRejection(cause);
139
125
  throw cause;
140
126
  }
141
127
  record.durationMs = Date.now() - startedMs;
@@ -174,7 +160,7 @@ export class StepRecorder {
174
160
  for (const step of running) {
175
161
  const more = first === undefined && running.length > 1 ? ` and ${running.length - 1} more` : '';
176
162
  const error = new TestError('STEP_NOT_AWAITED', withHint(`the test body returned before ${step.api} ${quoted(step.label)}${more} finished`, 'put `await` in front of every step call'));
177
- relocate(error, this.stacks.get(step.id));
163
+ relocateStack(error, this.stacks.get(step.id));
178
164
  first ??= error;
179
165
  this.abandoned.add(step.id);
180
166
  step.status = 'failed';
@@ -309,4 +295,3 @@ export class StepRecorder {
309
295
  });
310
296
  }
311
297
  }
312
- //# sourceMappingURL=steps.js.map
@@ -22,4 +22,3 @@ import type { SecretLedger } from '../internal/redact.ts';
22
22
  export declare function redactTraceArchives(dir: string, paths: readonly string[], ledger: SecretLedger, options?: {
23
23
  readonly keepFrames?: boolean;
24
24
  }): Promise<void>;
25
- //# sourceMappingURL=trace-redaction.d.ts.map
@@ -194,4 +194,3 @@ function decodeText(bytes) {
194
194
  return undefined;
195
195
  }
196
196
  }
197
- //# sourceMappingURL=trace-redaction.js.map
@@ -33,4 +33,3 @@ export interface UnitRunner {
33
33
  * device.
34
34
  */
35
35
  export type SpawnUnitRunner = (targetName: string, workerSlot: number, events: UnitRunnerEvents) => UnitRunner;
36
- //# sourceMappingURL=unit-runner.d.ts.map
@@ -8,4 +8,3 @@
8
8
  * Keeping this interface narrow is what lets one scheduler own all execution.
9
9
  */
10
10
  export {};
11
- //# sourceMappingURL=unit-runner.js.map
@@ -74,4 +74,3 @@ export declare function nonRunResult(pair: TestTargetPair): ResultRecord;
74
74
  export declare function unstartedResult(pair: TestTargetPair, skip: SkipInfo): ResultRecord;
75
75
  /** Result for a test that vanished between planning and execution. */
76
76
  export declare function disappearedResult(pair: WirePair, target: ResolvedTarget): ResultRecord;
77
- //# sourceMappingURL=units.d.ts.map
package/dist/run/units.js CHANGED
@@ -142,4 +142,3 @@ export function unstartedResult(pair, skip) {
142
142
  export function disappearedResult(pair, target) {
143
143
  return { test: pair.test, target, agent: pair.agent, repeat: pair.repeat, status: 'failed', selected: true, attempts: [] };
144
144
  }
145
- //# sourceMappingURL=units.js.map
@@ -5,4 +5,3 @@
5
5
  * actual execution to `TargetWorker`.
6
6
  */
7
7
  export {};
8
- //# sourceMappingURL=entry.d.ts.map
@@ -14,10 +14,10 @@ import { AiTraceRecorder, registerAiTraceRecorder } from '../../internal/ai-trac
14
14
  import { DebugTrace } from '../../internal/debug.js';
15
15
  import { classifyError, ConfigurationError, serializeError } from '../../internal/errors.js';
16
16
  import { StreamRedactor } from '../../internal/redact.js';
17
- import { processSecrets, registerStaticSecrets } from '../secrecy.js';
17
+ import { processSecrets, registerStaticSecrets, staticSecretLedger } from '../secrecy.js';
18
18
  import { SessionStore } from '../sessions.js';
19
19
  import { TargetWorker } from './session.js';
20
- import { isAbandonedStepRejection } from '../steps.js';
20
+ import { isAbandonedRejection } from '../../internal/abandoned.js';
21
21
  /**
22
22
  * Outbound messages in flight. `process.send` is asynchronous and a
23
23
  * `process.exit` right behind it can drop the message, so exiting waits for
@@ -131,7 +131,7 @@ async function bootstrap(message, debug, aiTrace) {
131
131
  let collectCounter = 0;
132
132
  const resolvePairs = async (unit) => {
133
133
  collectCounter += 1;
134
- const registration = await collectModule(() => importModule(unit.absolutePath, `worker-collect-${collectCounter}`), unit.absolutePath);
134
+ const registration = await collectModule(() => importModule(unit.absolutePath, `worker-collect-${collectCounter}`), unit.absolutePath, staticSecretLedger(config.allSecrets).redact);
135
135
  const collected = collectFromRegistration(config.projectRoot, unit.absolutePath, registration);
136
136
  const byId = new Map(collected.tests.map((test) => [test.id, test]));
137
137
  const pairs = [];
@@ -152,6 +152,7 @@ async function bootstrap(message, debug, aiTrace) {
152
152
  sessionStore: SessionStore.forWorker(message.runId, message.sessionsRoot, Buffer.from(message.sessionKeyBase64, 'base64')),
153
153
  runId: message.runId,
154
154
  artifactsRoot: message.artifactsRoot,
155
+ rerunDir: message.rerunDir,
155
156
  headed: message.headed,
156
157
  workerSlot: message.workerSlot,
157
158
  env: process.env,
@@ -169,13 +170,13 @@ function main() {
169
170
  process.on('SIGINT', () => undefined);
170
171
  process.on('SIGTERM', () => undefined);
171
172
  process.on('uncaughtException', (cause) => fatal(cause));
172
- // A step the body did not await rejects on a promise nobody holds once it
173
- // is cancelled; the attempt has already recorded it as STEP_NOT_AWAITED.
173
+ // A step or poll the test did not await rejects on a promise nobody holds
174
+ // once it is cancelled; the attempt has already recorded it as STEP_NOT_AWAITED.
174
175
  // Any other rejection nobody caught is charged to the attempt in flight,
175
176
  // or recorded against the last test that finished; only before any test
176
177
  // has finished is it the worker's.
177
178
  process.on('unhandledRejection', (cause) => {
178
- if (isAbandonedStepRejection(cause))
179
+ if (isAbandonedRejection(cause))
179
180
  return;
180
181
  if (worker?.strayRejection(cause) !== true)
181
182
  fatal(cause);
@@ -229,4 +230,3 @@ function main() {
229
230
  });
230
231
  }
231
232
  main();
232
- //# sourceMappingURL=entry.js.map
@@ -8,4 +8,3 @@ export type ChildProcessSpawnOptions = Omit<WorkerBootstrap, 'targetName' | 'wor
8
8
  };
9
9
  /** Creates the spawn factory the scheduler uses for child-process execution. */
10
10
  export declare function childProcessSpawner(options: ChildProcessSpawnOptions): SpawnUnitRunner;
11
- //# sourceMappingURL=handle.d.ts.map
@@ -73,4 +73,3 @@ class ChildProcessRunner {
73
73
  this.child.kill('SIGKILL');
74
74
  }
75
75
  }
76
- //# sourceMappingURL=handle.js.map
@@ -56,6 +56,8 @@ export interface WorkerBootstrap {
56
56
  readonly workerSlot: number;
57
57
  readonly runId: string;
58
58
  readonly artifactsRoot: string;
59
+ /** See `TargetExecutorOptions.rerunDir`. */
60
+ readonly rerunDir: string | undefined;
59
61
  readonly headed: boolean;
60
62
  readonly sessionsRoot: string;
61
63
  /** Per-run AES key; transferred only over this channel, never disk or env. */
@@ -209,4 +211,3 @@ export interface RunAbortMessage {
209
211
  export type WorkerToMain = ReadyMessage | PairStartMessage | ProgressMessage | OutputMessage | NoticeMessage | ResultMessage | SerialGroupMessage | UnitDoneMessage | ShutdownDoneMessage | FatalMessage | RunAbortMessage;
210
212
  /** Reattaches the scheduler's resolved target to a wire result. */
211
213
  export declare function decodeResult(wire: WireResultRecord, target: ResolvedTarget): ResultRecord;
212
- //# sourceMappingURL=protocol.d.ts.map
@@ -10,4 +10,3 @@
10
10
  export function decodeResult(wire, target) {
11
11
  return { ...wire, target };
12
12
  }
13
- //# sourceMappingURL=protocol.js.map
@@ -35,6 +35,8 @@ export interface TargetWorkerDeps {
35
35
  readonly sessionStore: SessionStore;
36
36
  readonly runId: string;
37
37
  readonly artifactsRoot: string;
38
+ /** See `TargetExecutorOptions.rerunDir`. */
39
+ readonly rerunDir: string | undefined;
38
40
  readonly headed: boolean;
39
41
  /** See `TargetExecutorOptions.workerSlot`. */
40
42
  readonly workerSlot: number;
@@ -114,4 +116,3 @@ export declare class TargetWorker {
114
116
  private shutdown;
115
117
  private disposeAndFinish;
116
118
  }
117
- //# sourceMappingURL=session.d.ts.map
@@ -46,6 +46,7 @@ export class TargetWorker {
46
46
  target: deps.target,
47
47
  runId: deps.runId,
48
48
  artifactsRoot: deps.artifactsRoot,
49
+ rerunDir: deps.rerunDir,
49
50
  sessionStore: deps.sessionStore,
50
51
  headed: deps.headed,
51
52
  workerSlot: deps.workerSlot,
@@ -206,4 +207,3 @@ export class TargetWorker {
206
207
  this.host.finished();
207
208
  }
208
209
  }
209
- //# sourceMappingURL=session.js.map
@@ -25,4 +25,3 @@ export declare class WorkerModels {
25
25
  /** Adapter for one resolved model; each distinct model is built once per worker. A missing one names the agent `name`. */
26
26
  readonly build: (model: ResolvedModel | undefined, name: string) => ModelAdapter;
27
27
  }
28
- //# sourceMappingURL=worker-models.d.ts.map
@@ -57,4 +57,3 @@ export class WorkerModels {
57
57
  function modelKey(model) {
58
58
  return model.model;
59
59
  }
60
- //# sourceMappingURL=worker-models.js.map
package/dist/secrets.d.ts CHANGED
@@ -43,4 +43,3 @@ export declare function isSecret(value: unknown): value is Secret;
43
43
  export declare const credentials: Credentials;
44
44
  export declare const secrets: Secrets;
45
45
  export {};
46
- //# sourceMappingURL=secrets.d.ts.map
package/dist/secrets.js CHANGED
@@ -121,4 +121,3 @@ export const secrets = {
121
121
  return secretHandle(resolved);
122
122
  },
123
123
  };
124
- //# sourceMappingURL=secrets.js.map
@@ -10,4 +10,3 @@
10
10
  * so the marker is positive. A URL that is not a file counts as installed.
11
11
  */
12
12
  export declare function runsFromCheckout(moduleUrl: string): boolean;
13
- //# sourceMappingURL=checkout.d.ts.map
@@ -19,4 +19,3 @@ export function runsFromCheckout(moduleUrl) {
19
19
  return false;
20
20
  }
21
21
  }
22
- //# sourceMappingURL=checkout.js.map
@@ -55,4 +55,3 @@ export declare function collectEnvironment(options: {
55
55
  readonly versions: NodeJS.ProcessVersions;
56
56
  };
57
57
  }): TelemetryEnvironment;
58
- //# sourceMappingURL=environment.d.ts.map
@@ -140,4 +140,3 @@ export function collectEnvironment(options) {
140
140
  e2e_version: options.version,
141
141
  };
142
142
  }
143
- //# sourceMappingURL=environment.js.map
@@ -1,15 +1,19 @@
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
  */
14
+ import type { ResolvedConfig } from '../config/resolve.ts';
15
+ import type { McpClient } from '../mcp/server.ts';
16
+ import type { McpSessionSummary } from '../mcp/usage.ts';
13
17
  import type { Report1Document } from '../report/build.ts';
14
18
  import type { JsonValue } from '../types.ts';
15
19
  export interface TelemetryEvent {
@@ -24,6 +28,8 @@ export declare const EVENT_CLI_SESSION = "e2e_cli_session";
24
28
  export declare const EVENT_RUN_COMPLETED = "e2e_run_completed";
25
29
  /** One per `e2e init`, however it ended: what was chosen and whether anything was written. */
26
30
  export declare const EVENT_INIT_COMPLETED = "e2e_init_completed";
31
+ /** One per `open_session` an `e2e mcp` server served, sent when the session closes or its open fails. */
32
+ export declare const EVENT_MCP_SESSION = "e2e_mcp_session";
27
33
  /** The session's error code for a flag or argument commander rejected; no runner code exists for it. */
28
34
  export declare const USAGE_ERROR_CODE = "CLI_USAGE";
29
35
  /** How the invocation ended, known only once the command has returned or thrown. */
@@ -58,5 +64,15 @@ export interface InitOutcome {
58
64
  export declare function cliSessionEvent(command: string, flags: readonly string[], ended?: SessionEnd): TelemetryEvent;
59
65
  /** The init event: each choice as its option id. */
60
66
  export declare function initCompletedEvent(outcome: InitOutcome): TelemetryEvent;
61
- export declare function runCompletedEvent(report: Report1Document, flags: readonly string[]): TelemetryEvent;
62
- //# sourceMappingURL=events.d.ts.map
67
+ /** What the CLI knows of a run beyond its report. */
68
+ export interface RunContext {
69
+ /** `run` or `explore`. */
70
+ readonly command: string;
71
+ /** The flag names given, never their values. */
72
+ readonly flags: readonly string[];
73
+ /** The config the run resolved; undefined when it failed to load. */
74
+ readonly config: ResolvedConfig | undefined;
75
+ }
76
+ export declare function runCompletedEvent(report: Report1Document, context: RunContext): TelemetryEvent;
77
+ /** One MCP session: the client, the target's platform and engine, how it ended, and its calls by the runner's tool names. */
78
+ export declare function mcpSessionEvent(summary: McpSessionSummary, client: McpClient | undefined): TelemetryEvent;
@@ -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,15 +195,17 @@ 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,
154
206
  tests_passed: run.summary.passed,
155
207
  tests_failed: run.summary.failed,
208
+ tests_interrupted: run.summary.interrupted,
156
209
  tests_flaky: run.summary.flaky,
157
210
  tests_skipped: run.summary.skipped,
158
211
  attempts_total: attempts.reduce((total, count) => total + count, 0),
@@ -180,7 +233,49 @@ export function runCompletedEvent(report, flags) {
180
233
  primary_error_code: primary === undefined ? null : errorCodeToken(primary.code),
181
234
  error_codes: unique(errors.map((error) => errorCodeToken(error.code))).slice(0, MAX_ERROR_CODES),
182
235
  error_kinds: unique(errors.flatMap(failureKind)).slice(0, MAX_ERROR_CODES),
236
+ // A run whose config never loaded has no features to report.
237
+ ...(context.config === undefined ? {} : configFeatures(context.config)),
238
+ ...(run.explore === undefined ? {} : exploreProperties(run.explore)),
239
+ },
240
+ };
241
+ }
242
+ /**
243
+ * The catalog tools an MCP session serves itself, by name: the grammar and
244
+ * the session's own (`createSessionCatalog`). A project's tools arrive
245
+ * counted together; any name outside this set folds to `other`.
246
+ */
247
+ const SESSION_TOOLS = new Set([...GRAMMAR_TOOL_NAMES, 'locate', 'start_recording', 'stop_recording']);
248
+ /** One MCP session: the client, the target's platform and engine, how it ended, and its calls by the runner's tool names. */
249
+ export function mcpSessionEvent(summary, client) {
250
+ const calls = new Map();
251
+ for (const [name, count] of summary.toolCalls) {
252
+ const key = SESSION_TOOLS.has(name) ? name : 'other';
253
+ calls.set(key, (calls.get(key) ?? 0) + count);
254
+ }
255
+ if (summary.projectToolCalls > 0)
256
+ calls.set('tool', summary.projectToolCalls);
257
+ const codes = new Map();
258
+ for (const [code, count] of summary.errorCodes) {
259
+ const key = errorCodeToken(code);
260
+ codes.set(key, (codes.get(key) ?? 0) + count);
261
+ }
262
+ return {
263
+ name: EVENT_MCP_SESSION,
264
+ properties: {
265
+ client: client === undefined ? null : plainToken(client.name),
266
+ client_version: client === undefined ? null : plainToken(client.version),
267
+ outcome: summary.outcome,
268
+ ended_by: summary.endedBy ?? null,
269
+ error_code: summary.openErrorCode === undefined ? null : errorCodeToken(summary.openErrorCode),
270
+ platform: summary.platform === undefined ? null : plainToken(summary.platform),
271
+ engine: summary.engine === undefined ? null : engineLabel(summary.engine),
272
+ headed: summary.headed,
273
+ duration_ms: Math.max(0, Math.round(summary.durationMs)),
274
+ sessions_open: summary.concurrent,
275
+ calls_total: [...calls.values()].reduce((total, count) => total + count, 0),
276
+ calls_failed: summary.failedCalls,
277
+ calls: sortedCounts(calls),
278
+ error_codes: sortedCounts(new Map([...codes].toSorted().slice(0, MAX_ERROR_CODES))),
183
279
  },
184
280
  };
185
281
  }
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