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
@@ -4,43 +4,66 @@
4
4
  * The replay precondition asks "is the app on the screen this recording
5
5
  * began on", and the postcondition "did we land where the recording landed".
6
6
  * A URL answers neither directly: it carries the id the app minted for this
7
- * run's record, the slug of the record the test happened to open, a search
8
- * term in the query, a tracking parameter, a fragment. All of that changes
9
- * between two visits to the same screen, and none of it is the screen.
7
+ * run's record, a cache buster, a session token, a fragment. All of that
8
+ * changes between two visits to the same screen, and none of it is the
9
+ * screen.
10
10
  *
11
- * So a location is reduced to its route: the pathname's segments, with every
12
- * segment that looks minted per record (a uuid, a hex or digit run, a long
13
- * token mixing letters and digits, text with whitespace) replaced by `:id`;
14
- * the query and the fragment dropped, except that an app routing in the
15
- * fragment (`#/companies/1`) routes by that path. A value the call marked
16
- * with `unique()` needs no rule here: the recording spells it as a
11
+ * So a location is reduced to its route: the origin it is on, the pathname's
12
+ * segments, and the query's parameters, with every segment or parameter
13
+ * value that looks minted per record (a uuid, a hex or digit run, a long
14
+ * token mixing letters and digits, a prefixed record id, text with
15
+ * whitespace) replaced by `:id`.
16
+ * Every other query value is part of the screen: `?mode=unsafe` is not
17
+ * `?mode=safe`, and `?tab=notes` shows other controls than no tab. The
18
+ * fragment is dropped, except that an app routing in the fragment
19
+ * (`#/companies/1`) routes by that path and its query. A value the call
20
+ * marked with `unique()` needs no rule here: the recording spells it as a
17
21
  * placeholder in every spelling a URL gives it, its slug included
18
22
  * (`cache/template.ts`), and replay fills in this run's value on both sides.
19
23
  *
20
- * Two routes that still differ in exactly one segment are `undecided`: a slug
21
- * of a record the runner never saw the value of reads as two literals, and
22
- * only the screen can say whether they are the same page. At the end of a
23
- * step the recorded anchors can, because they are the step's own effect. At
24
- * the start nothing recorded is specific to the screen (the controls a start
25
- * screen shows are mostly the app's header and sidebar, shared by every
26
- * screen), so an undecided start is a miss. A device engine reports a screen
27
- * title in place of a URL, which is already a route and compares as itself.
24
+ * The origin is relative to the app (`appLocation`): a location on the app's
25
+ * own origin is kept as its path, so a recording made against one deployment
26
+ * of the app replays on another that shares its `app.identity`, while a
27
+ * screen on any other origin keeps its origin and is another route.
28
+ *
29
+ * Two routes are the same screen only when they read alike. A literal that
30
+ * differs, a slug the runner never saw the value of, is another screen at
31
+ * both ends of a step: nothing recorded can tell a record's slug from a
32
+ * route word, and a screen that looks alike on another route (a settings
33
+ * page and a profile page sharing one layout) is exactly where a wrong link
34
+ * lands. A device engine reports a screen title in place of a URL, which is
35
+ * already a route and compares as itself.
28
36
  */
29
37
  const PARAM = ':id';
30
38
  /**
31
39
  * A segment shaped like a value the app mints per record: a uuid, a hex or
32
40
  * digit run, a long token carrying letters and at least two digits (a route
33
- * word such as `companies-v2` has one), or text with whitespace, which no
34
- * router puts in a path. A capitalized or dashed word is none of these; two
35
- * of them differing is left to the screen.
41
+ * word such as `companies-v2` has one), a prefixed record id (letters, a
42
+ * dash, then a digit tail of two or more: `PROJ-016`, `INV-2041`; a single
43
+ * digit as in `page-2` is a route word), or text with whitespace, which no
44
+ * router puts in a path. Any other capitalized or dashed word is none of
45
+ * these.
36
46
  */
37
47
  const MINTED_SEGMENT = [
38
48
  /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,
39
49
  /^[0-9a-f]{8,}$/i,
40
50
  /^\d+$/,
41
51
  /^(?=(?:[^\d]*\d){2})(?=.*[A-Za-z])[A-Za-z0-9_-]{12,}$/,
52
+ /^[A-Za-z]+-\d{2,}$/,
42
53
  /\s/,
43
54
  ];
55
+ /**
56
+ * A query value is minted on the same rules, with the wider alphabet a
57
+ * value carries that a path segment cannot: a signed token or a timestamp
58
+ * (`eyJhbGciOi.x1.y2`, `2026-10-01T10:00:00Z`) has dots, colons, and base64,
59
+ * and a date (`?from=2026-10-01`, a default an app fills in with today) has
60
+ * no letter at all.
61
+ */
62
+ const MINTED_VALUE = [
63
+ ...MINTED_SEGMENT,
64
+ /^(?=(?:[^\d]*\d){2})(?=.*[A-Za-z])[\w.~+/=:-]{12,}$/,
65
+ /^\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:?\d{2})?)?$/,
66
+ ];
44
67
  function decodeSegment(raw) {
45
68
  try {
46
69
  return decodeURIComponent(raw);
@@ -50,15 +73,30 @@ function decodeSegment(raw) {
50
73
  }
51
74
  }
52
75
  /**
53
- * The pathname a location routes by, or undefined when the location is not
54
- * a web address (a device engine's screen title, a browser's own page).
76
+ * A location as the cache compares it: a URL on the app's own origin as its
77
+ * path, query, and fragment, so a recording follows the app to another
78
+ * deployment of it; anything else (another origin, a device screen title)
79
+ * as it is.
80
+ */
81
+ export function appLocation(location, appOrigin) {
82
+ if (appOrigin === undefined || !URL.canParse(location))
83
+ return location;
84
+ const url = new URL(location);
85
+ return url.origin === appOrigin ? `${url.pathname}${url.search}${url.hash}` : location;
86
+ }
87
+ /**
88
+ * The parts of a location its route is made of, or undefined when the
89
+ * location is not a web address (a device engine's screen title, a
90
+ * browser's own page).
55
91
  */
56
- function pathnameOf(location) {
92
+ function locationParts(location) {
93
+ let origin;
57
94
  let rest = location;
58
95
  if (URL.canParse(location)) {
59
96
  const url = new URL(location);
60
97
  if (url.protocol !== 'http:' && url.protocol !== 'https:')
61
98
  return undefined;
99
+ origin = url.origin;
62
100
  rest = `${url.pathname}${url.search}${url.hash}`;
63
101
  }
64
102
  else if (!location.startsWith('/')) {
@@ -66,43 +104,48 @@ function pathnameOf(location) {
66
104
  }
67
105
  const hashAt = rest.indexOf('#');
68
106
  const fragment = hashAt === -1 ? '' : rest.slice(hashAt + 1);
69
- const pathname = fragment.startsWith('/') ? fragment : hashAt === -1 ? rest : rest.slice(0, hashAt);
70
- return pathname.split('?')[0] ?? '';
107
+ const [documentPath, documentSearch] = splitOnce(hashAt === -1 ? rest : rest.slice(0, hashAt), '?');
108
+ if (!fragment.startsWith('/'))
109
+ return { ...(origin === undefined ? {} : { origin }), pathname: documentPath, search: documentSearch };
110
+ const [fragmentPath, fragmentSearch] = splitOnce(fragment, '?');
111
+ return {
112
+ ...(origin === undefined ? {} : { origin }),
113
+ pathname: fragmentPath,
114
+ search: [documentSearch, fragmentSearch].filter((part) => part !== '').join('&'),
115
+ };
116
+ }
117
+ function splitOnce(text, separator) {
118
+ const at = text.indexOf(separator);
119
+ return at === -1 ? [text, ''] : [text.slice(0, at), text.slice(at + 1)];
120
+ }
121
+ /** A query's parameters as route terms, `key=value` with a minted key or value as `:id`, sorted. */
122
+ function queryTerms(search) {
123
+ const terms = [];
124
+ for (const [key, value] of new URLSearchParams(search)) {
125
+ const minted = (text) => text !== '' && MINTED_VALUE.some((pattern) => pattern.test(text));
126
+ terms.push(`${minted(key) ? PARAM : key}=${minted(value) ? PARAM : value}`);
127
+ }
128
+ return terms.toSorted();
71
129
  }
72
130
  /** The route of a location. */
73
- export function routeOf(location) {
74
- const pathname = pathnameOf(location);
75
- if (pathname === undefined)
131
+ function routeOf(location) {
132
+ const parts = locationParts(location);
133
+ if (parts === undefined)
76
134
  return { kind: 'opaque', location };
77
- const segments = pathname
135
+ const segments = parts.pathname
78
136
  .split('/')
79
137
  .filter((raw) => raw !== '')
80
138
  .map((raw) => {
81
139
  const text = decodeSegment(raw);
82
140
  return MINTED_SEGMENT.some((pattern) => pattern.test(text)) ? PARAM : text;
83
141
  });
84
- return { kind: 'url', segments };
142
+ return { kind: 'url', ...(parts.origin === undefined ? {} : { origin: parts.origin }), segments, query: queryTerms(parts.search) };
85
143
  }
86
- /** A route as one line, for tests and diagnostics: `/companies/:id`, or the opaque location. */
87
- export function routeKey(route) {
88
- return route.kind === 'url' ? `/${route.segments.join('/')}` : route.location;
144
+ /** Whether two locations name the same screen: one origin, and segments and query that read alike. */
145
+ export function sameRoute(recorded, live) {
146
+ return routeIdentity(routeOf(recorded)) === routeIdentity(routeOf(live));
89
147
  }
90
- /**
91
- * Whether two routes are the same screen: `same` when they read alike,
92
- * `undecided` when routes of one depth differ in exactly one segment, which
93
- * the screen must settle, and `different` otherwise.
94
- */
95
- export function compareRoutes(recorded, live) {
96
- if (recorded.kind === 'opaque' || live.kind === 'opaque') {
97
- return recorded.kind === 'opaque' && live.kind === 'opaque' && recorded.location === live.location ? 'same' : 'different';
98
- }
99
- if (recorded.segments.length !== live.segments.length)
100
- return 'different';
101
- let differing = 0;
102
- for (const [index, segment] of recorded.segments.entries()) {
103
- if (segment !== live.segments[index])
104
- differing += 1;
105
- }
106
- return differing === 0 ? 'same' : differing === 1 ? 'undecided' : 'different';
148
+ /** A route's parts as one comparable string, a slash inside a segment kept inside it. */
149
+ function routeIdentity(route) {
150
+ return JSON.stringify(route.kind === 'opaque' ? [route.location] : [route.origin ?? null, route.segments, route.query]);
107
151
  }
108
- //# sourceMappingURL=route.js.map
@@ -59,6 +59,12 @@ export declare class FileCacheStore implements CacheStore {
59
59
  bytes: number;
60
60
  } | undefined>;
61
61
  delete(keyHash: string): Promise<void>;
62
+ /**
63
+ * The key hashes of the digest-named files in the directory, readable or
64
+ * not; none when the directory does not exist. Not part of `CacheStore`:
65
+ * only `cache.strict` lists a store, and only this one.
66
+ */
67
+ keyHashes(): Promise<string[]>;
62
68
  /**
63
69
  * Resolves one entry path. The key hash is the only caller-supplied path
64
70
  * component and must be a bare digest, so traversal is impossible by
@@ -66,4 +72,3 @@ export declare class FileCacheStore implements CacheStore {
66
72
  */
67
73
  private entryPath;
68
74
  }
69
- //# sourceMappingURL=store.d.ts.map
@@ -13,7 +13,7 @@
13
13
  * The interface exists so a remote store — the cloud's shared cache — can
14
14
  * replace the filesystem without the harness noticing.
15
15
  */
16
- import { mkdir, readFile, stat, unlink } from 'node:fs/promises';
16
+ import { mkdir, readdir, readFile, stat, unlink } from 'node:fs/promises';
17
17
  import { join } from 'node:path';
18
18
  import { writeFileAtomic } from '../internal/atomic-write.js';
19
19
  import { errorMessage } from '../internal/errors.js';
@@ -83,6 +83,26 @@ export class FileCacheStore {
83
83
  return;
84
84
  await unlink(path).catch(() => undefined);
85
85
  }
86
+ /**
87
+ * The key hashes of the digest-named files in the directory, readable or
88
+ * not; none when the directory does not exist. Not part of `CacheStore`:
89
+ * only `cache.strict` lists a store, and only this one.
90
+ */
91
+ async keyHashes() {
92
+ let names;
93
+ try {
94
+ names = await readdir(this.directory);
95
+ }
96
+ catch (cause) {
97
+ if (cause.code === 'ENOENT')
98
+ return [];
99
+ throw cause;
100
+ }
101
+ return names.flatMap((name) => {
102
+ const keyHash = name.endsWith('.json') ? name.slice(0, -'.json'.length) : undefined;
103
+ return keyHash !== undefined && KEY_HASH.test(keyHash) ? [keyHash] : [];
104
+ });
105
+ }
86
106
  /**
87
107
  * Resolves one entry path. The key hash is the only caller-supplied path
88
108
  * component and must be a bare digest, so traversal is impossible by
@@ -92,4 +112,3 @@ export class FileCacheStore {
92
112
  return KEY_HASH.test(keyHash) ? join(this.directory, `${keyHash}.json`) : undefined;
93
113
  }
94
114
  }
95
- //# sourceMappingURL=store.js.map
@@ -81,4 +81,3 @@ export declare function templateTrace(trace: ActionTrace, templates: readonly Pa
81
81
  * or undefined when the entry names a parameter this call did not mark.
82
82
  */
83
83
  export declare function expandTrace(trace: ActionTrace, templates: readonly ParamTemplate[]): ActionTrace | undefined;
84
- //# sourceMappingURL=template.d.ts.map
@@ -250,4 +250,3 @@ export function expandTrace(trace, templates) {
250
250
  const values = new Map(templates.map((template) => [template.pointer, template.value]));
251
251
  return mapTraceText(trace, (text) => expandText(text, values));
252
252
  }
253
- //# sourceMappingURL=template.js.map
@@ -32,26 +32,36 @@ export declare const MAX_TRACE_INPUT_CHARS = 4096;
32
32
  /** Caps prose at `maxChars`, marking the cut with an ellipsis. */
33
33
  export declare function bound(text: string, maxChars: number): string;
34
34
  /**
35
- * Cap on recorded end anchors. Anchors are the step's own delta — what
36
- * appeared on screen between the first observation and the passing one — so
37
- * a same-screen mutation rarely has more than a handful; a step that changes
38
- * the whole screen keeps the first few in document order.
35
+ * Cap on recorded anchors, per side of the delta. Anchors are the step's own
36
+ * delta, what appeared on screen between the first observation and the
37
+ * passing one and what vanished, so a same-screen mutation rarely has more
38
+ * than a handful; a step that changes the whole screen keeps the first few,
39
+ * announcements first (`cache/anchors.ts`).
39
40
  */
40
41
  export declare const MAX_TRACE_ANCHORS = 8;
41
42
  /** Longest a replay waits for the recorded end state to return. */
42
43
  export declare const MAX_TRACE_END_WAIT_MS = 120000;
43
44
  /**
44
45
  * What a trace was recorded for, in the terms a person uses: the test, the
45
- * target, and the digest of the instruction. None of it is replay input —
46
- * every one of these fields is already in the key, so a mismatch is a miss
47
- * before an entry is ever read — and none of it is trusted as such. It exists
48
- * so a file named after a digest can say which test it belongs to.
46
+ * target, the digest of the instruction, and, on entries recorded since they
47
+ * were added, the rest of what names the step within its test. None of it is
48
+ * replay input — every one of these fields is already in the key, so a
49
+ * mismatch is a miss before an entry is ever read — and none of it is trusted
50
+ * as such. It exists so a file named after a digest can say which step it
51
+ * belongs to, and so `cache.strict` can tell a step whose key changed under
52
+ * its recording from a step that was never recorded.
49
53
  */
50
54
  export interface TraceProvenance {
51
55
  readonly testId: string;
52
56
  readonly targetId: string;
53
57
  /** SHA-256 of the normalized instruction (`cache/identity.ts`). */
54
58
  readonly instructionDigest: string;
59
+ /** SHA-256/JCS of the step's params as the key digests them, a placeholder for each `unique()` value. */
60
+ readonly paramsDigest?: string;
61
+ /** Zero-based occurrence of the step among its repeats in the attempt. */
62
+ readonly callIndex?: number;
63
+ /** Name of the configured agent the step ran with. */
64
+ readonly agent?: string;
55
65
  }
56
66
  /**
57
67
  * How a recorded action addressed its node, independent of observation ids.
@@ -82,7 +92,23 @@ export interface TraceTargetDescriptor {
82
92
  * twin that appeared or vanished still diverges instead of guessing.
83
93
  */
84
94
  readonly position?: TracePosition;
95
+ /**
96
+ * An anchor's states that were on, sorted; anchors only. A switch turned
97
+ * on is the same control before and after, so its state is what tells
98
+ * the step's effect from a tap that did nothing.
99
+ */
100
+ readonly states?: readonly TraceAnchorState[];
101
+ /**
102
+ * An anchor's current input value, redacted and bounded like its text;
103
+ * anchors only, and never a secure field's, which is never observed. A
104
+ * field typed into or an option selected is the same control before and
105
+ * after, so its value is the step's effect.
106
+ */
107
+ readonly value?: string;
85
108
  }
109
+ /** The node states an anchor records: the ones a step sets on a control it leaves on screen. */
110
+ export declare const TRACE_ANCHOR_STATES: readonly ['checked', 'expanded', 'pressed', 'selected'];
111
+ export type TraceAnchorState = (typeof TRACE_ANCHOR_STATES)[number];
86
112
  interface ActionBase {
87
113
  /** One-line prose summary — the only view a mid-step hand-off notice shows. */
88
114
  readonly summary: string;
@@ -245,7 +271,7 @@ export interface ToolGapAction extends ActionBase {
245
271
  export type RecordedAction = NodeAction | TypeAction | TypeSecretAction | PressAction | SelectAction | CheckAction | UploadAction | DragAction | ScrollAction | ScrollUntilAction | NavigateAction | BackAction | PointAction | TypeTextAction | PressKeyAction | DismissKeyboardAction | ToolGapAction;
246
272
  export interface ActionTrace {
247
273
  readonly actions: readonly RecordedAction[];
248
- /** Executor that produced the trace — provenance, never part of the key (OQ10). */
274
+ /** Executor that produced the trace: provenance, never part of the key, which names the agent instead. */
249
275
  readonly executor: {
250
276
  readonly name: string;
251
277
  readonly version?: string;
@@ -254,12 +280,17 @@ export interface ActionTrace {
254
280
  readonly recordedFor?: TraceProvenance;
255
281
  /** The recorded run's verdict summary. */
256
282
  readonly summary: string;
257
- /** Location path when the step began; a precondition unless the trace opens with navigate. */
283
+ /**
284
+ * Location when the step began, as the cache compares it (`appLocation`):
285
+ * a path on the app's own origin, else the whole location. A precondition
286
+ * unless the trace opens with navigate.
287
+ */
258
288
  readonly startPath?: string;
259
289
  /**
260
- * Location path when the step passed — the trace's deterministic postcondition.
261
- * A full replay self-finalizes only while the live pathname still matches;
262
- * a recorded flow whose destination changed hands off instead of passing.
290
+ * Location when the step passed, spelled like `startPath`: the trace's
291
+ * deterministic postcondition. A full replay self-finalizes only while
292
+ * the live route still matches; a recorded flow whose destination changed
293
+ * hands off instead of passing.
263
294
  */
264
295
  readonly endPath?: string;
265
296
  /**
@@ -271,6 +302,14 @@ export interface ActionTrace {
271
302
  * instead of passing on mechanics alone.
272
303
  */
273
304
  readonly endAnchors?: readonly TraceTargetDescriptor[];
305
+ /**
306
+ * Descriptors of nodes that were on screen when the step began and were
307
+ * gone when it passed: a delete, a dismissed dialog, a cleared draft. A
308
+ * full replay self-finalizes only while every one of them is gone again,
309
+ * so a removal that did not happen hands off instead of passing with no
310
+ * anchor to check.
311
+ */
312
+ readonly goneAnchors?: readonly TraceTargetDescriptor[];
274
313
  /**
275
314
  * How long the recorded run took from its first action to its passing
276
315
  * verdict, plus a margin. A replay waits up to this long for the anchors to
@@ -295,7 +334,7 @@ export declare function buildTraceEntry(payload: ActionTrace): TraceEntry;
295
334
  */
296
335
  export declare function readTraceEntry(document: unknown): TraceEntry | undefined;
297
336
  /** Every field of a target descriptor; two descriptors equal on all of them name the same target. */
298
- export declare const DESCRIPTOR_FIELDS: readonly ['role', 'name', 'text', 'testId', 'placeholder', 'selector', 'inputPurpose', 'within'];
337
+ export declare const DESCRIPTOR_FIELDS: readonly ['role', 'name', 'text', 'testId', 'placeholder', 'selector', 'inputPurpose', 'within', 'value'];
299
338
  /** A string rewrite; `undefined` means the text cannot be rewritten and the whole trace is unusable. */
300
339
  export type TraceTextMap = (text: string) => string | undefined;
301
340
  /**
@@ -308,4 +347,3 @@ export type TraceTextMap = (text: string) => string | undefined;
308
347
  */
309
348
  export declare function mapTraceText(trace: ActionTrace, map: TraceTextMap): ActionTrace | undefined;
310
349
  export {};
311
- //# sourceMappingURL=trace.d.ts.map
@@ -34,10 +34,11 @@ export function bound(text, maxChars) {
34
34
  return text.length <= maxChars ? text : `${text.slice(0, maxChars - 1)}…`;
35
35
  }
36
36
  /**
37
- * Cap on recorded end anchors. Anchors are the step's own delta — what
38
- * appeared on screen between the first observation and the passing one — so
39
- * a same-screen mutation rarely has more than a handful; a step that changes
40
- * the whole screen keeps the first few in document order.
37
+ * Cap on recorded anchors, per side of the delta. Anchors are the step's own
38
+ * delta, what appeared on screen between the first observation and the
39
+ * passing one and what vanished, so a same-screen mutation rarely has more
40
+ * than a handful; a step that changes the whole screen keeps the first few,
41
+ * announcements first (`cache/anchors.ts`).
41
42
  */
42
43
  export const MAX_TRACE_ANCHORS = 8;
43
44
  /** Longest a replay waits for the recorded end state to return. */
@@ -66,6 +67,9 @@ function each(items, read) {
66
67
  const SHA256_HEX = /^[a-f0-9]{64}$/u;
67
68
  /** Most twins a positional recording distinguishes between; beyond it a list is data, not a control set. */
68
69
  const MAX_TRACE_POSITION_OF = 1000;
70
+ /** The node states an anchor records: the ones a step sets on a control it leaves on screen. */
71
+ export const TRACE_ANCHOR_STATES = ['checked', 'expanded', 'pressed', 'selected'];
72
+ const isTraceAnchorState = oneOf(TRACE_ANCHOR_STATES);
69
73
  /** The verbs that act on one node and carry no input: tap and its variants, hover, scroll into view. */
70
74
  const NODE_ACTION_NAMES = ['tap', 'doubleTap', 'longPress', 'secondaryTap', 'hover', 'scrollTo'];
71
75
  const isNodeActionName = oneOf(NODE_ACTION_NAMES);
@@ -131,18 +135,13 @@ function readActionTrace(document) {
131
135
  const summary = readBoundedText(raw['summary'], MAX_TRACE_SUMMARY_CHARS);
132
136
  if (summary === undefined)
133
137
  return undefined;
134
- const startPath = raw['startPath'];
135
- if (startPath !== undefined) {
136
- if (typeof startPath !== 'string' || startPath === '' || startPath.length > MAX_TRACE_DESCRIPTOR_CHARS) {
137
- return undefined;
138
- }
139
- }
140
- const endPath = raw['endPath'];
141
- if (endPath !== undefined) {
142
- if (typeof endPath !== 'string' || endPath === '' || endPath.length > MAX_TRACE_DESCRIPTOR_CHARS) {
143
- return undefined;
144
- }
145
- }
138
+ // A location is a replay precondition, kept whole like a typed value.
139
+ const startPath = raw['startPath'] === undefined ? undefined : readInputText(raw['startPath']);
140
+ if (raw['startPath'] !== undefined && startPath === undefined)
141
+ return undefined;
142
+ const endPath = raw['endPath'] === undefined ? undefined : readInputText(raw['endPath']);
143
+ if (raw['endPath'] !== undefined && endPath === undefined)
144
+ return undefined;
146
145
  const truncated = raw['truncated'];
147
146
  if (truncated !== undefined && typeof truncated !== 'boolean')
148
147
  return undefined;
@@ -151,15 +150,12 @@ function readActionTrace(document) {
151
150
  (typeof endWaitMs !== 'number' || !Number.isInteger(endWaitMs) || endWaitMs < 0 || endWaitMs > MAX_TRACE_END_WAIT_MS)) {
152
151
  return undefined;
153
152
  }
154
- const anchorsRaw = raw['endAnchors'];
155
- let endAnchors;
156
- if (anchorsRaw !== undefined) {
157
- if (!Array.isArray(anchorsRaw) || anchorsRaw.length > MAX_TRACE_ANCHORS)
158
- return undefined;
159
- endAnchors = each(anchorsRaw, readDescriptor);
160
- if (endAnchors === undefined)
161
- return undefined;
162
- }
153
+ const endAnchors = readAnchors(raw['endAnchors']);
154
+ if (endAnchors === undefined)
155
+ return undefined;
156
+ const goneAnchors = readAnchors(raw['goneAnchors']);
157
+ if (goneAnchors === undefined)
158
+ return undefined;
163
159
  const actionsRaw = raw['actions'];
164
160
  if (!Array.isArray(actionsRaw) || actionsRaw.length === 0 || actionsRaw.length > MAX_TRACE_ACTIONS) {
165
161
  return undefined;
@@ -177,11 +173,20 @@ function readActionTrace(document) {
177
173
  summary,
178
174
  ...(startPath === undefined ? {} : { startPath }),
179
175
  ...(endPath === undefined ? {} : { endPath }),
180
- ...(endAnchors === undefined || endAnchors.length === 0 ? {} : { endAnchors }),
176
+ ...(endAnchors.length === 0 ? {} : { endAnchors }),
177
+ ...(goneAnchors.length === 0 ? {} : { goneAnchors }),
181
178
  ...(endWaitMs === undefined ? {} : { endWaitMs }),
182
179
  ...(truncated === undefined ? {} : { truncated }),
183
180
  };
184
181
  }
182
+ /** One side of the recorded delta: absent reads as empty, anything malformed or over the cap as undefined. */
183
+ function readAnchors(document) {
184
+ if (document === undefined)
185
+ return [];
186
+ if (!Array.isArray(document) || document.length > MAX_TRACE_ANCHORS)
187
+ return undefined;
188
+ return each(document, readDescriptor);
189
+ }
185
190
  function readRecordedAction(document) {
186
191
  if (typeof document !== 'object' || document === null || Array.isArray(document)) {
187
192
  return undefined;
@@ -370,13 +375,14 @@ export const DESCRIPTOR_FIELDS = [
370
375
  'selector',
371
376
  'inputPurpose',
372
377
  'within',
378
+ 'value',
373
379
  ];
374
380
  /**
375
381
  * The descriptor fields that carry text read off the screen, where a value
376
382
  * a test supplied can reappear. `role`, `selector`, and `inputPurpose` are
377
383
  * vocabulary, never screen text.
378
384
  */
379
- const DESCRIPTOR_TEXT_FIELDS = ['name', 'text', 'testId', 'placeholder', 'within'];
385
+ const DESCRIPTOR_TEXT_FIELDS = ['name', 'text', 'testId', 'placeholder', 'within', 'value'];
380
386
  function mapDescriptorText(descriptor, map) {
381
387
  const changes = {};
382
388
  for (const field of DESCRIPTOR_TEXT_FIELDS) {
@@ -486,6 +492,9 @@ export function mapTraceText(trace, map) {
486
492
  const endAnchors = trace.endAnchors === undefined ? undefined : mapDescriptors(trace.endAnchors, map);
487
493
  if (trace.endAnchors !== undefined && endAnchors === undefined)
488
494
  return undefined;
495
+ const goneAnchors = trace.goneAnchors === undefined ? undefined : mapDescriptors(trace.goneAnchors, map);
496
+ if (trace.goneAnchors !== undefined && goneAnchors === undefined)
497
+ return undefined;
489
498
  return {
490
499
  ...trace,
491
500
  actions,
@@ -493,6 +502,7 @@ export function mapTraceText(trace, map) {
493
502
  ...(startPath === undefined ? {} : { startPath }),
494
503
  ...(endPath === undefined ? {} : { endPath }),
495
504
  ...(endAnchors === undefined ? {} : { endAnchors }),
505
+ ...(goneAnchors === undefined ? {} : { goneAnchors }),
496
506
  };
497
507
  }
498
508
  function mapDescriptors(descriptors, map) {
@@ -521,8 +531,23 @@ function readDescriptor(document) {
521
531
  return undefined;
522
532
  descriptor['position'] = position;
523
533
  }
534
+ if (raw['states'] !== undefined) {
535
+ const states = readStates(raw['states']);
536
+ if (states === undefined)
537
+ return undefined;
538
+ descriptor['states'] = states;
539
+ }
524
540
  return descriptor;
525
541
  }
542
+ /** Known anchor states, each once, in sorted order, as `anchors.ts` writes them; an empty list is never written. */
543
+ function readStates(document) {
544
+ if (!Array.isArray(document) || document.length === 0)
545
+ return undefined;
546
+ const states = each(document, (state) => (isTraceAnchorState(state) ? state : undefined));
547
+ if (states === undefined)
548
+ return undefined;
549
+ return states.every((state, index) => index === 0 || states[index - 1] < state) ? states : undefined;
550
+ }
526
551
  /** A well-formed position: two safe integers with the index inside the count. */
527
552
  function readPosition(document) {
528
553
  if (typeof document !== 'object' || document === null || Array.isArray(document))
@@ -549,7 +574,24 @@ function readProvenance(document) {
549
574
  return undefined;
550
575
  if (typeof instructionDigest !== 'string' || !SHA256_HEX.test(instructionDigest))
551
576
  return undefined;
552
- return { testId, targetId, instructionDigest };
577
+ const paramsDigest = raw['paramsDigest'];
578
+ if (paramsDigest !== undefined && (typeof paramsDigest !== 'string' || !SHA256_HEX.test(paramsDigest)))
579
+ return undefined;
580
+ const callIndex = raw['callIndex'];
581
+ if (callIndex !== undefined && (typeof callIndex !== 'number' || !Number.isSafeInteger(callIndex) || callIndex < 0)) {
582
+ return undefined;
583
+ }
584
+ const agent = raw['agent'] === undefined ? undefined : readBoundedText(raw['agent'], MAX_TRACE_DESCRIPTOR_CHARS);
585
+ if (raw['agent'] !== undefined && agent === undefined)
586
+ return undefined;
587
+ return {
588
+ testId,
589
+ targetId,
590
+ instructionDigest,
591
+ ...(paramsDigest === undefined ? {} : { paramsDigest }),
592
+ ...(callIndex === undefined ? {} : { callIndex }),
593
+ ...(agent === undefined ? {} : { agent }),
594
+ };
553
595
  }
554
596
  function readBoundedText(value, maxChars) {
555
597
  if (typeof value !== 'string' || value.trim() === '' || value.length > maxChars) {
@@ -570,4 +612,3 @@ function readInputText(value) {
570
612
  }
571
613
  return value;
572
614
  }
573
- //# sourceMappingURL=trace.js.map
package/dist/cli/bin.d.ts CHANGED
@@ -1,3 +1,2 @@
1
1
  #!/usr/bin/env node
2
2
  export {};
3
- //# sourceMappingURL=bin.d.ts.map
package/dist/cli/bin.js CHANGED
@@ -9,4 +9,3 @@ if (unsupported !== undefined) {
9
9
  }
10
10
  const { main } = await import('./index.js');
11
11
  await main(process.argv);
12
- //# sourceMappingURL=bin.js.map
@@ -22,4 +22,3 @@ export interface CacheOptions {
22
22
  * otherwise — an empty or absent cache is a fact, not a failure.
23
23
  */
24
24
  export declare function cache(command: CacheCommand, options?: CacheOptions): Promise<number>;
25
- //# sourceMappingURL=cache.d.ts.map
package/dist/cli/cache.js CHANGED
@@ -246,4 +246,3 @@ function formatBytes(bytes) {
246
246
  return `${kib.toFixed(1)} KiB`;
247
247
  return `${(kib / 1024).toFixed(1)} MiB`;
248
248
  }
249
- //# sourceMappingURL=cache.js.map
@@ -1,3 +1,2 @@
1
1
  /** Root of the published documentation site. */
2
2
  export declare const DOCS_URL = "https://e2e.tester.army/docs";
3
- //# sourceMappingURL=docs-url.d.ts.map
@@ -1,3 +1,2 @@
1
1
  /** Root of the published documentation site. */
2
2
  export const DOCS_URL = 'https://e2e.tester.army/docs';
3
- //# sourceMappingURL=docs-url.js.map
@@ -46,4 +46,3 @@ export interface FeedbackOptions {
46
46
  * so the message names the reference and never claims nothing arrived.
47
47
  */
48
48
  export declare function feedback(report: FeedbackReport, options: FeedbackOptions): Promise<number>;
49
- //# sourceMappingURL=feedback.d.ts.map
@@ -110,4 +110,3 @@ export async function feedback(report, options) {
110
110
  process.stdout.write(`Feedback sent to the e2e team, thank you. Reference: ${event.uuid}\n`);
111
111
  return 0;
112
112
  }
113
- //# sourceMappingURL=feedback.js.map
@@ -1,4 +1,3 @@
1
1
  /** `e2e guide`: prints the bundled agent skill for agents and people who do not have it installed. */
2
2
  /** Prints the overview or one topic to stdout; an unknown topic exits 2. */
3
3
  export declare function guide(topic: string | undefined): number;
4
- //# sourceMappingURL=guide.d.ts.map
package/dist/cli/guide.js CHANGED
@@ -13,4 +13,3 @@ export function guide(topic) {
13
13
  process.stdout.write(text.endsWith('\n') ? text : `${text}\n`);
14
14
  return 0;
15
15
  }
16
- //# sourceMappingURL=guide.js.map