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
@@ -1,4 +1,3 @@
1
1
  /** The harness-side check of a `press` key against the contract's key grammar. */
2
2
  /** Throws `INVALID_ARGUMENT` for anything but a key in the grammar `parseKey` accepts. */
3
3
  export declare function requireKey(key: unknown): asserts key is string;
4
- //# sourceMappingURL=keys.d.ts.map
@@ -9,4 +9,3 @@ export function requireKey(key) {
9
9
  `and one key joined by "+", where the key is a single character or one of ${KEY_NAMES.join(', ')} ` +
10
10
  '(for example "Enter", "Control+a", "Shift+Tab")');
11
11
  }
12
- //# sourceMappingURL=keys.js.map
@@ -7,4 +7,3 @@
7
7
  export declare const MINIMUM_NODE_VERSION = "22.12.0";
8
8
  /** Explains an unsupported runtime, or undefined when `current` meets the floor. */
9
9
  export declare function unsupportedNodeMessage(current: string, minimum?: string): string | undefined;
10
- //# sourceMappingURL=node-version.d.ts.map
@@ -25,4 +25,3 @@ export function unsupportedNodeMessage(current, minimum = MINIMUM_NODE_VERSION)
25
25
  }
26
26
  return undefined;
27
27
  }
28
- //# sourceMappingURL=node-version.js.map
@@ -18,4 +18,3 @@ type PlainObject<T> = T extends readonly unknown[] ? never : T;
18
18
  */
19
19
  export declare function obj<T extends object>(value: PlainObject<T>): WithoutUndefined<T>;
20
20
  export {};
21
- //# sourceMappingURL=objects.d.ts.map
@@ -11,4 +11,3 @@
11
11
  export function obj(value) {
12
12
  return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== undefined));
13
13
  }
14
- //# sourceMappingURL=objects.js.map
@@ -26,4 +26,3 @@ export declare function unknownKeyMessage(label: string, value: object, keys: re
26
26
  * for an argument a test passes.
27
27
  */
28
28
  export declare function rejectUnknownKeys(label: string, value: object, keys: readonly string[], code?: 'INVALID_CONFIG' | 'INVALID_ARGUMENT'): void;
29
- //# sourceMappingURL=options.d.ts.map
@@ -61,4 +61,3 @@ export function rejectUnknownKeys(label, value, keys, code = 'INVALID_CONFIG') {
61
61
  return;
62
62
  throw code === 'INVALID_CONFIG' ? new ConfigurationError(code, message) : new TestError(code, message);
63
63
  }
64
- //# sourceMappingURL=options.js.map
@@ -11,4 +11,3 @@ export declare function runScriptCommand(manager: PackageManager, name: string):
11
11
  export declare function execCommand(manager: PackageManager, command: string): string;
12
12
  /** The command that adds `name` as a dev dependency with the given manager. */
13
13
  export declare function addDevDependencyCommand(manager: PackageManager, name: string): string;
14
- //# sourceMappingURL=package-manager.d.ts.map
@@ -66,4 +66,3 @@ export function addDevDependencyCommand(manager, name) {
66
66
  return `bun add -d ${name}`;
67
67
  }
68
68
  }
69
- //# sourceMappingURL=package-manager.js.map
@@ -5,4 +5,3 @@
5
5
  export declare function packageVersion(fromUrl: string, specifier: string, fallback: string): string;
6
6
  /** Reads a JSON file through require resolution relative to the caller's module URL, or undefined when absent. */
7
7
  export declare function readJson(fromUrl: string, specifier: string): unknown;
8
- //# sourceMappingURL=package-version.d.ts.map
@@ -20,4 +20,3 @@ export function readJson(fromUrl, specifier) {
20
20
  return undefined;
21
21
  }
22
22
  }
23
- //# sourceMappingURL=package-version.js.map
@@ -20,4 +20,3 @@ export declare function realpathOfExisting(target: string): string;
20
20
  export declare function relativeToProjectRoot(projectRoot: string, target: string): string | undefined;
21
21
  /** Whether `target` is a path strictly below the project root; see `relativeToProjectRoot`. */
22
22
  export declare function insideProjectRoot(projectRoot: string, target: string): boolean;
23
- //# sourceMappingURL=paths.d.ts.map
@@ -63,4 +63,3 @@ export function relativeToProjectRoot(projectRoot, target) {
63
63
  export function insideProjectRoot(projectRoot, target) {
64
64
  return relativeToProjectRoot(projectRoot, target) !== undefined;
65
65
  }
66
- //# sourceMappingURL=paths.js.map
@@ -10,4 +10,3 @@ export interface RealmSlot<T> {
10
10
  delete(host: object): void;
11
11
  }
12
12
  export declare function realmSlot<T>(key: string | symbol): RealmSlot<T>;
13
- //# sourceMappingURL=realm-slot.d.ts.map
@@ -20,4 +20,3 @@ export function realmSlot(key) {
20
20
  },
21
21
  };
22
22
  }
23
- //# sourceMappingURL=realm-slot.js.map
@@ -54,4 +54,3 @@ export declare function isRetryMode(mode: RecordingMode): boolean;
54
54
  export declare function attemptRecording(recording: ResolvedRecording, attemptIndex: number): AttemptRecording | undefined;
55
55
  /** Whether any attempt of a test with `retries` records under `mode`: what the engine has to be able to honour before the run starts. */
56
56
  export declare function recordsOnSomeAttempt(mode: RecordingMode, retries: number): boolean;
57
- //# sourceMappingURL=recording-modes.d.ts.map
@@ -48,4 +48,3 @@ export function attemptRecording(recording, attemptIndex) {
48
48
  export function recordsOnSomeAttempt(mode, retries) {
49
49
  return isRetryMode(mode) ? retries >= 1 : mode !== 'off';
50
50
  }
51
- //# sourceMappingURL=recording-modes.js.map
@@ -47,9 +47,12 @@ export declare class SecretLedger {
47
47
  * `FRAGMENT_LENGTH` characters, or half of a value shorter than twice that.
48
48
  * A cut is one position, so a boundary this short seldom matches plain text
49
49
  * by chance. Matched as the value is written, in any case (`caseKey`), as
50
- * a CSS `text-transform` shows it: the cut falls on text as the engine read
51
- * it, before any serializer spells it. A case mapping that changes length
52
- * (`ß` to `SS`) is not followed, nor is collapsed whitespace. The part is found before whole values are
50
+ * a CSS `text-transform` shows it, and with every whitespace run on both
51
+ * sides read as one space (`readingKey`) and the value's leading whitespace
52
+ * dropped where whole-value matching trims it (`valuePattern`), as an
53
+ * engine that collapses text before cutting it shows it: the cut falls on
54
+ * text as the engine read it, before any serializer spells it. A case
55
+ * mapping that changes length (`ß` to `SS`) is not followed. The part is found before whole values are
53
56
  * rewritten, so a value that starts with another registered value is not
54
57
  * half rewritten as the shorter one, and an occurrence running into the
55
58
  * part joins its marker. Bound like `redact`.
@@ -61,7 +64,7 @@ export declare class SecretLedger {
61
64
  * becomes its marker. For a recording that keeps what an engine read raw
62
65
  * (a Playwright trace holds the page's cut text and selections), where a
63
66
  * value cut or selected partway through survives whole-value matching.
64
- * Matched as the value is written, in any case, like `redactCut`. A
67
+ * Matched in any case and with whitespace runs collapsed, like `redactCut`. A
65
68
  * base64 or base64url run that decodes to text holding a value or a
66
69
  * fragment is rewritten whole (a basic-auth header the engine sent). Bound
67
70
  * like `redact`.
@@ -111,4 +114,3 @@ export declare class StreamRedactor {
111
114
  /** Redacts and returns whatever is held, an unfinished character included; nothing more will follow. */
112
115
  flush(): string;
113
116
  }
114
- //# sourceMappingURL=redact.d.ts.map
@@ -63,24 +63,31 @@ function compile(values) {
63
63
  });
64
64
  // `split` on a capturing pattern returns the markers at the odd indexes; those pass through untouched.
65
65
  const redact = (text) => text.split(known).map((piece, index) => (index % 2 === 1 ? piece : rewrite(piece))).join('');
66
- const valueKeys = entries.map(([, value]) => caseKey(value));
66
+ const valueKeys = entries.map(([, value]) => readingKey(value).key);
67
+ // A reader trims a value's leading whitespace as it trims any text's, so a cut part may begin past it.
68
+ const leadingForms = entries.map(([, value], index) => {
69
+ const key = valueKeys[index] ?? '';
70
+ return secretLength(value.trim()) >= MIN_SECRET_LENGTH && key.trimStart() !== key ? [key, key.trimStart()] : [key];
71
+ });
67
72
  const redactCut = (text) => {
68
73
  // Only what follows the last marker can end in a value cut short.
69
74
  const tail = text.split(known).at(-1) ?? '';
70
- const tailKey = caseKey(tail);
75
+ const tailKey = readingKey(tail);
71
76
  let cut = 0;
72
77
  let marker = '';
73
- valueKeys.forEach((value, index) => {
74
- const length = leadingPartAtEnd(tailKey, value, Math.min(FRAGMENT_LENGTH, Math.ceil(value.length / 2)));
75
- if (length > cut) {
76
- cut = length;
77
- marker = markers[index] ?? '';
78
+ leadingForms.forEach((forms, index) => {
79
+ for (const value of forms) {
80
+ const length = leadingPartAtEnd(tailKey.key, value, Math.min(FRAGMENT_LENGTH, Math.ceil(value.length / 2)));
81
+ if (length > cut) {
82
+ cut = length;
83
+ marker = markers[index] ?? '';
84
+ }
78
85
  }
79
86
  });
80
87
  if (cut === 0)
81
88
  return redact(text);
82
89
  // An occurrence the whole-value pass would rewrite across the fragment's start joins the fragment.
83
- let start = tail.length - cut;
90
+ let start = tailKey.at(tailKey.key.length - cut);
84
91
  pattern.lastIndex = 0;
85
92
  for (let match = pattern.exec(tail); match !== null && match.index < start; match = pattern.exec(tail)) {
86
93
  if (match.index + match[0].length > start) {
@@ -221,6 +228,87 @@ function caseKey(text) {
221
228
  out += ch.charCodeAt(0) < 128 ? ch.toLowerCase() : caseKeyOf(ch);
222
229
  return out;
223
230
  }
231
+ /** Whitespace a reader rewrites: a run of two or more, or one character other than a plain space. */
232
+ const COLLAPSIBLE = /\s\s|[^\S ]/u;
233
+ /** UTF-16 units joined into one string at a time when the key is rebuilt. */
234
+ const KEY_CHUNK = 8192;
235
+ /**
236
+ * `text` as a cut or a fragment of a value is compared: `caseKey`, with each
237
+ * whitespace run read as one space, as an engine that collapses whitespace
238
+ * (`normalizeText`) shows it before cutting. A value holding a line break, a
239
+ * tab, a CRLF, a no-break space, or a run of spaces then agrees with what a
240
+ * collapsed text keeps of it, and a stretch of the key maps back to the text
241
+ * through `at`. `caseKey` keeps every index, so text with nothing to collapse
242
+ * is its own key. Otherwise the key is rebuilt unit by unit into a typed
243
+ * array, and `at` keeps one pair of offsets per collapsed run: a trace text
244
+ * of many megabytes costs a few times its size, never an object per unit.
245
+ */
246
+ function readingKey(text) {
247
+ const cased = caseKey(text);
248
+ if (!COLLAPSIBLE.test(cased))
249
+ return { key: cased, at: (index) => index };
250
+ const units = new Uint16Array(cased.length);
251
+ // Pairs of where a stretch after a collapsed run starts, in the key and in the text.
252
+ let breaks = new Int32Array(64);
253
+ let pairs = 0;
254
+ let length = 0;
255
+ for (let index = 0; index < cased.length; index += 1) {
256
+ const unit = cased.charCodeAt(index);
257
+ if (!isWhitespace(unit)) {
258
+ units[length++] = unit;
259
+ continue;
260
+ }
261
+ let end = index + 1;
262
+ while (end < cased.length && isWhitespace(cased.charCodeAt(end)))
263
+ end += 1;
264
+ units[length++] = 0x20;
265
+ if (end - index > 1 || unit !== 0x20) {
266
+ if (2 * pairs + 2 > breaks.length) {
267
+ const grown = new Int32Array(breaks.length * 2);
268
+ grown.set(breaks);
269
+ breaks = grown;
270
+ }
271
+ breaks[2 * pairs] = length;
272
+ breaks[2 * pairs + 1] = end;
273
+ pairs += 1;
274
+ }
275
+ index = end - 1;
276
+ }
277
+ const chunks = [];
278
+ for (let start = 0; start < length; start += KEY_CHUNK) {
279
+ chunks.push(String.fromCharCode(...units.subarray(start, Math.min(length, start + KEY_CHUNK))));
280
+ }
281
+ return {
282
+ key: chunks.join(''),
283
+ at: (index) => {
284
+ // The last stretch starting at or before `index`; before the first run the key and the text agree.
285
+ let low = -1;
286
+ let high = pairs - 1;
287
+ while (low < high) {
288
+ const middle = (low + high + 1) >> 1;
289
+ if ((breaks[2 * middle] ?? 0) <= index)
290
+ low = middle;
291
+ else
292
+ high = middle - 1;
293
+ }
294
+ return low === -1 ? index : (breaks[2 * low + 1] ?? 0) + index - (breaks[2 * low] ?? 0);
295
+ },
296
+ };
297
+ }
298
+ /** Whether a UTF-16 unit is one `\s` matches: what `normalizeText` collapses. */
299
+ function isWhitespace(unit) {
300
+ return (unit === 0x20 ||
301
+ (unit >= 0x09 && unit <= 0x0d) ||
302
+ unit === 0xa0 ||
303
+ unit === 0x1680 ||
304
+ (unit >= 0x2000 && unit <= 0x200a) ||
305
+ unit === 0x2028 ||
306
+ unit === 0x2029 ||
307
+ unit === 0x202f ||
308
+ unit === 0x205f ||
309
+ unit === 0x3000 ||
310
+ unit === 0xfeff);
311
+ }
224
312
  /** One non-ASCII character's `caseKey`, the same length as `ch`. */
225
313
  function caseKeyOf(ch) {
226
314
  const upper = sameLength(ch.toUpperCase(), ch);
@@ -306,8 +394,9 @@ function leadingPartAtEnd(text, value, minimum) {
306
394
  /**
307
395
  * Every run of `FRAGMENT_LENGTH` characters of every value, mapped to the
308
396
  * index of the first value holding it; values come longest first, so a run
309
- * two values share names the longer one. The values come as `caseKey`
310
- * reads them, so a run in any case finds its owner.
397
+ * two values share names the longer one. The values come as `readingKey`
398
+ * reads them, so a run in any case or with its whitespace collapsed finds
399
+ * its owner.
311
400
  */
312
401
  function fragmentOwners(values) {
313
402
  const owners = new Map();
@@ -323,29 +412,30 @@ function fragmentOwners(values) {
323
412
  /**
324
413
  * `text` with every stretch whose windows of `FRAGMENT_LENGTH` characters
325
414
  * each occur in a value replaced by the marker of the value owning its first
326
- * window. Windows are looked up by `caseKey`, as `owners` is keyed, so a
327
- * fragment in another case is one too. The stretch grows one window at a time, so the
328
- * scan is linear in the text and a run spanning two values becomes one
329
- * marker.
415
+ * window. Windows are looked up by `readingKey`, as `owners` is keyed, so a
416
+ * fragment in another case or with another whitespace run is one too, and
417
+ * the stretch is cut back out of `text` whole, its whitespace runs included.
418
+ * The stretch grows one window at a time, so the scan is linear in the text
419
+ * and a run spanning two values becomes one marker.
330
420
  */
331
421
  function rewriteFragments(text, owners, markers) {
332
422
  if (owners.size === 0)
333
423
  return text;
334
- const key = caseKey(text);
424
+ const { key, at } = readingKey(text);
335
425
  let out = '';
336
426
  let kept = 0;
337
427
  let start = 0;
338
- while (start + FRAGMENT_LENGTH <= text.length) {
428
+ while (start + FRAGMENT_LENGTH <= key.length) {
339
429
  const owner = owners.get(key.slice(start, start + FRAGMENT_LENGTH));
340
430
  if (owner === undefined) {
341
431
  start += 1;
342
432
  continue;
343
433
  }
344
434
  let end = start + FRAGMENT_LENGTH;
345
- while (end < text.length && owners.has(key.slice(end + 1 - FRAGMENT_LENGTH, end + 1)))
435
+ while (end < key.length && owners.has(key.slice(end + 1 - FRAGMENT_LENGTH, end + 1)))
346
436
  end += 1;
347
- out += `${text.slice(kept, start)}${markers[owner] ?? ''}`;
348
- kept = end;
437
+ out += `${text.slice(kept, at(start))}${markers[owner] ?? ''}`;
438
+ kept = at(end);
349
439
  start = end;
350
440
  }
351
441
  return out + text.slice(kept);
@@ -449,9 +539,12 @@ export class SecretLedger {
449
539
  * `FRAGMENT_LENGTH` characters, or half of a value shorter than twice that.
450
540
  * A cut is one position, so a boundary this short seldom matches plain text
451
541
  * by chance. Matched as the value is written, in any case (`caseKey`), as
452
- * a CSS `text-transform` shows it: the cut falls on text as the engine read
453
- * it, before any serializer spells it. A case mapping that changes length
454
- * (`ß` to `SS`) is not followed, nor is collapsed whitespace. The part is found before whole values are
542
+ * a CSS `text-transform` shows it, and with every whitespace run on both
543
+ * sides read as one space (`readingKey`) and the value's leading whitespace
544
+ * dropped where whole-value matching trims it (`valuePattern`), as an
545
+ * engine that collapses text before cutting it shows it: the cut falls on
546
+ * text as the engine read it, before any serializer spells it. A case
547
+ * mapping that changes length (`ß` to `SS`) is not followed. The part is found before whole values are
455
548
  * rewritten, so a value that starts with another registered value is not
456
549
  * half rewritten as the shorter one, and an occurrence running into the
457
550
  * part joins its marker. Bound like `redact`.
@@ -463,7 +556,7 @@ export class SecretLedger {
463
556
  * becomes its marker. For a recording that keeps what an engine read raw
464
557
  * (a Playwright trace holds the page's cut text and selections), where a
465
558
  * value cut or selected partway through survives whole-value matching.
466
- * Matched as the value is written, in any case, like `redactCut`. A
559
+ * Matched in any case and with whitespace runs collapsed, like `redactCut`. A
467
560
  * base64 or base64url run that decodes to text holding a value or a
468
561
  * fragment is rewritten whole (a basic-auth header the engine sent). Bound
469
562
  * like `redact`.
@@ -548,4 +641,3 @@ export class StreamRedactor {
548
641
  return this.ledger.redact(text);
549
642
  }
550
643
  }
551
- //# sourceMappingURL=redact.js.map
@@ -7,4 +7,3 @@ export declare function escapeRegexpChar(ch: string): string;
7
7
  * sticky/global state can never leak between matches.
8
8
  */
9
9
  export declare function testPattern(source: string, flags: string, input: string): boolean;
10
- //# sourceMappingURL=regexp.d.ts.map
@@ -24,4 +24,3 @@ export function testPattern(source, flags, input) {
24
24
  pattern.lastIndex = 0;
25
25
  return pattern.test(input);
26
26
  }
27
- //# sourceMappingURL=regexp.js.map
@@ -8,4 +8,3 @@ export declare function isEditable(node: Pick<SemanticNode, 'role'>): boolean;
8
8
  * told apart from a heading, which has no value at all, by its role.
9
9
  */
10
10
  export declare function isValueControl(node: Pick<SemanticNode, 'role'>): boolean;
11
- //# sourceMappingURL=roles.d.ts.map
@@ -19,4 +19,3 @@ export function isEditable(node) {
19
19
  export function isValueControl(node) {
20
20
  return VALUE_ROLES.has(node.role ?? '');
21
21
  }
22
- //# sourceMappingURL=roles.js.map
@@ -38,4 +38,3 @@ export declare function parseSkipCall(first: unknown, second: unknown): SkipCall
38
38
  */
39
39
  export declare function skipRunningTest(condition: boolean, reason: string | undefined): void;
40
40
  export {};
41
- //# sourceMappingURL=skip.d.ts.map
@@ -55,4 +55,3 @@ export function skipRunningTest(condition, reason) {
55
55
  }
56
56
  throw new RuntimeSkip(reason);
57
57
  }
58
- //# sourceMappingURL=skip.js.map
@@ -29,4 +29,3 @@ export declare function projectRelativePath(projectRoot: string, file: string):
29
29
  export declare function userFrame(stack: string | undefined, projectRoot: string | undefined): StackFrame | undefined;
30
30
  /** The user's frame in a stack as the report keeps it: project-relative, POSIX; nothing when the stack named no project line. */
31
31
  export declare function sourceLocation(stack: string | undefined, projectRoot: string | undefined): SourceLocation | undefined;
32
- //# sourceMappingURL=source.d.ts.map
@@ -61,4 +61,3 @@ export function sourceLocation(stack, projectRoot) {
61
61
  return undefined;
62
62
  return { file: relative, line: Math.max(1, frame.line), column: Math.max(1, frame.column) };
63
63
  }
64
- //# sourceMappingURL=source.js.map
@@ -4,4 +4,3 @@ import type { StandardSchemaV1 } from '../types.ts';
4
4
  export declare function requireStandardSchema(schema: unknown, label: string): asserts schema is StandardSchemaV1;
5
5
  /** One issue as `users.0.email: Invalid email`, or the bare message for an issue at the root. */
6
6
  export declare function describeIssue(issue: StandardSchemaV1.Issue): string;
7
- //# sourceMappingURL=standard-schema.d.ts.map
@@ -14,4 +14,3 @@ export function describeIssue(issue) {
14
14
  .join('.');
15
15
  return fieldPath === '' ? issue.message : `${fieldPath}: ${issue.message}`;
16
16
  }
17
- //# sourceMappingURL=standard-schema.js.map
@@ -17,4 +17,3 @@ export declare function isTypoOf(word: string, candidate: string): boolean;
17
17
  export declare function didYouMean(word: string, candidates: readonly string[]): string;
18
18
  /** ` (did you mean x?)` for a note right after the word in a list, or the empty string. */
19
19
  export declare function suggestionNote(word: string, candidates: readonly string[]): string;
20
- //# sourceMappingURL=suggest.d.ts.map
@@ -74,4 +74,3 @@ function editDistance(a, b) {
74
74
  }
75
75
  return rows[a.length][b.length];
76
76
  }
77
- //# sourceMappingURL=suggest.js.map
@@ -32,6 +32,8 @@ export interface TextComparison {
32
32
  readonly mode: 'equals' | 'contains';
33
33
  /** Whether both sides are whitespace-normalized first. `false` compares the raw strings, as a form control's value is. */
34
34
  readonly normalize: boolean;
35
+ /** Compares a string pattern case-insensitively. A RegExp reads case from its flags; `withIgnoreCase` sets them. */
36
+ readonly ignoreCase?: boolean | undefined;
35
37
  }
36
38
  /**
37
39
  * Matches normalized text against a pattern. String matching is exact by
@@ -46,6 +48,11 @@ export declare function matchesText(actual: string, pattern: TextPattern): boole
46
48
  * platform reports verbatim.
47
49
  */
48
50
  export declare function compareText(actual: string, pattern: TextPattern, comparison: TextComparison): boolean;
51
+ /**
52
+ * The pattern under Playwright's `ignoreCase`: `true` adds a RegExp's `i`
53
+ * flag, `false` removes it, `undefined` keeps the flags it came with. A string
54
+ * pattern is returned as it is; `compareText` folds its case.
55
+ */
56
+ export declare function withIgnoreCase(pattern: TextPattern, ignoreCase: boolean | undefined): TextPattern;
49
57
  /** Renders a pattern for diagnostics. */
50
58
  export declare function describePattern(pattern: TextPattern): string;
51
- //# sourceMappingURL=text.d.ts.map
@@ -63,7 +63,19 @@ export function compareText(actual, pattern, comparison) {
63
63
  const expected = comparison.normalize ? normalizeText(pattern.value) : pattern.value;
64
64
  if (!pattern.exact)
65
65
  return subject.toLowerCase().includes(expected.toLowerCase());
66
- return comparison.mode === 'equals' ? subject === expected : subject.includes(expected);
66
+ const fold = (text) => (comparison.ignoreCase === true ? text.toLowerCase() : text);
67
+ return comparison.mode === 'equals' ? fold(subject) === fold(expected) : fold(subject).includes(fold(expected));
68
+ }
69
+ /**
70
+ * The pattern under Playwright's `ignoreCase`: `true` adds a RegExp's `i`
71
+ * flag, `false` removes it, `undefined` keeps the flags it came with. A string
72
+ * pattern is returned as it is; `compareText` folds its case.
73
+ */
74
+ export function withIgnoreCase(pattern, ignoreCase) {
75
+ if (pattern.kind !== 'regexp' || ignoreCase === undefined)
76
+ return pattern;
77
+ const flags = pattern.flags.replace('i', '');
78
+ return { ...pattern, flags: normalizeRegexpFlags(ignoreCase ? `${flags}i` : flags) };
67
79
  }
68
80
  /** Renders a pattern for diagnostics. */
69
81
  export function describePattern(pattern) {
@@ -71,4 +83,3 @@ export function describePattern(pattern) {
71
83
  return JSON.stringify(pattern.value);
72
84
  return `/${pattern.source}/${pattern.flags}`;
73
85
  }
74
- //# sourceMappingURL=text.js.map
@@ -30,6 +30,12 @@ export interface PollConditionOptions {
30
30
  * Polls a condition until it holds (or, when negated, until its negation has
31
31
  * held continuously for the negation grace window), throwing the caller's
32
32
  * error at the deadline.
33
+ *
34
+ * A negation holds from the moment the read that first saw it was issued, so
35
+ * a slow read counts toward the window. A budget shorter than the window
36
+ * still has to be satisfiable: the negation then only needs to hold for the
37
+ * whole budget, and passes at the deadline on what it has seen, since a read
38
+ * past the deadline has no budget left.
33
39
  */
34
40
  export declare function pollCondition(options: PollConditionOptions): Promise<void>;
35
41
  /** Races a promise against a timeout; on timeout invokes onTimeout to build the error. */
@@ -53,4 +59,3 @@ export declare function withinCleanupBudget(promise: Promise<unknown>, budget: {
53
59
  readonly signal: AbortSignal;
54
60
  readonly timeoutMs: number;
55
61
  }): Promise<void>;
56
- //# sourceMappingURL=time.d.ts.map
@@ -47,29 +47,41 @@ export const NEGATION_GRACE_MS = 1000;
47
47
  * Polls a condition until it holds (or, when negated, until its negation has
48
48
  * held continuously for the negation grace window), throwing the caller's
49
49
  * error at the deadline.
50
+ *
51
+ * A negation holds from the moment the read that first saw it was issued, so
52
+ * a slow read counts toward the window. A budget shorter than the window
53
+ * still has to be satisfiable: the negation then only needs to hold for the
54
+ * whole budget, and passes at the deadline on what it has seen, since a read
55
+ * past the deadline has no budget left.
50
56
  */
51
57
  export async function pollCondition(options) {
52
- // A budget shorter than the grace window still has to be satisfiable: the
53
- // negation then only needs to hold for the budget itself.
54
- const grace = Math.min(NEGATION_GRACE_MS, Math.max(0, options.deadline.remaining()));
55
- let negatedTrueSince;
58
+ const { deadline, negated } = options;
59
+ const startedAt = Date.now();
60
+ const grace = Math.min(NEGATION_GRACE_MS, deadline.remaining(startedAt));
61
+ let readAt = startedAt;
62
+ let holdingSince;
63
+ const holds = (now) => holdingSince !== undefined && now - holdingSince >= grace;
56
64
  for (;;) {
57
65
  const value = await options.evaluate();
58
- if (!options.negated) {
66
+ if (!negated) {
59
67
  if (value === true)
60
68
  return;
61
69
  }
62
- else if (value === false) {
63
- negatedTrueSince ??= Date.now();
64
- if (Date.now() - negatedTrueSince >= grace)
65
- return;
66
- }
67
70
  else {
68
- negatedTrueSince = undefined;
71
+ holdingSince = value === false ? (holdingSince ?? readAt) : undefined;
69
72
  }
70
- if (options.deadline.expired())
73
+ const now = Date.now();
74
+ if (holds(now))
75
+ return;
76
+ if (deadline.expired(now))
71
77
  throw await options.onTimeout();
72
- await sleep(POLL_INTERVAL_MS, options.signal);
78
+ await sleep(negated ? Math.min(POLL_INTERVAL_MS, deadline.remaining(now)) : POLL_INTERVAL_MS, options.signal);
79
+ readAt = Date.now();
80
+ if (negated && deadline.expired(readAt)) {
81
+ if (holds(readAt))
82
+ return;
83
+ throw await options.onTimeout();
84
+ }
73
85
  }
74
86
  }
75
87
  /** Races a promise against a timeout; on timeout invokes onTimeout to build the error. */
@@ -151,4 +163,3 @@ export function withinCleanupBudget(promise, budget) {
151
163
  settle();
152
164
  });
153
165
  }
154
- //# sourceMappingURL=time.js.map
@@ -23,10 +23,12 @@ export declare function isLoopbackHost(hostname: string): boolean;
23
23
  /** True when environment may default to `test` (loopback, .localhost, .test hosts). */
24
24
  export declare function isImplicitTestHost(hostname: string): boolean;
25
25
  /**
26
- * Resolves a navigation URL against the base and refuses the schemes no test
27
- * may open. Returns the absolute URL string. Any http(s) origin is admitted:
28
- * a click can reach one just as well, so a gate on typed navigation alone
29
- * would guard nothing.
26
+ * Resolves a navigation URL against the base and refuses every scheme but
27
+ * http(s), except the exact `about:blank`. Returns the absolute URL string.
28
+ * Any http(s) origin is admitted: a click can reach one just as well, so a
29
+ * gate on typed navigation alone would guard nothing. The rule is an
30
+ * allowlist because a browser wraps and nests schemes (`view-source:file:`,
31
+ * `blob:`, `filesystem:`), and a list of forbidden ones misses the wrapper.
30
32
  */
31
33
  export declare function resolveNavigationUrl(input: string, base: NormalizedBaseUrl | undefined): {
32
34
  url: string;
@@ -53,6 +55,7 @@ export declare function sameSite(url: string | URL, site: string): boolean;
53
55
  * Relative expected strings resolve against the base URL; string comparison is
54
56
  * exact after WHATWG serialization; regexps test the complete serialized URL.
55
57
  * Anything else is `INVALID_ARGUMENT`, the `toTextPattern` rule.
58
+ * `ignoreCase` is Playwright's: `true` compares a string case-insensitively
59
+ * and adds the `i` flag to a regexp, `false` removes it.
56
60
  */
57
- export declare function urlMatches(current: string, expected: string | RegExp, baseHref: string): boolean;
58
- //# sourceMappingURL=urls.d.ts.map
61
+ export declare function urlMatches(current: string, expected: string | RegExp, baseHref: string, ignoreCase?: boolean): boolean;